summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile104
-rw-r--r--asm/battle_1.s108
-rw-r--r--asm/battle_2.s16487
-rw-r--r--asm/battle_4.s31160
-rw-r--r--asm/battle_5.s40
-rw-r--r--asm/battle_7.s298
-rw-r--r--asm/battle_9.s2847
-rw-r--r--asm/battle_anim.s4205
-rw-r--r--asm/battle_anim_80A9C70.s20
-rwxr-xr-xasm/battle_anim_80D51AC.s92
-rw-r--r--asm/battle_anim_80FE840.s2250
-rwxr-xr-xasm/battle_anim_815A0D4.s540
-rw-r--r--asm/battle_anim_8170478.s204
-rw-r--r--asm/battle_anim_sound_tasks.s92
-rw-r--r--asm/battle_controller_linkopponent.s144
-rw-r--r--asm/battle_controller_linkpartner.s118
-rw-r--r--asm/battle_controller_opponent.s182
-rw-r--r--asm/battle_controller_player.s396
-rw-r--r--asm/battle_controller_player_partner.s160
-rw-r--r--asm/battle_controller_recorded_opponent.s146
-rw-r--r--asm/battle_controller_recorded_player.s148
-rw-r--r--asm/battle_controller_safari.s80
-rw-r--r--asm/battle_controller_wally.s122
-rwxr-xr-xasm/battle_frontier_1.s254
-rwxr-xr-xasm/battle_frontier_2.s58
-rwxr-xr-xasm/battle_interface.s5734
-rw-r--r--asm/battle_link_817C95C.s24
-rw-r--r--asm/battle_message.s3089
-rw-r--r--asm/battle_setup.s96
-rwxr-xr-xasm/battle_tower.s54
-rw-r--r--asm/battle_transition.s16
-rw-r--r--asm/berry_blender.s66
-rw-r--r--asm/bike.s4
-rw-r--r--asm/braille_puzzles.s627
-rw-r--r--asm/cable_club.s66
-rw-r--r--asm/clear_save_data_screen.s399
-rw-r--r--asm/clock.s6
-rw-r--r--asm/coins.s16
-rw-r--r--asm/contest.s514
-rw-r--r--asm/contest_ai.s304
-rw-r--r--asm/contest_effect.s150
-rw-r--r--asm/contest_link_80F57C4.s120
-rw-r--r--asm/contest_link_80FC4F4.s60
-rwxr-xr-xasm/contest_link_81D9DE4.s12
-rw-r--r--asm/contest_painting.s8
-rw-r--r--asm/credits.s6
-rw-r--r--asm/crt0.s2
-rw-r--r--asm/decoration.s7167
-rw-r--r--asm/decoration_inventory.s459
-rw-r--r--asm/dewford_trend.s2
-rw-r--r--asm/diploma.s387
-rw-r--r--asm/easy_chat.s12
-rw-r--r--asm/evolution_scene.s244
-rw-r--r--asm/field_control_avatar.s100
-rw-r--r--asm/field_door.s44
-rw-r--r--asm/field_effect.s54
-rw-r--r--asm/field_effect_helpers.s62
-rw-r--r--asm/field_ground_effect.s24
-rw-r--r--asm/field_message_box.s24
-rw-r--r--asm/field_player_avatar.s12
-rw-r--r--asm/field_poison.s4
-rw-r--r--asm/field_screen.s40
-rw-r--r--asm/field_tasks.s40
-rw-r--r--asm/fldeff_80F9BCC.s38
-rwxr-xr-xasm/fldeff_cut.s14
-rw-r--r--asm/fldeff_emotion.s328
-rwxr-xr-xasm/fldeff_groundshake.s4
-rw-r--r--asm/fldeff_strength.s4
-rw-r--r--asm/fldeff_sweetscent.s2
-rw-r--r--asm/fldeff_teleport.s2
-rwxr-xr-xasm/international_string_util.s127
-rw-r--r--asm/intro.s22
-rw-r--r--asm/item.s12
-rwxr-xr-xasm/item_menu.s4
-rw-r--r--asm/item_use.s6
-rw-r--r--asm/librfu.s2267
-rw-r--r--asm/librfu_intr.s696
-rw-r--r--asm/link.s400
-rw-r--r--asm/macros/event.s4
-rw-r--r--asm/mail.s1035
-rw-r--r--asm/main_menu.s14
-rw-r--r--asm/map_obj_8097404.s10
-rw-r--r--asm/map_obj_lock.s16
-rw-r--r--asm/mauville_old_man.s10
-rwxr-xr-xasm/menu.s4
-rw-r--r--asm/menu_helpers.s2
-rw-r--r--asm/metatile_behavior.s2610
-rw-r--r--asm/money.s311
-rw-r--r--asm/mystery_event_menu.s8
-rw-r--r--asm/mystery_event_script.s8
-rw-r--r--asm/naming_screen.s6
-rwxr-xr-xasm/party_menu.s38
-rw-r--r--asm/player_pc.s2
-rwxr-xr-xasm/pokeball.s42
-rw-r--r--asm/pokeblock_feed.s6
-rw-r--r--asm/pokedex.s6
-rw-r--r--asm/pokemon_2.s356
-rwxr-xr-xasm/pokemon_icon.s16
-rw-r--r--asm/pokemon_item_effect.s4
-rwxr-xr-xasm/pokemon_storage_system.s108
-rwxr-xr-xasm/pokemon_summary_screen.s7832
-rwxr-xr-xasm/pokenav.s16
-rw-r--r--asm/porthole.s282
-rwxr-xr-xasm/rayquaza_scene.s21
-rw-r--r--asm/record_mixing.s34
-rw-r--r--asm/recorded_battle.s44
-rw-r--r--asm/region_map.s2
-rw-r--r--asm/reset_rtc_screen.s4
-rw-r--r--asm/reshow_battle_screen.s1040
-rw-r--r--asm/roamer.s502
-rw-r--r--asm/rom3.s3775
-rw-r--r--asm/rom4.s128
-rw-r--r--asm/rom6.s138
-rw-r--r--asm/rom_80A5C6C.s268
-rw-r--r--asm/save.s164
-rw-r--r--asm/save_failed_screen.s707
-rwxr-xr-xasm/save_location.s205
-rw-r--r--asm/scrcmd.s5744
-rw-r--r--asm/script_menu.s38
-rwxr-xr-xasm/script_movement.s12
-rw-r--r--asm/script_pokemon_util_80F87D8.s50
-rw-r--r--asm/secret_base.s24
-rw-r--r--asm/shop.s10
-rw-r--r--asm/slot_machine.s6
-rw-r--r--asm/starter_choose.s8
-rw-r--r--asm/tileset.s1793
-rw-r--r--asm/title_screen.s18
-rw-r--r--asm/trade.s94
-rw-r--r--asm/trader.s10
-rw-r--r--asm/trainer_card.s20
-rwxr-xr-xasm/trainer_rematch.s2
-rw-r--r--asm/trainer_see.s334
-rw-r--r--asm/truck_scene.s589
-rw-r--r--asm/tv.s16938
-rwxr-xr-xasm/unk_text_util_2.s583
-rw-r--r--asm/unknown_task.s16
-rwxr-xr-xasm/walda_phrase.s543
-rw-r--r--asm/wild_encounter.s12
-rw-r--r--asmdiff.sh7
-rw-r--r--charmap.txt6
-rw-r--r--common_syms/tv.txt4
-rw-r--r--data/battle_1.s12
-rw-r--r--data/battle_4.s134
-rw-r--r--data/battle_7.s30
-rw-r--r--data/battle_anim_80FE840.s3816
-rw-r--r--data/battle_anim_815A0D4.s66
-rw-r--r--data/battle_anim_scripts.s2
-rw-r--r--data/battle_anims.s674
-rw-r--r--data/battle_controller_player.s4
-rw-r--r--data/battle_interface.s56
-rw-r--r--data/battle_message.s2073
-rw-r--r--data/battle_scripts_1.s144
-rw-r--r--data/battle_scripts_2.s18
-rw-r--r--data/battle_setup.s171
-rw-r--r--data/battle_tower.s103
-rw-r--r--data/bike.s47
-rw-r--r--data/cable_club.s9
-rw-r--r--data/clear_save_data_screen.s17
-rw-r--r--data/cute_sketch.s2
-rw-r--r--data/data2b.s4896
-rw-r--r--data/data2b_2.s30
-rw-r--r--data/data2c.s137
-rw-r--r--data/data4.s13
-rw-r--r--data/decoration.s86
-rw-r--r--data/diploma.s22
-rw-r--r--data/enemy_mon_elevation.inc415
-rw-r--r--data/event_script_command_function_table.inc454
-rw-r--r--data/event_scripts.s23
-rw-r--r--data/evolution_graphics.s2
-rw-r--r--data/fanfares.s20
-rw-r--r--data/field_effect_scripts.s2
-rw-r--r--data/field_region_map.s10
-rw-r--r--data/field_screen.s3
-rw-r--r--data/field_special_scene.s (renamed from data/truck_scene_porthole.s)4
-rw-r--r--data/fldeff_emotion.s11
-rw-r--r--data/graphics.s428
-rw-r--r--data/graphics/decorations/decoration_graphics.inc252
-rw-r--r--data/graphics/pokemon/animation_delay_table.inc412
-rw-r--r--data/graphics/pokemon/back_pic_table.inc (renamed from data/graphics/pokemon/mon_back_pic_table.inc)0
-rw-r--r--data/graphics/pokemon/footprint_table.inc (renamed from data/graphics/pokemon/mon_footprint_table.inc)0
-rw-r--r--data/graphics/pokemon/front_anim_ids_table.inc412
-rw-r--r--data/graphics/pokemon/front_anims.inc6915
-rw-r--r--data/graphics/pokemon/front_pic_table.inc (renamed from data/graphics/pokemon/mon_front_pic_table.inc)0
-rw-r--r--data/graphics/pokemon/graphics.inc (renamed from data/graphics/pokemon/mon_graphics.inc)0
-rw-r--r--data/graphics/pokemon/icon_palette_indices.inc (renamed from data/graphics/pokemon/mon_icon_palette_indices.inc)0
-rw-r--r--data/graphics/pokemon/icon_palette_table.inc (renamed from data/graphics/pokemon/mon_icon_palette_table.inc)0
-rw-r--r--data/graphics/pokemon/icon_table.inc (renamed from data/graphics/pokemon/mon_icon_table.inc)0
-rw-r--r--data/graphics/pokemon/palette_table.inc (renamed from data/graphics/pokemon/mon_palette_table.inc)0
-rw-r--r--data/graphics/pokemon/shiny_palette_table.inc (renamed from data/graphics/pokemon/mon_shiny_palette_table.inc)0
-rw-r--r--data/graphics/pokemon/still_front_pic_table.inc (renamed from data/graphics/pokemon/mon_still_front_pic_table.inc)0
-rw-r--r--data/graphics/trainers/back_pic_coords.inc10
-rw-r--r--data/graphics/trainers/back_pic_palette_table.inc (renamed from data/graphics/trainers/trainer_back_pic_palette_table.inc)0
-rw-r--r--data/graphics/trainers/back_pic_table.inc (renamed from data/graphics/trainers/trainer_back_pic_table.inc)0
-rw-r--r--data/graphics/trainers/front_pic_coords.inc95
-rw-r--r--data/graphics/trainers/front_pic_palette_table.inc (renamed from data/graphics/trainers/trainer_front_pic_palette_table.inc)0
-rw-r--r--data/graphics/trainers/front_pic_table.inc (renamed from data/graphics/trainers/trainer_front_pic_table.inc)0
-rw-r--r--data/graphics/trainers/graphics.inc (renamed from data/graphics/trainers/trainer_graphics.inc)0
-rw-r--r--data/intro.s509
-rw-r--r--data/intro_credits_graphics.s419
-rw-r--r--data/item_use.s12
-rw-r--r--data/learn_move.s22
-rw-r--r--data/mail.s26
-rw-r--r--data/main_menu.s141
-rw-r--r--data/money.s13
-rw-r--r--data/naming_screen.s2
-rw-r--r--data/palette.s18
-rw-r--r--data/pickup_items.inc45
-rw-r--r--data/player_pc.s57
-rw-r--r--data/pokedex.s2
-rw-r--r--data/pokemon_icon.s9
-rw-r--r--data/pokemon_summary_screen.s5
-rw-r--r--data/reset_rtc_screen.s75
-rw-r--r--data/rom_8158B30.s236
-rw-r--r--data/rom_8486FEC.s (renamed from data/metatile_behavior.s)4
-rw-r--r--data/rom_8525F58.s57
-rw-r--r--data/save_failed_screen.s28
-rw-r--r--data/save_location.s13
-rw-r--r--data/scrcmd.s14
-rw-r--r--data/smokescreen.s64
-rw-r--r--data/specials.inc537
-rw-r--r--data/start_menu.s2
-rw-r--r--data/strings.s212
-rw-r--r--data/text/pokemon_news.inc165
-rw-r--r--data/text/tv.inc2891
-rw-r--r--data/tileset.s116
-rw-r--r--data/tilesets/primary/building/anim/0.pngbin0 -> 141 bytes
-rw-r--r--data/tilesets/primary/building/anim/1.pngbin0 -> 144 bytes
-rw-r--r--data/tilesets/primary/general/anim/0/0.pngbin0 -> 183 bytes
-rw-r--r--data/tilesets/primary/general/anim/0/1.pngbin0 -> 182 bytes
-rw-r--r--data/tilesets/primary/general/anim/0/2.pngbin0 -> 183 bytes
-rw-r--r--data/tilesets/primary/general/anim/1/0.pngbin0 -> 518 bytes
-rw-r--r--data/tilesets/primary/general/anim/1/1.pngbin0 -> 581 bytes
-rw-r--r--data/tilesets/primary/general/anim/1/2.pngbin0 -> 534 bytes
-rw-r--r--data/tilesets/primary/general/anim/1/3.pngbin0 -> 527 bytes
-rw-r--r--data/tilesets/primary/general/anim/1/4.pngbin0 -> 461 bytes
-rw-r--r--data/tilesets/primary/general/anim/1/5.pngbin0 -> 460 bytes
-rw-r--r--data/tilesets/primary/general/anim/1/6.pngbin0 -> 480 bytes
-rw-r--r--data/tilesets/primary/general/anim/1/7.pngbin0 -> 521 bytes
-rw-r--r--data/tilesets/primary/general/anim/2/0.pngbin0 -> 194 bytes
-rw-r--r--data/tilesets/primary/general/anim/2/1.pngbin0 -> 243 bytes
-rw-r--r--data/tilesets/primary/general/anim/2/2.pngbin0 -> 262 bytes
-rw-r--r--data/tilesets/primary/general/anim/2/3.pngbin0 -> 280 bytes
-rw-r--r--data/tilesets/primary/general/anim/2/4.pngbin0 -> 232 bytes
-rw-r--r--data/tilesets/primary/general/anim/2/5.pngbin0 -> 220 bytes
-rw-r--r--data/tilesets/primary/general/anim/2/6.pngbin0 -> 203 bytes
-rw-r--r--data/tilesets/primary/general/anim/3/0.pngbin0 -> 136 bytes
-rw-r--r--data/tilesets/primary/general/anim/3/1.pngbin0 -> 154 bytes
-rw-r--r--data/tilesets/primary/general/anim/3/2.pngbin0 -> 133 bytes
-rw-r--r--data/tilesets/primary/general/anim/3/3.pngbin0 -> 130 bytes
-rw-r--r--data/tilesets/primary/general/anim/4/0.pngbin0 -> 304 bytes
-rw-r--r--data/tilesets/primary/general/anim/4/1.pngbin0 -> 311 bytes
-rw-r--r--data/tilesets/primary/general/anim/4/2.pngbin0 -> 314 bytes
-rw-r--r--data/tilesets/primary/general/anim/4/3.pngbin0 -> 328 bytes
-rw-r--r--data/tilesets/primary/general/tiles.pngbin7587 -> 7786 bytes
-rw-r--r--data/tilesets/primary/inside_building/tiles.pngbin1556 -> 1813 bytes
-rw-r--r--data/tilesets/primary/secret_base/tiles.pngbin7136 -> 7869 bytes
-rw-r--r--data/tilesets/primary/secret_base/unknown_tiles.pngbin1212 -> 1316 bytes
-rw-r--r--data/tilesets/secondary/battle_arena/tiles.pngbin2067 -> 2340 bytes
-rw-r--r--data/tilesets/secondary/battle_dome/tiles.pngbin3193 -> 3626 bytes
-rw-r--r--data/tilesets/secondary/battle_factory/tiles.pngbin3313 -> 3694 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier/tiles.pngbin2368 -> 2647 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_east/anim/0.pngbin0 -> 191 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_east/anim/1.pngbin0 -> 188 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_east/anim/2.pngbin0 -> 185 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_east/anim/3.pngbin0 -> 183 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_east/tiles.pngbin3750 -> 3834 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_west/anim/0.pngbin0 -> 191 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_west/anim/1.pngbin0 -> 188 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_west/anim/2.pngbin0 -> 185 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_west/anim/3.pngbin0 -> 183 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_outside_west/tiles.pngbin5505 -> 5892 bytes
-rw-r--r--data/tilesets/secondary/battle_frontier_ranking_hall/tiles.pngbin1451 -> 1700 bytes
-rw-r--r--data/tilesets/secondary/battle_palace/tiles.pngbin1513 -> 1633 bytes
-rw-r--r--data/tilesets/secondary/battle_pike/tiles.pngbin3922 -> 4013 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/0/0.pngbin0 -> 228 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/0/1.pngbin0 -> 220 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/0/2.pngbin0 -> 219 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/0.pngbin0 -> 261 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/1.pngbin0 -> 267 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/2.pngbin0 -> 261 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/3.pngbin0 -> 105 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/4.pngbin0 -> 86 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/5.pngbin0 -> 86 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/6.pngbin0 -> 106 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/7.pngbin0 -> 393 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/8.pngbin0 -> 105 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/anim/1/9.pngbin0 -> 111 bytes
-rw-r--r--data/tilesets/secondary/battle_pyramid/tiles.pngbin3208 -> 3504 bytes
-rw-r--r--data/tilesets/secondary/battle_tent/tiles.pngbin1696 -> 2084 bytes
-rw-r--r--data/tilesets/secondary/bike_shop/anim/0.pngbin0 -> 250 bytes
-rw-r--r--data/tilesets/secondary/bike_shop/anim/1.pngbin0 -> 249 bytes
-rw-r--r--data/tilesets/secondary/bike_shop/anim/2.pngbin0 -> 219 bytes
-rw-r--r--data/tilesets/secondary/bike_shop/tiles.pngbin3270 -> 3505 bytes
-rw-r--r--data/tilesets/secondary/brendans_mays_house/tiles.pngbin2616 -> 3074 bytes
-rw-r--r--data/tilesets/secondary/cable_club/tiles.pngbin2445 -> 2590 bytes
-rw-r--r--data/tilesets/secondary/cable_club/unknown_tiles.pngbin287 -> 311 bytes
-rw-r--r--data/tilesets/secondary/cave/anim/0.pngbin0 -> 100 bytes
-rw-r--r--data/tilesets/secondary/cave/anim/1.pngbin0 -> 126 bytes
-rw-r--r--data/tilesets/secondary/cave/anim/2.pngbin0 -> 108 bytes
-rw-r--r--data/tilesets/secondary/cave/anim/3.pngbin0 -> 109 bytes
-rw-r--r--data/tilesets/secondary/cave/anim/unused/0.pngbin0 -> 100 bytes
-rw-r--r--data/tilesets/secondary/cave/anim/unused/1.pngbin0 -> 121 bytes
-rw-r--r--data/tilesets/secondary/cave/anim/unused/2.pngbin0 -> 108 bytes
-rw-r--r--data/tilesets/secondary/cave/anim/unused/3.pngbin0 -> 105 bytes
-rw-r--r--data/tilesets/secondary/cave/tiles.pngbin5767 -> 5884 bytes
-rw-r--r--data/tilesets/secondary/contest/tiles.pngbin1638 -> 1650 bytes
-rw-r--r--data/tilesets/secondary/dewford/anim/0.pngbin0 -> 185 bytes
-rw-r--r--data/tilesets/secondary/dewford/anim/1.pngbin0 -> 185 bytes
-rw-r--r--data/tilesets/secondary/dewford/anim/2.pngbin0 -> 185 bytes
-rw-r--r--data/tilesets/secondary/dewford/anim/3.pngbin0 -> 192 bytes
-rw-r--r--data/tilesets/secondary/dewford/tiles.pngbin3756 -> 3985 bytes
-rw-r--r--data/tilesets/secondary/dewford_gym/tiles.pngbin598 -> 640 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/0/0.pngbin0 -> 91 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/0/1.pngbin0 -> 91 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/0/2.pngbin0 -> 91 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/0/3.pngbin0 -> 91 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/1/0.pngbin0 -> 135 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/1/1.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/1/2.pngbin0 -> 1260 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/1/3.pngbin0 -> 1184 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/1/4.pngbin0 -> 1190 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/1/5.pngbin0 -> 1248 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/1/6.pngbin0 -> 1161 bytes
-rw-r--r--data/tilesets/secondary/elite_four/anim/1/7.pngbin0 -> 1153 bytes
-rw-r--r--data/tilesets/secondary/elite_four/tiles.pngbin2826 -> 2876 bytes
-rw-r--r--data/tilesets/secondary/ever_grande/anim/0.pngbin0 -> 204 bytes
-rw-r--r--data/tilesets/secondary/ever_grande/anim/1.pngbin0 -> 204 bytes
-rw-r--r--data/tilesets/secondary/ever_grande/anim/2.pngbin0 -> 197 bytes
-rw-r--r--data/tilesets/secondary/ever_grande/anim/3.pngbin0 -> 200 bytes
-rw-r--r--data/tilesets/secondary/ever_grande/anim/4.pngbin0 -> 204 bytes
-rw-r--r--data/tilesets/secondary/ever_grande/anim/5.pngbin0 -> 204 bytes
-rw-r--r--data/tilesets/secondary/ever_grande/anim/6.pngbin0 -> 201 bytes
-rw-r--r--data/tilesets/secondary/ever_grande/anim/7.pngbin0 -> 201 bytes
-rw-r--r--data/tilesets/secondary/ever_grande/tiles.pngbin2088 -> 2208 bytes
-rw-r--r--data/tilesets/secondary/facility/tiles.pngbin5753 -> 6352 bytes
-rw-r--r--data/tilesets/secondary/fallarbor/tiles.pngbin4602 -> 4781 bytes
-rw-r--r--data/tilesets/secondary/fortree/tiles.pngbin4364 -> 4342 bytes
-rw-r--r--data/tilesets/secondary/fortree_gym/tiles.pngbin771 -> 770 bytes
-rw-r--r--data/tilesets/secondary/generic_building/tiles.pngbin4949 -> 5607 bytes
-rw-r--r--data/tilesets/secondary/inside_of_truck/tiles.pngbin514 -> 545 bytes
-rw-r--r--data/tilesets/secondary/inside_ship/tiles.pngbin2016 -> 2149 bytes
-rw-r--r--data/tilesets/secondary/island_harbor/tiles.pngbin5093 -> 5639 bytes
-rw-r--r--data/tilesets/secondary/lab/tiles.pngbin2592 -> 2844 bytes
-rw-r--r--data/tilesets/secondary/lavaridge/anim/0.pngbin0 -> 83 bytes
-rw-r--r--data/tilesets/secondary/lavaridge/anim/1.pngbin0 -> 92 bytes
-rw-r--r--data/tilesets/secondary/lavaridge/anim/2.pngbin0 -> 88 bytes
-rw-r--r--data/tilesets/secondary/lavaridge/anim/3.pngbin0 -> 100 bytes
-rw-r--r--data/tilesets/secondary/lavaridge/tiles.pngbin4087 -> 4215 bytes
-rw-r--r--data/tilesets/secondary/lavaridge_gym/tiles.pngbin631 -> 713 bytes
-rw-r--r--data/tilesets/secondary/lilycove/tiles.pngbin3597 -> 3912 bytes
-rw-r--r--data/tilesets/secondary/lilycove_museum/tiles.pngbin3345 -> 3938 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/0.pngbin0 -> 177 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/1.pngbin0 -> 175 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/2.pngbin0 -> 171 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/3.pngbin0 -> 160 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/4.pngbin0 -> 178 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/5.pngbin0 -> 177 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/6.pngbin0 -> 175 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/7.pngbin0 -> 171 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/8.pngbin0 -> 160 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/a/9.pngbin0 -> 178 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/b/0.pngbin0 -> 177 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/b/1.pngbin0 -> 175 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/b/2.pngbin0 -> 171 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/b/3.pngbin0 -> 160 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/b/4.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/b/5.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/b/6.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/0/b/7.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/a/0.pngbin0 -> 177 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/a/1.pngbin0 -> 178 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/a/2.pngbin0 -> 171 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/a/3.pngbin0 -> 160 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/b/0.pngbin0 -> 177 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/b/1.pngbin0 -> 178 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/b/2.pngbin0 -> 171 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/b/3.pngbin0 -> 160 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/b/4.pngbin0 -> 100 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/b/5.pngbin0 -> 121 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/b/6.pngbin0 -> 108 bytes
-rw-r--r--data/tilesets/secondary/mauville/anim/1/b/7.pngbin0 -> 105 bytes
-rw-r--r--data/tilesets/secondary/mauville/tiles.pngbin6019 -> 6372 bytes
-rw-r--r--data/tilesets/secondary/mauville_game_corner/tiles.pngbin1567 -> 1788 bytes
-rw-r--r--data/tilesets/secondary/mauville_gym/anim/0.pngbin0 -> 215 bytes
-rw-r--r--data/tilesets/secondary/mauville_gym/anim/1.pngbin0 -> 218 bytes
-rw-r--r--data/tilesets/secondary/mauville_gym/anim/2.pngbin0 -> 106 bytes
-rw-r--r--data/tilesets/secondary/mauville_gym/anim/3.pngbin0 -> 393 bytes
-rw-r--r--data/tilesets/secondary/mauville_gym/tiles.pngbin1454 -> 1534 bytes
-rw-r--r--data/tilesets/secondary/meteor_falls/tiles.pngbin5968 -> 6078 bytes
-rw-r--r--data/tilesets/secondary/mirage_tower/tiles.pngbin5561 -> 5645 bytes
-rw-r--r--data/tilesets/secondary/mossdeep/tiles.pngbin4060 -> 4269 bytes
-rw-r--r--data/tilesets/secondary/mossdeep_game_corner/tiles.pngbin838 -> 893 bytes
-rw-r--r--data/tilesets/secondary/mossdeep_gym/tiles.pngbin927 -> 969 bytes
-rw-r--r--data/tilesets/secondary/mystery_events_house/tiles.pngbin4799 -> 5383 bytes
-rw-r--r--data/tilesets/secondary/navel_rock/tiles.pngbin5966 -> 6073 bytes
-rw-r--r--data/tilesets/secondary/oceanic_museum/tiles.pngbin2662 -> 3219 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/0/0.pngbin0 -> 596 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/0/1.pngbin0 -> 603 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/0/2.pngbin0 -> 625 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/1/0.pngbin0 -> 198 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/1/1.pngbin0 -> 219 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/1/2.pngbin0 -> 241 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/1/3.pngbin0 -> 213 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/1/4.pngbin0 -> 138 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/1/5.pngbin0 -> 140 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/1/6.pngbin0 -> 138 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/anim/1/7.pngbin0 -> 200 bytes
-rw-r--r--data/tilesets/secondary/pacifidlog/tiles.pngbin4688 -> 4812 bytes
-rw-r--r--data/tilesets/secondary/petalburg/tiles.pngbin1689 -> 1910 bytes
-rw-r--r--data/tilesets/secondary/petalburg_gym/tiles.pngbin1222 -> 1429 bytes
-rw-r--r--data/tilesets/secondary/pokemon_center/tiles.pngbin3461 -> 3645 bytes
-rw-r--r--data/tilesets/secondary/pokemon_day_care/tiles.pngbin1451 -> 1528 bytes
-rw-r--r--data/tilesets/secondary/pokemon_fan_club/tiles.pngbin1242 -> 1373 bytes
-rw-r--r--data/tilesets/secondary/pokemon_school/tiles.pngbin980 -> 1027 bytes
-rw-r--r--data/tilesets/secondary/pretty_petal_flower_shop/tiles.pngbin1839 -> 1951 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/0/0.pngbin0 -> 119 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/0/1.pngbin0 -> 113 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/0/2.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/0/3.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/0/4.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/0/5.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/0/6.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/0/7.pngbin0 -> 72 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/1/0.pngbin0 -> 201 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/1/1.pngbin0 -> 198 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/1/2.pngbin0 -> 185 bytes
-rw-r--r--data/tilesets/secondary/rustboro/anim/1/3.pngbin0 -> 192 bytes
-rw-r--r--data/tilesets/secondary/rustboro/tiles.pngbin3903 -> 4108 bytes
-rw-r--r--data/tilesets/secondary/rustboro_gym/tiles.pngbin759 -> 768 bytes
-rw-r--r--data/tilesets/secondary/rusturf_tunnel/tiles.pngbin2127 -> 2228 bytes
-rw-r--r--data/tilesets/secondary/seashore_house/tiles.pngbin1105 -> 1280 bytes
-rw-r--r--data/tilesets/secondary/secret_base/blue_cave/tiles.pngbin904 -> 905 bytes
-rw-r--r--data/tilesets/secondary/secret_base/blue_cave/unused_tiles.pngbin0 -> 903 bytes
-rw-r--r--data/tilesets/secondary/secret_base/brown_cave/tiles.pngbin1070 -> 1166 bytes
-rw-r--r--data/tilesets/secondary/secret_base/brown_cave/unused_tiles.pngbin0 -> 1163 bytes
-rw-r--r--data/tilesets/secondary/secret_base/red_cave/tiles.pngbin941 -> 941 bytes
-rw-r--r--data/tilesets/secondary/secret_base/red_cave/unused_tiles.pngbin0 -> 938 bytes
-rw-r--r--data/tilesets/secondary/secret_base/shrub/tiles.pngbin1090 -> 1177 bytes
-rw-r--r--data/tilesets/secondary/secret_base/shrub/unused_tiles.pngbin0 -> 1173 bytes
-rw-r--r--data/tilesets/secondary/secret_base/tree/tiles.pngbin1056 -> 1098 bytes
-rw-r--r--data/tilesets/secondary/secret_base/tree/unused_tiles.pngbin0 -> 1095 bytes
-rw-r--r--data/tilesets/secondary/secret_base/yellow_cave/tiles.pngbin1127 -> 1127 bytes
-rw-r--r--data/tilesets/secondary/secret_base/yellow_cave/unused_tiles.pngbin0 -> 1125 bytes
-rw-r--r--data/tilesets/secondary/shop/tiles.pngbin3872 -> 4416 bytes
-rw-r--r--data/tilesets/secondary/slateport/anim/0.pngbin0 -> 179 bytes
-rw-r--r--data/tilesets/secondary/slateport/anim/1.pngbin0 -> 181 bytes
-rw-r--r--data/tilesets/secondary/slateport/anim/2.pngbin0 -> 179 bytes
-rw-r--r--data/tilesets/secondary/slateport/anim/3.pngbin0 -> 181 bytes
-rw-r--r--data/tilesets/secondary/slateport/tiles.pngbin6528 -> 6985 bytes
-rw-r--r--data/tilesets/secondary/sootopolis/anim/0.pngbin0 -> 1201 bytes
-rw-r--r--data/tilesets/secondary/sootopolis/anim/1.pngbin0 -> 1262 bytes
-rw-r--r--data/tilesets/secondary/sootopolis/anim/2.pngbin0 -> 1260 bytes
-rw-r--r--data/tilesets/secondary/sootopolis/anim/3.pngbin0 -> 1184 bytes
-rw-r--r--data/tilesets/secondary/sootopolis/anim/4.pngbin0 -> 1190 bytes
-rw-r--r--data/tilesets/secondary/sootopolis/anim/5.pngbin0 -> 1248 bytes
-rw-r--r--data/tilesets/secondary/sootopolis/anim/6.pngbin0 -> 1161 bytes
-rw-r--r--data/tilesets/secondary/sootopolis/anim/7.pngbin0 -> 1153 bytes
-rw-r--r--data/tilesets/secondary/sootopolis/tiles.pngbin2674 -> 2950 bytes
-rw-r--r--data/tilesets/secondary/sootopolis_gym/anim/0/0.pngbin0 -> 286 bytes
-rw-r--r--data/tilesets/secondary/sootopolis_gym/anim/0/1.pngbin0 -> 283 bytes
-rw-r--r--data/tilesets/secondary/sootopolis_gym/anim/0/2.pngbin0 -> 294 bytes
-rw-r--r--data/tilesets/secondary/sootopolis_gym/anim/0/3.pngbin0 -> 91 bytes
-rw-r--r--data/tilesets/secondary/sootopolis_gym/anim/1/0.pngbin0 -> 389 bytes
-rw-r--r--data/tilesets/secondary/sootopolis_gym/anim/1/1.pngbin0 -> 408 bytes
-rw-r--r--data/tilesets/secondary/sootopolis_gym/anim/1/2.pngbin0 -> 399 bytes
-rw-r--r--data/tilesets/secondary/sootopolis_gym/tiles.pngbin2780 -> 2954 bytes
-rw-r--r--data/tilesets/secondary/trainer_hill/tiles.pngbin3311 -> 3594 bytes
-rw-r--r--data/tilesets/secondary/trick_house_puzzle/tiles.pngbin2567 -> 2797 bytes
-rw-r--r--data/tilesets/secondary/underwater/anim/0.pngbin0 -> 180 bytes
-rw-r--r--data/tilesets/secondary/underwater/anim/1.pngbin0 -> 183 bytes
-rw-r--r--data/tilesets/secondary/underwater/anim/2.pngbin0 -> 185 bytes
-rw-r--r--data/tilesets/secondary/underwater/anim/3.pngbin0 -> 184 bytes
-rw-r--r--data/tilesets/secondary/underwater/tiles.pngbin2988 -> 2846 bytes
-rw-r--r--data/tilesets/secondary/union_room/tiles.pngbin1710 -> 1817 bytes
-rw-r--r--data/tilesets/secondary/unused_1/0.pngbin0 -> 86 bytes
-rw-r--r--data/tilesets/secondary/unused_1/1.pngbin0 -> 86 bytes
-rw-r--r--data/tilesets/secondary/unused_1/2.pngbin0 -> 106 bytes
-rw-r--r--data/tilesets/secondary/unused_1/3.pngbin0 -> 393 bytes
-rw-r--r--data/tilesets/secondary/unused_1/tiles.pngbin80 -> 77 bytes
-rw-r--r--data/tilesets/secondary/unused_2/0.pngbin0 -> 105 bytes
-rw-r--r--data/tilesets/secondary/unused_2/1.pngbin0 -> 111 bytes
-rw-r--r--data/tilesets/secondary/unused_2/2.pngbin0 -> 108 bytes
-rw-r--r--data/tilesets/secondary/unused_2/3.pngbin0 -> 105 bytes
-rw-r--r--data/tilesets/secondary/unused_2/tiles.pngbin864 -> 979 bytes
-rw-r--r--data/title_screen.s157
-rw-r--r--data/trainer_money.inc59
-rw-r--r--data/trainer_see.s83
-rw-r--r--data/tv.s128
-rw-r--r--data/type_effectiveness.inc119
-rw-r--r--data/unk_text_util_2.s11
-rw-r--r--data/use_pokeblock.s55
-rw-r--r--data/walda_phrase.s7
-rw-r--r--graphics/battle_interface/ball_display.pal19
-rw-r--r--graphics/battle_interface/ball_display.pngbin0 -> 191 bytes
-rw-r--r--graphics/battle_interface/ball_status_bar.pal19
-rw-r--r--graphics/battle_interface/ball_status_bar.pngbin0 -> 174 bytes
-rw-r--r--graphics/battle_interface/unknown_32C2D4.pngbin0 -> 102 bytes
-rw-r--r--graphics/birch_speech/bg0.pal19
-rw-r--r--graphics/birch_speech/bg1.pal19
-rw-r--r--graphics/birch_speech/bg2.pal11
-rw-r--r--graphics/birch_speech/map.binbin0 -> 1280 bytes
-rw-r--r--graphics/birch_speech/shadow.pngbin0 -> 433 bytes
-rw-r--r--graphics/decorations/decor_attract_mat.pal19
-rw-r--r--graphics/decorations/decor_attract_mat.pngbin0 -> 307 bytes
-rw-r--r--graphics/decorations/decor_big_plant.pal19
-rw-r--r--graphics/decorations/decor_big_plant.pngbin0 -> 310 bytes
-rw-r--r--graphics/decorations/decor_blastoise_doll.pal19
-rw-r--r--graphics/decorations/decor_blastoise_doll.pngbin0 -> 371 bytes
-rw-r--r--graphics/decorations/decor_blue_brick.pal19
-rw-r--r--graphics/decorations/decor_blue_brick.pngbin0 -> 226 bytes
-rw-r--r--graphics/decorations/decor_blue_tent.pal19
-rw-r--r--graphics/decorations/decor_blue_tent.pngbin0 -> 321 bytes
-rw-r--r--graphics/decorations/decor_breakable_door.pal19
-rw-r--r--graphics/decorations/decor_breakable_door.pngbin0 -> 274 bytes
-rw-r--r--graphics/decorations/decor_brick_desk.pal19
-rw-r--r--graphics/decorations/decor_brick_desk.pngbin0 -> 270 bytes
-rw-r--r--graphics/decorations/decor_camp_desk.pal19
-rw-r--r--graphics/decorations/decor_camp_desk.pngbin0 -> 265 bytes
-rw-r--r--graphics/decorations/decor_charizard_doll.pal19
-rw-r--r--graphics/decorations/decor_charizard_doll.pngbin0 -> 349 bytes
-rw-r--r--graphics/decorations/decor_colorful_plant.pal19
-rw-r--r--graphics/decorations/decor_colorful_plant.pngbin0 -> 371 bytes
-rw-r--r--graphics/decorations/decor_comfort_desk.pal19
-rw-r--r--graphics/decorations/decor_comfort_desk.pngbin0 -> 320 bytes
-rw-r--r--graphics/decorations/decor_fire_blast_mat.pal19
-rw-r--r--graphics/decorations/decor_fire_blast_mat.pngbin0 -> 287 bytes
-rw-r--r--graphics/decorations/decor_fissure_mat.pal19
-rw-r--r--graphics/decorations/decor_fissure_mat.pngbin0 -> 290 bytes
-rw-r--r--graphics/decorations/decor_glass_ornament.pal19
-rw-r--r--graphics/decorations/decor_glass_ornament.pngbin0 -> 292 bytes
-rw-r--r--graphics/decorations/decor_gorgeous_plant.pal19
-rw-r--r--graphics/decorations/decor_gorgeous_plant.pngbin0 -> 332 bytes
-rw-r--r--graphics/decorations/decor_hard_desk.pal19
-rw-r--r--graphics/decorations/decor_hard_desk.pngbin0 -> 325 bytes
-rw-r--r--graphics/decorations/decor_heavy_desk.pal19
-rw-r--r--graphics/decorations/decor_heavy_desk.pngbin0 -> 268 bytes
-rw-r--r--graphics/decorations/decor_lapras_doll.pal19
-rw-r--r--graphics/decorations/decor_lapras_doll.pngbin0 -> 349 bytes
-rw-r--r--graphics/decorations/decor_powder_snow_mat.pal19
-rw-r--r--graphics/decorations/decor_powder_snow_mat.pngbin0 -> 302 bytes
-rw-r--r--graphics/decorations/decor_pretty_desk.pal19
-rw-r--r--graphics/decorations/decor_pretty_desk.pngbin0 -> 296 bytes
-rw-r--r--graphics/decorations/decor_pretty_flowers.pal19
-rw-r--r--graphics/decorations/decor_pretty_flowers.pngbin0 -> 318 bytes
-rw-r--r--graphics/decorations/decor_ragged_desk.pal19
-rw-r--r--graphics/decorations/decor_ragged_desk.pngbin0 -> 257 bytes
-rw-r--r--graphics/decorations/decor_red_brick.pal19
-rw-r--r--graphics/decorations/decor_red_brick.pngbin0 -> 226 bytes
-rw-r--r--graphics/decorations/decor_red_plant.pal19
-rw-r--r--graphics/decorations/decor_red_plant.pngbin0 -> 300 bytes
-rw-r--r--graphics/decorations/decor_red_tent.pal19
-rw-r--r--graphics/decorations/decor_red_tent.pngbin0 -> 317 bytes
-rw-r--r--graphics/decorations/decor_regice_doll.pal19
-rw-r--r--graphics/decorations/decor_regice_doll.pngbin0 -> 346 bytes
-rw-r--r--graphics/decorations/decor_regirock_doll.pal19
-rw-r--r--graphics/decorations/decor_regirock_doll.pngbin0 -> 331 bytes
-rw-r--r--graphics/decorations/decor_registeel_doll.pal19
-rw-r--r--graphics/decorations/decor_registeel_doll.pngbin0 -> 351 bytes
-rw-r--r--graphics/decorations/decor_rhydon_doll.pal19
-rw-r--r--graphics/decorations/decor_rhydon_doll.pngbin0 -> 367 bytes
-rw-r--r--graphics/decorations/decor_sand_ornament.pal19
-rw-r--r--graphics/decorations/decor_sand_ornament.pngbin0 -> 286 bytes
-rw-r--r--graphics/decorations/decor_slide.pal19
-rw-r--r--graphics/decorations/decor_slide.pngbin0 -> 293 bytes
-rw-r--r--graphics/decorations/decor_snorlax_doll.pal19
-rw-r--r--graphics/decorations/decor_snorlax_doll.pngbin0 -> 337 bytes
-rw-r--r--graphics/decorations/decor_solid_board.pal19
-rw-r--r--graphics/decorations/decor_solid_board.pngbin0 -> 221 bytes
-rw-r--r--graphics/decorations/decor_spikes_mat.pal19
-rw-r--r--graphics/decorations/decor_spikes_mat.pngbin0 -> 302 bytes
-rw-r--r--graphics/decorations/decor_stand.pal19
-rw-r--r--graphics/decorations/decor_stand.pngbin0 -> 264 bytes
-rw-r--r--graphics/decorations/decor_surf_mat.pal19
-rw-r--r--graphics/decorations/decor_surf_mat.pngbin0 -> 298 bytes
-rw-r--r--graphics/decorations/decor_thunder_mat.pal19
-rw-r--r--graphics/decorations/decor_thunder_mat.pngbin0 -> 315 bytes
-rw-r--r--graphics/decorations/decor_tire.pal19
-rw-r--r--graphics/decorations/decor_tire.pngbin0 -> 303 bytes
-rw-r--r--graphics/decorations/decor_tropical_plant.pal19
-rw-r--r--graphics/decorations/decor_tropical_plant.pngbin0 -> 307 bytes
-rw-r--r--graphics/decorations/decor_venusaur_doll.pal19
-rw-r--r--graphics/decorations/decor_venusaur_doll.pngbin0 -> 393 bytes
-rw-r--r--graphics/decorations/decor_wailmer_doll.pal19
-rw-r--r--graphics/decorations/decor_wailmer_doll.pngbin0 -> 320 bytes
-rw-r--r--graphics/decorations/decor_yellow_brick.pal19
-rw-r--r--graphics/decorations/decor_yellow_brick.pngbin0 -> 226 bytes
-rw-r--r--graphics/decorations/unk_85a6bb0.pal19
-rw-r--r--graphics/decorations/unk_85a7308.pal19
-rw-r--r--graphics/decorations/unk_85a7328.pal19
-rw-r--r--graphics/intro/85F0CFC.pal51
-rw-r--r--graphics/intro/85F0D5C.pal51
-rw-r--r--graphics/intro/85F231C.pal35
-rw-r--r--graphics/intro/intro.pngbin0 -> 1113 bytes
-rw-r--r--graphics/intro/intro1_bg0_map.binbin0 -> 2048 bytes
-rw-r--r--graphics/intro/intro1_bg1_map.binbin0 -> 2048 bytes
-rw-r--r--graphics/intro/intro1_bg2_map.binbin0 -> 2048 bytes
-rw-r--r--graphics/intro/intro1_bg3_map.binbin0 -> 2048 bytes
-rw-r--r--graphics/intro/intro1_bgpal.pal259
-rw-r--r--graphics/intro/intro1_drops.pal19
-rw-r--r--graphics/intro/intro1_eon.pngbin0 -> 258 bytes
-rw-r--r--graphics/intro/intro1_flygon.pal19
-rw-r--r--graphics/intro/intro1_flygon.pngbin0 -> 234 bytes
-rw-r--r--graphics/intro/intro1_gflogo.pal19
-rw-r--r--graphics/intro/intro1_sparkle.pngbin0 -> 206 bytes
-rw-r--r--graphics/intro/intro2_bgclouds.pal19
-rw-r--r--graphics/intro/intro2_bgclouds.pngbin0 -> 718 bytes
-rw-r--r--graphics/intro/intro2_bgclouds2.pngbin0 -> 296 bytes
-rw-r--r--graphics/intro/intro2_bgclouds_afternoon.pal19
-rw-r--r--graphics/intro/intro2_bgclouds_map.binbin0 -> 4096 bytes
-rw-r--r--graphics/intro/intro2_bgnight.pal19
-rw-r--r--graphics/intro/intro2_bgnight.pngbin0 -> 536 bytes
-rw-r--r--graphics/intro/intro2_bgnight_map.binbin0 -> 4096 bytes
-rw-r--r--graphics/intro/intro2_bgtrees.pal19
-rw-r--r--graphics/intro/intro2_bgtrees.pngbin0 -> 1023 bytes
-rw-r--r--graphics/intro/intro2_bgtrees2.pal19
-rw-r--r--graphics/intro/intro2_bgtrees2_afternoon.pal19
-rw-r--r--graphics/intro/intro2_bgtrees_map.binbin0 -> 4096 bytes
-rw-r--r--graphics/intro/intro2_bgtreessmall.pngbin0 -> 360 bytes
-rw-r--r--graphics/intro/intro2_bicycle.pngbin0 -> 735 bytes
-rw-r--r--graphics/intro/intro2_brendan.pal19
-rw-r--r--graphics/intro/intro2_brendan.pngbin0 -> 1476 bytes
-rw-r--r--graphics/intro/intro2_brendan_noturn.pal19
-rw-r--r--graphics/intro/intro2_brendan_noturn.pngbin0 -> 1165 bytes
-rw-r--r--graphics/intro/intro2_bubbles.pal19
-rw-r--r--graphics/intro/intro2_bubbles.pngbin0 -> 402 bytes
-rw-r--r--graphics/intro/intro2_flygon.pal19
-rw-r--r--graphics/intro/intro2_flygon.pngbin0 -> 942 bytes
-rw-r--r--graphics/intro/intro2_grass.pal19
-rw-r--r--graphics/intro/intro2_grass.pngbin0 -> 399 bytes
-rw-r--r--graphics/intro/intro2_grass_afternoon.pal19
-rw-r--r--graphics/intro/intro2_grass_map.binbin0 -> 2048 bytes
-rw-r--r--graphics/intro/intro2_grass_night.pal19
-rw-r--r--graphics/intro/intro2_latias.pal19
-rw-r--r--graphics/intro/intro2_latias.pngbin0 -> 680 bytes
-rw-r--r--graphics/intro/intro2_latios.pal19
-rw-r--r--graphics/intro/intro2_latios.pngbin0 -> 796 bytes
-rw-r--r--graphics/intro/intro2_manectric.pal19
-rw-r--r--graphics/intro/intro2_manectric.pngbin0 -> 1670 bytes
-rw-r--r--graphics/intro/intro2_may.pal19
-rw-r--r--graphics/intro/intro2_may.pngbin0 -> 1644 bytes
-rw-r--r--graphics/intro/intro2_may_noturn.pngbin0 -> 1275 bytes
-rw-r--r--graphics/intro/intro2_night.pngbin0 -> 254 bytes
-rw-r--r--graphics/intro/intro2_torchic.pal19
-rw-r--r--graphics/intro/intro2_torchic.pngbin0 -> 742 bytes
-rw-r--r--graphics/intro/intro2_volbeat.pal19
-rw-r--r--graphics/intro/intro2_volbeat.pngbin0 -> 500 bytes
-rw-r--r--graphics/intro/intro3_lightning.pal19
-rw-r--r--graphics/intro/intro3_lightning.pngbin0 -> 476 bytes
-rw-r--r--graphics/intro/intro3_misc.pngbin0 -> 610 bytes
-rw-r--r--graphics/intro/intro3_misc1.pal19
-rw-r--r--graphics/intro/intro3_misc2.pal19
-rw-r--r--graphics/intro/intro3_pokeball.pal259
-rw-r--r--graphics/intro/intro3_pokeball.pngbin0 -> 2197 bytes
-rw-r--r--graphics/intro/intro3_pokeball_map.binbin0 -> 1024 bytes
-rw-r--r--graphics/intro/intro3_streaks.pal19
-rw-r--r--graphics/intro/intro3_streaks.pngbin0 -> 202 bytes
-rw-r--r--graphics/intro/intro3_streaks_map.binbin0 -> 2048 bytes
-rw-r--r--graphics/intro/introgfx.pngbin0 -> 6611 bytes
-rw-r--r--graphics/link/minigame_digits.pal19
-rw-r--r--graphics/link/minigame_digits.pngbin0 -> 264 bytes
-rw-r--r--graphics/link/minigame_digits2.pngbin0 -> 296 bytes
-rwxr-xr-xgraphics/misc/clock_small.pal19
-rwxr-xr-xgraphics/misc/clock_small.pngbin0 -> 221 bytes
-rw-r--r--graphics/misc/decoration_unk_85a7358.pngbin0 -> 87 bytes
-rwxr-xr-xgraphics/misc/diploma.pngbin0 -> 2064 bytes
-rwxr-xr-xgraphics/misc/diploma_hoenn.pal19
-rwxr-xr-xgraphics/misc/diploma_map.binbin0 -> 4096 bytes
-rwxr-xr-xgraphics/misc/diploma_national.pal19
-rw-r--r--graphics/misc/emotion_exclamation.pngbin0 -> 108 bytes
-rw-r--r--graphics/misc/emotion_heart.pngbin0 -> 126 bytes
-rw-r--r--graphics/misc/emotion_question.pngbin0 -> 117 bytes
-rw-r--r--graphics/misc/main_menu_bg.pal19
-rw-r--r--graphics/misc/main_menu_text.pal19
-rw-r--r--graphics/misc/reset_rtc_screen_arrow.pal7
-rw-r--r--graphics/misc/reset_rtc_screen_downarrow.pngbin0 -> 113 bytes
-rw-r--r--graphics/misc/reset_rtc_screen_rightarrow.pngbin0 -> 110 bytes
-rw-r--r--graphics/title_screen/emerald_version.pal19
-rw-r--r--graphics/title_screen/emerald_version.pngbin0 -> 1138 bytes
-rw-r--r--graphics/title_screen/logo_shine.pngbin0 -> 172 bytes
-rw-r--r--graphics/title_screen/press_start.pal19
-rw-r--r--graphics/title_screen/press_start.pngbin0 -> 473 bytes
-rw-r--r--graphics/title_screen/rayquaza.binbin0 -> 2048 bytes
-rw-r--r--graphics/title_screen/unk_853EF78.pal115
-rw-r--r--graphics/unknown/unknown_593C80.pngbin0 -> 286 bytes
-rw-r--r--graphics/unknown/unknown_593FFC.binbin0 -> 4096 bytes
-rw-r--r--include/battle.h695
-rw-r--r--include/battle_2.h33
-rw-r--r--include/battle_ai_script_commands.h (renamed from include/battle_ai.h)6
-rw-r--r--include/battle_ai_switch_items.h17
-rw-r--r--include/battle_anim.h79
-rw-r--r--include/battle_controllers.h207
-rw-r--r--include/battle_frontier_2.h9
-rw-r--r--include/battle_interface.h54
-rw-r--r--include/battle_message.h210
-rw-r--r--include/battle_script_commands.h58
-rw-r--r--include/battle_setup.h15
-rw-r--r--include/battle_string_ids.h387
-rw-r--r--include/battle_tower.h6
-rw-r--r--include/battle_transition.h6
-rw-r--r--include/battle_util.h84
-rw-r--r--include/bg.h10
-rw-r--r--include/blend_palette.h12
-rw-r--r--include/calculate_base_damage.h6
-rw-r--r--include/clock.h8
-rw-r--r--include/coins.h4
-rw-r--r--include/contest.h41
-rw-r--r--include/contest_link_80F57C4.h8
-rw-r--r--include/contest_painting.h6
-rw-r--r--include/data/decoration/description.h581
-rw-r--r--include/data/decoration/header.h1100
-rw-r--r--include/data/decoration/icon.h132
-rw-r--r--include/data/decoration/tilemaps.h239
-rw-r--r--include/data/decoration/tiles.h646
-rw-r--r--include/data2.h19
-rw-r--r--include/decompress.h2
-rw-r--r--include/decoration.h195
-rw-r--r--include/decoration_inventory.h20
-rw-r--r--include/diploma.h6
-rw-r--r--include/dma3.h14
-rw-r--r--include/easy_chat.h6
-rw-r--r--include/event_data.h2
-rwxr-xr-xinclude/event_scripts.h353
-rw-r--r--include/evolution_scene.h10
-rw-r--r--include/field_camera.h2
-rw-r--r--include/field_door.h11
-rw-r--r--include/field_effect.h9
-rw-r--r--include/field_fadetransition.h12
-rwxr-xr-xinclude/field_map_obj.h4
-rw-r--r--include/field_map_obj_helpers.h7
-rw-r--r--include/field_message_box.h10
-rw-r--r--include/field_player_avatar.h6
-rw-r--r--include/field_screen.h12
-rw-r--r--include/field_screen_effect.h8
-rw-r--r--include/field_specials.h6
-rw-r--r--include/field_tasks.h6
-rw-r--r--include/field_weather.h12
-rw-r--r--include/fieldmap.h18
-rw-r--r--include/flags.h18
-rw-r--r--include/game_stat.h3
-rw-r--r--include/gba/flash_internal.h1
-rw-r--r--include/gba/io_reg.h8
-rw-r--r--include/gba/macro.h10
-rw-r--r--include/gba/types.h14
-rw-r--r--include/global.berry.h13
-rw-r--r--include/global.h342
-rw-r--r--include/global.tv.h535
-rw-r--r--include/graphics.h95
-rw-r--r--include/international_string_util.h23
-rw-r--r--include/item.h2
-rw-r--r--include/item_icon.h17
-rw-r--r--include/librfu.h108
-rw-r--r--include/link.h27
-rw-r--r--include/list_menu.h54
-rw-r--r--include/load_save.h1
-rw-r--r--include/mail.h19
-rw-r--r--include/mail_data.h12
-rw-r--r--include/main.h1
-rw-r--r--include/malloc.h2
-rw-r--r--include/map_constants.h1342
-rw-r--r--include/map_obj_lock.h11
-rw-r--r--include/map_object_constants.h239
-rw-r--r--include/menu.h28
-rw-r--r--include/menu_helpers.h20
-rw-r--r--include/menu_indicators.h12
-rw-r--r--include/metatile_behavior.h156
-rw-r--r--include/metatile_behaviors.h179
-rw-r--r--include/money.h12
-rw-r--r--include/moves.h5
-rw-r--r--include/mystery_event_script.h8
-rw-r--r--include/naming_screen.h12
-rw-r--r--include/new_game.h1
-rw-r--r--include/new_menu_helpers.h16
-rw-r--r--include/overworld.h63
-rw-r--r--include/palette.h3
-rw-r--r--include/party_menu.h6
-rw-r--r--include/player_pc.h12
-rw-r--r--include/pokedex.h5
-rw-r--r--include/pokemon.h38
-rw-r--r--include/pokemon_3.h7
-rw-r--r--include/pokemon_icon.h12
-rw-r--r--include/pokemon_item_effects.h62
-rw-r--r--include/pokemon_storage_system.h8
-rw-r--r--include/recorded_battle.h22
-rw-r--r--include/region_map.h227
-rw-r--r--include/reshow_battle_screen.h7
-rw-r--r--include/roamer.h8
-rw-r--r--include/rom4.h34
-rw-r--r--include/rom6.h1
-rw-r--r--include/save.h2
-rw-r--r--include/save_location.h9
-rw-r--r--include/script.h4
-rw-r--r--include/script_menu.h13
-rw-r--r--include/script_movement.h8
-rw-r--r--include/script_pokemon_80F8.h10
-rw-r--r--include/script_pokemon_81B9.h6
-rw-r--r--include/secret_base.h12
-rw-r--r--include/shop.h10
-rw-r--r--include/slot_machine.h6
-rw-r--r--include/songs.h182
-rw-r--r--include/species.h1
-rw-r--r--include/sprite.h18
-rw-r--r--include/string_util.h2
-rw-r--r--include/strings.h74
-rw-r--r--include/text.h97
-rw-r--r--include/tilesets.h13
-rw-r--r--include/trader.h11
-rw-r--r--include/trainer_see.h1
-rw-r--r--include/tv.h16
-rw-r--r--include/unknown_task.h13
-rw-r--r--include/vars.h10
-rw-r--r--include/walda_phrase.h8
-rw-r--r--include/window.h4
-rw-r--r--ld_script.txt119
-rw-r--r--src/battle_1.c17
-rw-r--r--src/battle_2.c5646
-rw-r--r--src/battle_4.c601
-rw-r--r--src/battle_ai_script_commands.c (renamed from src/battle_ai.c)849
-rw-r--r--src/battle_ai_switch_items.c951
-rw-r--r--src/battle_anim.c1850
-rw-r--r--src/battle_controllers.c1551
-rw-r--r--src/battle_dome_cards.c4
-rw-r--r--src/battle_interface.c2632
-rw-r--r--src/battle_message.c2333
-rw-r--r--src/battle_script_commands.c11415
-rw-r--r--src/battle_util.c (renamed from src/battle_3.c)3937
-rw-r--r--src/berry_blender.c18
-rwxr-xr-xsrc/braille_puzzles.c583
-rw-r--r--src/calculate_base_damage.c1
-rwxr-xr-xsrc/clear_save_data_screen.c209
-rw-r--r--src/coins.c7
-rw-r--r--src/decompress.c2
-rw-r--r--src/decoration.c2781
-rw-r--r--src/decoration_inventory.c189
-rwxr-xr-xsrc/diploma.c219
-rw-r--r--src/dma3_manager.c18
-rw-r--r--src/easy_chat.c2
-rw-r--r--src/egg_hatch.c20
-rw-r--r--src/event_data.c52
-rw-r--r--src/field_camera.c28
-rw-r--r--src/field_effect.c15
-rwxr-xr-xsrc/field_map_obj.c30
-rw-r--r--src/field_screen.c15
-rwxr-xr-xsrc/field_special_scene.c363
-rw-r--r--src/fldeff_cut.c19
-rw-r--r--src/international_string_util.c57
-rw-r--r--src/librfu_intr.c4
-rw-r--r--src/librfu_rfu.c109
-rw-r--r--src/librfu_stwi.c687
-rw-r--r--src/lilycove_lady.c2
-rw-r--r--src/link.c56
-rw-r--r--src/mail.c577
-rw-r--r--src/main.c2
-rw-r--r--src/main_menu.c15
-rw-r--r--src/malloc.c1
-rw-r--r--src/metatile_behavior.c1436
-rw-r--r--src/money.c147
-rw-r--r--src/new_game.c6
-rw-r--r--src/palette.c75
-rw-r--r--src/pokemon_1.c16
-rw-r--r--src/pokemon_2.c64
-rw-r--r--src/pokemon_3.c36
-rw-r--r--src/pokemon_size_record.c2
-rw-r--r--src/pokemon_storage_system.c15
-rwxr-xr-xsrc/pokemon_summary_screen.c3679
-rw-r--r--src/record_mixing.c28
-rw-r--r--src/reset_save_heap.c2
-rw-r--r--src/reshow_battle_screen.c354
-rw-r--r--src/roamer.c218
-rw-r--r--src/rom4.c19
-rw-r--r--src/safari_zone.c6
-rw-r--r--src/save.c165
-rwxr-xr-xsrc/save_failed_screen.c426
-rwxr-xr-xsrc/save_location.c146
-rw-r--r--src/scrcmd.c2452
-rw-r--r--src/script.c4
-rw-r--r--src/script_menu.c16
-rw-r--r--src/sprite.c2
-rw-r--r--src/start_menu.c6
-rw-r--r--src/string_util.c2
-rw-r--r--src/text.c16
-rw-r--r--src/tileset_anims.c1411
-rw-r--r--src/tv.c7927
-rw-r--r--src/unk_text_util_2.c219
-rw-r--r--src/util.c2
-rw-r--r--src/walda_phrase.c257
-rw-r--r--src/window.c4
-rw-r--r--sym_bss.txt281
-rw-r--r--sym_common.txt30
-rw-r--r--sym_ewram.txt342
890 files changed, 93744 insertions, 135430 deletions
diff --git a/.gitignore b/.gitignore
index e1600820c..9f10eb5b1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,5 +23,6 @@ tools/*
*.dump
*.sa*
Thumbs.db
+build/
.DS_Store
*.ddump
diff --git a/Makefile b/Makefile
index e176b1258..4a1f94352 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,19 @@
SHELL := /bin/bash -o pipefail
+ROM := pokeemerald.gba
+OBJ_DIR := build/emerald
+
+ELF = $(ROM:.gba=.elf)
+MAP = $(ROM:.gba=.map)
+
+C_SUBDIR = src
+ASM_SUBDIR = asm
+DATA_ASM_SUBDIR = data
+
+C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR)
+ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
+DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
+
AS := $(DEVKITARM)/bin/arm-none-eabi-as
ASFLAGS := -mcpu=arm7tdmi
@@ -10,7 +24,7 @@ CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp
CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef
LD := $(DEVKITARM)/bin/arm-none-eabi-ld
-LDFLAGS := -T ld_script.ld -Map pokeemerald.map
+LDFLAGS = -Map ../../$(MAP)
OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy
@@ -20,7 +34,7 @@ SHA1 := sha1sum -c
GFX := tools/gbagfx/gbagfx
AIF := tools/aif2pcm/aif2pcm
-MID := tools/mid2agb/mid2agb
+MID := $(abspath tools/mid2agb/mid2agb)
SCANINC := tools/scaninc/scaninc
PREPROC := tools/preproc/preproc
RAMSCRGEN := tools/ramscrgen/ramscrgen
@@ -35,19 +49,19 @@ RAMSCRGEN := tools/ramscrgen/ramscrgen
.PHONY: rom clean compare tidy
-C_SRCS := $(wildcard src/*.c)
-C_OBJS := $(C_SRCS:%.c=%.o)
+$(shell mkdir -p $(C_BUILDDIR) $(ASM_BUILDDIR) $(DATA_ASM_BUILDDIR))
-ASM_SRCS := $(wildcard asm/*.s)
-ASM_OBJS := $(ASM_SRCS:%.s=%.o)
+C_SRCS := $(wildcard $(C_SUBDIR)/*.c)
+C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
-DATA_ASM_SRCS := $(wildcard data/*.s)
-DATA_ASM_OBJS := $(DATA_ASM_SRCS:%.s=%.o)
+ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
+ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
-OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS)
+DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s)
+DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS))
-ROM := pokeemerald.gba
-ELF := $(ROM:.gba=.elf)
+OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS)
+OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
rom: $(ROM)
@@ -59,8 +73,8 @@ clean: tidy
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
tidy:
- rm -f ld_script.ld sym_bss.ld sym_common.ld sym_ewram.ld
- rm -f $(ROM) $(ELF) $(OBJS) $(C_SRCS:%.c=%.i) pokeemerald.map
+ rm -f $(ROM) $(ELF) $(MAP)
+ rm -r build/*
include graphics_file_rules.mk
@@ -75,56 +89,62 @@ include graphics_file_rules.mk
%.lz: % ; $(GFX) $< $@
%.rl: % ; $(GFX) $< $@
-src/libc.o: CC1 := tools/agbcc/bin/old_agbcc
-src/libc.o: CFLAGS := -O2
+$(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc
+$(C_BUILDDIR)/libc.o: CFLAGS := -O2
-src/siirtc.o: CFLAGS := -mthumb-interwork
+$(C_BUILDDIR)/siirtc.o: CFLAGS := -mthumb-interwork
-src/agb_flash.o: CFLAGS := -O -mthumb-interwork
-src/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
-src/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
+$(C_BUILDDIR)/agb_flash.o: CFLAGS := -O -mthumb-interwork
+$(C_BUILDDIR)/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
+$(C_BUILDDIR)/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
-src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
-src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
+$(C_BUILDDIR)/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
+$(C_BUILDDIR)/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
ifeq ($(NODEP),)
-%.o: c_dep = $(shell $(SCANINC) $*.c)
+$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) -I include $(C_SUBDIR)/$*.c)
else
-%.o: c_dep :=
+$(C_BUILDDIR)/%.o: c_dep :=
endif
-$(C_OBJS): %.o : %.c $$(c_dep)
- @$(CPP) $(CPPFLAGS) $< -o $*.i
- @$(PREPROC) $*.i charmap.txt | $(CC1) $(CFLAGS) -o $*.s
- @echo -e ".text\n\t.align\t2, 0\n" >> $*.s
- $(AS) $(ASFLAGS) -o $@ $*.s
+$(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep)
+ @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i
+ @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s
+ @echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s
+ $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s
ifeq ($(NODEP),)
-%.o: asm_dep = $(shell $(SCANINC) $*.s)
+$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s)
else
-%.o: asm_dep :=
+$(ASM_BUILDDIR)/%.o: asm_dep :=
endif
-$(ASM_OBJS): %.o: %.s $$(asm_dep)
+$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep)
$(AS) $(ASFLAGS) -o $@ $<
-$(DATA_ASM_OBJS): %.o: %.s $$(asm_dep)
+ifeq ($(NODEP),)
+$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s)
+else
+$(DATA_ASM_BUILDDIR)/%.o: data_dep :=
+endif
+
+$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
$(PREPROC) $< charmap.txt | $(AS) $(ASFLAGS) -o $@
-sym_bss.ld: sym_bss.txt
- $(RAMSCRGEN) .bss sym_bss.txt ENGLISH >$@
+$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
+ $(RAMSCRGEN) .bss $< ENGLISH > $@
-sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
- $(RAMSCRGEN) COMMON sym_common.txt ENGLISH -c src,common_syms >$@
+$(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
+ $(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms > $@
-sym_ewram.ld: sym_ewram.txt
- $(RAMSCRGEN) ewram_data sym_ewram.txt ENGLISH >$@
+$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
+ $(RAMSCRGEN) ewram_data $< ENGLISH > $@
-ld_script.ld: ld_script.txt sym_bss.ld sym_common.ld sym_ewram.ld
- sed -f ld_script.sed ld_script.txt >ld_script.ld
+$(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld
+ cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" | sed "s#sound/#../../sound/#g" > ld_script.ld
-$(ELF): ld_script.ld $(OBJS)
- $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBGCC)
+$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
+ cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) ../../$(LIBGCC)
$(ROM): $(ELF)
$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
diff --git a/asm/battle_1.s b/asm/battle_1.s
index d1a4e6ea0..9a981e222 100644
--- a/asm/battle_1.s
+++ b/asm/battle_1.s
@@ -1358,8 +1358,8 @@ _080356AA:
.pool
thumb_func_end trs_config
- thumb_func_start c2_berry_program_update_menu
-c2_berry_program_update_menu: @ 80356D0
+ thumb_func_start sub_80356D0
+sub_80356D0: @ 80356D0
push {lr}
movs r0, 0x2
bl DisableInterrupts
@@ -1381,10 +1381,10 @@ c2_berry_program_update_menu: @ 80356D0
pop {r0}
bx r0
.pool
- thumb_func_end c2_berry_program_update_menu
+ thumb_func_end sub_80356D0
- thumb_func_start sub_803570C
-sub_803570C: @ 803570C
+ thumb_func_start ApplyPlayerChosenFrameToBattleMenu
+ApplyPlayerChosenFrameToBattleMenu: @ 803570C
push {lr}
movs r0, 0x2
movs r1, 0x12
@@ -1422,10 +1422,10 @@ _0803575A:
pop {r0}
bx r0
.pool
- thumb_func_end sub_803570C
+ thumb_func_end ApplyPlayerChosenFrameToBattleMenu
- thumb_func_start load_battle_oval_graphics
-load_battle_oval_graphics: @ 8035770
+ thumb_func_start DrawMainBattleBackground
+DrawMainBattleBackground: @ 8035770
push {r4,r5,lr}
ldr r0, =gBattleTypeFlags
ldr r1, [r0]
@@ -1547,8 +1547,8 @@ _080358E0:
.4byte _08035A40
.4byte _08035A70
_08035904:
- ldr r4, =gUnknown_0831ABA8
- ldr r5, =gUnknown_02022FF0
+ ldr r4, =gBattleTerrainTable
+ ldr r5, =gBattleTerrain
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
@@ -1665,10 +1665,10 @@ _08035A8A:
pop {r0}
bx r0
.pool
- thumb_func_end load_battle_oval_graphics
+ thumb_func_end DrawMainBattleBackground
- thumb_func_start sub_8035AA4
-sub_8035AA4: @ 8035AA4
+ thumb_func_start LoadBattleTextboxAndBackground
+LoadBattleTextboxAndBackground: @ 8035AA4
push {lr}
ldr r0, =gUnknown_08C00000
movs r1, 0xC0
@@ -1685,12 +1685,12 @@ sub_8035AA4: @ 8035AA4
movs r1, 0
movs r2, 0x40
bl LoadCompressedPalette
- bl sub_803570C
- bl load_battle_oval_graphics
+ bl ApplyPlayerChosenFrameToBattleMenu
+ bl DrawMainBattleBackground
pop {r0}
bx r0
.pool
- thumb_func_end sub_8035AA4
+ thumb_func_end LoadBattleTextboxAndBackground
thumb_func_start sub_8035AE4
sub_8035AE4: @ 8035AE4
@@ -1888,7 +1888,7 @@ sub_8035C4C: @ 8035C4C
bne _08035C68
ldr r0, =gText_Draw
movs r1, 0x15
- bl battle_show_message_maybe
+ bl sub_814F9EC
b _08035D68
.pool
_08035C68:
@@ -1964,10 +1964,10 @@ _08035CE2:
_08035CFC:
ldr r0, =gText_Win
movs r1, 0x17
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gText_Loss
movs r1, 0x16
- bl battle_show_message_maybe
+ bl sub_814F9EC
b _08035D68
.pool
_08035D20:
@@ -1985,19 +1985,19 @@ _08035D20:
_08035D36:
ldr r0, =gText_Win
movs r1, 0x16
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gText_Loss
movs r1, 0x17
- bl battle_show_message_maybe
+ bl sub_814F9EC
b _08035D68
.pool
_08035D58:
ldr r0, =gText_Win
movs r1, 0x17
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gText_Loss
movs r1, 0x16
- bl battle_show_message_maybe
+ bl sub_814F9EC
_08035D68:
pop {r0}
bx r0
@@ -2068,14 +2068,14 @@ _08035DDC:
_08035DE6:
adds r0, r1, 0
movs r1, 0x11
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldrb r1, [r4, 0x18]
movs r0, 0x4
b _08035E14
_08035DF4:
adds r0, r1, 0
movs r1, 0x12
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldrb r1, [r4, 0x18]
movs r0, 0x4
str r0, [sp]
@@ -2085,7 +2085,7 @@ _08035DF4:
_08035E08:
adds r0, r1, 0
movs r1, 0x13
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldrb r1, [r4, 0x18]
movs r0, 0x8
_08035E14:
@@ -2099,7 +2099,7 @@ _08035E1A:
_08035E22:
adds r0, r1, 0
movs r1, 0x14
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldrb r1, [r4, 0x18]
movs r0, 0x8
str r0, [sp]
@@ -2139,14 +2139,14 @@ _08035E66:
adds r1, r0, r4
adds r0, r1, 0
movs r1, 0xF
- bl battle_show_message_maybe
+ bl sub_814F9EC
lsls r0, r6, 3
subs r0, r6
lsls r0, 2
adds r1, r0, r4
adds r0, r1, 0
movs r1, 0x10
- bl battle_show_message_maybe
+ bl sub_814F9EC
movs r4, 0x7
str r4, [sp]
adds r0, r7, 0
@@ -2236,7 +2236,7 @@ _08035F64:
ldrsh r0, [r5, r1]
cmp r0, 0
beq _08035FCC
- ldr r4, =gUnknown_02022E18
+ ldr r4, =gBattle_BG1_X
ldrh r0, [r5, 0xA]
bl Sin2
lsls r0, 16
@@ -2251,7 +2251,7 @@ _08035F7E:
adds r0, r2, 0
subs r0, r1
strh r0, [r4]
- ldr r4, =gUnknown_02022E1C
+ ldr r4, =gBattle_BG2_X
ldrh r0, [r5, 0xC]
bl Sin2
lsls r0, 16
@@ -2266,16 +2266,16 @@ _08035F9C:
adds r0, r3, 0
subs r0, r1
strh r0, [r4]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldr r2, =0x0000ffdc
adds r1, r2, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
b _08036038
.pool
_08035FCC:
- ldr r4, =gUnknown_02022E18
+ ldr r4, =gBattle_BG1_X
ldrh r0, [r5, 0xA]
bl Sin2
lsls r0, 16
@@ -2290,7 +2290,7 @@ _08035FDE:
adds r0, r3, 0
subs r0, r1
strh r0, [r4]
- ldr r4, =gUnknown_02022E1A
+ ldr r4, =gBattle_BG1_Y
ldrh r0, [r5, 0xA]
bl Cos2
lsls r0, 16
@@ -2302,7 +2302,7 @@ _08035FFC:
asrs r0, 5
subs r0, 0xA4
strh r0, [r4]
- ldr r4, =gUnknown_02022E1C
+ ldr r4, =gBattle_BG2_X
ldrh r0, [r5, 0xC]
bl Sin2
lsls r0, 16
@@ -2317,7 +2317,7 @@ _08036014:
adds r0, r2, 0
subs r0, r1
strh r0, [r4]
- ldr r4, =gUnknown_02022E1E
+ ldr r4, =gBattle_BG2_Y
ldrh r0, [r5, 0xC]
bl Cos2
lsls r0, 16
@@ -2457,8 +2457,8 @@ _08036138:
.pool
thumb_func_end task00_0800F6FC
- thumb_func_start sub_8036154
-sub_8036154: @ 8036154
+ thumb_func_start LoadBattleEntryBackground
+LoadBattleEntryBackground: @ 8036154
push {r4,r5,lr}
ldr r0, =gBattleTypeFlags
ldr r1, [r0]
@@ -2504,11 +2504,11 @@ sub_8036154: @ 8036154
movs r0, 0x4A
movs r1, 0x36
bl SetGpuReg
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldr r2, =0x0000ff5c
adds r1, r2, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
ldr r0, =gUnknown_0831AA00
bl LoadCompressedObjectPicUsingHeap
@@ -2632,8 +2632,8 @@ _08036350:
lsls r0, 24
cmp r0, 0
bne _0803639C
- ldr r4, =gUnknown_0831ABA8
- ldr r5, =gUnknown_02022FF0
+ ldr r4, =gBattleTerrainTable
+ ldr r5, =gBattleTerrain
ldrb r1, [r5]
lsls r0, r1, 2
adds r0, r1
@@ -2668,10 +2668,10 @@ _080363AC:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8036154
+ thumb_func_end LoadBattleEntryBackground
- thumb_func_start sub_80363C4
-sub_80363C4: @ 80363C4
+ thumb_func_start LoadChosenBattleElement
+LoadChosenBattleElement: @ 80363C4
push {r4,lr}
lsls r0, 24
lsrs r0, 24
@@ -2778,8 +2778,8 @@ _080364A8:
.4byte _08036510
.4byte _08036518
_080364CC:
- ldr r2, =gUnknown_0831ABA8
- ldr r0, =gUnknown_02022FF0
+ ldr r2, =gBattleTerrainTable
+ ldr r0, =gBattleTerrain
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -2888,8 +2888,8 @@ _080365B4:
.4byte _0803661C
.4byte _08036624
_080365D8:
- ldr r2, =gUnknown_0831ABA8
- ldr r0, =gUnknown_02022FF0
+ ldr r2, =gBattleTerrainTable
+ ldr r0, =gBattleTerrain
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -3003,8 +3003,8 @@ _080366C8:
.4byte _08036738
.4byte _08036740
_080366EC:
- ldr r2, =gUnknown_0831ABA8
- ldr r0, =gUnknown_02022FF0
+ ldr r2, =gBattleTerrainTable
+ ldr r0, =gBattleTerrain
ldrb r1, [r0]
lsls r0, r1, 2
adds r0, r1
@@ -3051,7 +3051,7 @@ _08036742:
b _08036758
.pool
_08036750:
- bl sub_803570C
+ bl ApplyPlayerChosenFrameToBattleMenu
b _08036758
_08036756:
movs r4, 0x1
@@ -3060,6 +3060,6 @@ _08036758:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_80363C4
+ thumb_func_end LoadChosenBattleElement
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_2.s b/asm/battle_2.s
deleted file mode 100644
index fb0073566..000000000
--- a/asm/battle_2.s
+++ /dev/null
@@ -1,16487 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start sub_8036760
-sub_8036760: @ 8036760
- push {lr}
- bl MoveSaveBlocks_ResetHeap
- bl sub_8056F28
- bl dp11_init
- bl init_uns_table_pokemon_copy
- bl sub_8185F84
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080367CC
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- beq _08036798
- bl InitBattle
- b _080367BA
- .pool
-_08036798:
- movs r0, 0x80
- lsls r0, 15
- ands r1, r0
- cmp r1, 0
- bne _080367B4
- bl battle_wireless_setup_if_required_maybe
- ldr r0, =sub_8037ADC
- bl SetMainCallback2
- b _080367BA
- .pool
-_080367B4:
- ldr r0, =intro_end
- bl SetMainCallback2
-_080367BA:
- ldr r1, =gBattleCommunication
- movs r0, 0
- strb r0, [r1]
- b _080367D0
- .pool
-_080367CC:
- bl InitBattle
-_080367D0:
- pop {r0}
- bx r0
- thumb_func_end sub_8036760
-
- thumb_func_start InitBattle
-InitBattle: @ 80367D4
- push {r4,r5,lr}
- sub sp, 0x4
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- str r0, [sp]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, =0x05006000
- mov r0, sp
- bl CpuSet
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- ldr r1, =0x00005051
- movs r0, 0x44
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gUnknown_02022E24
- movs r2, 0xF0
- strh r2, [r0]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _08036870
- ldr r0, =gPartnerTrainerId
- ldrh r1, [r0]
- ldr r0, =0x00000c03
- cmp r1, r0
- beq _08036870
- ldr r1, =gUnknown_02022E26
- movs r0, 0x9F
- strh r0, [r1]
- ldr r0, =gUnknown_02022E28
- strh r2, [r0]
- ldr r1, =gUnknown_02022E2A
- movs r0, 0x20
- strh r0, [r1]
- b _080368BE
- .pool
-_08036870:
- ldr r0, =gUnknown_02022E26
- ldr r2, =0x00005051
- adds r1, r2, 0
- strh r1, [r0]
- bl dp12_8087EA4
- ldr r0, =gUnknown_02038C28
- movs r3, 0xF0
- movs r5, 0xF0
- lsls r5, 3
- adds r2, r0, r5
- movs r1, 0x4F
-_08036888:
- strh r3, [r0]
- strh r3, [r2]
- adds r2, 0x2
- adds r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _08036888
- movs r1, 0x50
- ldr r4, =gUnknown_0831AC70
- ldr r0, =gUnknown_02038C28
- ldr r3, =0x0000ff10
- movs r5, 0x82
- lsls r5, 4
- adds r2, r0, r5
- adds r0, 0xA0
-_080368A6:
- strh r3, [r0]
- strh r3, [r2]
- adds r2, 0x2
- adds r0, 0x2
- adds r1, 0x1
- cmp r1, 0x9F
- ble _080368A6
- ldr r0, [r4]
- ldr r1, [r4, 0x4]
- ldr r2, [r4, 0x8]
- bl sub_80BA038
-_080368BE:
- bl ResetPaletteFade
- ldr r0, =gUnknown_02022E14
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02022E16
- strh r1, [r0]
- ldr r0, =gUnknown_02022E18
- strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
- strh r1, [r0]
- ldr r0, =gUnknown_02022E1C
- strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
- strh r1, [r0]
- ldr r0, =gUnknown_02022E20
- strh r1, [r0]
- ldr r0, =gUnknown_02022E22
- strh r1, [r0]
- bl sub_80B0BD0
- ldr r2, =gUnknown_02022FF0
- strb r0, [r2]
- ldr r4, =gBattleTypeFlags
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _080368FE
- movs r0, 0x8
- strb r0, [r2]
-_080368FE:
- bl c2_berry_program_update_menu
- bl sub_8035AA4
- bl ResetSpriteData
- bl ResetTasks
- bl sub_8036154
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- ldr r0, =vblank_cb_08078BB4
- bl SetVBlankCallback
- bl sub_803269C
- ldr r2, [r4]
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, r1
- beq _0803693E
- ldr r1, =0x00400040
- adds r0, r2, 0
- ands r0, r1
- cmp r0, r1
- bne _08036994
-_0803693E:
- ldr r0, =sub_8037458
- bl SetMainCallback2
- b _080369AE
- .pool
-_08036994:
- movs r0, 0x40
- ands r2, r0
- cmp r2, 0
- beq _080369A8
- ldr r0, =sub_8037DF4
- bl SetMainCallback2
- b _080369AE
- .pool
-_080369A8:
- ldr r0, =sub_8036FAC
- bl SetMainCallback2
-_080369AE:
- ldr r5, =gBattleTypeFlags
- ldr r0, [r5]
- ldr r1, =0x01000002
- ands r0, r1
- cmp r0, 0
- bne _080369E8
- ldr r4, =gEnemyParty
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- adds r0, r4, 0
- movs r2, 0x1
- bl CreateNPCTrainerParty
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _080369E4
- movs r1, 0x96
- lsls r1, 1
- adds r0, r4, r1
- ldr r1, =gTrainerBattleOpponent_B
- ldrh r1, [r1]
- movs r2, 0
- bl CreateNPCTrainerParty
-_080369E4:
- bl SetWildMonHeldItem
-_080369E8:
- ldr r1, =gMain
- ldr r2, =0x00000439
- adds r1, r2
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r5, =0x00000ca9
- adds r1, r5
- ldrb r2, [r1]
- movs r0, 0x9
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r4, =gPlayerParty
- movs r0, 0xFA
- lsls r0, 1
- adds r5, r4, r0
-_08036A10:
- adds r0, r4, 0
- movs r1, 0x3
- bl AdjustFriendship
- adds r4, 0x64
- cmp r4, r5
- ble _08036A10
- movs r1, 0
- ldr r0, =gBattleCommunication
- strb r1, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end InitBattle
-
- thumb_func_start sub_8036A5C
-sub_8036A5C: @ 8036A5C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- mov r9, r6
- movs r0, 0xCE
- lsls r0, 1
- mov r10, r0
- mov r8, r6
-_08036A72:
- movs r0, 0x64
- mov r4, r9
- muls r4, r0
- ldr r0, =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, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r7, r0, 16
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- adds r1, r0, 0
- cmp r5, 0
- beq _08036AEE
- cmp r5, r10
- beq _08036ABA
- cmp r7, 0
- beq _08036ABA
- cmp r1, 0
- bne _08036ABA
- movs r0, 0x1
- mov r2, r8
- lsls r0, r2
- orrs r6, r0
- lsls r0, r6, 16
- lsrs r6, r0, 16
-_08036ABA:
- cmp r5, 0
- beq _08036AEE
- cmp r7, 0
- beq _08036AD6
- cmp r5, r10
- beq _08036ACA
- cmp r1, 0
- beq _08036AD6
-_08036ACA:
- movs r0, 0x2
- mov r1, r8
- lsls r0, r1
- orrs r6, r0
- lsls r0, r6, 16
- lsrs r6, r0, 16
-_08036AD6:
- cmp r5, 0
- beq _08036AEE
- cmp r5, r10
- beq _08036AEE
- cmp r7, 0
- bne _08036AEE
- movs r0, 0x3
- mov r2, r8
- lsls r0, r2
- orrs r6, r0
- lsls r0, r6, 16
- lsrs r6, r0, 16
-_08036AEE:
- movs r0, 0x2
- add r8, r0
- movs r1, 0x1
- add r9, r1
- mov r2, r9
- cmp r2, 0x5
- ble _08036A72
- ldr r4, =gBattleStruct
- ldr r0, [r4]
- movs r1, 0xC1
- lsls r1, 1
- adds r0, r1
- strb r6, [r0]
- ldr r0, [r4]
- ldr r5, =0x00000183
- adds r0, r5
- lsrs r1, r6, 8
- strb r1, [r0]
- ldr r0, =0x000008d2
- bl FlagGet
- ldr r1, [r4]
- adds r1, r5
- lsls r0, 7
- ldrb r2, [r1]
- orrs r0, r2
- strb r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8036A5C
-
- thumb_func_start sub_8036B44
-sub_8036B44: @ 8036B44
- push {r4-r7,lr}
- ldr r0, =gBattleStruct
- ldr r5, [r0]
- movs r0, 0xC2
- lsls r0, 1
- adds r4, r5, r0
- bl IsEnigmaBerryValid
- cmp r0, 0x1
- bne _08036BC0
- movs r2, 0
- ldr r7, =gSaveBlock1Ptr
- movs r1, 0xC6
- lsls r1, 1
- adds r5, r1
- adds r6, r7, 0
- ldr r3, =0x000031f8
-_08036B66:
- adds r0, r4, r2
- ldr r1, [r6]
- adds r1, r3
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x5
- ble _08036B66
- adds r1, r4, r2
- movs r0, 0xFF
- strb r0, [r1]
- movs r2, 0
- adds r3, r5, 0
- ldr r6, =gSaveBlock1Ptr
- ldr r5, =0x00003214
-_08036B86:
- adds r0, r3, r2
- ldr r1, [r6]
- adds r1, r5
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x11
- ble _08036B86
- ldr r0, [r7]
- ldr r1, =0x00003226
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r4, 0x7]
- ldr r0, [r7]
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- b _08036C00
- .pool
-_08036BC0:
- movs r0, 0xAF
- bl ItemIdToBerryType
- lsls r0, 24
- lsrs r0, 24
- bl GetBerryInfo
- adds r3, r0, 0
- movs r2, 0
- movs r0, 0xC6
- lsls r0, 1
- adds r5, r0
-_08036BD8:
- adds r0, r4, r2
- adds r1, r3, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x5
- ble _08036BD8
- adds r1, r4, r2
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r5, 0
- movs r2, 0
- adds r1, r0, 0
- adds r1, 0x11
-_08036BF4:
- strb r2, [r1]
- subs r1, 0x1
- cmp r1, r0
- bge _08036BF4
- movs r0, 0
- strb r0, [r4, 0x7]
-_08036C00:
- strb r0, [r4, 0x1A]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8036B44
-
- thumb_func_start berry_801017C
-berry_801017C: @ 8036C08
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08036C20
- b _08036D4C
-_08036C20:
- bl IsEnigmaBerryValid
- cmp r0, 0x1
- bne _08036CDC
- movs r5, 0
- ldr r3, =gEnigmaBerries
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- adds r6, r3, 0
- mov r4, r8
- ldr r2, =0x000031f8
- adds r7, r3, 0
- adds r7, 0x38
-_08036C3A:
- adds r1, r5, r6
- ldr r0, [r4]
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r5, r7
- ldr r0, [r4]
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r5, 0x1
- cmp r5, 0x5
- ble _08036C3A
- adds r1, r5, r3
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r3, 0
- adds r0, 0x38
- adds r0, r5, r0
- movs r1, 0x1
- negs r1, r1
- strb r1, [r0]
- movs r5, 0
- adds r7, r3, 0
- adds r7, 0x8
- ldr r4, =gSaveBlock1Ptr
- ldr r2, =0x00003214
- adds r6, r3, 0
- adds r6, 0x40
-_08036C78:
- adds r1, r5, r7
- ldr r0, [r4]
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r5, r6
- ldr r0, [r4]
- adds r0, r2
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r5, 0x1
- cmp r5, 0x11
- ble _08036C78
- mov r1, r8
- ldr r0, [r1]
- ldr r2, =0x00003226
- adds r0, r2
- ldrb r1, [r0]
- strb r1, [r3, 0x7]
- ldrb r0, [r0]
- adds r1, r3, 0
- adds r1, 0x3F
- strb r0, [r1]
- mov r4, r8
- ldr r0, [r4]
- ldr r1, =0x00003227
- adds r0, r1
- ldrb r1, [r0]
- strb r1, [r3, 0x1A]
- ldrb r1, [r0]
- adds r0, r3, 0
- adds r0, 0x52
- strb r1, [r0]
- b _08036EA0
- .pool
-_08036CDC:
- movs r0, 0xAF
- bl ItemIdToBerryType
- lsls r0, 24
- lsrs r0, 24
- bl GetBerryInfo
- adds r6, r0, 0
- movs r5, 0
- ldr r4, =gEnigmaBerries
- adds r7, r4, 0
- adds r7, 0x38
- adds r3, r4, 0
-_08036CF6:
- adds r1, r5, r4
- adds r2, r6, r5
- ldrb r0, [r2]
- strb r0, [r1]
- adds r1, r5, r7
- ldrb r0, [r2]
- strb r0, [r1]
- adds r5, 0x1
- cmp r5, 0x5
- ble _08036CF6
- adds r1, r5, r3
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r3, 0
- adds r0, 0x38
- adds r0, r5, r0
- movs r1, 0x1
- negs r1, r1
- strb r1, [r0]
- movs r5, 0
- adds r4, r3, 0
- adds r4, 0x8
- movs r1, 0
- adds r2, r3, 0
- adds r2, 0x40
-_08036D28:
- adds r0, r5, r4
- strb r1, [r0]
- adds r0, r5, r2
- strb r1, [r0]
- adds r5, 0x1
- cmp r5, 0x11
- ble _08036D28
- movs r1, 0
- strb r1, [r3, 0x7]
- adds r0, r3, 0
- adds r0, 0x3F
- strb r1, [r0]
- strb r1, [r3, 0x1A]
- adds r0, 0x13
- strb r1, [r0]
- b _08036EA0
- .pool
-_08036D4C:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08036DF0
- movs r0, 0x80
- lsls r0, 1
- ands r1, r0
- movs r2, 0x4
- mov r8, r2
- cmp r1, 0
- beq _08036D66
- movs r4, 0x2
- mov r8, r4
-_08036D66:
- movs r5, 0
- cmp r5, r8
- blt _08036D6E
- b _08036EA0
-_08036D6E:
- ldr r0, =gLinkPlayers
- mov r12, r0
- ldr r3, =gEnigmaBerries
- adds r6, r3, 0
- movs r1, 0x8
- adds r1, r6
- mov r9, r1
-_08036D7C:
- lsls r1, r5, 8
- ldr r0, =gUnknown_020223C8
- adds r7, r1, r0
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r12
- ldrb r3, [r0, 0x18]
- movs r4, 0
- adds r5, 0x1
- mov r10, r5
- lsls r1, r3, 3
- subs r0, r1, r3
- adds r5, r1, 0
- lsls r0, 2
- adds r1, r0, r6
-_08036D9C:
- adds r0, r7, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, 0x1
- adds r4, 0x1
- cmp r4, 0x5
- ble _08036D9C
- subs r0, r5, r3
- lsls r0, 2
- adds r1, r4, r0
- adds r1, r6
- movs r2, 0xFF
- strb r2, [r1]
- movs r4, 0
- mov r2, r9
- adds r1, r0, r2
- adds r2, r7, 0
- adds r2, 0x8
-_08036DC0:
- adds r0, r2, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, 0x1
- adds r4, 0x1
- cmp r4, 0x11
- ble _08036DC0
- subs r0, r5, r3
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r7, 0x7]
- strb r1, [r0, 0x7]
- ldrb r1, [r7, 0x1A]
- strb r1, [r0, 0x1A]
- mov r5, r10
- cmp r5, r8
- blt _08036D7C
- b _08036EA0
- .pool
-_08036DF0:
- movs r5, 0
- ldr r4, =gEnigmaBerries
- mov r9, r4
-_08036DF6:
- lsls r0, r5, 8
- ldr r1, =gUnknown_020223C8
- adds r7, r0, r1
- movs r4, 0
- adds r2, r5, 0x1
- mov r10, r2
- lsls r0, r5, 3
- mov r8, r0
- adds r1, r5, 0x2
- mov r12, r1
- subs r1, r0, r5
- mov r2, r12
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- mov r2, r9
- adds r3, r0, r2
- lsls r1, 2
- adds r2, r1, r2
-_08036E1C:
- adds r0, r7, r4
- ldrb r1, [r0]
- strb r1, [r2]
- ldrb r0, [r0]
- strb r0, [r3]
- adds r3, 0x1
- adds r2, 0x1
- adds r4, 0x1
- cmp r4, 0x5
- ble _08036E1C
- mov r0, r8
- subs r3, r0, r5
- lsls r3, 2
- adds r1, r4, r3
- add r1, r9
- ldrb r0, [r1]
- movs r2, 0xFF
- orrs r0, r2
- strb r0, [r1]
- mov r0, r12
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- adds r1, r4, r2
- add r1, r9
- ldrb r0, [r1]
- movs r4, 0xFF
- orrs r0, r4
- strb r0, [r1]
- movs r4, 0
- ldr r0, =gEnigmaBerries
- adds r0, 0x8
- adds r2, r0
- adds r3, r0
- adds r6, r7, 0
- adds r6, 0x8
-_08036E64:
- adds r0, r6, r4
- ldrb r1, [r0]
- strb r1, [r3]
- ldrb r0, [r0]
- strb r0, [r2]
- adds r2, 0x1
- adds r3, 0x1
- adds r4, 0x1
- cmp r4, 0x11
- ble _08036E64
- mov r0, r8
- subs r2, r0, r5
- lsls r2, 2
- add r2, r9
- ldrb r0, [r7, 0x7]
- strb r0, [r2, 0x7]
- mov r1, r12
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r7, 0x7]
- strb r1, [r0, 0x7]
- ldrb r1, [r7, 0x1A]
- strb r1, [r2, 0x1A]
- ldrb r1, [r7, 0x1A]
- strb r1, [r0, 0x1A]
- mov r5, r10
- cmp r5, 0x1
- ble _08036DF6
-_08036EA0:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end berry_801017C
-
- thumb_func_start sub_8036EB8
-sub_8036EB8: @ 8036EB8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- movs r6, 0
- ldr r0, =gUnknown_020223C4
- ldrh r2, [r0]
- movs r1, 0x80
- lsls r1, 1
- mov r12, r0
- cmp r2, r1
- bne _08036EFC
- cmp r3, 0
- bne _08036EEC
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0xC
- b _08036EF2
- .pool
-_08036EEC:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x8
-_08036EF2:
- orrs r1, r2
- str r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08036EFC:
- cmp r6, 0
- bne _08036FA0
- movs r2, 0
- cmp r2, r4
- bge _08036F20
- ldr r1, =gUnknown_020223C4
- mov r8, r1
- movs r5, 0x80
- lsls r5, 1
-_08036F0E:
- adds r1, r5
- adds r2, 0x1
- cmp r2, r4
- bge _08036F20
- mov r7, r8
- ldrh r0, [r7]
- ldrh r7, [r1]
- cmp r0, r7
- beq _08036F0E
-_08036F20:
- cmp r2, r4
- bne _08036F48
- cmp r3, 0
- bne _08036F38
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0xC
- b _08036F3E
- .pool
-_08036F38:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x8
-_08036F3E:
- orrs r1, r2
- str r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08036F48:
- cmp r6, 0
- bne _08036FA0
- movs r2, 0
- ldr r5, =gBattleTypeFlags
- cmp r2, r4
- bge _08036F8A
- mov r0, r12
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 2
- cmp r1, r0
- beq _08036F82
-_08036F60:
- lsls r0, r2, 8
- add r0, r12
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 2
- cmp r0, r1
- bls _08036F72
- cmp r2, r3
- bne _08036F8A
-_08036F72:
- adds r2, 0x1
- cmp r2, r4
- bge _08036F8A
- lsls r0, r2, 8
- add r0, r12
- ldrh r0, [r0]
- cmp r0, r1
- bne _08036F60
-_08036F82:
- cmp r2, r3
- beq _08036F60
- cmp r2, r3
- bge _08036F60
-_08036F8A:
- cmp r2, r4
- bne _08036F98
- ldr r0, [r5]
- movs r1, 0xC
- b _08036F9C
- .pool
-_08036F98:
- ldr r0, [r5]
- movs r1, 0x8
-_08036F9C:
- orrs r0, r1
- str r0, [r5]
-_08036FA0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8036EB8
-
- thumb_func_start sub_8036FAC
-sub_8036FAC: @ 8036FAC
- push {r4-r6,lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gBattleScripting
- adds r0, 0x25
- strb r6, [r0]
- movs r0, 0x1
- adds r5, r6, 0
- eors r5, r0
- ldr r0, =gBattleCommunication
- ldrb r0, [r0]
- cmp r0, 0x12
- bls _08036FD8
- b _0803744C
-_08036FD8:
- lsls r0, 2
- ldr r1, =_08036FF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08036FF0:
- .4byte _0803703C
- .4byte _08037080
- .4byte _08037144
- .4byte _080371D8
- .4byte _08037200
- .4byte _0803742C
- .4byte _08037438
- .4byte _08037230
- .4byte _08037258
- .4byte _0803742C
- .4byte _08037438
- .4byte _08037288
- .4byte _080372B0
- .4byte _0803742C
- .4byte _08037438
- .4byte _08037318
- .4byte _08037378
- .4byte _080373A0
- .4byte _080373E0
-_0803703C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08037068
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- bl sub_805EF14
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1]
-_08037068:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _08037072
- b _0803744C
-_08037072:
- bl sub_800E0E8
- b _0803744C
- .pool
-_08037080:
- ldr r2, =gBattleTypeFlags
- ldr r1, [r2]
- movs r6, 0x2
- adds r0, r1, 0
- ands r0, r6
- cmp r0, 0
- beq _08037124
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- bne _08037098
- b _0803744C
-_08037098:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _080370EE
- ldr r4, =gBattleStruct
- ldr r0, [r4]
- movs r5, 0xC0
- lsls r5, 1
- adds r0, r5
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- ldr r2, =0x00000181
- adds r1, r0, r2
- movs r0, 0x3
- strb r0, [r1]
- bl sub_8036A5C
- bl sub_8036B44
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 4
- cmp r1, r0
- bne _080370D8
- ldr r0, =gLinkPlayers
- movs r1, 0
- strh r1, [r0, 0x18]
- movs r1, 0x1
- strh r1, [r0, 0x34]
-_080370D8:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, r5
- movs r2, 0x20
- bl link_0800A448
- ldr r0, =gBattleCommunication
- strb r6, [r0]
-_080370EE:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _080370F8
- b _0803744C
-_080370F8:
- movs r0, 0
- movs r1, 0
- bl sub_800DFB4
- b _0803744C
- .pool
-_08037124:
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- bne _08037134
- movs r0, 0x4
- orrs r1, r0
- str r1, [r2]
-_08037134:
- ldr r1, =gBattleCommunication
- movs r0, 0xF
- strb r0, [r1]
- bl berry_801017C
- b _0803744C
- .pool
-_08037144:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _08037152
- b _0803744C
-_08037152:
- bl sub_800A5B4
- movs r0, 0x2
- adds r1, r6, 0
- bl sub_8036EB8
- bl berry_801017C
- ldr r0, =task00_0800F6FC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r1
- movs r1, 0
- movs r0, 0x87
- lsls r0, 1
- strh r0, [r2, 0xA]
- movs r0, 0x5A
- strh r0, [r2, 0xC]
- strh r1, [r2, 0x12]
- ldr r0, =gBattleStruct
- ldr r3, [r0]
- movs r4, 0xC1
- lsls r4, 1
- adds r0, r3, r4
- ldrb r1, [r0]
- adds r4, 0x1
- adds r0, r3, r4
- ldrb r0, [r0]
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2, 0xE]
- ldr r1, =gUnknown_020223C4
- lsls r4, r5, 8
- adds r1, 0x2
- adds r4, r1
- ldrh r0, [r4]
- strh r0, [r2, 0x10]
- lsls r0, r6, 8
- adds r0, r1
- ldrh r0, [r0]
- bl sub_8185F90
- ldrh r0, [r4]
- bl sub_8185F90
- bl sub_8068AA4
- ldr r1, =gBattleCommunication
- b _08037446
- .pool
-_080371D8:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _080371E4
- b _0803744C
-_080371E4:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gPlayerParty
- movs r2, 0xC8
- bl link_0800A448
- ldr r1, =gBattleCommunication
- b _08037446
- .pool
-_08037200:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _0803720E
- b _0803744C
-_0803720E:
- bl sub_800A5B4
- ldr r0, =gEnemyParty
- lsls r1, r5, 8
- ldr r2, =gUnknown_020223C4
- adds r1, r2
- movs r2, 0xC8
- bl memcpy
- ldr r1, =gBattleCommunication
- b _08037446
- .pool
-_08037230:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _0803723C
- b _0803744C
-_0803723C:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gPlayerParty + 200
- movs r2, 0xC8
- bl link_0800A448
- ldr r1, =gBattleCommunication
- b _08037446
- .pool
-_08037258:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _08037266
- b _0803744C
-_08037266:
- bl sub_800A5B4
- ldr r0, =gEnemyParty + 200
- lsls r1, r5, 8
- ldr r2, =gUnknown_020223C4
- adds r1, r2
- movs r2, 0xC8
- bl memcpy
- ldr r1, =gBattleCommunication
- b _08037446
- .pool
-_08037288:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _08037294
- b _0803744C
-_08037294:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gPlayerParty + 400
- movs r2, 0xC8
- bl link_0800A448
- ldr r1, =gBattleCommunication
- b _08037446
- .pool
-_080372B0:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _080372BE
- b _0803744C
-_080372BE:
- bl sub_800A5B4
- ldr r4, =gEnemyParty + 400
- lsls r1, r5, 8
- ldr r0, =gUnknown_020223C4
- adds r1, r0
- adds r0, r4, 0
- movs r2, 0xC8
- bl memcpy
- ldr r1, =0xfffffe70
- adds r0, r4, r1
- bl shedinja_something
- ldr r2, =0xfffffed4
- adds r0, r4, r2
- bl shedinja_something
- adds r0, r4, 0
- subs r0, 0xC8
- bl shedinja_something
- adds r0, r4, 0
- subs r0, 0x64
- bl shedinja_something
- adds r0, r4, 0
- bl shedinja_something
- adds r0, r4, 0
- adds r0, 0x64
- bl shedinja_something
- ldr r1, =gBattleCommunication
- b _08037446
- .pool
-_08037318:
- bl sub_8032768
- bl sub_8184E58
- ldr r2, =gBattleCommunication
- movs r0, 0
- strb r0, [r2, 0x1]
- strb r0, [r2, 0x2]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08037372
- movs r3, 0
- ldr r1, =gLinkPlayers
- ldrb r0, [r1]
- adds r5, r2, 0
- cmp r0, 0x3
- bne _08037356
- movs r4, 0xFF
- adds r2, r1, 0
-_08037344:
- adds r2, 0x1C
- adds r3, 0x1
- cmp r3, 0x1
- bgt _08037356
- ldrh r1, [r2]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0x3
- beq _08037344
-_08037356:
- cmp r3, 0x2
- bne _0803736C
- movs r0, 0x10
- strb r0, [r5]
- b _0803744C
- .pool
-_0803736C:
- movs r0, 0x12
- strb r0, [r5]
- b _0803744C
-_08037372:
- movs r0, 0x12
- strb r0, [r2]
- b _0803744C
-_08037378:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _0803744C
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203BD2C
- movs r2, 0x4
- bl link_0800A448
- ldr r1, =gBattleCommunication
- b _08037446
- .pool
-_080373A0:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- bne _0803744C
- bl sub_800A5B4
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x4
- ands r0, r1
- cmp r0, 0
- bne _080373CA
- ldr r0, =gUnknown_0203BD2C
- lsls r1, r5, 8
- ldr r2, =gUnknown_020223C4
- adds r1, r2
- movs r2, 0x4
- bl memcpy
-_080373CA:
- ldr r1, =gBattleCommunication
- b _08037446
- .pool
-_080373E0:
- ldr r0, =gUnknown_02024333
- adds r1, r0, 0x1
- bl battle_load_something
- lsls r0, 24
- cmp r0, 0
- beq _0803744C
- ldr r2, =gUnknown_03005D00
- ldr r1, =gMain
- ldr r0, [r1]
- str r0, [r2]
- ldr r0, =sub_8039EF0
- str r0, [r1]
- ldr r0, =sub_8038420
- bl SetMainCallback2
- ldr r2, =gBattleTypeFlags
- ldr r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0803744C
- movs r0, 0x20
- orrs r1, r0
- str r1, [r2]
- b _0803744C
- .pool
-_0803742C:
- ldr r0, =gBattleCommunication
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- movs r1, 0x1
- strb r1, [r0, 0x1]
-_08037438:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1, 0x1]
- subs r0, 0x1
- strb r0, [r1, 0x1]
- lsls r0, 24
- cmp r0, 0
- bne _0803744C
-_08037446:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0803744C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8036FAC
-
- thumb_func_start sub_8037458
-sub_8037458: @ 8037458
- push {r4-r7,lr}
- sub sp, 0x4
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gBattleScripting
- adds r0, 0x25
- strb r6, [r0]
- movs r0, 0x1
- adds r7, r6, 0
- eors r7, r0
- ldr r0, =gBattleCommunication
- ldrb r0, [r0]
- cmp r0, 0x10
- bls _08037486
- b _080379D6
-_08037486:
- lsls r0, 2
- ldr r1, =_0803749C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0803749C:
- .4byte _080374E0
- .4byte _08037518
- .4byte _0803761C
- .4byte _08037670
- .4byte _08037694
- .4byte _08037710
- .4byte _08037734
- .4byte _080377B0
- .4byte _080377CC
- .4byte _080377FC
- .4byte _08037818
- .4byte _08037848
- .4byte _08037864
- .4byte _08037908
- .4byte _0803793A
- .4byte _0803795C
- .4byte _080379A0
-_080374E0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0803750C
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- bl sub_805EF14
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1]
-_0803750C:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _08037518
- bl sub_800E0E8
-_08037518:
- ldr r2, =gBattleTypeFlags
- ldr r1, [r2]
- movs r3, 0x2
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _080375FC
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- bne _08037530
- b _080379D6
-_08037530:
- ldr r6, =gLinkPlayers
- movs r0, 0
- strh r0, [r6, 0x18]
- strh r3, [r6, 0x34]
- adds r1, r6, 0
- adds r1, 0x50
- movs r0, 0x1
- strh r0, [r1]
- adds r1, 0x1C
- movs r0, 0x3
- strh r0, [r1]
- adds r0, r6, 0
- adds r0, 0x40
- ldr r4, =gTrainerBattleOpponent_A
- ldrh r1, [r4]
- bl GetFrontierTrainerName
- adds r0, r6, 0
- adds r0, 0x5C
- ldr r5, =gTrainerBattleOpponent_B
- ldrh r1, [r5]
- bl GetFrontierTrainerName
- ldrh r1, [r4]
- mov r0, sp
- bl sub_8165B88
- mov r0, sp
- ldrb r0, [r0]
- adds r1, r6, 0
- adds r1, 0x52
- strh r0, [r1]
- ldrh r1, [r5]
- mov r0, sp
- bl sub_8165B88
- mov r0, sp
- ldrb r1, [r0]
- adds r0, r6, 0
- adds r0, 0x6E
- strh r1, [r0]
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _080375C4
- ldr r4, =gBattleStruct
- ldr r0, [r4]
- movs r5, 0xC0
- lsls r5, 1
- adds r0, r5
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- ldr r2, =0x00000181
- adds r1, r0, r2
- movs r0, 0x3
- strb r0, [r1]
- bl sub_8036A5C
- bl sub_8036B44
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, r5
- movs r2, 0x20
- bl link_0800A448
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1]
-_080375C4:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _080375CE
- b _080379D6
-_080375CE:
- movs r0, 0
- movs r1, 0
- bl sub_800DFB4
- b _080379D6
- .pool
-_080375FC:
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- bne _0803760C
- movs r0, 0x4
- orrs r1, r0
- str r1, [r2]
-_0803760C:
- ldr r1, =gBattleCommunication
- movs r0, 0xD
- strb r0, [r1]
- bl berry_801017C
- b _080379D6
- .pool
-_0803761C:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _0803762A
- b _080379D6
-_0803762A:
- bl sub_800A5B4
- movs r0, 0x2
- adds r1, r6, 0
- bl sub_8036EB8
- bl berry_801017C
- ldr r0, =task00_0800F6FC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- movs r0, 0x87
- lsls r0, 1
- strh r0, [r1, 0xA]
- movs r0, 0x5A
- strh r0, [r1, 0xC]
- strh r2, [r1, 0x12]
- adds r0, 0xEB
- strh r0, [r1, 0xE]
- strh r0, [r1, 0x10]
- b _08037986
- .pool
-_08037670:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _0803767C
- b _080379D6
-_0803767C:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gPlayerParty
-_08037686:
- movs r2, 0xC8
- bl link_0800A448
- b _08037986
- .pool
-_08037694:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _080376A2
- b _080379D6
-_080376A2:
- bl sub_800A5B4
- ldr r0, =gLinkPlayers
- lsls r1, r6, 3
- subs r1, r6
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x18]
- cmp r0, 0
- beq _080376E8
- ldr r4, =gPlayerParty
- lsls r1, r7, 8
- ldr r5, =gUnknown_020223C4
- adds r1, r5
- adds r0, r4, 0
- movs r2, 0xC8
- bl memcpy
- movs r0, 0x96
- lsls r0, 1
- adds r4, r0
- lsls r1, r6, 8
- adds r1, r5
- adds r0, r4, 0
- movs r2, 0xC8
- bl memcpy
- b _08037986
- .pool
-_080376E8:
- ldr r4, =gPlayerParty
- lsls r1, r6, 8
- ldr r5, =gUnknown_020223C4
- adds r1, r5
- adds r0, r4, 0
- movs r2, 0xC8
- bl memcpy
- movs r1, 0x96
- lsls r1, 1
- adds r4, r1
- lsls r1, r7, 8
- adds r1, r5
- adds r0, r4, 0
- movs r2, 0xC8
- b _08037982
- .pool
-_08037710:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _0803771C
- b _080379D6
-_0803771C:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gPlayerParty + 200
- movs r2, 0x64
- bl link_0800A448
- b _08037986
- .pool
-_08037734:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _08037742
- b _080379D6
-_08037742:
- bl sub_800A5B4
- ldr r0, =gLinkPlayers
- lsls r1, r6, 3
- subs r1, r6
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x18]
- cmp r0, 0
- beq _08037788
- ldr r4, =gPlayerParty + 200
- lsls r1, r7, 8
- ldr r5, =gUnknown_020223C4
- adds r1, r5
- adds r0, r4, 0
- movs r2, 0x64
- bl memcpy
- movs r2, 0x96
- lsls r2, 1
- adds r4, r2
- lsls r1, r6, 8
- adds r1, r5
- adds r0, r4, 0
- movs r2, 0x64
- bl memcpy
- b _08037986
- .pool
-_08037788:
- ldr r4, =gPlayerParty + 200
- lsls r1, r6, 8
- ldr r5, =gUnknown_020223C4
- adds r1, r5
- adds r0, r4, 0
- movs r2, 0x64
- bl memcpy
- movs r0, 0x96
- lsls r0, 1
- adds r4, r0
- lsls r1, r7, 8
- adds r1, r5
- adds r0, r4, 0
- movs r2, 0x64
- b _08037982
- .pool
-_080377B0:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _080377BC
- b _080379D6
-_080377BC:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gEnemyParty
- b _08037686
- .pool
-_080377CC:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _080377DA
- b _080379D6
-_080377DA:
- bl sub_800A5B4
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _080377EA
- b _08037986
-_080377EA:
- ldr r0, =gEnemyParty
- ldr r1, =gUnknown_020223C4
- movs r2, 0xC8
- b _08037982
- .pool
-_080377FC:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _08037808
- b _080379D6
-_08037808:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gEnemyParty + 200
- b _08037686
- .pool
-_08037818:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _08037826
- b _080379D6
-_08037826:
- bl sub_800A5B4
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _08037836
- b _08037986
-_08037836:
- ldr r0, =gEnemyParty + 200
- ldr r1, =gUnknown_020223C4
- movs r2, 0xC8
- b _08037982
- .pool
-_08037848:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _08037854
- b _080379D6
-_08037854:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gEnemyParty + 400
- b _08037686
- .pool
-_08037864:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- beq _08037872
- b _080379D6
-_08037872:
- bl sub_800A5B4
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _0803788A
- ldr r0, =gEnemyParty + 400
- ldr r1, =gUnknown_020223C4
- movs r2, 0xC8
- bl memcpy
-_0803788A:
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- bl shedinja_something
- adds r0, r4, 0
- adds r0, 0x64
- bl shedinja_something
- adds r0, r4, 0
- adds r0, 0xC8
- bl shedinja_something
- movs r1, 0x96
- lsls r1, 1
- adds r0, r4, r1
- bl shedinja_something
- movs r2, 0xC8
- lsls r2, 1
- adds r0, r4, r2
- bl shedinja_something
- movs r1, 0xFA
- lsls r1, 1
- adds r0, r4, r1
- bl shedinja_something
- ldr r4, =gEnemyParty
- adds r0, r4, 0
- bl shedinja_something
- adds r0, r4, 0
- adds r0, 0x64
- bl shedinja_something
- adds r0, r4, 0
- adds r0, 0xC8
- bl shedinja_something
- movs r2, 0x96
- lsls r2, 1
- adds r0, r4, r2
- bl shedinja_something
- movs r1, 0xC8
- lsls r1, 1
- adds r0, r4, r1
- bl shedinja_something
- movs r2, 0xFA
- lsls r2, 1
- adds r0, r4, r2
- bl shedinja_something
- b _08037986
- .pool
-_08037908:
- bl sub_8032768
- bl sub_8184E58
- ldr r2, =gBattleCommunication
- movs r0, 0
- strb r0, [r2, 0x1]
- strb r0, [r2, 0x2]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08037934
- movs r0, 0xE
- strb r0, [r2]
- b _080379D6
- .pool
-_08037934:
- movs r0, 0x10
- strb r0, [r2]
- b _080379D6
-_0803793A:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _080379D6
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203BD2C
- movs r2, 0x4
- bl link_0800A448
- b _08037986
- .pool
-_0803795C:
- bl sub_800A550
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0x3
- bne _080379D6
- bl sub_800A5B4
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x4
- ands r0, r1
- cmp r0, 0
- bne _08037986
- ldr r0, =gUnknown_0203BD2C
- lsls r1, r7, 8
- ldr r2, =gUnknown_020223C4
- adds r1, r2
- movs r2, 0x4
-_08037982:
- bl memcpy
-_08037986:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080379D6
- .pool
-_080379A0:
- ldr r0, =gUnknown_02024333
- adds r1, r0, 0x1
- bl battle_load_something
- lsls r0, 24
- cmp r0, 0
- beq _080379D6
- bl sub_8166188
- ldr r2, =gUnknown_03005D00
- ldr r1, =gMain
- ldr r0, [r1]
- str r0, [r2]
- ldr r0, =sub_8039EF0
- str r0, [r1]
- ldr r0, =sub_8038420
- bl SetMainCallback2
- ldr r2, =gBattleTypeFlags
- ldr r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080379D6
- movs r0, 0x20
- orrs r1, r0
- str r1, [r2]
-_080379D6:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8037458
-
- thumb_func_start sub_80379F8
-sub_80379F8: @ 80379F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0
- mov r8, r0
- ldr r6, =gUnknown_02022FF8
- mov r10, r6
-_08037A12:
- ldr r1, [sp]
- add r1, r8
- movs r0, 0x64
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- mov r1, r8
- lsls r5, r1, 5
- strh r0, [r6]
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- strh r0, [r6, 0x2]
- movs r0, 0x4
- add r0, r10
- mov r9, r0
- adds r7, r5, r0
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r7, 0
- bl GetMonData
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- strb r0, [r6, 0xF]
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r6, 0x10]
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- strh r0, [r6, 0x12]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- mov r1, r10
- adds r1, 0x14
- adds r5, r1
- str r0, [r5]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- str r0, [r6, 0x18]
- adds r0, r4, 0
- bl GetMonGender
- strb r0, [r6, 0x1C]
- adds r0, r7, 0
- bl StripExtCtrlCodes
- adds r0, r4, 0
- movs r1, 0x3
- bl GetMonData
- cmp r0, 0x1
- beq _08037AA4
- adds r0, r7, 0
- movs r1, 0
- bl sub_81DB4DC
-_08037AA4:
- adds r6, 0x20
- movs r1, 0x1
- add r8, r1
- mov r0, r8
- cmp r0, 0x2
- ble _08037A12
- ldr r0, =gUnknown_02023058
- ldr r0, [r0]
- mov r1, r9
- subs r1, 0x4
- movs r2, 0x60
- bl memcpy
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80379F8
-
- thumb_func_start sub_8037ADC
-sub_8037ADC: @ 8037ADC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0x4
- mov r9, r0
- movs r4, 0xF
- ldr r6, =gBattleTypeFlags
- ldr r0, [r6]
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- cmp r0, 0
- beq _08037B02
- movs r1, 0x2
- mov r9, r1
- movs r4, 0x3
-_08037B02:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattleScripting
- adds r0, 0x25
- movs r2, 0
- mov r8, r2
- strb r7, [r0]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0xB4
- str r1, [sp]
- adds r0, 0xAC
- mov r10, r0
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r5, =gBattleCommunication
- ldrb r0, [r5]
- cmp r0, 0x1
- beq _08037BA4
- cmp r0, 0x1
- bgt _08037B50
- cmp r0, 0
- beq _08037B5E
- b _08037D0A
- .pool
-_08037B50:
- cmp r0, 0x2
- bne _08037B56
- b _08037C64
-_08037B56:
- cmp r0, 0x3
- bne _08037B5C
- b _08037C9E
-_08037B5C:
- b _08037D0A
-_08037B5E:
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- bne _08037B68
- b _08037D0A
-_08037B68:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _08037B74
- b _08037D0A
-_08037B74:
- ldr r4, =gUnknown_02023058
- movs r0, 0x60
- bl Alloc
- str r0, [r4]
- movs r0, 0
- bl sub_80379F8
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- movs r2, 0x60
- bl link_0800A448
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _08037D0A
- .pool
-_08037BA4:
- bl sub_800A550
- adds r1, r4, 0
- ands r1, r0
- cmp r1, r4
- beq _08037BB2
- b _08037D0A
-_08037BB2:
- bl sub_800A5B4
- movs r5, 0
- cmp r8, r9
- bge _08037C2E
- lsls r0, r7, 3
- subs r0, r7
- lsls r6, r0, 2
- mov r8, r5
- ldr r4, =gUnknown_020223C4
-_08037BC6:
- cmp r5, r7
- beq _08037C1E
- mov r2, r9
- cmp r2, 0x4
- bne _08037C14
- ldr r2, =gLinkPlayers
- mov r1, r8
- adds r0, r1, r2
- ldrh r1, [r0, 0x18]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _08037BF8
- adds r0, r6, r2
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08037C04
- b _08037C1E
- .pool
-_08037BF8:
- adds r0, r6, r2
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08037C1E
-_08037C04:
- ldr r0, =gUnknown_02022FF8
- adds r1, r4, 0
- movs r2, 0x60
- bl memcpy
- b _08037C1E
- .pool
-_08037C14:
- ldr r0, =gUnknown_02022FF8
- adds r1, r4, 0
- movs r2, 0x60
- bl memcpy
-_08037C1E:
- movs r2, 0x80
- lsls r2, 1
- adds r4, r2
- movs r0, 0x1C
- add r8, r0
- adds r5, 0x1
- cmp r5, r9
- blt _08037BC6
-_08037C2E:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, =gMain
- ldr r0, [r1, 0x8]
- ldr r2, [sp]
- str r0, [r2]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- mov r2, r10
- str r0, [r2]
- ldr r0, =sub_8037ADC
- str r0, [r1, 0x8]
- bl sub_81B9150
- b _08037D0A
- .pool
-_08037C64:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _08037D0A
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08037D0A
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _08037C98
- bl sub_800ADF8
- b _08037D0A
- .pool
-_08037C98:
- bl sub_800AC34
- b _08037D0A
-_08037C9E:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _08037CE4
- bl sub_8010500
- lsls r0, 24
- cmp r0, 0
- beq _08037D0A
- mov r1, r10
- ldr r0, [r1]
- str r0, [r6]
- ldr r1, =gMain
- ldr r2, [sp]
- ldr r0, [r2]
- str r0, [r1, 0x8]
- ldr r0, =InitBattle
- bl SetMainCallback2
- ldr r4, =gUnknown_02023058
- ldr r0, [r4]
- bl Free
- mov r0, r8
- str r0, [r4]
- b _08037D0A
- .pool
-_08037CE4:
- ldr r0, =gUnknown_03003124
- ldrb r5, [r0]
- cmp r5, 0
- bne _08037D0A
- mov r1, r10
- ldr r0, [r1]
- str r0, [r6]
- ldr r1, =gMain
- ldr r2, [sp]
- ldr r0, [r2]
- str r0, [r1, 0x8]
- ldr r0, =InitBattle
- bl SetMainCallback2
- ldr r4, =gUnknown_02023058
- ldr r0, [r4]
- bl Free
- str r5, [r4]
-_08037D0A:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8037ADC
-
- thumb_func_start intro_end
-intro_end: @ 8037D2C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- movs r1, 0xB4
- adds r1, r0
- mov r8, r1
- adds r7, r0, 0
- adds r7, 0xAC
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r5, =gBattleCommunication
- ldrb r0, [r5]
- cmp r0, 0
- beq _08037D64
- cmp r0, 0x1
- beq _08037DA4
- b _08037DD6
- .pool
-_08037D64:
- ldr r4, =gUnknown_02023058
- movs r0, 0x60
- bl Alloc
- str r0, [r4]
- movs r0, 0x3
- bl sub_80379F8
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r1, =gMain
- ldr r0, [r1, 0x8]
- mov r2, r8
- str r0, [r2]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- str r0, [r7]
- ldr r0, =intro_end
- str r0, [r1, 0x8]
- bl sub_81B9150
- b _08037DD6
- .pool
-_08037DA4:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _08037DD6
- movs r0, 0x2
- strb r0, [r5]
- ldr r1, =gBattleTypeFlags
- ldr r0, [r7]
- str r0, [r1]
- ldr r1, =gMain
- mov r2, r8
- ldr r0, [r2]
- str r0, [r1, 0x8]
- ldr r0, =InitBattle
- bl SetMainCallback2
- ldr r4, =gUnknown_02023058
- ldr r0, [r4]
- bl Free
- str r6, [r4]
-_08037DD6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end intro_end
-
- thumb_func_start sub_8037DF4
-sub_8037DF4: @ 8037DF4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattleScripting
- adds r0, 0x25
- strb r7, [r0]
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, =gBattleCommunication
- ldrb r0, [r0]
- cmp r0, 0xA
- bls _08037E20
- b _080383F8
-_08037E20:
- lsls r0, 2
- ldr r1, =_08037E38
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08037E38:
- .4byte _08037E64
- .4byte _08037EA8
- .4byte _08037F50
- .4byte _08038026
- .4byte _0803804C
- .4byte _08038140
- .4byte _08038164
- .4byte _080382CC
- .4byte _0803832C
- .4byte _0803836C
- .4byte _080383BC
-_08037E64:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08037E90
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- bl sub_805EF14
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1]
-_08037E90:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _08037E9A
- b _080383F8
-_08037E9A:
- bl sub_800E0E8
- b _080383F8
- .pool
-_08037EA8:
- ldr r2, =gBattleTypeFlags
- ldr r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08037F30
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- bne _08037EBE
- b _080383F8
-_08037EBE:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _08037F02
- ldr r4, =gBattleStruct
- ldr r0, [r4]
- movs r5, 0xC0
- lsls r5, 1
- adds r0, r5
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- ldr r2, =0x00000181
- adds r1, r0, r2
- movs r0, 0x3
- strb r0, [r1]
- bl sub_8036A5C
- bl sub_8036B44
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, r5
- movs r2, 0x20
- bl link_0800A448
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08037F02:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _08037F0C
- b _080383F8
-_08037F0C:
- movs r0, 0
- movs r1, 0
- bl sub_800DFB4
- b _080383F8
- .pool
-_08037F30:
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- bne _08037F40
- movs r0, 0x4
- orrs r1, r0
- str r1, [r2]
-_08037F40:
- ldr r1, =gBattleCommunication
- movs r0, 0x7
- strb r0, [r1]
- bl berry_801017C
- b _080383F8
- .pool
-_08037F50:
- bl sub_800A550
- movs r1, 0xF
- ands r1, r0
- cmp r1, 0xF
- beq _08037F5E
- b _080383F8
-_08037F5E:
- bl sub_800A5B4
- movs r0, 0x4
- adds r1, r7, 0
- bl sub_8036EB8
- bl berry_801017C
- bl sub_8068AA4
- ldr r0, =task00_0800F6FC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0x87
- lsls r1, 1
- strh r1, [r0, 0xA]
- movs r1, 0x5A
- strh r1, [r0, 0xC]
- strh r2, [r0, 0x12]
- strh r2, [r0, 0xE]
- strh r2, [r0, 0x10]
- ldr r1, =gUnknown_020223C4
- adds r4, r0, 0
- adds r5, r1, 0x2
- movs r7, 0x3F
- movs r6, 0x3
-_08037FA4:
- ldrh r0, [r5]
- str r2, [sp]
- bl sub_8185F90
- ldr r0, =gLinkPlayers
- ldr r2, [sp]
- adds r0, r2, r0
- ldrh r0, [r0, 0x18]
- cmp r0, 0x1
- beq _08037FE6
- cmp r0, 0x1
- bgt _08037FD4
- cmp r0, 0
- beq _08037FDE
- b _0803800C
- .pool
-_08037FD4:
- cmp r0, 0x2
- beq _08037FEE
- cmp r0, 0x3
- beq _08037FFE
- b _0803800C
-_08037FDE:
- ldrh r0, [r5]
- adds r1, r7, 0
- ands r1, r0
- b _08037FF6
-_08037FE6:
- ldrh r0, [r5]
- adds r1, r7, 0
- ands r1, r0
- b _08038006
-_08037FEE:
- ldrh r0, [r5]
- adds r1, r7, 0
- ands r1, r0
- lsls r1, 6
-_08037FF6:
- ldrh r0, [r4, 0xE]
- orrs r1, r0
- strh r1, [r4, 0xE]
- b _0803800C
-_08037FFE:
- ldrh r0, [r5]
- adds r1, r7, 0
- ands r1, r0
- lsls r1, 6
-_08038006:
- ldrh r0, [r4, 0x10]
- orrs r1, r0
- strh r1, [r4, 0x10]
-_0803800C:
- movs r0, 0x80
- lsls r0, 1
- adds r5, r0
- adds r2, 0x1C
- subs r6, 0x1
- cmp r6, 0
- bge _08037FA4
- bl ZeroEnemyPartyMons
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08038026:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _08038032
- b _080383F8
-_08038032:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gPlayerParty
- movs r2, 0xC8
- bl link_0800A448
- b _080383A6
- .pool
-_0803804C:
- bl sub_800A550
- movs r1, 0xF
- ands r1, r0
- cmp r1, 0xF
- beq _0803805A
- b _080383F8
-_0803805A:
- bl sub_800A5B4
- movs r6, 0
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- mov r8, r0
- ldr r4, =gUnknown_020223C4
- movs r5, 0
-_0803806C:
- cmp r6, r7
- bne _080380A0
- ldr r0, =gLinkPlayers
- adds r0, r5, r0
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bgt _0803808C
- cmp r0, 0x1
- bge _08038098
- cmp r0, 0
- beq _08038090
- b _0803812A
- .pool
-_0803808C:
- cmp r0, 0x3
- bne _0803812A
-_08038090:
- ldr r0, =gPlayerParty
- b _08038110
- .pool
-_08038098:
- ldr r0, =gPlayerParty + 300
- b _08038110
- .pool
-_080380A0:
- ldr r2, =gLinkPlayers
- adds r0, r5, r2
- ldrh r1, [r0, 0x18]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _080380C4
- mov r1, r8
- adds r0, r1, r2
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080380D2
- b _080380F8
- .pool
-_080380C4:
- mov r1, r8
- adds r0, r1, r2
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080380F8
-_080380D2:
- adds r0, r5, r2
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bgt _080380E4
- cmp r0, 0x1
- bge _080380F0
- cmp r0, 0
- beq _080380E8
- b _0803812A
-_080380E4:
- cmp r0, 0x3
- bne _0803812A
-_080380E8:
- ldr r0, =gPlayerParty
- b _08038110
- .pool
-_080380F0:
- ldr r0, =gPlayerParty + 300
- b _08038110
- .pool
-_080380F8:
- adds r0, r5, r2
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bgt _0803810A
- cmp r0, 0x1
- bge _08038120
- cmp r0, 0
- beq _0803810E
- b _0803812A
-_0803810A:
- cmp r0, 0x3
- bne _0803812A
-_0803810E:
- ldr r0, =gEnemyParty
-_08038110:
- adds r1, r4, 0
- movs r2, 0xC8
- bl memcpy
- b _0803812A
- .pool
-_08038120:
- ldr r0, =gEnemyParty + 300
- adds r1, r4, 0
- movs r2, 0xC8
- bl memcpy
-_0803812A:
- movs r2, 0x80
- lsls r2, 1
- adds r4, r2
- adds r5, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- ble _0803806C
- b _080383A6
- .pool
-_08038140:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _0803814C
- b _080383F8
-_0803814C:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gPlayerParty + 200
- movs r2, 0x64
- bl link_0800A448
- b _080383A6
- .pool
-_08038164:
- bl sub_800A550
- movs r1, 0xF
- ands r1, r0
- cmp r1, 0xF
- beq _08038172
- b _080383F8
-_08038172:
- bl sub_800A5B4
- movs r6, 0
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- mov r8, r0
- ldr r4, =gUnknown_020223C4
- movs r5, 0
-_08038184:
- cmp r6, r7
- bne _080381B8
- ldr r0, =gLinkPlayers
- adds r0, r5, r0
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bgt _080381A4
- cmp r0, 0x1
- bge _080381B0
- cmp r0, 0
- beq _080381A8
- b _08038242
- .pool
-_080381A4:
- cmp r0, 0x3
- bne _08038242
-_080381A8:
- ldr r0, =gPlayerParty + 200
- b _08038228
- .pool
-_080381B0:
- ldr r0, =gPlayerParty + 500
- b _08038228
- .pool
-_080381B8:
- ldr r2, =gLinkPlayers
- adds r0, r5, r2
- ldrh r1, [r0, 0x18]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _080381DC
- mov r1, r8
- adds r0, r1, r2
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080381EA
- b _08038210
- .pool
-_080381DC:
- mov r1, r8
- adds r0, r1, r2
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08038210
-_080381EA:
- adds r0, r5, r2
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bgt _080381FC
- cmp r0, 0x1
- bge _08038208
- cmp r0, 0
- beq _08038200
- b _08038242
-_080381FC:
- cmp r0, 0x3
- bne _08038242
-_08038200:
- ldr r0, =gPlayerParty + 200
- b _08038228
- .pool
-_08038208:
- ldr r0, =gPlayerParty + 500
- b _08038228
- .pool
-_08038210:
- adds r0, r5, r2
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bgt _08038222
- cmp r0, 0x1
- bge _08038238
- cmp r0, 0
- beq _08038226
- b _08038242
-_08038222:
- cmp r0, 0x3
- bne _08038242
-_08038226:
- ldr r0, =gEnemyParty + 200
-_08038228:
- adds r1, r4, 0
- movs r2, 0x64
- bl memcpy
- b _08038242
- .pool
-_08038238:
- ldr r0, =gEnemyParty + 500
- adds r1, r4, 0
- movs r2, 0x64
- bl memcpy
-_08038242:
- movs r2, 0x80
- lsls r2, 1
- adds r4, r2
- adds r5, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- ble _08038184
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- bl shedinja_something
- adds r0, r4, 0
- adds r0, 0x64
- bl shedinja_something
- adds r0, r4, 0
- adds r0, 0xC8
- bl shedinja_something
- movs r1, 0x96
- lsls r1, 1
- adds r0, r4, r1
- bl shedinja_something
- movs r2, 0xC8
- lsls r2, 1
- adds r0, r4, r2
- bl shedinja_something
- movs r1, 0xFA
- lsls r1, 1
- adds r0, r4, r1
- bl shedinja_something
- ldr r4, =gEnemyParty
- adds r0, r4, 0
- bl shedinja_something
- adds r0, r4, 0
- adds r0, 0x64
- bl shedinja_something
- adds r0, r4, 0
- adds r0, 0xC8
- bl shedinja_something
- movs r2, 0x96
- lsls r2, 1
- adds r0, r4, r2
- bl shedinja_something
- movs r1, 0xC8
- lsls r1, 1
- adds r0, r4, r1
- bl shedinja_something
- movs r2, 0xFA
- lsls r2, 1
- adds r0, r4, r2
- bl shedinja_something
- b _080383A6
- .pool
-_080382CC:
- bl sub_8032768
- bl sub_8184E58
- ldr r3, =gBattleCommunication
- movs r0, 0
- strb r0, [r3, 0x1]
- strb r0, [r3, 0x2]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08038326
- movs r6, 0
- ldr r0, =gLinkPlayers
- ldrb r1, [r0]
- adds r4, r3, 0
- adds r2, r0, 0
- cmp r1, 0x3
- bne _0803830A
- movs r3, 0xFF
-_080382F8:
- adds r2, 0x1C
- adds r6, 0x1
- cmp r6, 0x3
- bgt _0803830A
- ldrh r1, [r2]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0x3
- beq _080382F8
-_0803830A:
- cmp r6, 0x4
- bne _08038320
- movs r0, 0x8
- strb r0, [r4]
- b _080383F8
- .pool
-_08038320:
- movs r0, 0xA
- strb r0, [r4]
- b _080383F8
-_08038326:
- movs r0, 0xA
- strb r0, [r3]
- b _080383F8
-_0803832C:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _080383F8
- ldr r0, =gBattleStruct
- ldr r4, [r0]
- movs r0, 0xC0
- lsls r0, 1
- adds r4, r0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- str r0, [r4]
- ldr r0, =gUnknown_0203BD2C
- ldr r0, [r0]
- str r0, [r4, 0x4]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- movs r2, 0x8
- bl link_0800A448
- b _080383A6
- .pool
-_0803836C:
- bl sub_800A550
- movs r1, 0xF
- ands r1, r0
- cmp r1, 0xF
- bne _080383F8
- bl sub_800A5B4
- movs r2, 0
- b _08038386
-_08038380:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_08038386:
- cmp r2, 0x3
- bhi _080383A6
- ldr r4, =gUnknown_020223C4
- lsls r3, r2, 8
- adds r0, r3, r4
- ldrh r0, [r0]
- movs r1, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08038380
- adds r1, r4, 0x4
- adds r1, r3, r1
- ldr r0, =gUnknown_0203BD2C
- movs r2, 0x4
- bl memcpy
-_080383A6:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080383F8
- .pool
-_080383BC:
- ldr r0, =gUnknown_02024333
- adds r1, r0, 0x1
- bl battle_load_something
- lsls r0, 24
- cmp r0, 0
- beq _080383F8
- ldr r2, =gUnknown_03005D00
- ldr r1, =gMain
- ldr r0, [r1]
- str r0, [r2]
- ldr r0, =sub_8039EF0
- str r0, [r1]
- ldr r0, =sub_8038420
- bl SetMainCallback2
- ldr r3, =gBattleTypeFlags
- ldr r2, [r3]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _080383F8
- ldr r0, =gTrainerBattleOpponent_A
- movs r4, 0x80
- lsls r4, 4
- adds r1, r4, 0
- strh r1, [r0]
- movs r0, 0x20
- orrs r2, r0
- str r2, [r3]
-_080383F8:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8037DF4
-
- thumb_func_start sub_8038420
-sub_8038420: @ 8038420
- push {lr}
- sub sp, 0x4
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- bl RunTasks
- ldr r0, =gMain
- ldrh r1, [r0, 0x2C]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08038482
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _08038482
- bl rfu_lacks_rfufunc
- lsls r0, 24
- cmp r0, 0
- beq _08038482
- ldr r2, =gScriptResult
- ldr r1, =gBattleOutcome
- movs r0, 0x5
- strb r0, [r1]
- movs r0, 0x5
- strh r0, [r2]
- bl ResetPaletteFadeControl
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =sub_80384E4
- bl SetMainCallback2
-_08038482:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8038420
-
- thumb_func_start sub_803849C
-sub_803849C: @ 803849C
- push {lr}
- ldr r1, =gMain
- ldr r0, =gUnknown_03005D00
- ldr r0, [r0]
- str r0, [r1]
- ldr r2, =gUnknown_02039B28
- movs r0, 0x3
- strb r0, [r2, 0x15]
- ldr r0, =0x00000439
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- bl ZeroEnemyPartyMons
- movs r0, 0x5A
- bl m4aSongNumStop
- bl sub_805F094
- bl dp11_free
- bl sub_8057028
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803849C
-
- thumb_func_start sub_80384E4
-sub_80384E4: @ 80384E4
- push {lr}
- bl UpdatePaletteFade
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08038512
- ldr r0, =gMPlay_SE1
- bl m4aMPlayStop
- ldr r0, =gMPlay_SE2
- bl m4aMPlayStop
- bl sub_803849C
- bl FreeAllWindowBuffers
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_08038512:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80384E4
-
- thumb_func_start sub_8038528
-sub_8038528: @ 8038528
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldr r1, =sub_8038538
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_8038528
-
- thumb_func_start sub_8038538
-sub_8038538: @ 8038538
- push {r4,r5,lr}
- adds r3, r0, 0
- ldr r5, =0x0201c000
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- cmp r1, 0x1
- beq _0803856C
- cmp r1, 0x1
- bgt _08038554
- cmp r1, 0
- beq _0803855A
- b _080385DC
- .pool
-_08038554:
- cmp r1, 0x2
- beq _080385C8
- b _080385DC
-_0803855A:
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- strh r1, [r3, 0x30]
- ldr r0, =0x00000281
- strh r0, [r3, 0x32]
- strh r1, [r3, 0x34]
- movs r0, 0x1
- strh r0, [r3, 0x36]
-_0803856C:
- ldrh r0, [r3, 0x36]
- subs r0, 0x1
- strh r0, [r3, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _080385DC
- movs r0, 0x2
- strh r0, [r3, 0x36]
- movs r4, 0x30
- ldrsh r2, [r3, r4]
- movs r0, 0x34
- ldrsh r1, [r3, r0]
- lsls r1, 5
- adds r2, r1
- movs r4, 0x32
- ldrsh r0, [r3, r4]
- subs r0, r1
- movs r4, 0x3D
- lsls r0, 1
- adds r0, r5
- lsls r2, 1
- adds r2, r5
- movs r1, 0x1C
-_0803859A:
- strh r4, [r2]
- strh r4, [r0]
- adds r0, 0x4
- adds r2, 0x4
- subs r1, 0x2
- cmp r1, 0
- bge _0803859A
- ldrh r0, [r3, 0x34]
- adds r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _080385DC
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- movs r0, 0x20
- strh r0, [r3, 0x30]
- b _080385DC
- .pool
-_080385C8:
- ldrh r0, [r3, 0x30]
- subs r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- bne _080385DC
- ldr r0, =sub_8036760
- bl SetMainCallback2
-_080385DC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8038538
-
- thumb_func_start CreateNPCTrainerParty
-CreateNPCTrainerParty: @ 80385E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- str r0, [sp, 0x10]
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x14]
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0
- mov r9, r0
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08038610
- movs r0, 0
- b _080389E2
-_08038610:
- ldr r4, =gBattleTypeFlags
- ldr r0, [r4]
- ldr r1, =0x043f0908
- ands r0, r1
- ldr r1, [sp, 0x14]
- lsls r1, 2
- str r1, [sp, 0x20]
- cmp r0, 0x8
- beq _08038624
- b _080389D2
-_08038624:
- cmp r2, 0x1
- bne _0803862C
- bl ZeroEnemyPartyMons
-_0803862C:
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _08038668
- ldr r0, =gTrainers
- ldr r2, [sp, 0x20]
- ldr r3, [sp, 0x14]
- adds r1, r2, r3
- lsls r1, 3
- adds r1, r0
- adds r2, r1, 0
- adds r2, 0x20
- ldrb r1, [r2]
- movs r4, 0x3
- str r4, [sp, 0x1C]
- adds r4, r0, 0
- cmp r1, 0x3
- bhi _0803867C
- adds r2, r1, 0
- str r2, [sp, 0x1C]
- b _0803867C
- .pool
-_08038668:
- ldr r1, =gTrainers
- ldr r2, [sp, 0x20]
- ldr r3, [sp, 0x14]
- adds r0, r2, r3
- lsls r0, 3
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- str r0, [sp, 0x1C]
- adds r4, r1, 0
-_0803867C:
- movs r0, 0
- str r0, [sp, 0x18]
- b _080389B4
- .pool
-_08038688:
- ldr r2, [sp, 0x20]
- ldr r3, [sp, 0x14]
- adds r0, r2, r3
- lsls r0, 3
- adds r1, r0, r4
- ldrb r0, [r1, 0x18]
- cmp r0, 0x1
- bne _0803869E
- movs r0, 0x80
- mov r10, r0
- b _080386B0
-_0803869E:
- ldrb r1, [r1, 0x2]
- movs r0, 0x80
- ands r0, r1
- movs r1, 0x88
- mov r10, r1
- cmp r0, 0
- beq _080386B0
- movs r2, 0x78
- mov r10, r2
-_080386B0:
- movs r6, 0
- ldr r2, [sp, 0x20]
- ldr r3, [sp, 0x14]
- adds r0, r2, r3
- lsls r0, 3
- adds r1, r4, 0x4
- adds r0, r1
- ldrb r0, [r0]
- ldr r3, [sp, 0x18]
- adds r3, 0x1
- str r3, [sp, 0x24]
- cmp r0, 0xFF
- beq _080386E6
- adds r3, r1, 0
-_080386CC:
- ldr r0, [sp, 0x14]
- adds r1, r2, r0
- lsls r1, 3
- adds r0, r6, r1
- adds r0, r3
- ldrb r0, [r0]
- add r9, r0
- adds r6, 0x1
- adds r1, r6, r1
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _080386CC
-_080386E6:
- ldr r1, [sp, 0x20]
- ldr r2, [sp, 0x14]
- adds r0, r1, r2
- lsls r1, r0, 3
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08038794
- cmp r0, 0x1
- bgt _08038700
- cmp r0, 0
- beq _0803870E
- b _080389AC
-_08038700:
- cmp r0, 0x2
- bne _08038706
- b _08038854
-_08038706:
- cmp r0, 0x3
- bne _0803870C
- b _080388E8
-_0803870C:
- b _080389AC
-_0803870E:
- adds r0, r4, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r4, [r0]
- movs r6, 0
- ldr r3, [sp, 0x18]
- lsls r2, r3, 3
- adds r0, r2, r4
- ldrh r1, [r0, 0x4]
- movs r0, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- ldrb r0, [r0]
- adds r5, r2, 0
- cmp r0, 0xFF
- beq _08038750
- adds r3, r1, 0
- movs r7, 0xB
-_08038734:
- adds r0, r2, r4
- ldrh r0, [r0, 0x4]
- adds r1, r0, 0
- muls r1, r7
- adds r0, r6, r1
- adds r0, r3
- ldrb r0, [r0]
- add r9, r0
- adds r6, 0x1
- adds r1, r6, r1
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _08038734
-_08038750:
- mov r2, r9
- lsls r0, r2, 8
- add r10, r0
- adds r4, r5, r4
- ldrh r1, [r4]
- lsls r0, r1, 5
- subs r0, r1
- movs r1, 0xFF
- bl __divsi3
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r3, [sp, 0x18]
- movs r1, 0x64
- adds r0, r3, 0
- muls r0, r1
- ldr r2, [sp, 0x10]
- adds r0, r2, r0
- ldrh r1, [r4, 0x4]
- ldrb r2, [r4, 0x2]
- movs r3, 0x1
- str r3, [sp]
- mov r3, r10
- str r3, [sp, 0x4]
- movs r3, 0x2
- str r3, [sp, 0x8]
- movs r3, 0
- str r3, [sp, 0xC]
- adds r3, r6, 0
- bl CreateMon
- b _080389AC
- .pool
-_08038794:
- adds r0, r4, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r7, [r0]
- movs r6, 0
- ldr r4, [sp, 0x18]
- lsls r2, r4, 4
- adds r0, r2, r7
- ldrh r1, [r0, 0x4]
- movs r0, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- ldrb r0, [r0]
- mov r8, r2
- cmp r0, 0xFF
- beq _080387D6
- adds r3, r1, 0
- movs r4, 0xB
-_080387BA:
- adds r0, r2, r7
- ldrh r0, [r0, 0x4]
- adds r1, r0, 0
- muls r1, r4
- adds r0, r6, r1
- adds r0, r3
- ldrb r0, [r0]
- add r9, r0
- adds r6, 0x1
- adds r1, r6, r1
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _080387BA
-_080387D6:
- mov r2, r9
- lsls r0, r2, 8
- add r10, r0
- mov r3, r8
- adds r4, r3, r7
- ldrh r1, [r4]
- lsls r0, r1, 5
- subs r0, r1
- movs r1, 0xFF
- bl __divsi3
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, [sp, 0x18]
- movs r1, 0x64
- adds r5, r0, 0
- muls r5, r1
- ldr r2, [sp, 0x10]
- adds r5, r2, r5
- ldrh r1, [r4, 0x4]
- ldrb r2, [r4, 0x2]
- movs r0, 0x1
- str r0, [sp]
- mov r3, r10
- str r3, [sp, 0x4]
- movs r0, 0x2
- str r0, [sp, 0x8]
- movs r0, 0
- str r0, [sp, 0xC]
- adds r0, r5, 0
- adds r3, r6, 0
- bl CreateMon
- movs r6, 0
- mov r0, r8
- adds r0, 0x6
- adds r4, r7, r0
-_08038820:
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r5, 0
- adds r2, r4, 0
- bl SetMonData
- adds r1, r6, 0
- adds r1, 0x11
- ldrh r0, [r4]
- lsls r2, r0, 1
- adds r2, r0
- lsls r2, 2
- ldr r0, =gBattleMoves + 0x4 @ PP offset
- adds r2, r0
- adds r0, r5, 0
- bl SetMonData
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _08038820
- b _080389AC
- .pool
-_08038854:
- adds r0, r4, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r4, [r0]
- movs r6, 0
- ldr r0, [sp, 0x18]
- lsls r2, r0, 3
- adds r0, r2, r4
- ldrh r1, [r0, 0x4]
- movs r0, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- ldrb r0, [r0]
- adds r5, r2, 0
- cmp r0, 0xFF
- beq _08038896
- adds r3, r1, 0
- movs r7, 0xB
-_0803887A:
- adds r0, r2, r4
- ldrh r0, [r0, 0x4]
- adds r1, r0, 0
- muls r1, r7
- adds r0, r6, r1
- adds r0, r3
- ldrb r0, [r0]
- add r9, r0
- adds r6, 0x1
- adds r1, r6, r1
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _0803887A
-_08038896:
- mov r2, r9
- lsls r0, r2, 8
- add r10, r0
- adds r5, r4
- ldrh r1, [r5]
- lsls r0, r1, 5
- subs r0, r1
- movs r1, 0xFF
- bl __divsi3
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r3, [sp, 0x18]
- movs r0, 0x64
- adds r4, r3, 0
- muls r4, r0
- ldr r1, [sp, 0x10]
- adds r4, r1, r4
- ldrh r1, [r5, 0x4]
- ldrb r2, [r5, 0x2]
- movs r0, 0x1
- str r0, [sp]
- mov r3, r10
- str r3, [sp, 0x4]
- movs r0, 0x2
- str r0, [sp, 0x8]
- movs r0, 0
- str r0, [sp, 0xC]
- adds r0, r4, 0
- adds r3, r6, 0
- bl CreateMon
- adds r5, 0x6
- adds r0, r4, 0
- movs r1, 0xC
- adds r2, r5, 0
- bl SetMonData
- b _080389AC
- .pool
-_080388E8:
- adds r0, r4, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r7, [r0]
- movs r6, 0
- ldr r4, [sp, 0x18]
- lsls r2, r4, 4
- adds r0, r2, r7
- ldrh r1, [r0, 0x4]
- movs r0, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- ldrb r0, [r0]
- mov r8, r2
- cmp r0, 0xFF
- beq _0803892A
- adds r3, r1, 0
- movs r4, 0xB
-_0803890E:
- adds r0, r2, r7
- ldrh r0, [r0, 0x4]
- adds r1, r0, 0
- muls r1, r4
- adds r0, r6, r1
- adds r0, r3
- ldrb r0, [r0]
- add r9, r0
- adds r6, 0x1
- adds r1, r6, r1
- adds r1, r3
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _0803890E
-_0803892A:
- mov r2, r9
- lsls r0, r2, 8
- add r10, r0
- mov r3, r8
- adds r5, r3, r7
- ldrh r1, [r5]
- lsls r0, r1, 5
- subs r0, r1
- movs r1, 0xFF
- bl __divsi3
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, [sp, 0x18]
- movs r1, 0x64
- adds r4, r0, 0
- muls r4, r1
- ldr r2, [sp, 0x10]
- adds r4, r2, r4
- ldrh r1, [r5, 0x4]
- ldrb r2, [r5, 0x2]
- movs r0, 0x1
- str r0, [sp]
- mov r3, r10
- str r3, [sp, 0x4]
- movs r0, 0x2
- str r0, [sp, 0x8]
- movs r0, 0
- str r0, [sp, 0xC]
- adds r0, r4, 0
- adds r3, r6, 0
- bl CreateMon
- adds r5, 0x6
- adds r0, r4, 0
- movs r1, 0xC
- adds r2, r5, 0
- bl SetMonData
- movs r6, 0
- adds r5, r4, 0
- mov r0, r8
- adds r0, 0x8
- adds r4, r7, r0
-_08038982:
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r5, 0
- adds r2, r4, 0
- bl SetMonData
- adds r1, r6, 0
- adds r1, 0x11
- ldrh r0, [r4]
- lsls r2, r0, 1
- adds r2, r0
- lsls r2, 2
- ldr r0, =gBattleMoves + 0x4 @ PP offset
- adds r2, r0
- adds r0, r5, 0
- bl SetMonData
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _08038982
-_080389AC:
- ldr r4, [sp, 0x24]
- str r4, [sp, 0x18]
- ldr r4, =gTrainers
- ldr r0, [sp, 0x18]
-_080389B4:
- ldr r1, [sp, 0x1C]
- cmp r0, r1
- bge _080389BC
- b _08038688
-_080389BC:
- ldr r2, =gBattleTypeFlags
- ldr r1, =gTrainers
- ldr r3, [sp, 0x20]
- ldr r4, [sp, 0x14]
- adds r0, r3, r4
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x18]
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
-_080389D2:
- ldr r0, =gTrainers
- ldr r2, [sp, 0x20]
- ldr r3, [sp, 0x14]
- adds r1, r2, r3
- lsls r1, 3
- adds r1, r0
- adds r1, 0x20
- ldrb r0, [r1]
-_080389E2:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end CreateNPCTrainerParty
-
- thumb_func_start sub_8038A04
-sub_8038A04: @ 8038A04
- push {lr}
- ldr r0, =0x04000006
- ldrh r0, [r0]
- subs r0, 0x6F
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x30
- bhi _08038A1E
- movs r1, 0x98
- lsls r1, 8
- movs r0, 0x8
- bl SetGpuReg
-_08038A1E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8038A04
-
- thumb_func_start vblank_cb_08078BB4
-vblank_cb_08078BB4: @ 8038A28
- push {lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x013f0102
- ands r0, r1
- cmp r0, 0
- bne _08038A3A
- bl Random
-_08038A3A:
- ldr r0, =gUnknown_02022E14
- ldrh r1, [r0]
- movs r0, 0x10
- bl SetGpuReg
- ldr r0, =gUnknown_02022E16
- ldrh r1, [r0]
- movs r0, 0x12
- bl SetGpuReg
- ldr r0, =gUnknown_02022E18
- ldrh r1, [r0]
- movs r0, 0x14
- bl SetGpuReg
- ldr r0, =gUnknown_02022E1A
- ldrh r1, [r0]
- movs r0, 0x16
- bl SetGpuReg
- ldr r0, =gUnknown_02022E1C
- ldrh r1, [r0]
- movs r0, 0x18
- bl SetGpuReg
- ldr r0, =gUnknown_02022E1E
- ldrh r1, [r0]
- movs r0, 0x1A
- bl SetGpuReg
- ldr r0, =gUnknown_02022E20
- ldrh r1, [r0]
- movs r0, 0x1C
- bl SetGpuReg
- ldr r0, =gUnknown_02022E22
- ldrh r1, [r0]
- movs r0, 0x1E
- bl SetGpuReg
- ldr r0, =gUnknown_02022E24
- ldrh r1, [r0]
- movs r0, 0x40
- bl SetGpuReg
- ldr r0, =gUnknown_02022E26
- ldrh r1, [r0]
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, =gUnknown_02022E28
- ldrh r1, [r0]
- movs r0, 0x42
- bl SetGpuReg
- ldr r0, =gUnknown_02022E2A
- ldrh r1, [r0]
- movs r0, 0x46
- bl SetGpuReg
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_80BA0A8
- pop {r0}
- bx r0
- .pool
- thumb_func_end vblank_cb_08078BB4
-
- thumb_func_start nullsub_17
-nullsub_17: @ 8038B00
- bx lr
- thumb_func_end nullsub_17
-
- thumb_func_start sub_8038B04
-sub_8038B04: @ 8038B04
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08038B24
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- lsrs r0, 8
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x20]
- b _08038B36
-_08038B24:
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- asrs r0, 8
- ldrh r1, [r5, 0x30]
- subs r1, r0
- strh r1, [r5, 0x20]
-_08038B36:
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r5, 0x32]
- adds r0, r1
- strh r0, [r5, 0x32]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08038B6A
- ldr r4, =0x00002710
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- adds r0, r5, 0
- bl FreeSpriteOamMatrix
- adds r0, r5, 0
- bl DestroySprite
-_08038B6A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8038B04
-
- thumb_func_start sub_8038B74
-sub_8038B74: @ 8038B74
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, =sub_8038B04
- str r0, [r4, 0x1C]
- movs r0, 0x68
- bl PlaySE
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8038B74
-
- thumb_func_start sub_8038B94
-sub_8038B94: @ 8038B94
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r2, [r0]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08038C04
- ldr r1, =gLinkPlayers
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x18]
- cmp r0, 0x1
- beq _08038BF0
- cmp r0, 0x1
- bgt _08038BE8
- cmp r0, 0
- beq _08038C04
- b _08038C0C
- .pool
-_08038BE8:
- cmp r0, 0x2
- beq _08038C04
- cmp r0, 0x3
- bne _08038C0C
-_08038BF0:
- ldr r0, =gEnemyParty
- str r0, [sp, 0x4]
- ldr r1, =gPlayerParty
- str r1, [sp, 0x8]
- b _08038C0C
- .pool
-_08038C04:
- ldr r2, =gPlayerParty
- str r2, [sp, 0x4]
- ldr r3, =gEnemyParty
- str r3, [sp, 0x8]
-_08038C0C:
- movs r7, 0
- movs r0, 0
- mov r8, r0
- ldr r1, [sp]
- lsls r1, 2
- str r1, [sp, 0xC]
- movs r2, 0xCE
- lsls r2, 1
- mov r10, r2
- mov r9, r0
-_08038C20:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- ldr r3, [sp, 0x4]
- adds r4, r3, r4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- adds r1, r0, 0
- cmp r5, 0
- beq _08038C90
- cmp r5, r10
- beq _08038C64
- cmp r6, 0
- beq _08038C64
- cmp r1, 0
- bne _08038C64
- movs r0, 0x1
- mov r2, r9
- lsls r0, r2
- orrs r7, r0
-_08038C64:
- cmp r5, 0
- beq _08038C90
- cmp r6, 0
- beq _08038C7C
- cmp r5, r10
- beq _08038C74
- cmp r1, 0
- beq _08038C7C
-_08038C74:
- movs r0, 0x2
- mov r3, r9
- lsls r0, r3
- orrs r7, r0
-_08038C7C:
- cmp r5, 0
- beq _08038C90
- cmp r5, r10
- beq _08038C90
- cmp r6, 0
- bne _08038C90
- movs r0, 0x3
- mov r1, r9
- lsls r0, r1
- orrs r7, r0
-_08038C90:
- movs r2, 0x2
- add r9, r2
- movs r3, 0x1
- add r8, r3
- mov r0, r8
- cmp r0, 0x5
- ble _08038C20
- ldr r1, =gTasks
- ldr r2, [sp, 0xC]
- ldr r3, [sp]
- adds r0, r2, r3
- lsls r0, 3
- adds r0, r1
- strh r7, [r0, 0xE]
- movs r7, 0
- movs r0, 0
- mov r8, r0
- movs r1, 0xCE
- lsls r1, 1
- mov r10, r1
- mov r9, r0
-_08038CBA:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- ldr r2, [sp, 0x8]
- adds r4, r2, r4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- adds r1, r0, 0
- cmp r5, 0
- beq _08038D2A
- cmp r5, r10
- beq _08038CFE
- cmp r6, 0
- beq _08038CFE
- cmp r1, 0
- bne _08038CFE
- movs r0, 0x1
- mov r3, r9
- lsls r0, r3
- orrs r7, r0
-_08038CFE:
- cmp r5, 0
- beq _08038D2A
- cmp r6, 0
- beq _08038D16
- cmp r5, r10
- beq _08038D0E
- cmp r1, 0
- beq _08038D16
-_08038D0E:
- movs r0, 0x2
- mov r1, r9
- lsls r0, r1
- orrs r7, r0
-_08038D16:
- cmp r5, 0
- beq _08038D2A
- cmp r5, r10
- beq _08038D2A
- cmp r6, 0
- bne _08038D2A
- movs r0, 0x3
- mov r2, r9
- lsls r0, r2
- orrs r7, r0
-_08038D2A:
- movs r3, 0x2
- add r9, r3
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x5
- ble _08038CBA
- ldr r1, =gTasks
- ldr r2, [sp, 0xC]
- ldr r3, [sp]
- adds r0, r2, r3
- lsls r0, 3
- adds r0, r1
- strh r7, [r0, 0x10]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8038B94
-
- thumb_func_start sub_8038D64
-sub_8038D64: @ 8038D64
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x21
- negs r2, r2
- ands r1, r2
- str r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _08038DAC
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
- bl sub_8057028
- bl dp11_free
- bl sub_805F094
- b _08038EB6
- .pool
-_08038DAC:
- str r0, [sp]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, =0x05006000
- mov r0, sp
- bl CpuSet
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0xF0
- bl SetGpuReg
- ldr r4, =0x00005051
- movs r0, 0x44
- adds r1, r4, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- ldr r1, =gUnknown_02022E24
- movs r0, 0xF0
- strh r0, [r1]
- ldr r0, =gUnknown_02022E26
- strh r4, [r0]
- bl dp12_8087EA4
- ldr r0, =gUnknown_02038C28
- movs r3, 0xF0
- movs r1, 0xF0
- lsls r1, 3
- adds r2, r0, r1
- movs r1, 0x4F
-_08038DFE:
- strh r3, [r0]
- strh r3, [r2]
- adds r2, 0x2
- adds r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _08038DFE
- movs r1, 0x50
- ldr r0, =gUnknown_02038C28
- ldr r3, =0x0000ff10
- movs r4, 0x82
- lsls r4, 4
- adds r2, r0, r4
- adds r0, 0xA0
-_08038E1A:
- strh r3, [r0]
- strh r3, [r2]
- adds r2, 0x2
- adds r0, 0x2
- adds r1, 0x1
- cmp r1, 0x9F
- ble _08038E1A
- bl ResetPaletteFade
- ldr r0, =gUnknown_02022E14
- movs r4, 0
- strh r4, [r0]
- ldr r0, =gUnknown_02022E16
- strh r4, [r0]
- ldr r0, =gUnknown_02022E18
- strh r4, [r0]
- ldr r0, =gUnknown_02022E1A
- strh r4, [r0]
- ldr r0, =gUnknown_02022E1C
- strh r4, [r0]
- ldr r0, =gUnknown_02022E1E
- strh r4, [r0]
- ldr r0, =gUnknown_02022E20
- strh r4, [r0]
- ldr r0, =gUnknown_02022E22
- strh r4, [r0]
- bl c2_berry_program_update_menu
- ldr r0, =gUnknown_08C004E0
- movs r1, 0
- movs r2, 0x40
- bl LoadCompressedPalette
- bl sub_803570C
- bl ResetSpriteData
- bl ResetTasks
- bl sub_8036154
- movs r0, 0x4A
- movs r1, 0x37
- bl SetGpuReg
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- ldr r0, =vblank_cb_08078BB4
- bl SetVBlankCallback
- ldr r0, =task00_0800F6FC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x87
- lsls r2, 1
- strh r2, [r1, 0xA]
- movs r2, 0x5A
- strh r2, [r1, 0xC]
- movs r2, 0x1
- strh r2, [r1, 0x12]
- bl sub_8038B94
- ldr r0, =sub_8038F14
- bl SetMainCallback2
- ldr r0, =gBattleCommunication
- strb r4, [r0]
-_08038EB6:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8038D64
-
- thumb_func_start sub_8038F14
-sub_8038F14: @ 8038F14
- push {lr}
- bl sub_8038F34
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- thumb_func_end sub_8038F14
-
- thumb_func_start sub_8038F34
-sub_8038F34: @ 8038F34
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r0, =gBattleCommunication
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x9
- bls _08038F44
- b _080391C6
-_08038F44:
- lsls r0, r1, 2
- ldr r1, =_08038F58
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08038F58:
- .4byte _08038F80
- .4byte _08038FA0
- .4byte _08038FC2
- .4byte _080390C8
- .4byte _08039100
- .4byte _08039118
- .4byte _0803912C
- .4byte _0803914C
- .4byte _08039166
- .4byte _08039184
-_08038F80:
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r1, =gBattleCommunication
- movs r0, 0xFF
- strb r0, [r1, 0x1]
- b _08039174
- .pool
-_08038FA0:
- ldrb r0, [r4, 0x1]
- subs r0, 0x1
- strb r0, [r4, 0x1]
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08038FB0
- b _080391C6
-_08038FB0:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0803910C
-_08038FC2:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08038FD0
- b _080391C6
-_08038FD0:
- bl sub_8185FAC
- ldr r2, =gMain
- ldr r1, =0x00000439
- adds r2, r1
- movs r1, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- movs r3, 0x2
- cmp r0, 0
- beq _08038FFC
- movs r3, 0x4
-_08038FFC:
- movs r4, 0
- ldr r6, =gSaveBlock2Ptr
- cmp r4, r3
- bge _08039022
- ldr r1, =gLinkPlayers
- ldrb r0, [r1]
- cmp r0, 0x3
- bne _08039022
- movs r5, 0xFF
- adds r2, r1, 0
-_08039010:
- adds r2, 0x1C
- adds r4, 0x1
- cmp r4, r3
- bge _08039022
- ldrh r1, [r2]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0x3
- beq _08039010
-_08039022:
- ldr r0, [r6]
- ldr r1, =0x00000ca9
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _080390AC
- cmp r4, r3
- bne _080390AC
- ldr r0, =0x000008d2
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08039074
- bl FreeAllWindowBuffers
- ldr r0, =sub_80392A8
- bl SetMainCallback2
- b _080391C6
- .pool
-_08039074:
- ldr r2, =gMain
- ldr r1, =0x00000439
- adds r0, r2, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _08039090
- ldr r0, [r2, 0x8]
- b _080390B0
- .pool
-_08039090:
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- bne _08039172
- ldr r0, =sub_80B3AF8
- movs r1, 0x5
- bl CreateTask
- b _08039172
- .pool
-_080390AC:
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
-_080390B0:
- bl SetMainCallback2
- bl sub_8057028
- bl dp11_free
- bl sub_805F094
- b _080391C6
- .pool
-_080390C8:
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, =0x05006000
- add r0, sp, 0x4
- bl CpuSet
- movs r4, 0
-_080390DA:
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_80363C4
- adds r4, 0x1
- cmp r4, 0x1
- ble _080390DA
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08039172
- .pool
-_08039100:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080391C6
-_0803910C:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _080391C6
- .pool
-_08039118:
- ldr r0, =sub_80B3AF8
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _080391C6
- b _08039172
- .pool
-_0803912C:
- bl sub_800A520
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080391C6
- bl sub_800ADF8
- ldr r0, =gUnknown_0824978D
- movs r1, 0
- bl battle_show_message_maybe
- b _08039172
- .pool
-_0803914C:
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _080391C6
- bl sub_800A520
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080391C6
- b _08039172
-_08039166:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _08039172
- bl sub_800AC34
-_08039172:
- ldr r1, =gBattleCommunication
-_08039174:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080391C6
- .pool
-_08039184:
- ldr r2, =gMain
- ldr r1, =0x00000439
- adds r0, r2, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- adds r3, r2, 0
- cmp r0, 0
- beq _080391A6
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _080391A6
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080391C6
-_080391A6:
- ldr r0, =0x00000439
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, [r3, 0x8]
- bl SetMainCallback2
- bl sub_8057028
- bl dp11_free
- bl sub_805F094
-_080391C6:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8038F34
-
- thumb_func_start sub_80391E0
-sub_80391E0: @ 80391E0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- cmp r1, 0x6
- bhi _080392A0
- lsls r0, r1, 2
- ldr r1, =_08039200
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08039200:
- .4byte _0803921C
- .4byte _08039230
- .4byte _08039244
- .4byte _08039258
- .4byte _0803926C
- .4byte _08039280
- .4byte _08039294
-_0803921C:
- ldr r0, =gUnknown_0831AA08
- lsls r1, r2, 2
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- lsrs r0, 30
- b _080392A0
- .pool
-_08039230:
- ldr r0, =gUnknown_0831AA08
- lsls r1, r2, 2
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 28
- lsrs r0, 30
- b _080392A0
- .pool
-_08039244:
- ldr r0, =gUnknown_0831AA08
- lsls r1, r2, 2
- adds r1, r0
- ldrh r0, [r1]
- lsls r0, 23
- lsrs r0, 27
- b _080392A0
- .pool
-_08039258:
- ldr r0, =gUnknown_0831AA08
- lsls r1, r2, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 29
- lsrs r0, 30
- b _080392A0
- .pool
-_0803926C:
- ldr r0, =gUnknown_0831AA08
- lsls r1, r2, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 28
- lsrs r0, 31
- b _080392A0
- .pool
-_08039280:
- ldr r0, =gUnknown_0831AA08
- lsls r1, r2, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 26
- lsrs r0, 30
- b _080392A0
- .pool
-_08039294:
- ldr r0, =gUnknown_0831AA08
- lsls r1, r2, 2
- adds r1, r0
- ldr r0, [r1]
- lsls r0, 8
- lsrs r0, 22
-_080392A0:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80391E0
-
- thumb_func_start sub_80392A8
-sub_80392A8: @ 80392A8
- push {r4,lr}
- sub sp, 0x8
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r4, 0
- str r4, [sp, 0x4]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, =0x05006000
- add r0, sp, 0x4
- bl CpuSet
- bl ResetPaletteFade
- ldr r0, =gUnknown_02022E14
- strh r4, [r0]
- ldr r0, =gUnknown_02022E16
- strh r4, [r0]
- ldr r0, =gUnknown_02022E18
- strh r4, [r0]
- ldr r0, =gUnknown_02022E1A
- strh r4, [r0]
- ldr r0, =gUnknown_02022E1C
- strh r4, [r0]
- ldr r0, =gUnknown_02022E1E
- strh r4, [r0]
- ldr r0, =gUnknown_02022E20
- strh r4, [r0]
- ldr r0, =gUnknown_02022E22
- strh r4, [r0]
- bl c2_berry_program_update_menu
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- bl sub_803570C
-_080392FE:
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_80363C4
- adds r4, 0x1
- cmp r4, 0x1
- ble _080392FE
- bl ResetSpriteData
- bl ResetTasks
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- ldr r0, =vblank_cb_08078BB4
- bl SetVBlankCallback
- ldr r0, =sub_803937C
- bl SetMainCallback2
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =gBattleCommunication
- strb r4, [r0]
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80392A8
-
- thumb_func_start sub_803937C
-sub_803937C: @ 803937C
- push {lr}
- bl sub_803939C
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- thumb_func_end sub_803937C
-
- thumb_func_start sub_803939C
-sub_803939C: @ 803939C
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r0, =gBattleCommunication
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0xC
- bls _080393AC
- b _0803975E
-_080393AC:
- lsls r0, r1, 2
- ldr r1, =_080393C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080393C0:
- .4byte _080393F4
- .4byte _08039414
- .4byte _08039450
- .4byte _08039470
- .4byte _0803949C
- .4byte _080394D8
- .4byte _0803957C
- .4byte _08039704
- .4byte _080395CC
- .4byte _08039610
- .4byte _08039678
- .4byte _080396A8
- .4byte _08039704
-_080393F4:
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- b _0803975C
- .pool
-_08039414:
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08039434
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- bne _08039434
- ldr r0, =sub_80B3AF8
- movs r1, 0x5
- bl CreateTask
-_08039434:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- b _0803975C
- .pool
-_08039450:
- ldr r0, =sub_80B3AF8
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _0803945E
- b _0803975E
-_0803945E:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- b _0803975C
- .pool
-_08039470:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0803947E
- b _0803975E
-_0803947E:
- ldr r0, =gText_RecordBattleToPass
- movs r1, 0
- bl battle_show_message_maybe
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- b _0803975C
- .pool
-_0803949C:
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080394AC
- b _0803975E
-_080394AC:
- str r0, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- ldr r0, =gText_BattleYesNoChoice
- movs r1, 0xC
- bl battle_show_message_maybe
- ldr r4, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_8056B74
- b _080396EA
- .pool
-_080394D8:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08039500
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _080394EC
- b _0803975E
-_080394EC:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x1]
- bl sub_8056BAC
- movs r0, 0
- b _0803951E
- .pool
-_08039500:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08039526
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08039510
- b _0803975E
-_08039510:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x1]
- bl sub_8056BAC
- movs r0, 0x1
-_0803951E:
- strb r0, [r4, 0x1]
- bl sub_8056B74
- b _0803975E
-_08039526:
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _08039560
- movs r0, 0x5
- bl PlaySE
- ldr r4, =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08039540
- b _080396EA
-_08039540:
- str r5, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- bl sub_8185338
- strb r0, [r4, 0x1]
- movs r0, 0xA
- strb r0, [r4]
- b _0803975E
- .pool
-_08039560:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0803956A
- b _0803975E
-_0803956A:
- movs r0, 0x5
- bl PlaySE
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- b _0803975C
- .pool
-_0803957C:
- bl sub_800A520
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0803958A
- b _0803975E
-_0803958A:
- str r0, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080395B4
- bl sub_800ADF8
- ldr r0, =gUnknown_0824978D
- movs r1, 0
- bl battle_show_message_maybe
-_080395B4:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- b _0803975C
- .pool
-_080395CC:
- ldrb r0, [r4, 0x1]
- subs r0, 0x1
- strb r0, [r4, 0x1]
- lsls r0, 24
- cmp r0, 0
- beq _080395DA
- b _0803975E
-_080395DA:
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080395F6
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _080395F6
- bl sub_800AC34
-_080395F6:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- b _0803975C
- .pool
-_08039610:
- ldr r2, =gMain
- ldr r1, =0x00000439
- adds r0, r2, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- adds r3, r2, 0
- cmp r0, 0
- beq _08039634
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _08039634
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08039634
- b _0803975E
-_08039634:
- ldr r0, =0x00000439
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08039650
- b _0803975E
-_08039650:
- ldr r0, [r3, 0x8]
- bl SetMainCallback2
- bl sub_8057028
- bl dp11_free
- bl sub_805F094
- b _0803975E
- .pool
-_08039678:
- ldrb r0, [r4, 0x1]
- cmp r0, 0x1
- bne _080396A0
- movs r0, 0x37
- bl PlaySE
- ldr r0, =gText_BattleRecordedOnPass
-_08039686:
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, =gDisplayedStringBattle
- movs r1, 0
- bl battle_show_message_maybe
- movs r0, 0x80
- strb r0, [r4, 0x1]
- b _080396EA
- .pool
-_080396A0:
- ldr r0, =gUnknown_08242481
- b _08039686
- .pool
-_080396A8:
- bl sub_800A520
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803975E
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _0803975E
- ldr r4, =gBattleCommunication
- ldrb r0, [r4, 0x1]
- subs r0, 0x1
- strb r0, [r4, 0x1]
- lsls r0, 24
- cmp r0, 0
- bne _0803975E
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080396EA
- bl sub_800ADF8
- ldr r0, =gUnknown_0824978D
- movs r1, 0
- bl battle_show_message_maybe
-_080396EA:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0803975E
- .pool
-_08039704:
- movs r0, 0
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- bne _0803975E
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08039744
- bl sub_800A520
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803975E
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- b _0803974A
- .pool
-_08039744:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
-_0803974A:
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gBattleCommunication
- movs r0, 0x20
- strb r0, [r1, 0x1]
- movs r0, 0x8
-_0803975C:
- strb r0, [r1]
-_0803975E:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803939C
-
- thumb_func_start shedinja_something
-shedinja_something: @ 803976C
- push {r4,r5,lr}
- sub sp, 0x10
- adds r4, r0, 0
- add r5, sp, 0xC
- movs r0, 0x1
- strb r0, [r5]
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- ldr r1, =0x0000012f
- cmp r0, r1
- bne _080397B4
- adds r0, r4, 0
- movs r1, 0x3
- bl GetMonData
- ldrb r1, [r5]
- cmp r0, r1
- beq _080397B4
- adds r0, r4, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r1, =gUnknown_0831ACA0
- mov r0, sp
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- bne _080397B4
- adds r0, r4, 0
- movs r1, 0x3
- adds r2, r5, 0
- bl SetMonData
-_080397B4:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end shedinja_something
-
- thumb_func_start sub_80397C4
-sub_80397C4: @ 80397C4
- ldr r2, =gUnknown_0831ABA0
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- lsls r1, 3
- adds r1, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 3
- bx lr
- .pool
- thumb_func_end sub_80397C4
-
- thumb_func_start oac_poke_opponent
-oac_poke_opponent: @ 80397DC
- push {lr}
- sub sp, 0x4
- ldr r1, =sub_803980C
- str r1, [r0, 0x1C]
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- movs r0, 0x80
- lsls r0, 10
- ldr r1, =0x00002108
- str r1, [sp]
- movs r1, 0
- movs r2, 0xA
- movs r3, 0xA
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end oac_poke_opponent
-
- thumb_func_start sub_803980C
-sub_803980C: @ 803980C
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_020243FC
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0803982C
- ldrh r0, [r2, 0x24]
- adds r0, 0x2
- strh r0, [r2, 0x24]
- lsls r0, 16
- cmp r0, 0
- bne _0803982C
- ldr r0, =sub_8039838
- str r0, [r2, 0x1C]
-_0803982C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803980C
-
- thumb_func_start sub_8039838
-sub_8039838: @ 8039838
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08039880
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8076918
- ldr r1, =gHealthBoxesIds
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_80729D0
- ldr r0, =sub_8039894
- str r0, [r4, 0x1C]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- movs r0, 0x80
- lsls r0, 10
- ldr r1, =0x00002108
- str r1, [sp]
- movs r1, 0
- movs r2, 0xA
- movs r3, 0
- bl BeginNormalPaletteFade
-_08039880:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039838
-
- thumb_func_start sub_8039894
-sub_8039894: @ 8039894
- push {lr}
- adds r2, r0, 0
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080398B0
- ldrh r1, [r2, 0x32]
- adds r0, r2, 0
- movs r2, 0
- movs r3, 0x1
- bl BattleAnimateFrontSprite
-_080398B0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039894
-
- thumb_func_start SpriteCallbackDummy_2
-SpriteCallbackDummy_2: @ 80398B8
- bx lr
- thumb_func_end SpriteCallbackDummy_2
-
- thumb_func_start sub_80398BC
-sub_80398BC: @ 80398BC
- movs r1, 0x6
- strh r1, [r0, 0x34]
- movs r1, 0x1
- strh r1, [r0, 0x36]
- ldr r1, =sub_80398D0
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_80398BC
-
- thumb_func_start sub_80398D0
-sub_80398D0: @ 80398D0
- push {r4,lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x36]
- subs r0, 0x1
- strh r0, [r3, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _08039924
- movs r0, 0x8
- strh r0, [r3, 0x36]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r4, 0x5
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bne _08039924
- ldrb r1, [r1]
- adds r0, r4, 0
- ands r0, r1
- mov r1, r12
- strb r0, [r1]
- ldr r0, =SpriteCallbackDummy_2
- str r0, [r3, 0x1C]
- ldr r0, =gUnknown_02022F88
- str r2, [r0]
-_08039924:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80398D0
-
- thumb_func_start sub_8039934
-sub_8039934: @ 8039934
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r6, 2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- beq _0803995C
- adds r4, r0, 0
- b _08039960
- .pool
-_0803995C:
- mov r0, r9
- ldrh r4, [r0, 0x32]
-_08039960:
- ldr r1, =gBattlePartyID
- lsls r0, r6, 1
- adds r5, r0, r1
- ldrh r0, [r5]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r7, =gEnemyParty
- adds r0, r7
- movs r1, 0
- bl GetMonData
- cmp r4, 0xC9
- bne _080399E4
- ldrh r0, [r5]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0
- bl GetMonData
- 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
- cmp r0, 0
- bne _080399D0
- movs r0, 0xC9
- b _080399DA
- .pool
-_080399D0:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_080399DA:
- ldr r1, =gUnknown_08300D38
- lsls r0, 2
- b _08039A1C
- .pool
-_080399E4:
- ldr r0, =0x00000181
- cmp r4, r0
- bne _08039A08
- ldr r0, =gUnknown_08525F78
- ldr r1, =gBattleMonForms
- adds r1, r6, r1
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- b _08039A20
- .pool
-_08039A08:
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08039A18
- ldr r0, =gUnknown_08300D38
- b _08039A1E
- .pool
-_08039A18:
- ldr r1, =gUnknown_08300D38
- lsls r0, r4, 2
-_08039A1C:
- adds r0, r1
-_08039A1E:
- ldrb r0, [r0, 0x1]
-_08039A20:
- lsrs r1, r0, 3
- movs r0, 0x8
- subs r0, r1
- mov r1, r9
- strh r0, [r1, 0x34]
- movs r0, 0x1
- strh r0, [r1, 0x36]
- ldr r0, =sub_8039A48
- str r0, [r1, 0x1C]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039934
-
- thumb_func_start sub_8039A48
-sub_8039A48: @ 8039A48
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x36]
- subs r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _08039AC8
- movs r0, 0x2
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x26]
- adds r0, 0x8
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- cmp r0, 0
- bge _08039A7C
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- b _08039AC8
-_08039A7C:
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankIdentity
- ldr r1, =gBattleSpritesGfx
- ldr r1, [r1]
- lsls r0, 24
- lsrs r0, 22
- adds r1, 0x4
- adds r1, r0
- ldr r2, =gBattleMonForms
- movs r3, 0x2E
- ldrsh r0, [r4, r3]
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 11
- ldr r1, [r1]
- adds r1, r0
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- lsls r0, 8
- adds r1, r0
- movs r2, 0
- movs r0, 0xFF
-_08039AAE:
- strb r2, [r1]
- adds r1, 0x1
- subs r0, 0x1
- cmp r0, 0
- bge _08039AAE
- ldr r0, =gBattleMonForms
- movs r3, 0x2E
- ldrsh r1, [r4, r3]
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r4, 0
- bl StartSpriteAnim
-_08039AC8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039A48
-
- thumb_func_start sub_8039AD8
-sub_8039AD8: @ 8039AD8
- movs r1, 0x8
- strh r1, [r0, 0x34]
- adds r1, r0, 0
- adds r1, 0x3E
- ldrb r1, [r1]
- lsls r1, 29
- lsrs r1, 31
- strh r1, [r0, 0x36]
- ldr r1, =sub_8039AF4
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_8039AD8
-
- thumb_func_start sub_8039AF4
-sub_8039AF4: @ 8039AF4
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _08039B26
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- movs r0, 0x8
- strh r0, [r3, 0x34]
-_08039B26:
- pop {r0}
- bx r0
- thumb_func_end sub_8039AF4
-
- thumb_func_start sub_8039B2C
-sub_8039B2C: @ 8039B2C
- movs r1, 0x3E
- adds r1, r0
- mov r12, r1
- movs r1, 0x1
- ldrh r2, [r0, 0x36]
- ands r2, r1
- lsls r2, 2
- mov r1, r12
- ldrb r3, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- movs r1, 0
- strh r1, [r0, 0x36]
- ldr r1, =SpriteCallbackDummy_2
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_8039B2C
-
- thumb_func_start sub_8039B58
-sub_8039B58: @ 8039B58
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08039BA0
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08039B80
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _08039B94
-_08039B80:
- ldrh r0, [r4, 0x32]
- bl HasTwoFramesAnimation
- lsls r0, 24
- cmp r0, 0
- beq _08039B94
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_08039B94:
- ldrh r1, [r4, 0x32]
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x1
- bl BattleAnimateFrontSprite
-_08039BA0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039B58
-
- thumb_func_start sub_8039BB4
-sub_8039BB4: @ 8039BB4
- ldr r1, =oac_poke_ally_
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_8039BB4
-
- thumb_func_start oac_poke_ally_
-oac_poke_ally_: @ 8039BC0
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_020243FC
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08039BE4
- ldrh r0, [r2, 0x24]
- subs r0, 0x2
- strh r0, [r2, 0x24]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0
- bne _08039BE4
- ldr r0, =nullsub_19
- str r0, [r2, 0x1C]
- strh r1, [r2, 0x30]
-_08039BE4:
- pop {r0}
- bx r0
- .pool
- thumb_func_end oac_poke_ally_
-
- thumb_func_start sub_8039BF0
-sub_8039BF0: @ 8039BF0
- ldr r1, =nullsub_19
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_8039BF0
-
- thumb_func_start nullsub_19
-nullsub_19: @ 8039BFC
- bx lr
- thumb_func_end nullsub_19
-
- thumb_func_start sub_8039C00
-sub_8039C00: @ 8039C00
- push {lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_020243FC
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08039C20
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x26]
- adds r0, r1
- strh r0, [r2, 0x26]
-_08039C20:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039C00
-
- thumb_func_start dp11b_obj_instanciate
-dp11b_obj_instanciate: @ 8039C28
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- cmp r1, 0
- beq _08039C64
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r2, r4, 1
- adds r0, r2, r4
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- b _08039C76
- .pool
-_08039C64:
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- lsls r2, r4, 1
- adds r0, r2, r4
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
-_08039C76:
- ands r0, r1
- adds r6, r2, 0
- cmp r0, 0
- bne _08039D2C
- ldr r0, =objc_dp11b_pingpong
- bl CreateInvisibleSpriteWithCallback
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r8
- cmp r0, 0x1
- bne _08039CD0
- ldr r0, =gHealthBoxesIds
- adds r0, r4, r0
- ldrb r7, [r0]
- ldr r2, =gUnknown_020244D0
- ldr r0, [r2]
- ldr r0, [r0, 0x4]
- adds r1, r6, r4
- lsls r1, 2
- adds r0, r1, r0
- strb r5, [r0, 0x2]
- ldr r0, [r2]
- ldr r0, [r0, 0x4]
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
- ldr r2, =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0x80
- b _08039CFE
- .pool
-_08039CD0:
- ldr r0, =gBankSpriteIds
- adds r0, r4, r0
- ldrb r7, [r0]
- ldr r2, =gUnknown_020244D0
- ldr r0, [r2]
- ldr r0, [r0, 0x4]
- adds r1, r6, r4
- lsls r1, 2
- adds r0, r1, r0
- strb r5, [r0, 0x3]
- ldr r0, [r2]
- ldr r0, [r0, 0x4]
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldr r2, =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0xC0
-_08039CFE:
- strh r1, [r0, 0x2E]
- adds r4, r2, 0
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r4
- mov r2, r9
- lsls r0, r2, 24
- asrs r0, 24
- movs r2, 0
- strh r0, [r1, 0x30]
- mov r3, r10
- lsls r0, r3, 24
- asrs r0, 24
- strh r0, [r1, 0x32]
- strh r7, [r1, 0x34]
- mov r0, r8
- strh r0, [r1, 0x36]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x24]
- strh r2, [r0, 0x26]
-_08039D2C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp11b_obj_instanciate
-
- thumb_func_start dp11b_obj_free
-dp11b_obj_free: @ 8039D48
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- bne _08039D9C
- ldr r6, =gUnknown_020244D0
- ldr r0, [r6]
- ldr r1, [r0, 0x4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r5, r0, 2
- adds r3, r5, r1
- ldrb r1, [r3]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08039DEA
- ldr r2, =gSprites
- ldrb r1, [r3, 0x2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x34]
- lsls r1, 24
- lsrs r4, r1, 24
- bl DestroySprite
- ldr r0, [r6]
- ldr r1, [r0, 0x4]
- adds r1, r5, r1
- ldrb r2, [r1]
- movs r0, 0x3
- negs r0, r0
- b _08039DD6
- .pool
-_08039D9C:
- ldr r6, =gUnknown_020244D0
- ldr r0, [r6]
- ldr r1, [r0, 0x4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r5, r0, 2
- adds r3, r5, r1
- ldrb r1, [r3]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08039DEA
- ldr r2, =gSprites
- ldrb r1, [r3, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x34]
- lsls r1, 24
- lsrs r4, r1, 24
- bl DestroySprite
- ldr r0, [r6]
- ldr r1, [r0, 0x4]
- adds r1, r5, r1
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
-_08039DD6:
- ands r0, r2
- strb r0, [r1]
- ldr r0, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x24]
- strh r0, [r1, 0x26]
-_08039DEA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp11b_obj_free
-
- thumb_func_start objc_dp11b_pingpong
-objc_dp11b_pingpong: @ 8039DF8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _08039E10
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- b _08039E14
-_08039E10:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
-_08039E14:
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- ldr r2, =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r4, 0x32]
- adds r0, r2
- strh r0, [r1, 0x26]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end objc_dp11b_pingpong
-
- thumb_func_start sub_8039E44
-sub_8039E44: @ 8039E44
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08039E5C
- ldrh r1, [r2, 0x32]
- adds r0, r2, 0
- bl BattleAnimateBackSprite
-_08039E5C:
- pop {r0}
- bx r0
- thumb_func_end sub_8039E44
-
- thumb_func_start sub_8039E60
-sub_8039E60: @ 8039E60
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8039E9C
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08039E7A
- ldr r0, =nullsub_19
- str r0, [r4, 0x1C]
-_08039E7A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039E60
-
- thumb_func_start sub_8039E84
-sub_8039E84: @ 8039E84
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, =sub_8039E60
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039E84
-
- thumb_func_start sub_8039E9C
-sub_8039E9C: @ 8039E9C
- push {lr}
- adds r2, r0, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r0, 0x3F
- ands r0, r1
- cmp r0, 0
- bne _08039EBE
- ldr r1, =gUnknown_0831ACE0
- adds r0, r2, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- adds r0, 0x28
- strb r1, [r0]
-_08039EBE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039E9C
-
- thumb_func_start nullsub_20
-nullsub_20: @ 8039EC8
- bx lr
- thumb_func_end nullsub_20
-
- thumb_func_start sub_8039ECC
-sub_8039ECC: @ 8039ECC
- push {lr}
- bl sub_8039F40
- ldr r1, =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x1]
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_8012FAC
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039ECC
-
- thumb_func_start sub_8039EF0
-sub_8039EF0: @ 8039EF0
- push {r4,r5,lr}
- ldr r0, =gBattleMainFunc
- ldr r0, [r0]
- bl _call_via_r0
- ldr r1, =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r0, 0
- beq _08039F2A
- ldr r5, =gBattleBankFunc
- adds r4, r1, 0
-_08039F0C:
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r5
- ldr r0, [r0]
- bl _call_via_r0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08039F0C
-_08039F2A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039EF0
-
- thumb_func_start sub_8039F40
-sub_8039F40: @ 8039F40
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0
- bl sub_803D580
- bl sub_803D6A0
- movs r2, 0
- movs r3, 0
- ldr r0, =gUnknown_02024260
- mov r10, r0
- ldr r1, =gUnknown_02024258
- mov r9, r1
- ldr r0, =gUnknown_02024250
- mov r8, r0
- ldr r1, =gLastUsedMovesByBanks
- mov r12, r1
- ldr r5, =gDisableStructs
- movs r4, 0
- ldr r7, =gUnknown_02024240
- ldr r6, =gUnknown_02024268
-_08039F70:
- ldr r0, =gStatuses3
- adds r0, r4, r0
- str r3, [r0]
- movs r1, 0
-_08039F78:
- adds r0, r5, r1
- strb r3, [r0]
- adds r1, 0x1
- cmp r1, 0x1B
- bls _08039F78
- movs r0, 0x2
- strb r0, [r5, 0x16]
- ldr r1, =gUnknown_02024284
- adds r0, r2, r1
- strb r3, [r0]
- mov r0, r12
- strh r3, [r0]
- mov r1, r8
- strh r3, [r1]
- mov r0, r9
- strh r3, [r0]
- mov r1, r10
- strh r3, [r1]
- ldr r0, =gUnknown_02024270
- adds r1, r2, r0
- movs r0, 0xFF
- strb r0, [r1]
- strh r3, [r6]
- strh r3, [r7]
- ldr r1, =gBattleResources
- ldr r0, [r1]
- ldr r0, [r0, 0x4]
- adds r0, r4
- str r3, [r0]
- ldr r1, =gUnknown_02024230
- adds r0, r4, r1
- str r3, [r0]
- movs r0, 0x2
- add r10, r0
- add r9, r0
- add r8, r0
- add r12, r0
- adds r5, 0x1C
- adds r4, 0x4
- adds r7, 0x2
- adds r6, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- ble _08039F70
- movs r5, 0
- ldr r3, =gSideTimers
- ldr r4, =gSideAffecting
- movs r2, 0x1
-_08039FD8:
- strh r5, [r4]
- movs r1, 0
-_08039FDC:
- adds r0, r3, r1
- strb r5, [r0]
- adds r1, 0x1
- cmp r1, 0xB
- bls _08039FDC
- adds r3, 0xC
- adds r4, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _08039FD8
- movs r1, 0
- ldr r2, =gBankAttacker
- strb r1, [r2]
- ldr r0, =gBankTarget
- strb r1, [r0]
- ldr r2, =gBattleWeather
- strh r1, [r2]
- ldr r1, =gWishFutureKnock
- movs r2, 0
- movs r3, 0
-_0803A004:
- adds r0, r1, r2
- strb r3, [r0]
- adds r2, 0x1
- cmp r2, 0x2B
- bls _0803A004
- ldr r2, =gHitMarker
- movs r0, 0
- str r0, [r2]
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- bne _0803A090
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- bne _0803A0AE
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x15]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0803A0AE
- movs r0, 0x80
- b _0803A0AC
- .pool
-_0803A090:
- ldr r0, =0x02000002
- ands r1, r0
- cmp r1, 0
- bne _0803A0AE
- bl sub_8185FB8
- lsls r0, 24
- cmp r0, 0
- beq _0803A0AE
- ldr r1, =gHitMarker
- ldr r0, [r1]
- movs r1, 0x80
- orrs r0, r1
- ldr r2, =gHitMarker
-_0803A0AC:
- str r0, [r2]
-_0803A0AE:
- ldr r3, =gBattleScripting
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x15]
- lsls r0, 30
- lsrs r0, 31
- movs r1, 0
- strb r0, [r3, 0x1D]
- ldr r0, =gUnknown_02024212
- strb r1, [r0]
- ldr r0, =gBattleOutcome
- strb r1, [r0]
- ldr r0, =gBattleExecBuffer
- str r1, [r0]
- ldr r0, =gUnknown_0202432E
- movs r2, 0
- strh r1, [r0]
- ldr r1, =gBattleResources
- ldr r0, [r1]
- ldr r0, [r0, 0x8]
- adds r0, 0x20
- strb r2, [r0]
- ldr r0, [r1]
- ldr r0, [r0, 0xC]
- adds r0, 0x20
- strb r2, [r0]
- ldr r5, =gUnknown_0202432C
- ldr r6, =gBattleMoveDamage
- ldr r7, =gUnknown_020243FC
- ldr r0, =gUnknown_03005D54
- mov r8, r0
- ldr r1, =gAbsentBankFlags
- mov r9, r1
- ldr r2, =gEnemyParty
- mov r10, r2
- ldr r1, =gBattleCommunication
- movs r2, 0
- adds r0, r1, 0x7
-_0803A0FA:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _0803A0FA
- movs r4, 0
- strh r4, [r5]
- movs r0, 0
- str r0, [r6]
- strh r0, [r7]
- strb r4, [r3, 0x18]
- strb r4, [r3, 0x19]
- mov r0, r8
- strb r4, [r0]
- mov r1, r9
- strb r4, [r1]
- ldr r5, =gBattleStruct
- ldr r0, [r5]
- adds r0, 0x6C
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x79
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7A
- strb r4, [r0]
- mov r0, r10
- movs r1, 0xB
- bl GetMonData
- ldr r6, [r5]
- adds r6, 0x7C
- ldr r2, =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x8]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =0x000004fb
- bl __divsi3
- strb r0, [r6]
- ldr r0, [r5]
- adds r0, 0x7B
- movs r1, 0x3
- strb r1, [r0]
- ldr r0, [r5]
- strb r4, [r0, 0x12]
- ldr r0, [r5]
- adds r0, 0x4A
- movs r1, 0x1
- strb r1, [r0]
- movs r2, 0
- movs r1, 0
- adds r6, r5, 0
-_0803A16A:
- ldr r0, [r5]
- adds r0, r2, r0
- adds r0, 0x98
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, r2, r0
- adds r0, 0xB8
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, r2, r0
- adds r0, 0xC8
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, r2, r0
- adds r0, 0xD0
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, r2, r0
- adds r0, 0xE0
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, r2, r0
- adds r0, 0xE8
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, r2, r0
- adds r0, 0xF0
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, r2, r0
- adds r0, 0xF8
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x7
- ble _0803A16A
- movs r2, 0
- ldr r4, =gBattleStruct
- movs r3, 0xA5
- lsls r3, 2
- movs r1, 0x6
-_0803A1BA:
- ldr r0, [r4]
- adds r0, r2, r0
- adds r0, r3
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _0803A1BA
- ldr r0, [r6]
- adds r0, 0xDF
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0x92
- strb r1, [r0]
- bl Random
- ldr r1, =gUnknown_02024330
- strh r0, [r1]
- ldr r1, =gBattleResults
- movs r2, 0
- movs r3, 0
-_0803A1E4:
- adds r0, r1, r2
- strb r3, [r0]
- adds r2, 0x1
- cmp r2, 0x43
- bls _0803A1E4
- ldr r0, =gEnemyParty
- bl IsMonShiny
- ldr r3, =gBattleResults
- movs r1, 0x1
- ands r1, r0
- lsls r1, 6
- ldrb r2, [r3, 0x5]
- movs r0, 0x41
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- movs r1, 0xA8
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- ldr r2, =0x000002a1
- adds r0, r2
- strb r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8039F40
-
- thumb_func_start sub_803A284
-sub_803A284: @ 803A284
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, =gDisableStructs
- ldr r5, =gActiveBank
- ldrb r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r1, sp
- adds r0, r4
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldr r0, [r0]
- str r0, [r1]
- ldr r2, =gBattleMoves
- ldr r3, =gCurrentMove
- ldrh r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- mov r12, r4
- mov r9, r5
- ldr r6, =gStatuses3
- mov r10, r6
- cmp r0, 0x7F
- beq _0803A35C
- movs r5, 0
- mov r6, r9
- movs r4, 0x58
- ldr r2, =gBattleMons
- adds r2, 0x18
- movs r1, 0x6
-_0803A2D4:
- ldrb r0, [r6]
- muls r0, r4
- adds r0, r5, r0
- adds r0, r2
- strb r1, [r0]
- adds r5, 0x1
- cmp r5, 0x7
- ble _0803A2D4
- movs r5, 0
- ldr r7, =gNoOfAllBanks
- ldrb r7, [r7]
- cmp r5, r7
- bge _0803A348
- ldr r0, =gBattleMons + 0x50
- mov r8, r0
- ldr r4, =gDisableStructs
- ldr r3, =gStatuses3
-_0803A2F6:
- movs r0, 0x58
- muls r0, r5
- mov r1, r8
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _0803A31A
- ldrb r0, [r4, 0x14]
- ldr r6, =gActiveBank
- ldrb r6, [r6]
- cmp r0, r6
- bne _0803A31A
- ldr r0, =0xfbffffff
- ands r1, r0
- str r1, [r2]
-_0803A31A:
- ldr r1, [r3]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _0803A33A
- ldrb r0, [r4, 0x15]
- ldr r7, =gActiveBank
- ldrb r7, [r7]
- cmp r0, r7
- bne _0803A33A
- movs r0, 0x19
- negs r0, r0
- ands r1, r0
- str r1, [r3]
- movs r0, 0
- strb r0, [r4, 0x15]
-_0803A33A:
- adds r4, 0x1C
- adds r3, 0x4
- adds r5, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- blt _0803A2F6
-_0803A348:
- ldr r1, =gCurrentMove
- ldrh r0, [r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, =gBattleMoves
- adds r1, r2
- ldrb r0, [r1]
- cmp r0, 0x7F
- bne _0803A414
-_0803A35C:
- mov r3, r9
- ldrb r1, [r3]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- ldr r0, =gBattleMons
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- ldr r1, =0x15100007
- ands r0, r1
- str r0, [r2]
- ldrb r1, [r3]
- lsls r1, 2
- add r1, r10
- ldr r0, [r1]
- ldr r2, =0x0003043f
- ands r0, r2
- str r0, [r1]
- movs r5, 0
- ldr r6, =gNoOfAllBanks
- ldrb r6, [r6]
- cmp r5, r6
- bge _0803A430
- mov r7, r9
- movs r6, 0
-_0803A390:
- ldrb r0, [r7]
- bl GetBankSide
- adds r4, r0, 0
- lsls r0, r5, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0803A3D0
- ldr r1, =gStatuses3
- lsls r0, r5, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _0803A3D0
- ldr r0, =gDisableStructs
- adds r0, r6, r0
- ldrb r0, [r0, 0x15]
- ldrb r3, [r7]
- cmp r0, r3
- bne _0803A3D0
- movs r0, 0x19
- negs r0, r0
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- str r1, [r2]
-_0803A3D0:
- adds r6, 0x1C
- adds r5, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- blt _0803A390
- ldr r6, =gDisableStructs
- mov r12, r6
- ldr r7, =gActiveBank
- mov r9, r7
- b _0803A430
- .pool
-_0803A414:
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- ldr r1, =gBattleMons
- adds r1, 0x50
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- mov r2, r9
- ldrb r0, [r2]
- lsls r0, 2
- add r0, r10
- str r1, [r0]
-_0803A430:
- movs r5, 0
- ldr r3, =gBattleStruct
- mov r8, r3
- ldr r6, =gUnknown_020244AC
- mov r10, r6
- ldr r7, =gNoOfAllBanks
- ldrb r7, [r7]
- cmp r5, r7
- bge _0803A490
- ldr r3, =gBattleMons + 0x50
- ldr r7, =gBitTable
- ldr r6, =gActiveBank
-_0803A448:
- movs r0, 0x58
- muls r0, r5
- adds r4, r0, r3
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r7
- ldr r0, [r0]
- lsls r2, r0, 16
- ldr r1, [r4]
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _0803A466
- bics r1, r2
- str r1, [r4]
-_0803A466:
- ldr r1, [r4]
- movs r0, 0xE0
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _0803A486
- mov r2, r8
- ldr r0, [r2]
- adds r0, r5, r0
- ldrb r0, [r0, 0x14]
- ldrb r2, [r6]
- cmp r0, r2
- bne _0803A486
- ldr r0, =0xffff1fff
- ands r1, r0
- str r1, [r4]
-_0803A486:
- adds r5, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- blt _0803A448
-_0803A490:
- mov r1, r9
- ldrb r0, [r1]
- add r0, r10
- movs r1, 0
- strb r1, [r0]
- mov r2, r9
- ldrb r0, [r2]
- ldr r3, =gUnknown_020244B0
- adds r0, r3
- strb r1, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r6, r12
- adds r1, r0, r6
- movs r5, 0
- movs r2, 0
-_0803A4B4:
- adds r0, r1, r5
- strb r2, [r0]
- adds r5, 0x1
- cmp r5, 0x1B
- bls _0803A4B4
- ldr r7, =gCurrentMove
- ldrh r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r0, =gBattleMoves
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x7F
- bne _0803A540
- mov r2, r9
- ldrb r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- mov r1, sp
- ldrb r1, [r1, 0xA]
- strb r1, [r0, 0xA]
- ldrb r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- mov r1, sp
- ldrb r1, [r1, 0x15]
- strb r1, [r0, 0x15]
- ldrb r0, [r2]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r12
- mov r0, sp
- ldrb r2, [r0, 0xF]
- lsls r2, 28
- movs r4, 0xF
- lsrs r2, 28
- ldrb r3, [r1, 0xF]
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xF]
- mov r3, r9
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- mov r1, sp
- ldrb r1, [r1, 0xF]
- lsrs r1, 4
- lsls r1, 4
- ldrb r2, [r0, 0xF]
- ands r4, r2
- orrs r4, r1
- strb r4, [r0, 0xF]
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- mov r1, sp
- ldrb r1, [r1, 0x14]
- strb r1, [r0, 0x14]
-_0803A540:
- movs r0, 0
- ldr r6, =gBattleMoveFlags
- strb r0, [r6]
- mov r7, r9
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- movs r4, 0
- movs r1, 0x2
- strb r1, [r0, 0x16]
- ldrb r0, [r7]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r12
- mov r0, sp
- ldrb r0, [r0, 0x18]
- movs r2, 0x2
- ands r2, r0
- ldrb r3, [r1, 0x18]
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x18]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, =gLastUsedMovesByBanks
- adds r0, r1
- movs r2, 0
- strh r4, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r3, =gUnknown_02024250
- adds r0, r3
- strh r4, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r6, =gUnknown_02024258
- adds r0, r6
- strh r4, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r7, =gUnknown_02024260
- adds r0, r7
- strh r4, [r0]
- mov r1, r9
- ldrb r0, [r1]
- lsls r0, 1
- ldr r3, =gUnknown_02024240
- adds r0, r3
- strh r4, [r0]
- ldrb r0, [r1]
- ldr r6, =gUnknown_02024270
- adds r0, r6
- movs r1, 0xFF
- strb r1, [r0]
- mov r7, r9
- ldrb r0, [r7]
- mov r3, r8
- ldr r1, [r3]
- lsls r0, 1
- adds r0, r1
- adds r0, 0x98
- strb r2, [r0]
- ldrb r0, [r7]
- ldr r1, [r3]
- lsls r0, 1
- adds r0, r1
- adds r0, 0x99
- strb r2, [r0]
- ldrb r0, [r7]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE0
- strb r2, [r0]
- ldrb r0, [r7]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE1
- strb r2, [r0]
- ldrb r0, [r7]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE2
- strb r2, [r0]
- ldrb r0, [r7]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE3
- strb r2, [r0]
- ldrb r0, [r7]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE4
- strb r2, [r0]
- ldrb r0, [r7]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE5
- strb r2, [r0]
- ldrb r0, [r7]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE6
- strb r2, [r0]
- ldrb r0, [r7]
- ldr r1, [r3]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE7
- strb r2, [r0]
- ldr r1, [r3]
- adds r1, 0x92
- ldrb r0, [r7]
- lsls r0, 2
- ldr r6, =gBitTable
- adds r0, r6
- ldr r2, [r0]
- ldrb r0, [r1]
- bics r0, r2
- strb r0, [r1]
- movs r5, 0
- ldr r7, =gNoOfAllBanks
- ldrb r7, [r7]
- cmp r5, r7
- bge _0803A6B4
- mov r3, r9
- mov r7, r8
- movs r6, 0
-_0803A656:
- ldrb r0, [r3]
- cmp r5, r0
- beq _0803A68C
- lsls r0, r5, 24
- lsrs r0, 24
- str r3, [sp, 0x1C]
- bl GetBankSide
- adds r4, r0, 0
- ldr r3, [sp, 0x1C]
- ldrb r0, [r3]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- ldr r3, [sp, 0x1C]
- cmp r4, r0
- beq _0803A68C
- ldr r0, [r7]
- lsls r1, r5, 1
- adds r0, r1, r0
- adds r0, 0x98
- strb r6, [r0]
- ldr r0, [r7]
- adds r1, r0
- adds r1, 0x99
- strb r6, [r1]
-_0803A68C:
- ldrb r0, [r3]
- ldr r1, [r7]
- lsls r0, 1
- lsls r2, r5, 3
- adds r0, r2
- adds r0, r1
- adds r0, 0xE0
- strb r6, [r0]
- ldrb r0, [r3]
- ldr r1, [r7]
- lsls r0, 1
- adds r0, r2
- adds r0, r1
- adds r0, 0xE1
- strb r6, [r0]
- adds r5, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- blt _0803A656
-_0803A6B4:
- mov r1, r9
- ldrb r0, [r1]
- mov r2, r8
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC8
- movs r2, 0
- strb r2, [r0]
- mov r3, r9
- ldrb r0, [r3]
- mov r6, r8
- ldr r1, [r6]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC9
- strb r2, [r0]
- ldr r0, =gBattleResources
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- ldrb r0, [r3]
- lsls r0, 2
- adds r1, r0
- movs r2, 0
- str r2, [r1]
- ldr r0, =gCurrentMove
- strh r2, [r0]
- ldr r0, [r6]
- adds r0, 0xDA
- movs r1, 0xFF
- strb r1, [r0]
- ldrb r0, [r3]
- bl ClearBankMoveHistory
- mov r7, r9
- ldrb r0, [r7]
- bl ClearBankAbilityHistory
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803A284
-
- thumb_func_start sub_803A75C
-sub_803A75C: @ 803A75C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r5, 0
- ldr r6, =gBattleMons
- ldr r0, =gStatuses3
- mov r8, r0
- ldr r1, =gBattleStruct
- mov r12, r1
- ldr r2, =gUnknown_020244AC
- mov r9, r2
- ldr r3, =gUnknown_020244B0
- mov r10, r3
- ldr r7, =gProtectStructs
- ldr r4, =gActiveBank
- movs r3, 0x58
- adds r2, r6, 0
- adds r2, 0x18
- movs r1, 0x6
-_0803A788:
- ldrb r0, [r4]
- muls r0, r3
- adds r0, r5, r0
- adds r0, r2
- strb r1, [r0]
- adds r5, 0x1
- cmp r5, 0x7
- ble _0803A788
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r2, r6, 0
- adds r2, 0x50
- adds r0, r2
- movs r1, 0
- str r1, [r0]
- ldr r3, =gActiveBank
- ldrb r0, [r3]
- lsls r0, 2
- add r0, r8
- str r1, [r0]
- movs r5, 0
- ldr r6, =gNoOfAllBanks
- ldrb r6, [r6]
- cmp r5, r6
- bge _0803A830
- adds r3, r2, 0
- movs r4, 0
- ldr r0, =gBitTable
- mov r8, r0
-_0803A7C6:
- ldr r1, [r3]
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _0803A7E6
- ldr r2, =gDisableStructs
- adds r0, r4, r2
- ldrb r0, [r0, 0x14]
- ldr r6, =gActiveBank
- ldrb r6, [r6]
- cmp r0, r6
- bne _0803A7E6
- ldr r0, =0xfbffffff
- ands r1, r0
- str r1, [r3]
-_0803A7E6:
- ldr r1, =gActiveBank
- ldrb r0, [r1]
- lsls r0, 2
- add r0, r8
- ldr r0, [r0]
- lsls r2, r0, 16
- ldr r1, [r3]
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _0803A800
- bics r1, r2
- str r1, [r3]
-_0803A800:
- ldr r1, [r3]
- movs r0, 0xE0
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _0803A822
- mov r2, r12
- ldr r0, [r2]
- adds r0, r5, r0
- ldrb r0, [r0, 0x14]
- ldr r6, =gActiveBank
- ldrb r6, [r6]
- cmp r0, r6
- bne _0803A822
- ldr r0, =0xffff1fff
- ands r1, r0
- str r1, [r3]
-_0803A822:
- adds r3, 0x58
- adds r4, 0x1C
- adds r5, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- blt _0803A7C6
-_0803A830:
- ldr r1, =gActiveBank
- ldrb r0, [r1]
- add r0, r9
- movs r1, 0
- strb r1, [r0]
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- add r0, r10
- strb r1, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r3, =gDisableStructs
- adds r1, r0, r3
- movs r5, 0
- movs r2, 0
-_0803A852:
- adds r0, r1, r5
- strb r2, [r0]
- adds r5, 0x1
- cmp r5, 0x1B
- bls _0803A852
- ldr r6, =gActiveBank
- ldrb r1, [r6]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- mov r9, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r6]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- movs r3, 0x3
- negs r3, r3
- mov r8, r3
- mov r0, r8
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r6]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- movs r6, 0x5
- negs r6, r6
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1]
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- subs r3, 0x6
- mov r10, r3
- mov r0, r10
- ands r0, r2
- strb r0, [r1]
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- movs r5, 0x21
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- strb r0, [r1]
- ldr r3, =gActiveBank
- ldrb r1, [r3]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- movs r4, 0x41
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- movs r3, 0x7F
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1, 0x1]
- mov r0, r9
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1, 0x1]
- mov r0, r8
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1, 0x1]
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1, 0x1]
- movs r0, 0x19
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r1, =gActiveBank
- ldrb r0, [r1]
- lsls r0, 4
- adds r0, r7
- ldrb r1, [r0, 0x1]
- ands r5, r1
- strb r5, [r0, 0x1]
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- lsls r0, 4
- adds r0, r7
- ldrb r1, [r0, 0x1]
- ands r4, r1
- strb r4, [r0, 0x1]
- ldrb r0, [r2]
- lsls r0, 4
- adds r0, r7
- ldrb r1, [r0, 0x1]
- ands r3, r1
- strb r3, [r0, 0x1]
- ldrb r0, [r2]
- lsls r0, 4
- adds r0, r7
- ldrb r1, [r0, 0x2]
- mov r3, r9
- ands r3, r1
- strb r3, [r0, 0x2]
- ldrb r0, [r2]
- lsls r0, 4
- adds r0, r7
- ldrb r1, [r0, 0x2]
- mov r2, r8
- ands r2, r1
- strb r2, [r0, 0x2]
- ldr r3, =gActiveBank
- ldrb r0, [r3]
- lsls r0, 4
- adds r0, r7
- ldrb r1, [r0, 0x2]
- ands r6, r1
- strb r6, [r0, 0x2]
- ldrb r0, [r3]
- lsls r0, 4
- adds r0, r7
- ldrb r1, [r0, 0x2]
- mov r6, r10
- ands r6, r1
- strb r6, [r0, 0x2]
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, =gDisableStructs
- adds r0, r1
- movs r2, 0
- movs r1, 0x2
- strb r1, [r0, 0x16]
- ldrb r0, [r3]
- lsls r0, 1
- ldr r3, =gLastUsedMovesByBanks
- adds r0, r3
- movs r3, 0
- strh r2, [r0]
- ldr r6, =gActiveBank
- ldrb r0, [r6]
- lsls r0, 1
- ldr r1, =gUnknown_02024250
- adds r0, r1
- strh r2, [r0]
- ldrb r0, [r6]
- lsls r0, 1
- ldr r6, =gUnknown_02024258
- adds r0, r6
- strh r2, [r0]
- ldr r1, =gActiveBank
- ldrb r0, [r1]
- lsls r0, 1
- ldr r6, =gUnknown_02024260
- adds r0, r6
- strh r2, [r0]
- ldrb r0, [r1]
- lsls r0, 1
- ldr r1, =gUnknown_02024240
- adds r0, r1
- strh r2, [r0]
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- ldr r6, =gUnknown_02024270
- adds r0, r6
- movs r1, 0xFF
- strb r1, [r0]
- ldrb r0, [r2]
- mov r2, r12
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC8
- strb r3, [r0]
- ldr r6, =gActiveBank
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC9
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0x98
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0x99
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE0
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE1
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE2
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE3
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE4
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE5
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE6
- strb r3, [r0]
- ldrb r0, [r6]
- ldr r1, [r2]
- lsls r0, 3
- adds r0, r1
- adds r0, 0xE7
- strb r3, [r0]
- ldr r1, [r2]
- adds r1, 0x92
- ldrb r0, [r6]
- lsls r0, 2
- ldr r2, =gBitTable
- adds r0, r2
- ldr r2, [r0]
- ldrb r0, [r1]
- bics r0, r2
- strb r0, [r1]
- movs r5, 0
- ldr r3, =gNoOfAllBanks
- ldrb r3, [r3]
- cmp r5, r3
- bge _0803AB02
- adds r3, r6, 0
- mov r7, r12
- movs r6, 0
-_0803AAA4:
- ldrb r0, [r3]
- cmp r5, r0
- beq _0803AADA
- lsls r0, r5, 24
- lsrs r0, 24
- str r3, [sp]
- bl GetBankSide
- adds r4, r0, 0
- ldr r3, [sp]
- ldrb r0, [r3]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- ldr r3, [sp]
- cmp r4, r0
- beq _0803AADA
- ldr r0, [r7]
- lsls r1, r5, 1
- adds r0, r1, r0
- adds r0, 0x98
- strb r6, [r0]
- ldr r0, [r7]
- adds r1, r0
- adds r1, 0x99
- strb r6, [r1]
-_0803AADA:
- ldrb r0, [r3]
- ldr r1, [r7]
- lsls r0, 1
- lsls r2, r5, 3
- adds r0, r2
- adds r0, r1
- adds r0, 0xE0
- strb r6, [r0]
- ldrb r0, [r3]
- ldr r1, [r7]
- lsls r0, 1
- adds r0, r2
- adds r0, r1
- adds r0, 0xE1
- strb r6, [r0]
- adds r5, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- blt _0803AAA4
-_0803AB02:
- ldr r0, =gBattleResources
- ldr r0, [r0]
- ldr r1, [r0, 0x4]
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r1, r0
- movs r0, 0
- str r0, [r1]
- ldr r4, =gBattleMons
- ldrb r0, [r2]
- movs r3, 0x58
- adds r2, r0, 0
- muls r2, r3
- b _0803AB6C
- .pool
-_0803AB6C:
- adds r2, r4
- ldr r5, =gBaseStats
- ldrh r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x6]
- adds r2, 0x21
- strb r0, [r2]
- ldr r6, =gActiveBank
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r3
- adds r1, r4
- ldrh r2, [r1]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x7]
- adds r1, 0x22
- strb r0, [r1]
- ldrb r0, [r6]
- bl ClearBankMoveHistory
- ldrb r0, [r6]
- bl ClearBankAbilityHistory
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803A75C
-
- thumb_func_start bc_8012FAC
-bc_8012FAC: @ 803ABC0
- push {r4,r5,lr}
- ldr r5, =gBattleCommunication
- ldrb r0, [r5]
- cmp r0, 0
- beq _0803ABD4
- cmp r0, 0x1
- beq _0803ABF8
- b _0803AC2E
- .pool
-_0803ABD4:
- ldr r4, =gActiveBank
- ldrb r0, [r5, 0x1]
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl dp01_build_cmdbuf_x00_a_b_0
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _0803AC2E
- .pool
-_0803ABF8:
- ldr r0, =gBattleExecBuffer
- ldr r2, [r0]
- cmp r2, 0
- bne _0803AC2E
- ldrb r0, [r5, 0x1]
- adds r0, 0x1
- strb r0, [r5, 0x1]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bne _0803AC2C
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_load_battlefield
- str r0, [r1]
- b _0803AC2E
- .pool
-_0803AC2C:
- strb r2, [r5]
-_0803AC2E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end bc_8012FAC
-
- thumb_func_start bc_load_battlefield
-bc_load_battlefield: @ 803AC34
- push {r4,r5,lr}
- ldr r0, =gBattleExecBuffer
- ldr r5, [r0]
- cmp r5, 0
- bne _0803AC64
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r0, =gUnknown_02022FF0
- ldrb r1, [r0]
- movs r0, 0
- bl dp01_build_cmdbuf_x2E_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803AC84
- str r0, [r1]
- ldr r0, =gBattleCommunication
- strb r5, [r0]
- strb r5, [r0, 0x1]
-_0803AC64:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_load_battlefield
-
- thumb_func_start sub_803AC84
-sub_803AC84: @ 803AC84
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gBattleExecBuffer
- ldr r1, [r0]
- cmp r1, 0
- beq _0803AC98
- b _0803AF4E
-_0803AC98:
- ldr r2, =gActiveBank
- strb r1, [r2]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r1, r0
- bcc _0803ACA6
- b _0803AF48
-_0803ACA6:
- movs r7, 0x58
- ldr r0, =gBattleMons
- mov r8, r0
- mov r9, r2
- movs r1, 0x48
- add r1, r8
- mov r10, r1
-_0803ACB4:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0803ACFC
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803ACFC
- ldrb r0, [r4]
- muls r0, r7
- mov r2, r8
- adds r3, r0, r2
- movs r2, 0
- movs r1, 0
-_0803ACDA:
- adds r0, r3, r2
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x57
- bls _0803ACDA
- b _0803ADCA
- .pool
-_0803ACFC:
- mov r1, r9
- ldrb r0, [r1]
- muls r0, r7
- mov r2, r8
- adds r3, r0, r2
- movs r2, 0
- ldr r6, =gBaseStats
- ldr r5, =gBattleBufferB
- ldr r4, =gActiveBank
-_0803AD0E:
- 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 _0803AD0E
- mov r1, r9
- ldrb r0, [r1]
- adds r2, r0, 0
- muls r2, r7
- add r2, r8
- ldrh r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x6]
- adds r2, 0x21
- strb r0, [r2]
- mov r2, r9
- ldrb r0, [r2]
- adds r2, r0, 0
- muls r2, r7
- add r2, r8
- ldrh r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x7]
- adds r2, 0x22
- strb r0, [r2]
- mov r1, r9
- ldrb r0, [r1]
- adds r1, r0, 0
- muls r1, r7
- add r1, r8
- ldrh r0, [r1]
- ldrb r1, [r1, 0x17]
- lsrs r1, 7
- bl GetAbilityBySpecies
- mov r2, r9
- ldrb r1, [r2]
- muls r1, r7
- add r1, r8
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r2]
- bl GetBankSide
- ldr r1, =gBattleStruct
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0xA8
- ldr r1, [r1]
- adds r1, r0
- mov r2, r9
- ldrb r0, [r2]
- muls r0, r7
- add r0, r8
- ldrh r0, [r0, 0x28]
- strh r0, [r1]
- movs r2, 0
- ldr r4, =gActiveBank
- movs r5, 0x58
- ldr r1, =gBattleMons + 0x18
- adds r6, r4, 0
- movs r0, 0x18
- negs r0, r0
- adds r0, r1
- mov r12, r0
- movs r3, 0x6
-_0803ADAA:
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r2, r0
- adds r0, r1
- strb r3, [r0]
- adds r2, 0x1
- cmp r2, 0x7
- ble _0803ADAA
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r7
- mov r0, r12
- adds r0, 0x50
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_0803ADCA:
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- cmp r0, 0
- bne _0803ADE4
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803ADE4:
- ldr r5, =gBattleTypeFlags
- ldr r0, [r5]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0803AE60
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803AE0A
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803AE0A:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803AEC0
- ldr r0, [r5]
- ldr r1, =0x063f0902
- ands r0, r1
- cmp r0, 0
- bne _0803AEC0
- ldrb r0, [r4]
- muls r0, r7
- add r0, r8
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r4]
- muls r1, r7
- add r1, r10
- ldr r2, [r1]
- movs r1, 0x2
- bl HandleSetPokedexFlag
- b _0803AEC0
- .pool
-_0803AE60:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803AEC0
- ldr r0, [r5]
- ldr r1, =0x063f0902
- ands r0, r1
- cmp r0, 0
- bne _0803AE96
- ldrb r0, [r4]
- muls r0, r7
- add r0, r8
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r4]
- muls r1, r7
- add r1, r10
- ldr r2, [r1]
- movs r1, 0x2
- bl HandleSetPokedexFlag
-_0803AE96:
- movs r0, 0
- bl dp01_build_cmdbuf_x04_4_4_4
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- ldr r1, =gBattleResults
- strh r0, [r1, 0x20]
-_0803AEC0:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0803AEF6
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _0803AEEA
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0803AEF6
-_0803AEEA:
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803AEF6:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0803AF20
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0803AF20
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803AF20:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _0803AF32
- bl sub_81A56B4
-_0803AF32:
- mov r1, r9
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0803AF48
- b _0803ACB4
-_0803AF48:
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_801333C
- str r0, [r1]
-_0803AF4E:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803AC84
-
- thumb_func_start bc_801333C
-bc_801333C: @ 803AF80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x30
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0803AF92
- b _0803B10C
-_0803AF92:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0803AFA0
- b _0803B0AC
-_0803AFA0:
- movs r7, 0
- add r0, sp, 0x4
- mov r8, r0
- mov r6, r8
- mov r5, sp
-_0803AFAA:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _0803AFD0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _0803AFE8
-_0803AFD0:
- ldr r0, =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _0803AFFA
- .pool
-_0803AFE8:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_0803AFFA:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _0803AFAA
- movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r4, =gActiveBank
- strb r0, [r4]
- movs r0, 0
- mov r1, sp
- movs r2, 0x80
- bl dp01_build_cmdbuf_x30_TODO
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- movs r7, 0
- mov r6, r8
- mov r5, sp
-_0803B026:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _0803B04C
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _0803B060
-_0803B04C:
- ldr r0, =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _0803B072
- .pool
-_0803B060:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_0803B072:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _0803B026
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r4, =gActiveBank
- strb r0, [r4]
- movs r0, 0
- mov r1, sp
- movs r2, 0x80
- bl dp01_build_cmdbuf_x30_TODO
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_battle_begin_message
- b _0803B10A
- .pool
-_0803B0AC:
- movs r7, 0
- add r6, sp, 0x4
- mov r5, sp
-_0803B0B2:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _0803B0D8
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _0803B0E8
-_0803B0D8:
- ldr r0, =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _0803B0FA
- .pool
-_0803B0E8:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_0803B0FA:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _0803B0B2
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_8013568
-_0803B10A:
- str r0, [r1]
-_0803B10C:
- add sp, 0x30
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_801333C
-
- thumb_func_start bc_battle_begin_message
-bc_battle_begin_message: @ 803B120
- push {lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0803B142
- movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r1, =gActiveBank
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0
- bl b_std_message
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B180
- str r0, [r1]
-_0803B142:
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_battle_begin_message
-
- thumb_func_start bc_8013568
-bc_8013568: @ 803B158
- push {lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0803B170
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B3CC
- str r0, [r1]
- movs r0, 0
- movs r1, 0
- bl b_std_message
-_0803B170:
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_8013568
-
- thumb_func_start sub_803B180
-sub_803B180: @ 803B180
- push {lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0803B1D0
- ldr r0, =gBattleTypeFlags
- ldr r2, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r2
- cmp r0, 0
- beq _0803B1B8
- movs r0, 0x80
- lsls r0, 18
- ands r0, r2
- cmp r0, 0
- beq _0803B1B8
- movs r1, 0x80
- lsls r1, 24
- ands r1, r2
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- b _0803B1BA
- .pool
-_0803B1B8:
- movs r0, 0x1
-_0803B1BA:
- bl GetBankByPlayerAI
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- bl b_std_message
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B25C
- str r0, [r1]
-_0803B1D0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803B180
-
- thumb_func_start sub_803B1DC
-sub_803B1DC: @ 803B1DC
- push {r4,r5,lr}
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- beq _0803B1FC
- movs r0, 0x80
- lsls r0, 18
- ands r0, r1
- cmp r0, 0
- beq _0803B1FC
- movs r5, 0x2
- cmp r1, 0
- bge _0803B1FE
-_0803B1FC:
- movs r5, 0x3
-_0803B1FE:
- ldr r1, =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r0, 0
- beq _0803B23A
- adds r4, r1, 0
-_0803B20E:
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- bne _0803B228
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803B228:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803B20E
-_0803B23A:
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_801362C
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803B1DC
-
- thumb_func_start sub_803B25C
-sub_803B25C: @ 803B25C
- push {r4-r6,lr}
- ldr r0, =gBattleTypeFlags
- ldr r2, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r2
- cmp r0, 0
- beq _0803B298
- movs r0, 0x80
- lsls r0, 18
- ands r0, r2
- cmp r0, 0
- beq _0803B298
- movs r1, 0x80
- lsls r1, 24
- ands r1, r2
- negs r0, r1
- orrs r0, r1
- lsrs r5, r0, 31
- b _0803B29A
- .pool
-_0803B288:
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B1DC
- b _0803B2F0
- .pool
-_0803B298:
- movs r5, 0x1
-_0803B29A:
- ldr r0, =gBattleExecBuffer
- ldr r2, [r0]
- cmp r2, 0
- bne _0803B2F2
- ldr r0, =gActiveBank
- strb r2, [r0]
- ldr r1, =gNoOfAllBanks
- adds r4, r0, 0
- ldrb r1, [r1]
- cmp r2, r1
- bcs _0803B2EC
- adds r6, r4, 0
-_0803B2B2:
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- bne _0803B2D8
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00008040
- ands r0, r1
- cmp r0, 0
- bne _0803B288
-_0803B2D8:
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gActiveBank
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803B2B2
-_0803B2EC:
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_801362C
-_0803B2F0:
- str r0, [r1]
-_0803B2F2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803B25C
-
- thumb_func_start bc_801362C
-bc_801362C: @ 803B314
- push {r4-r7,lr}
- ldr r0, =gBattleExecBuffer
- ldr r1, [r0]
- cmp r1, 0
- bne _0803B384
- ldr r2, =gActiveBank
- strb r1, [r2]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r1, r0
- bcs _0803B37E
- adds r4, r2, 0
- ldr r6, =gBattleMons
- movs r5, 0x58
- adds r7, r6, 0
- adds r7, 0x48
-_0803B334:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803B36C
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x063f0902
- ands r0, r1
- cmp r0, 0
- bne _0803B36C
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r4]
- muls r1, r5
- adds r1, r7
- ldr r2, [r1]
- movs r1, 0x2
- bl HandleSetPokedexFlag
-_0803B36C:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803B334
-_0803B37E:
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B3CC
- str r0, [r1]
-_0803B384:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_801362C
-
- thumb_func_start sub_803B3AC
-sub_803B3AC: @ 803B3AC
- push {lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0803B3BC
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B3CC
- str r0, [r1]
-_0803B3BC:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803B3AC
-
- thumb_func_start sub_803B3CC
-sub_803B3CC: @ 803B3CC
- push {lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0803B418
- ldr r1, =gBattleTypeFlags
- ldr r2, [r1]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r2
- cmp r0, 0
- beq _0803B3F4
- movs r0, 0x80
- lsls r0, 18
- ands r0, r2
- cmp r0, 0
- beq _0803B3F4
- movs r3, 0x1
- cmp r2, 0
- bge _0803B3F6
-_0803B3F4:
- movs r3, 0
-_0803B3F6:
- ldr r0, [r1]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0803B412
- adds r0, r3, 0
- bl GetBankByPlayerAI
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- bl b_std_message
-_0803B412:
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B4C8
- str r0, [r1]
-_0803B418:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803B3CC
-
- thumb_func_start sub_803B42C
-sub_803B42C: @ 803B42C
- push {r4,r5,lr}
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- beq _0803B44C
- movs r0, 0x80
- lsls r0, 18
- ands r0, r1
- cmp r0, 0
- beq _0803B44C
- movs r5, 0x3
- cmp r1, 0
- bge _0803B44E
-_0803B44C:
- movs r5, 0x2
-_0803B44E:
- ldr r1, =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r0, 0
- beq _0803B48A
- adds r4, r1, 0
-_0803B45E:
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- bne _0803B478
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803B478:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803B45E
-_0803B48A:
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r0, 0x4C
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0xD9
- strb r1, [r0]
- ldr r0, [r2]
- movs r2, 0xD1
- lsls r2, 1
- adds r0, r2
- strb r1, [r0]
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B628
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803B42C
-
- thumb_func_start sub_803B4C8
-sub_803B4C8: @ 803B4C8
- push {r4-r6,lr}
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- beq _0803B500
- movs r0, 0x80
- lsls r0, 18
- ands r0, r1
- cmp r0, 0
- beq _0803B500
- movs r6, 0x1
- cmp r1, 0
- bge _0803B502
- b _0803B500
- .pool
-_0803B4F0:
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B42C
- b _0803B572
- .pool
-_0803B500:
- movs r6, 0
-_0803B502:
- ldr r0, =gBattleExecBuffer
- ldr r2, [r0]
- cmp r2, 0
- bne _0803B574
- ldr r0, =gActiveBank
- strb r2, [r0]
- ldr r1, =gNoOfAllBanks
- adds r4, r0, 0
- ldrb r1, [r1]
- cmp r2, r1
- bcs _0803B554
- adds r5, r4, 0
-_0803B51A:
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r6
- bne _0803B540
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0803B4F0
-_0803B540:
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gActiveBank
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803B51A
-_0803B554:
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r0, 0x4C
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0xD9
- strb r1, [r0]
- ldr r0, [r2]
- movs r2, 0xD1
- lsls r2, 1
- adds r0, r2
- strb r1, [r0]
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B628
-_0803B572:
- str r0, [r1]
-_0803B574:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803B4C8
-
- thumb_func_start sub_803B598
-sub_803B598: @ 803B598
- push {r4,r5,lr}
- ldr r0, =gBattleExecBuffer
- ldr r1, [r0]
- cmp r1, 0
- bne _0803B606
- ldr r2, =gActiveBank
- strb r1, [r2]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r1, r0
- bcs _0803B5E6
- adds r4, r2, 0
- ldr r5, =gBattlePartyID
-_0803B5B2:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803B5D4
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0
- movs r2, 0
- bl dp01_build_cmdbuf_x05_a_b_c
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803B5D4:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803B5B2
-_0803B5E6:
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r0, 0x4C
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0xD9
- strb r1, [r0]
- ldr r0, [r2]
- movs r2, 0xD1
- lsls r2, 1
- adds r0, r2
- strb r1, [r0]
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803B628
- str r0, [r1]
-_0803B606:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803B598
-
- thumb_func_start sub_803B628
-sub_803B628: @ 803B628
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- mov r9, r0
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0803B642
- b _0803B8B2
-_0803B642:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x4C
- ldrb r0, [r0]
- cmp r0, 0
- bne _0803B6C2
- movs r5, 0
- ldr r1, =gNoOfAllBanks
- mov r10, r1
- ldrb r3, [r1]
- cmp r5, r3
- bge _0803B668
- ldr r2, =gTurnOrder
-_0803B65C:
- adds r0, r5, r2
- strb r5, [r0]
- adds r5, 0x1
- ldrb r0, [r1]
- cmp r5, r0
- blt _0803B65C
-_0803B668:
- movs r5, 0
- b _0803B6B8
- .pool
-_0803B67C:
- adds r4, r5, 0x1
- mov r8, r4
- ldrb r1, [r1]
- cmp r8, r1
- bge _0803B6B6
- ldr r6, =gTurnOrder
- ldr r1, =gNoOfAllBanks
- mov r10, r1
- lsls r7, r5, 24
-_0803B68E:
- adds r0, r5, r6
- ldrb r0, [r0]
- adds r1, r4, r6
- ldrb r1, [r1]
- movs r2, 0x1
- bl b_first_side
- lsls r0, 24
- cmp r0, 0
- beq _0803B6AC
- lsls r1, r4, 24
- lsrs r1, 24
- lsrs r0, r7, 24
- bl sub_803CEDC
-_0803B6AC:
- adds r4, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _0803B68E
-_0803B6B6:
- mov r5, r8
-_0803B6B8:
- mov r1, r10
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r5, r0
- blt _0803B67C
-_0803B6C2:
- ldr r5, =gBattleStruct
- ldr r0, [r5]
- movs r4, 0xD1
- lsls r4, 1
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0803B6FC
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0xFF
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0803B6FC
- ldr r0, [r5]
- adds r0, r4
- movs r1, 0x1
- strb r1, [r0]
- b _0803B8B2
- .pool
-_0803B6FC:
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r0, 0x4C
- ldr r1, =gNoOfAllBanks
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0803B756
- ldr r5, =gTurnOrder
- adds r4, r2, 0
-_0803B710:
- ldr r0, [r4]
- adds r0, 0x4C
- ldrb r0, [r0]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0803B736
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0803B736:
- ldr r1, [r4]
- adds r1, 0x4C
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r3, r9
- cmp r3, 0
- beq _0803B748
- b _0803B8B2
-_0803B748:
- ldr r0, [r4]
- adds r0, 0x4C
- ldr r1, =gNoOfAllBanks
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803B710
-_0803B756:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x9
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0803B770
- b _0803B8B2
-_0803B770:
- str r0, [sp]
- movs r0, 0xB
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0803B786
- b _0803B8B2
-_0803B786:
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r0, 0xD9
- ldr r1, =gNoOfAllBanks
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0803B7DA
- ldr r5, =gTurnOrder
- adds r4, r2, 0
-_0803B79A:
- ldr r0, [r4]
- adds r0, 0xD9
- ldrb r0, [r0]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0
- movs r2, 0
- bl ItemBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0803B7BC
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0803B7BC:
- ldr r1, [r4]
- adds r1, 0xD9
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r0, r9
- cmp r0, 0
- bne _0803B8B2
- ldr r0, [r4]
- adds r0, 0xD9
- ldr r1, =gNoOfAllBanks
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803B79A
-_0803B7DA:
- movs r5, 0
- ldr r1, =gBattleStruct
- mov r8, r1
- movs r7, 0x6
- ldr r6, =gUnknown_0202421C
- ldr r2, =gChosenMovesByBanks
- movs r4, 0xFF
- movs r3, 0
-_0803B7EA:
- mov r1, r8
- ldr r0, [r1]
- adds r0, r5, r0
- adds r0, 0x5C
- strb r7, [r0]
- adds r1, r5, r6
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- strh r3, [r2]
- adds r2, 0x2
- adds r5, 0x1
- cmp r5, 0x3
- ble _0803B7EA
- movs r0, 0
- bl sub_803D580
- bl sub_803D6A0
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x91
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- strb r1, [r0]
- ldr r0, =gText_EmptyString3
- movs r1, 0
- bl battle_show_message_maybe
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803BE74
- str r0, [r1]
- bl sub_803F988
- ldr r1, =gBattleCommunication
- movs r2, 0
- adds r0, r1, 0x7
-_0803B834:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _0803B834
- movs r5, 0
- ldr r3, =gNoOfAllBanks
- ldr r2, =gBattleStruct
- ldr r6, =gBattleScripting
- ldr r7, =gBattleMoveFlags
- ldrb r0, [r3]
- cmp r5, r0
- bge _0803B866
- ldr r0, =gBattleMons
- movs r4, 0x9
- negs r4, r4
- adds r1, r0, 0
- adds r1, 0x50
-_0803B856:
- ldr r0, [r1]
- ands r0, r4
- str r0, [r1]
- adds r1, 0x58
- adds r5, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- blt _0803B856
-_0803B866:
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x1]
- ldr r0, [r2]
- movs r3, 0xD0
- lsls r3, 1
- adds r0, r3
- strb r1, [r0]
- ldr r0, [r2]
- adds r3, 0x1
- adds r0, r3
- strb r1, [r0]
- movs r1, 0
- strb r1, [r6, 0x14]
- ldr r0, [r2]
- adds r0, 0x4D
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x3]
- strb r1, [r7]
- bl Random
- ldr r1, =gUnknown_02024330
- strh r0, [r1]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _0803B8B2
- bl StopCryAndClearCrySongs
- ldr r0, =gUnknown_082DB8BE
- bl b_call_bc_move_exec
-_0803B8B2:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803B628
-
- thumb_func_start bc_8013B1C
-bc_8013B1C: @ 803B904
- push {r4-r6,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0803B994
- ldr r1, =gBattleMainFunc
- ldr r0, =BattleTurnPassed
- str r0, [r1]
- ldr r3, =gNoOfAllBanks
- ldr r1, =gBattleCommunication
- movs r2, 0
- adds r0, r1, 0x7
-_0803B91C:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _0803B91C
- movs r4, 0
- ldrb r3, [r3]
- cmp r4, r3
- bge _0803B96E
- ldr r5, =gBattleMons
- adds r6, r5, 0
- adds r6, 0x4C
-_0803B932:
- movs r0, 0x58
- adds r2, r4, 0
- muls r2, r0
- adds r1, r5, 0
- adds r1, 0x50
- adds r1, r2, r1
- ldr r3, [r1]
- subs r0, 0x61
- ands r3, r0
- str r3, [r1]
- adds r2, r6
- ldr r0, [r2]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0803B964
- movs r0, 0x80
- lsls r0, 5
- ands r3, r0
- cmp r3, 0
- beq _0803B964
- lsls r0, r4, 24
- lsrs r0, 24
- bl CancelMultiTurnMoves
-_0803B964:
- adds r4, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _0803B932
-_0803B96E:
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x1]
- ldr r0, [r2]
- movs r3, 0xD0
- lsls r3, 1
- adds r0, r3
- strb r1, [r0]
- ldr r0, [r2]
- adds r3, 0x1
- adds r0, r3
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x3]
- ldr r0, =gBattleMoveFlags
- strb r1, [r0]
-_0803B994:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_8013B1C
-
- thumb_func_start BattleTurnPassed
-BattleTurnPassed: @ 803B9BC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r0, 0x1
- bl sub_803D580
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0
- bne _0803B9EA
- bl UpdateTurnCounters
- lsls r0, 24
- cmp r0, 0
- beq _0803B9DE
- b _0803BB78
-_0803B9DE:
- bl TurnBasedEffects
- lsls r0, 24
- cmp r0, 0
- beq _0803B9EA
- b _0803BB78
-_0803B9EA:
- bl sub_8041728
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0803B9F8
- b _0803BB78
-_0803B9F8:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x4D
- strb r1, [r0]
- bl sub_8041364
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0803BA0E
- b _0803BB78
-_0803BA0E:
- movs r0, 0
- bl sub_803D580
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xfffffdff
- ands r0, r1
- ldr r1, =0xfff7ffff
- ands r0, r1
- ldr r1, =0xffbfffff
- ands r0, r1
- ldr r1, =0xffefffff
- ands r0, r1
- str r0, [r2]
- ldr r0, =gBattleScripting
- strb r4, [r0, 0x18]
- strb r4, [r0, 0x19]
- strb r4, [r0, 0x14]
- ldr r0, =gBattleMoveDamage
- str r4, [r0]
- ldr r0, =gBattleMoveFlags
- strb r4, [r0]
- ldr r1, =gBattleCommunication
- movs r2, 0
- adds r0, r1, 0x4
-_0803BA40:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _0803BA40
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0
- beq _0803BA98
- ldr r1, =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_bs_exec
- str r0, [r1]
- b _0803BB78
- .pool
-_0803BA98:
- ldr r1, =gBattleResults
- ldrb r0, [r1, 0x13]
- ldr r2, =gBattleStruct
- mov r8, r2
- cmp r0, 0xFE
- bhi _0803BAB2
- adds r0, 0x1
- strb r0, [r1, 0x13]
- ldr r1, [r2]
- adds r1, 0xDA
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0803BAB2:
- movs r2, 0
- ldr r4, =gNoOfAllBanks
- ldr r0, =gAbsentBankFlags
- mov r12, r0
- ldr r1, =gText_EmptyString3
- mov r9, r1
- ldrb r0, [r4]
- cmp r2, r0
- bge _0803BAE0
- ldr r7, =gUnknown_0202421C
- movs r6, 0xFF
- movs r5, 0
- ldr r3, =gChosenMovesByBanks
-_0803BACC:
- adds r1, r2, r7
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- strh r5, [r3]
- adds r3, 0x2
- adds r2, 0x1
- ldrb r1, [r4]
- cmp r2, r1
- blt _0803BACC
-_0803BAE0:
- movs r2, 0
- ldr r3, =gBattleStruct
- movs r1, 0x6
-_0803BAE6:
- ldr r0, [r3]
- adds r0, r2, r0
- adds r0, 0x5C
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _0803BAE6
- mov r2, r8
- ldr r0, [r2]
- adds r0, 0x91
- mov r2, r12
- ldrb r1, [r2]
- strb r1, [r0]
- mov r0, r9
- movs r1, 0
- bl battle_show_message_maybe
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803BE74
- str r0, [r1]
- bl Random
- ldr r1, =gUnknown_02024330
- strh r0, [r1]
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 10
- ands r0, r1
- cmp r0, 0
- beq _0803BB5C
- ldr r0, =gUnknown_082DB881
- bl b_call_bc_move_exec
- b _0803BB78
- .pool
-_0803BB5C:
- movs r0, 0x80
- lsls r0, 11
- ands r1, r0
- cmp r1, 0
- beq _0803BB78
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0xDA
- ldrb r0, [r0]
- cmp r0, 0
- bne _0803BB78
- ldr r0, =gUnknown_082DB8BE
- bl b_call_bc_move_exec
-_0803BB78:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end BattleTurnPassed
-
- thumb_func_start sub_803BB88
-sub_803BB88: @ 803BB88
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0803BBB8
- ldr r1, =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x7]
- b _0803BBC2
- .pool
-_0803BBB8:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r2, r0, 24
-_0803BBC2:
- ldr r1, =gStringBank
- ldr r3, =gActiveBank
- ldrb r0, [r3]
- strb r0, [r1]
- cmp r2, 0x25
- bne _0803BBD0
- b _0803BD4C
-_0803BBD0:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0803BBDE
- b _0803BD4C
-_0803BBDE:
- ldr r1, =gBattleMons
- ldrb r2, [r3]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x32
- bne _0803BBF2
- b _0803BD4C
-_0803BBF2:
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- bge _0803BC86
- movs r7, 0
-_0803BC08:
- lsrs r4, r7, 24
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0803BC2C
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r5
- adds r0, r1
- adds r2, r0, 0
- adds r2, 0x20
- ldrb r0, [r2]
- cmp r0, 0x17
- bne _0803BC2C
- b _0803BD54
-_0803BC2C:
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0803BC76
- ldr r3, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- movs r2, 0x58
- muls r0, r2
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- beq _0803BC76
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0803BC76
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0803BC76
- adds r0, r5, 0
- muls r0, r2
- adds r0, r3
- adds r2, r0, 0
- adds r2, 0x20
- ldrb r0, [r2]
- cmp r0, 0x47
- bne _0803BC76
- b _0803BD70
-_0803BC76:
- movs r0, 0x80
- lsls r0, 17
- adds r7, r0
- adds r5, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- blt _0803BC08
-_0803BC86:
- ldr r4, =gActiveBank
- ldrb r1, [r4]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xF
- movs r2, 0x2A
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _0803BCF8
- ldr r6, =gBattleMons
- ldrb r0, [r4]
- movs r3, 0x58
- muls r0, r3
- adds r1, r0, r6
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x8
- beq _0803BCBE
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _0803BCF8
-_0803BCBE:
- ldr r0, =gBattleScripting
- subs r1, r5, 0x1
- strb r1, [r0, 0x17]
- ldr r2, =gLastUsedAbility
- adds r0, r1, 0
- muls r0, r3
- adds r0, r6
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- b _0803BD90
- .pool
-_0803BCF8:
- ldr r1, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x0400e000
- ands r0, r1
- cmp r0, 0
- bne _0803BD22
- ldr r1, =gStatuses3
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- beq _0803BD40
-_0803BD22:
- ldr r1, =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- movs r0, 0x1
- b _0803BD92
- .pool
-_0803BD40:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0803BD8C
-_0803BD4C:
- movs r0, 0
- b _0803BD92
- .pool
-_0803BD54:
- ldr r0, =gBattleScripting
- strb r5, [r0, 0x17]
- ldr r1, =gLastUsedAbility
- ldrb r0, [r2]
- strb r0, [r1]
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- b _0803BD90
- .pool
-_0803BD70:
- ldr r0, =gBattleScripting
- strb r5, [r0, 0x17]
- ldr r1, =gLastUsedAbility
- ldrb r0, [r2]
- strb r0, [r1]
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- b _0803BD90
- .pool
-_0803BD8C:
- ldr r1, =gBattleCommunication
- movs r0, 0x1
-_0803BD90:
- strb r0, [r1, 0x5]
-_0803BD92:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_803BB88
-
- thumb_func_start sub_803BDA0
-sub_803BDA0: @ 803BDA0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- ldr r0, =gBattlePartyID
- mov r8, r0
- ldr r1, =gUnknown_0203CF00
- mov r12, r1
- ldr r7, =gBattleStruct
- lsls r0, r5, 1
- adds r4, r0, r5
- adds r6, r0, 0
-_0803BDBC:
- mov r0, r12
- adds r2, r3, r0
- ldr r1, [r7]
- adds r0, r4, r3
- adds r0, r1
- adds r0, 0x60
- ldrb r0, [r0]
- strb r0, [r2]
- adds r3, 0x1
- cmp r3, 0x2
- ble _0803BDBC
- mov r1, r8
- adds r0, r6, r1
- ldrb r0, [r0]
- bl pokemon_order_func
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r7, =gBattleStruct
- ldr r0, [r7]
- adds r0, r5, r0
- adds r0, 0x5C
- ldrb r0, [r0]
- bl pokemon_order_func
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_81B8FB0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0803BE4C
- movs r3, 0
- adds r4, r7, 0
- adds r6, r5
- movs r0, 0x2
- adds r1, r5, 0
- eors r1, r0
- ldr r7, =gUnknown_0203CF00
- lsls r0, r1, 1
- adds r5, r0, r1
-_0803BE1A:
- ldr r0, [r4]
- adds r1, r6, r3
- adds r1, r0
- adds r1, 0x60
- adds r2, r3, r7
- ldrb r0, [r2]
- strb r0, [r1]
- ldr r1, [r4]
- adds r0, r5, r3
- adds r0, r1
- adds r0, 0x60
- ldrb r1, [r2]
- strb r1, [r0]
- adds r3, 0x1
- cmp r3, 0x2
- ble _0803BE1A
- b _0803BE66
- .pool
-_0803BE4C:
- movs r3, 0
- adds r2, r6, r5
- ldr r4, =gUnknown_0203CF00
-_0803BE52:
- ldr r0, [r7]
- adds r1, r2, r3
- adds r1, r0
- adds r1, 0x60
- adds r0, r3, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x1
- cmp r3, 0x2
- ble _0803BE52
-_0803BE66:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803BDA0
-
- thumb_func_start sub_803BE74
-sub_803BE74: @ 803BE74
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r0, =gBattleCommunication
- movs r1, 0
- strb r1, [r0, 0x4]
- ldr r0, =gActiveBank
- strb r1, [r0]
- ldr r0, =gNoOfAllBanks
- bl _0803CD12
- .pool
-_0803BE9C:
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gBattleCommunication
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bls _0803BEB8
- bl _0803CD04
-_0803BEB8:
- lsls r0, 2
- ldr r1, =_0803BED0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0803BED0:
- .4byte _0803BEF4
- .4byte _0803BF0C
- .4byte _0803C02C
- .4byte _0803C7D8
- .4byte _0803CAD0
- .4byte _0803CB84
- .4byte _0803CBC8
- .4byte _0803CBF4
- .4byte _0803CC38
-_0803BEF4:
- bl sub_8185FD0
- ldr r1, =gBattleCommunication
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- bl _0803CC20
- .pool
-_0803BF0C:
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- ldr r4, =gBattleStruct
- ldr r0, [r4]
- adds r1, r0
- adds r1, 0x5C
- movs r0, 0x6
- strb r0, [r1]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0803BF68
- movs r1, 0x2
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- beq _0803BF68
- eors r5, r1
- adds r0, r5, 0
- bl GetBankByPlayerAI
- ldr r1, [r4]
- adds r1, 0x91
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0803BF68
- ldr r4, =gBattleCommunication
- adds r0, r5, 0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- beq _0803BF68
- bl _0803CD04
-_0803BF68:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x91
- ldrb r3, [r0]
- ldr r1, =gBitTable
- ldr r4, =gActiveBank
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ands r3, r0
- cmp r3, 0
- beq _0803BFD0
- ldr r0, =gUnknown_0202421C
- adds r0, r2, r0
- movs r1, 0xD
- strb r1, [r0]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0803BFBC
- ldr r0, =gBattleCommunication
- ldrb r1, [r4]
- adds r1, r0
- movs r0, 0x5
- strb r0, [r1]
- bl _0803CD04
- .pool
-_0803BFBC:
- ldr r0, =gBattleCommunication
- ldrb r1, [r4]
- adds r1, r0
- movs r0, 0x4
- strb r0, [r1]
- bl _0803CD04
- .pool
-_0803BFD0:
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 5
- ands r0, r1
- cmp r0, 0
- bne _0803BFF0
- movs r0, 0x80
- lsls r0, 15
- ands r1, r0
- cmp r1, 0
- beq _0803C00C
-_0803BFF0:
- ldr r0, =gUnknown_0202421C
- adds r0, r2, r0
- strb r3, [r0]
- ldr r1, =gBattleCommunication
- ldrb r0, [r4]
- bl _0803CC72
- .pool
-_0803C00C:
- ldr r0, =gUnknown_0202421C
- ldrb r1, [r0]
- ldr r0, =gBattleBufferB
- ldrb r2, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r2, r0
- movs r0, 0
- bl dp01_build_cmdbuf_x12_a_bb
- bl _0803CB68
- .pool
-_0803C02C:
- ldr r3, =gBattleExecBuffer
- ldr r1, =gBitTable
- ldr r6, =gActiveBank
- ldrb r5, [r6]
- lsls r0, r5, 2
- adds r0, r1
- ldr r2, [r0]
- lsls r1, r2, 4
- movs r0, 0xF0
- lsls r0, 24
- orrs r1, r0
- orrs r1, r2
- lsls r0, r2, 8
- orrs r1, r0
- lsls r2, 12
- orrs r1, r2
- ldr r0, [r3]
- ands r0, r1
- cmp r0, 0
- beq _0803C058
- bl _0803CD04
-_0803C058:
- ldr r4, =gBattleBufferB
- lsls r0, r5, 9
- adds r4, 0x1
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r5, 0
- bl sub_8184FBC
- ldr r1, =gUnknown_0202421C
- ldrb r0, [r6]
- adds r1, r0, r1
- lsls r0, 9
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r6]
- lsls r0, 9
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0xC
- bls _0803C084
- b _0803C6C4
-_0803C084:
- lsls r0, 2
- ldr r1, =_0803C0A8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0803C0A8:
- .4byte _0803C0DC
- .4byte _0803C230
- .4byte _0803C268
- .4byte _0803C6C4
- .4byte _0803C6C4
- .4byte _0803C440
- .4byte _0803C48C
- .4byte _0803C6C4
- .4byte _0803C6C4
- .4byte _0803C6C4
- .4byte _0803C6C4
- .4byte _0803C6C4
- .4byte _0803C4B4
-_0803C0DC:
- bl AreAllMovesUnusable
- lsls r0, 24
- cmp r0, 0
- beq _0803C134
- ldr r0, =gBattleCommunication
- ldr r3, =gActiveBank
- ldrb r1, [r3]
- adds r1, r0
- movs r4, 0
- movs r0, 0x6
- strb r0, [r1]
- ldrb r1, [r3]
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0x54
- strb r4, [r1]
- ldrb r1, [r3]
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0x84
- movs r0, 0x4
- strb r0, [r1]
- ldrb r1, [r3]
- ldr r2, [r2]
- adds r2, r1, r2
- ldr r0, =gBattleBufferB
- lsls r1, 9
- adds r0, 0x3
- adds r1, r0
- ldrb r0, [r1]
- strb r0, [r2, 0xC]
- bl _0803CD70
- .pool
-_0803C134:
- ldr r3, =gDisableStructs
- ldr r5, =gActiveBank
- ldrb r4, [r5]
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r3
- ldrh r2, [r0, 0x6]
- cmp r2, 0
- beq _0803C188
- ldr r1, =gChosenMovesByBanks
- lsls r0, r4, 1
- adds r0, r1
- strh r2, [r0]
- ldrb r2, [r5]
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r1, r2, r1
- adds r1, 0x80
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0xC]
- strb r0, [r1]
- ldr r1, =gBattleCommunication
- ldrb r0, [r5]
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- bl _0803CD70
- .pool
-_0803C188:
- add r2, sp, 0x4
- ldr r3, =gBattleMons
- movs r1, 0x58
- adds r0, r4, 0
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r2, 0x10]
- ldrb r0, [r5]
- muls r0, r1
- adds r0, r3
- adds r0, 0x21
- ldrb r0, [r0]
- strb r0, [r2, 0x12]
- ldrb r0, [r5]
- muls r0, r1
- adds r0, r3
- adds r0, 0x22
- ldrb r0, [r0]
- strb r0, [r2, 0x13]
- movs r4, 0
- mov r1, sp
- adds r1, 0xC
- str r1, [sp, 0x18]
- add r2, sp, 0x10
- mov r10, r2
- mov r8, r3
- adds r7, r5, 0
- movs r6, 0x58
- movs r0, 0xC
- add r0, r8
- mov r9, r0
- add r5, sp, 0x4
-_0803C1CA:
- lsls r2, r4, 1
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r2, r0
- add r0, r9
- ldrh r0, [r0]
- strh r0, [r5]
- ldr r1, [sp, 0x18]
- adds r3, r1, r4
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r4, r0
- mov r1, r8
- adds r1, 0x24
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r3]
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- adds r2, r1
- add r2, r9
- ldrh r0, [r2]
- add r1, r8
- adds r1, 0x3B
- ldrb r1, [r1]
- lsls r2, r4, 24
- lsrs r2, 24
- bl CalculatePPWithBonus
- mov r2, r10
- adds r1, r2, r4
- strb r0, [r1]
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0803C1CA
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x1
- ands r1, r0
- movs r0, 0
- movs r2, 0
- add r3, sp, 0x4
- bl sub_8033E30
- b _0803C42E
- .pool
-_0803C230:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x021f0902
- ands r0, r1
- cmp r0, 0
- bne _0803C23E
- b _0803C48C
-_0803C23E:
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_8185008
- ldr r1, =gUnknown_02024220
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, =gUnknown_082DB879
- b _0803C784
- .pool
-_0803C268:
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- ldr r3, =gBattleStruct
- ldr r1, [r3]
- adds r1, r0, r1
- adds r1, 0x58
- ldr r2, =gBattlePartyID
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r7, =gBattleMons
- ldrb r2, [r5]
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- adds r1, r7, 0
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- ldr r0, =0x0400e000
- ands r1, r0
- cmp r1, 0
- bne _0803C2B8
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- bne _0803C2B8
- ldr r0, =gStatuses3
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x80
- lsls r0, 3
- ands r1, r0
- cmp r1, 0
- beq _0803C2EC
-_0803C2B8:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, 0x60
- ldr r0, [r3]
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x6
- b _0803C400
- .pool
-_0803C2EC:
- str r1, [sp]
- movs r0, 0xC
- adds r1, r2, 0
- movs r2, 0x17
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0803C374
- ldrb r1, [r5]
- str r4, [sp]
- movs r0, 0xC
- movs r2, 0x47
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0803C33C
- ldrb r0, [r5]
- muls r0, r6
- adds r1, r0, r7
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0803C33C
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0803C33C
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- bne _0803C374
-_0803C33C:
- ldr r5, =gActiveBank
- ldrb r1, [r5]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xF
- movs r2, 0x2A
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0803C3B0
- ldr r2, =gBattleMons
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x8
- beq _0803C374
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _0803C3B0
-_0803C374:
- subs r1, r4, 0x1
- lsls r1, 4
- movs r0, 0x4
- orrs r1, r0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, =gLastUsedAbility
- ldrb r3, [r0]
- ldr r4, =gBattleStruct
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r2, r0, 1
- adds r2, r0
- adds r2, 0x60
- ldr r0, [r4]
- adds r0, r2
- str r0, [sp]
- movs r0, 0
- movs r2, 0x6
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
- b _0803C42E
- .pool
-_0803C3B0:
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x2
- bne _0803C3D8
- ldr r0, =gUnknown_0202421C
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0803C3D8
- ldr r0, =gBattleStruct
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x5C
- b _0803C3EE
- .pool
-_0803C3D8:
- ldrb r0, [r4]
- cmp r0, 0x3
- bne _0803C410
- ldr r0, =gUnknown_0202421C
- ldrb r0, [r0, 0x1]
- cmp r0, 0x2
- bne _0803C410
- ldr r0, =gBattleStruct
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x5D
-_0803C3EE:
- ldrb r2, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- adds r0, 0x60
- adds r3, r0
- str r3, [sp]
- movs r0, 0
- movs r1, 0
-_0803C400:
- movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
- b _0803C42E
- .pool
-_0803C410:
- ldr r2, =gBattleStruct
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, 0x60
- ldr r0, [r2]
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0x6
- movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
-_0803C42E:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- b _0803C6C4
- .pool
-_0803C440:
- bl IsPlayerPartyAndPokemonStorageFull
- lsls r0, 24
- cmp r0, 0
- bne _0803C44C
- b _0803C6C4
-_0803C44C:
- ldr r1, =gUnknown_02024220
- ldr r3, =gActiveBank
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r1
- ldr r1, =gUnknown_082DAB11
- str r1, [r0]
- ldr r0, =gBattleCommunication
- ldrb r1, [r3]
- adds r1, r0
- movs r4, 0
- movs r0, 0x6
- strb r0, [r1]
- ldrb r1, [r3]
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0x54
- strb r4, [r1]
- ldrb r1, [r3]
- b _0803C7A0
- .pool
-_0803C48C:
- ldr r2, =gBattleStruct
- ldr r4, =gActiveBank
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- adds r0, 0x60
- ldr r1, [r2]
- adds r1, r0
- movs r0, 0
- bl sub_8033E6C
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _0803C6C4
- .pool
-_0803C4B4:
- ldr r4, =gBattleCommunication
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- adds r0, r4
- movs r1, 0x7
- strb r1, [r0]
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r6, 0x2
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- movs r1, 0x1
- strb r1, [r0]
- ldrb r0, [r5]
- bl sub_8185008
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r1, =gBattleMons
- lsls r0, 24
- lsrs r0, 24
- movs r7, 0x58
- muls r0, r7
- adds r4, r1, 0
- adds r4, 0x50
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- bne _0803C532
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _0803C550
-_0803C532:
- movs r0, 0
- bl dp01_build_cmdbuf_x32_32_32_32
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- bl _0803CD70
- .pool
-_0803C550:
- ldr r4, =gUnknown_0202421C
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0803C590
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_8185008
- b _0803C6AE
- .pool
-_0803C590:
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0803C5B6
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- b _0803C668
-_0803C5B6:
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0803C628
- ldr r4, =gProtectStructs
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 20
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _0803C616
- ldr r4, =gDisableStructs
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x6]
- cmp r0, 0
- beq _0803C628
-_0803C616:
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r6
- b _0803C668
- .pool
-_0803C628:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 10
- ands r0, r1
- cmp r0, 0
- beq _0803C690
- ldr r4, =gUnknown_0202421C
- ldr r6, =gActiveBank
- ldrb r0, [r6]
- bl GetBankIdentity
- movs r5, 0x2
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0803C690
- ldr r1, =gRngValue
- ldr r0, =gUnknown_0203BD30
- ldr r0, [r0]
- str r0, [r1]
- ldrb r0, [r6]
- bl GetBankIdentity
- eors r0, r5
-_0803C668:
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_8185008
- b _0803C6AE
- .pool
-_0803C690:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl sub_8185008
-_0803C6AE:
- movs r0, 0
- bl dp01_build_cmdbuf_x32_32_32_32
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- b _0803CD70
- .pool
-_0803C6C4:
- ldr r1, =gBattleTypeFlags
- ldr r2, [r1]
- movs r5, 0x8
- adds r0, r2, 0
- ands r0, r5
- adds r3, r1, 0
- cmp r0, 0
- beq _0803C720
- ldr r0, =0x043f0100
- ands r2, r0
- cmp r2, 0
- beq _0803C720
- ldr r0, =gBattleBufferB
- ldr r4, =gActiveBank
- ldrb r2, [r4]
- lsls r1, r2, 9
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x3
- bne _0803C720
- ldr r1, =gUnknown_02024220
- lsls r0, r2, 2
- adds r0, r1
- ldr r1, =gUnknown_082DB9BA
- str r1, [r0]
- ldr r1, =gBattleCommunication
- ldrb r0, [r4]
- adds r0, r1
- movs r3, 0
- strb r5, [r0]
- b _0803C792
- .pool
-_0803C720:
- ldr r0, [r3]
- ldr r1, =0x0200000a
- ands r0, r1
- cmp r0, 0x8
- bne _0803C760
- ldr r0, =gBattleBufferB
- ldr r4, =gActiveBank
- ldrb r1, [r4]
- lsls r1, 9
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x3
- bne _0803C760
- ldr r0, =gUnknown_082DAAFE
- bl b_call_bc_move_exec
- ldr r1, =gBattleCommunication
- ldrb r0, [r4]
- adds r0, r1
- b _0803CC20
- .pool
-_0803C760:
- bl sub_803BB88
- lsls r0, 24
- cmp r0, 0
- beq _0803C7C4
- ldr r0, =gBattleBufferB
- ldr r4, =gActiveBank
- ldrb r2, [r4]
- lsls r1, r2, 9
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x3
- bne _0803C7C4
- ldr r1, =gUnknown_02024220
- lsls r0, r2, 2
- adds r0, r1
- ldr r1, =gUnknown_082DAB0B
-_0803C784:
- str r1, [r0]
- ldr r0, =gBattleCommunication
- ldrb r1, [r4]
- adds r1, r0
- movs r3, 0
- movs r0, 0x6
- strb r0, [r1]
-_0803C792:
- ldrb r1, [r4]
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0x54
- strb r3, [r1]
- ldrb r1, [r4]
-_0803C7A0:
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0x84
- movs r0, 0x1
- strb r0, [r1]
- b _0803CD70
- .pool
-_0803C7C4:
- ldr r2, =gBattleCommunication
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r1, r2
- b _0803CB74
- .pool
-_0803C7D8:
- ldr r4, =gBattleExecBuffer
- ldr r1, =gBitTable
- ldr r3, =gActiveBank
- ldrb r5, [r3]
- lsls r0, r5, 2
- adds r0, r1
- ldr r2, [r0]
- lsls r0, r2, 4
- movs r1, 0xF0
- lsls r1, 24
- orrs r0, r1
- orrs r0, r2
- lsls r1, r2, 8
- orrs r0, r1
- lsls r2, 12
- orrs r0, r2
- ldr r1, [r4]
- ands r1, r0
- adds r4, r3, 0
- cmp r1, 0
- beq _0803C804
- b _0803CD04
-_0803C804:
- ldr r1, =gUnknown_0202421C
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x9
- bls _0803C812
- b _0803CD04
-_0803C812:
- lsls r0, 2
- ldr r1, =_0803C830
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0803C830:
- .4byte _0803C858
- .4byte _0803C99C
- .4byte _0803C9D4
- .4byte _0803CA0A
- .4byte _0803CA2C
- .4byte _0803CA40
- .4byte _0803CA54
- .4byte _0803CA84
- .4byte _0803CA98
- .4byte _0803CABC
-_0803C858:
- ldr r1, =gBattleBufferB
- ldrb r3, [r4]
- lsls r0, r3, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r1, [r0]
- cmp r1, 0x3
- blt _0803C88A
- cmp r1, 0x9
- ble _0803C878
- cmp r1, 0xF
- beq _0803C87E
- b _0803C88A
- .pool
-_0803C878:
- adds r0, r3, r2
- strb r1, [r0]
- b _0803CD70
-_0803C87E:
- adds r1, r3, r2
- movs r0, 0x2
- strb r0, [r1]
- bl sub_803CDF8
- b _0803CD70
-_0803C88A:
- movs r0, 0x2
- bl sub_818603C
- ldr r4, =gBattleBufferB
- ldr r6, =gActiveBank
- ldrb r3, [r6]
- lsls r1, r3, 9
- adds r5, r4, 0x2
- adds r0, r1, r5
- ldrb r2, [r0]
- adds r7, r4, 0x3
- adds r1, r7
- ldrb r0, [r1]
- lsls r0, 8
- orrs r2, r0
- ldr r0, =0x0000ffff
- cmp r2, r0
- bne _0803C8D0
- ldr r0, =gBattleCommunication
- adds r0, r3, r0
- movs r1, 0x1
- strb r1, [r0]
- ldrb r0, [r6]
- bl sub_8185008
- b _0803CD04
- .pool
-_0803C8D0:
- bl sub_803FB4C
- lsls r0, 24
- cmp r0, 0
- beq _0803C91C
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_8185008
- ldr r0, =gBattleCommunication
- ldrb r1, [r6]
- adds r1, r0
- movs r3, 0
- movs r0, 0x6
- strb r0, [r1]
- ldrb r1, [r6]
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0x54
- strb r3, [r1]
- ldrb r0, [r6]
- lsls r0, 9
- adds r1, r4, 0x1
- adds r0, r1
- strb r3, [r0]
- ldrb r1, [r6]
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0x84
- movs r0, 0x2
- strb r0, [r1]
- b _0803CD70
- .pool
-_0803C91C:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 10
- ands r0, r1
- cmp r0, 0
- bne _0803C942
- ldrb r0, [r6]
- lsls r1, r0, 9
- adds r1, r5
- ldrb r1, [r1]
- bl sub_8184FBC
- ldrb r0, [r6]
- lsls r1, r0, 9
- adds r1, r7
- ldrb r1, [r1]
- bl sub_8184FBC
-_0803C942:
- ldrb r0, [r6]
- ldr r4, =gBattleStruct
- ldr r1, [r4]
- adds r1, r0, r1
- adds r1, 0x80
- lsls r0, 9
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, =gChosenMovesByBanks
- ldrb r2, [r6]
- lsls r5, r2, 1
- adds r5, r0
- ldr r3, =gBattleMons
- ldr r4, [r4]
- adds r0, r2, r4
- adds r0, 0x80
- ldrb r0, [r0]
- lsls r0, 1
- movs r1, 0x58
- muls r1, r2
- adds r0, r1
- adds r3, 0xC
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r5]
- ldrb r0, [r6]
- adds r4, r0, r4
- lsls r0, 9
- adds r0, r7
- ldrb r0, [r0]
- strb r0, [r4, 0xC]
- ldr r0, =gBattleCommunication
- ldrb r1, [r6]
- b _0803CB72
- .pool
-_0803C99C:
- ldr r2, =gBattleBufferB
- ldr r5, =gActiveBank
- ldrb r4, [r5]
- lsls r1, r4, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r3, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r0, [r1]
- lsls r0, 8
- orrs r3, r0
- cmp r3, 0
- bne _0803C9BA
- b _0803CC1C
-_0803C9BA:
- ldr r0, =gLastUsedItem
- strh r3, [r0]
- ldr r0, =gBattleCommunication
- ldrb r1, [r5]
- b _0803CB72
- .pool
-_0803C9D4:
- ldr r0, =gBattleBufferB
- ldr r4, =gActiveBank
- ldrb r2, [r4]
- lsls r1, r2, 9
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x6
- bne _0803CA04
- ldr r0, =gBattleCommunication
- adds r0, r2, r0
- movs r1, 0x1
- strb r1, [r0]
- ldrb r0, [r4]
- bl sub_8185008
- b _0803CD04
- .pool
-_0803CA04:
- bl sub_803CDF8
- b _0803CB6E
-_0803CA0A:
- ldr r2, =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 8
- orrs r0, r1
- str r0, [r2]
- ldr r2, =gBattleCommunication
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r1, r2
- b _0803CB74
- .pool
-_0803CA2C:
- ldr r2, =gBattleCommunication
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r1, r2
- b _0803CB74
- .pool
-_0803CA40:
- ldr r2, =gBattleCommunication
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r1, r2
- b _0803CB74
- .pool
-_0803CA54:
- ldr r3, =gBattleBufferB
- ldr r0, =gActiveBank
- ldrb r4, [r0]
- lsls r1, r4, 9
- adds r0, r3, 0x1
- adds r0, r1, r0
- ldrb r2, [r0]
- adds r3, 0x2
- adds r1, r3
- ldrb r0, [r1]
- lsls r0, 8
- orrs r2, r0
- cmp r2, 0
- bne _0803CA72
- b _0803CC1C
-_0803CA72:
- ldr r1, =gBattleCommunication
- adds r1, r4, r1
- b _0803CB74
- .pool
-_0803CA84:
- ldr r2, =gBattleCommunication
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r1, r2
- b _0803CB74
- .pool
-_0803CA98:
- ldr r2, =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 8
- orrs r0, r1
- str r0, [r2]
- ldr r2, =gBattleCommunication
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r1, r2
- b _0803CB74
- .pool
-_0803CABC:
- ldr r2, =gBattleCommunication
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r1, r2
- b _0803CB74
- .pool
-_0803CAD0:
- ldr r3, =gBattleExecBuffer
- ldr r6, =gBitTable
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r6
- ldr r2, [r0]
- lsls r1, r2, 4
- movs r0, 0xF0
- lsls r0, 24
- orrs r1, r0
- orrs r1, r2
- lsls r0, r2, 8
- orrs r1, r0
- lsls r2, 12
- orrs r1, r2
- ldr r0, [r3]
- ands r0, r1
- cmp r0, 0
- beq _0803CAFA
- b _0803CD04
-_0803CAFA:
- bl sub_803CDB8
- lsls r0, 24
- lsrs r0, 24
- negs r1, r0
- orrs r1, r0
- lsrs r4, r1, 31
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x41
- ands r0, r1
- cmp r0, 0x1
- bne _0803CB3C
- movs r1, 0x2
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- bne _0803CB3C
- adds r0, r5, 0
- eors r0, r1
- bl GetBankByPlayerAI
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r1, 0x91
- ldrb r1, [r1]
- lsls r0, 24
- lsrs r0, 22
- adds r0, r6
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0803CB5C
-_0803CB3C:
- movs r0, 0
- movs r1, 0
- adds r2, r4, 0
- bl sub_8034464
- b _0803CB66
- .pool
-_0803CB5C:
- movs r0, 0
- movs r1, 0x1
- adds r2, r4, 0
- bl sub_8034464
-_0803CB66:
- ldr r4, =gActiveBank
-_0803CB68:
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803CB6E:
- ldr r0, =gBattleCommunication
- ldrb r1, [r4]
-_0803CB72:
- adds r1, r0
-_0803CB74:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0803CD04
- .pool
-_0803CB84:
- ldr r3, =gBattleExecBuffer
- ldr r1, =gBitTable
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r2, [r0]
- lsls r1, r2, 4
- movs r0, 0xF0
- lsls r0, 24
- orrs r1, r0
- orrs r1, r2
- lsls r0, r2, 8
- orrs r1, r0
- lsls r2, 12
- orrs r1, r2
- ldr r0, [r3]
- ands r0, r1
- cmp r0, 0
- beq _0803CBAE
- b _0803CD04
-_0803CBAE:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1, 0x4]
- adds r0, 0x1
- strb r0, [r1, 0x4]
- b _0803CD04
- .pool
-_0803CBC8:
- ldr r5, =gActiveBank
- ldrb r2, [r5]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r1, r2, r0
- adds r0, r1, 0
- adds r0, 0x54
- ldrb r0, [r0]
- cmp r0, 0
- beq _0803CCB4
- ldr r0, =gBattleCommunication
- adds r0, r2, r0
- adds r1, 0x84
- ldrb r1, [r1]
- strb r1, [r0]
- b _0803CD04
- .pool
-_0803CBF4:
- ldr r3, =gBattleExecBuffer
- ldr r1, =gBitTable
- ldr r0, =gActiveBank
- ldrb r4, [r0]
- lsls r0, r4, 2
- adds r0, r1
- ldr r2, [r0]
- lsls r1, r2, 4
- movs r0, 0xF0
- lsls r0, 24
- orrs r1, r0
- orrs r1, r2
- lsls r0, r2, 8
- orrs r1, r0
- lsls r2, 12
- orrs r1, r2
- ldr r0, [r3]
- ands r0, r1
- cmp r0, 0
- bne _0803CD04
-_0803CC1C:
- ldr r0, =gBattleCommunication
- adds r0, r4, r0
-_0803CC20:
- movs r1, 0x1
- strb r1, [r0]
- b _0803CD04
- .pool
-_0803CC38:
- ldr r5, =gActiveBank
- ldrb r2, [r5]
- ldr r4, =gBattleStruct
- ldr r0, [r4]
- adds r0, r2, r0
- adds r0, 0x54
- ldrb r0, [r0]
- cmp r0, 0
- beq _0803CCB4
- ldr r0, =gBattleBufferB
- lsls r1, r2, 9
- adds r0, 0x1
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0xD
- bne _0803CC94
- ldr r2, =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 8
- orrs r0, r1
- str r0, [r2]
- ldr r1, =gUnknown_0202421C
- ldrb r0, [r5]
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
- ldr r1, =gBattleCommunication
- ldrb r0, [r5]
-_0803CC72:
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- b _0803CD04
- .pool
-_0803CC94:
- adds r0, r2, 0
- movs r1, 0x1
- bl sub_8185008
- ldr r2, =gBattleCommunication
- ldrb r0, [r5]
- adds r2, r0, r2
- ldr r1, [r4]
- adds r0, r1
- adds r0, 0x84
- ldrb r0, [r0]
- strb r0, [r2]
- b _0803CD04
- .pool
-_0803CCB4:
- ldr r0, =gBankAttacker
- strb r2, [r0]
- ldr r7, =gBattlescriptCurrInstr
- ldr r6, =gUnknown_02024220
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r6
- ldr r4, [r0]
- str r4, [r7]
- ldr r3, =gBattleExecBuffer
- ldr r1, =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r2, [r0]
- lsls r1, r2, 4
- movs r0, 0xF0
- lsls r0, 24
- orrs r1, r0
- orrs r1, r2
- lsls r0, r2, 8
- orrs r1, r0
- lsls r2, 12
- orrs r1, r2
- ldr r0, [r3]
- ands r0, r1
- cmp r0, 0
- bne _0803CCFA
- ldr r0, =gBattleScriptingCommandsTable
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
-_0803CCFA:
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r7]
- str r1, [r0]
-_0803CD04:
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- ldr r0, =gNoOfAllBanks
- lsls r1, 24
- lsrs r1, 24
-_0803CD12:
- adds r5, r0, 0
- ldrb r0, [r5]
- cmp r1, r0
- bcs _0803CD1E
- bl _0803BE9C
-_0803CD1E:
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x4]
- ldrb r1, [r5]
- cmp r0, r1
- bne _0803CD70
- movs r0, 0x1
- bl sub_818603C
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803D2E8
- str r0, [r1]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _0803CD70
- movs r4, 0
- ldrb r5, [r5]
- cmp r4, r5
- bge _0803CD70
-_0803CD4A:
- ldr r0, =gUnknown_0202421C
- adds r0, r4, r0
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0803CD66
- lsls r0, r4, 24
- lsrs r0, 24
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r1, r4, r1
- adds r1, 0x5C
- ldrb r1, [r1]
- bl sub_80571DC
-_0803CD66:
- adds r4, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _0803CD4A
-_0803CD70:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803BE74
-
- thumb_func_start sub_803CDB8
-sub_803CDB8: @ 803CDB8
- push {r4,r5,lr}
- movs r3, 0
- movs r1, 0
- ldr r0, =gNoOfAllBanks
- ldrb r2, [r0]
- adds r5, r0, 0
- cmp r3, r2
- bge _0803CDDA
- ldr r4, =gBattleCommunication
-_0803CDCA:
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0803CDD4
- adds r3, 0x1
-_0803CDD4:
- adds r1, 0x1
- cmp r1, r2
- blt _0803CDCA
-_0803CDDA:
- adds r0, r3, 0x1
- ldrb r5, [r5]
- cmp r0, r5
- beq _0803CDF0
- movs r0, 0
- b _0803CDF2
- .pool
-_0803CDF0:
- movs r0, 0x1
-_0803CDF2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_803CDB8
-
- thumb_func_start sub_803CDF8
-sub_803CDF8: @ 803CDF8
- push {r4-r7,lr}
- ldr r7, =gActiveBank
- ldrb r0, [r7]
- ldr r6, =gBattleStruct
- ldr r1, [r6]
- adds r1, r0, r1
- adds r1, 0x5C
- ldr r4, =gBattleBufferB
- lsls r0, 9
- adds r2, r4, 0x1
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- lsls r1, r0, 9
- adds r1, r2
- ldrb r1, [r1]
- bl sub_8184FBC
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x42
- ands r0, r1
- cmp r0, 0x42
- bne _0803CEC6
- ldrb r0, [r7]
- ldr r2, [r6]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- ldrb r2, [r1]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- ldr r2, [r6]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- lsls r0, 9
- adds r5, r4, 0x2
- adds r0, r5
- ldrb r2, [r0]
- movs r3, 0xF0
- adds r0, r3, 0
- ands r0, r2
- ldrb r2, [r1]
- orrs r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- ldr r2, [r6]
- lsls r0, r1, 1
- adds r0, r1
- adds r0, r2
- adds r0, 0x61
- lsls r1, 9
- adds r4, 0x3
- mov r12, r4
- add r1, r12
- ldrb r1, [r1]
- strb r1, [r0]
- ldrb r0, [r7]
- movs r4, 0x2
- eors r0, r4
- ldr r2, [r6]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- eors r0, r4
- ldr r2, [r6]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- ldrb r0, [r7]
- lsls r0, 9
- adds r0, r5
- ldrb r0, [r0]
- ands r3, r0
- lsrs r3, 4
- ldrb r0, [r1]
- orrs r3, r0
- strb r3, [r1]
- ldrb r0, [r7]
- eors r4, r0
- ldr r0, [r6]
- lsls r1, r4, 1
- adds r1, r4
- adds r1, r0
- adds r1, 0x62
- ldrb r0, [r7]
- lsls r0, 9
- add r0, r12
- ldrb r0, [r0]
- strb r0, [r1]
-_0803CEC6:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803CDF8
-
- thumb_func_start sub_803CEDC
-sub_803CEDC: @ 803CEDC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gUnknown_0202407A
- adds r4, r0, r2
- ldrb r5, [r4]
- adds r2, r1, r2
- ldrb r3, [r2]
- strb r3, [r4]
- strb r5, [r2]
- ldr r2, =gTurnOrder
- adds r0, r2
- ldrb r5, [r0]
- adds r1, r2
- ldrb r2, [r1]
- strb r2, [r0]
- strb r5, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803CEDC
-
- thumb_func_start b_first_side
-b_first_side: @ 803CF10
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0803CFD8
- ldr r1, [sp, 0x8]
- str r1, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0803CFD8
- ldr r1, =gBattleMons
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r0, r1
- adds r0, 0x20
- ldrb r3, [r0]
- cmp r3, 0x21
- bne _0803CF7C
- ldr r0, =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0803CF8C
-_0803CF7C:
- cmp r3, 0x22
- bne _0803CF98
- ldr r0, =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0803CF98
-_0803CF8C:
- movs r3, 0x2
- b _0803CF9A
- .pool
-_0803CF98:
- movs r3, 0x1
-_0803CF9A:
- movs r0, 0x58
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- ldr r2, =gBattleMons
- adds r0, r2
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0x21
- bne _0803CFBA
- ldr r0, =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0803CFCA
-_0803CFBA:
- cmp r2, 0x22
- bne _0803CFDA
- ldr r0, =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0803CFDA
-_0803CFCA:
- movs r7, 0x2
- b _0803CFDC
- .pool
-_0803CFD8:
- movs r3, 0x1
-_0803CFDA:
- movs r7, 0x1
-_0803CFDC:
- ldr r1, =gBattleMons
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r4, r0, r1
- ldrh r0, [r4, 0x6]
- muls r3, r0
- ldr r2, =gStatStageRatios
- movs r1, 0x1B
- ldrsb r1, [r4, r1]
- lsls r1, 1
- adds r0, r1, r2
- ldrb r0, [r0]
- muls r0, r3
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- bl __divsi3
- mov r8, r0
- ldrh r0, [r4, 0x2E]
- cmp r0, 0xAF
- bne _0803D02C
- ldr r1, =gEnigmaBerries
- mov r3, r9
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r6, [r0, 0x7]
- ldrb r5, [r0, 0x1A]
- b _0803D040
- .pool
-_0803D02C:
- ldrh r0, [r4, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r0, [r4, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r5, r0, 24
-_0803D040:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x023f0102
- ands r0, r1
- cmp r0, 0
- bne _0803D074
- ldr r0, =0x00000869
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0803D074
- mov r0, r9
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803D074
- movs r0, 0x6E
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- movs r1, 0x64
- bl __udivsi3
- mov r8, r0
-_0803D074:
- cmp r6, 0x18
- bne _0803D07E
- mov r2, r8
- lsrs r2, 1
- mov r8, r2
-_0803D07E:
- ldr r1, =gBattleMons
- movs r0, 0x58
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0803D09C
- mov r0, r8
- lsrs r0, 2
- mov r8, r0
-_0803D09C:
- cmp r6, 0x1A
- bne _0803D0B8
- ldr r0, =gUnknown_02024330
- ldrh r4, [r0]
- lsls r0, r5, 16
- subs r0, r5
- movs r1, 0x64
- bl __divsi3
- cmp r4, r0
- bge _0803D0B8
- movs r1, 0x1
- negs r1, r1
- mov r8, r1
-_0803D0B8:
- ldr r1, =gBattleMons
- movs r0, 0x58
- mov r2, r10
- muls r2, r0
- adds r0, r2, 0
- adds r4, r0, r1
- ldrh r0, [r4, 0x6]
- adds r3, r0, 0
- muls r3, r7
- ldr r2, =gStatStageRatios
- movs r1, 0x1B
- ldrsb r1, [r4, r1]
- lsls r1, 1
- adds r0, r1, r2
- ldrb r0, [r0]
- muls r0, r3
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- bl __divsi3
- adds r7, r0, 0
- ldrh r0, [r4, 0x2E]
- cmp r0, 0xAF
- bne _0803D118
- ldr r1, =gEnigmaBerries
- mov r3, r10
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r6, [r0, 0x7]
- ldrb r5, [r0, 0x1A]
- b _0803D12C
- .pool
-_0803D118:
- ldrh r0, [r4, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r0, [r4, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r5, r0, 24
-_0803D12C:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x023f0102
- ands r0, r1
- cmp r0, 0
- bne _0803D15C
- ldr r0, =0x00000869
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0803D15C
- mov r0, r10
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803D15C
- movs r0, 0x6E
- muls r0, r7
- movs r1, 0x64
- bl __udivsi3
- adds r7, r0, 0
-_0803D15C:
- cmp r6, 0x18
- bne _0803D162
- lsrs r7, 1
-_0803D162:
- ldr r2, =gBattleMons
- movs r0, 0x58
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0803D17E
- lsrs r7, 2
-_0803D17E:
- cmp r6, 0x1A
- bne _0803D198
- ldr r0, =gUnknown_02024330
- ldrh r4, [r0]
- lsls r0, r5, 16
- subs r0, r5
- movs r1, 0x64
- bl __divsi3
- cmp r4, r0
- bge _0803D198
- movs r7, 0x1
- negs r7, r7
-_0803D198:
- ldr r2, [sp, 0x4]
- cmp r2, 0
- beq _0803D1B8
- movs r3, 0
- b _0803D254
- .pool
-_0803D1B8:
- ldr r0, =gUnknown_0202421C
- mov r3, r9
- adds r1, r3, r0
- ldrb r1, [r1]
- adds r2, r0, 0
- cmp r1, 0
- bne _0803D208
- ldr r0, =gProtectStructs
- lsls r1, r3, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 29
- cmp r0, 0
- bge _0803D1E0
- movs r3, 0xA5
- b _0803D20A
- .pool
-_0803D1E0:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- add r0, r9
- adds r0, 0x80
- ldrb r0, [r0]
- lsls r0, 1
- movs r1, 0x58
- mov r3, r9
- muls r3, r1
- adds r1, r3, 0
- adds r0, r1
- ldr r1, =gBattleMons
- adds r1, 0xC
- adds r0, r1
- ldrh r3, [r0]
- b _0803D20A
- .pool
-_0803D208:
- movs r3, 0
-_0803D20A:
- mov r1, r10
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _0803D254
- ldr r0, =gProtectStructs
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 29
- cmp r0, 0
- bge _0803D22C
- movs r2, 0xA5
- b _0803D256
- .pool
-_0803D22C:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- add r0, r10
- adds r0, 0x80
- ldrb r0, [r0]
- lsls r0, 1
- movs r1, 0x58
- mov r2, r10
- muls r2, r1
- adds r1, r2, 0
- adds r0, r1
- ldr r1, =gBattleMons
- adds r1, 0xC
- adds r0, r1
- ldrh r2, [r0]
- b _0803D256
- .pool
-_0803D254:
- movs r2, 0
-_0803D256:
- ldr r4, =gBattleMoves
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r4
- movs r1, 0x7
- ldrsb r1, [r0, r1]
- lsls r3, r2, 1
- cmp r1, 0
- bne _0803D27A
- adds r0, r3, r2
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x7]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _0803D2B8
-_0803D27A:
- adds r0, r3, r2
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x7]
- lsls r0, 24
- asrs r0, 24
- cmp r1, r0
- bne _0803D2AE
- cmp r8, r7
- bne _0803D2A4
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0803D2A4
- movs r3, 0x2
- b _0803D2D4
- .pool
-_0803D2A4:
- cmp r8, r7
- bcs _0803D2D6
- movs r0, 0x1
- str r0, [sp, 0x8]
- b _0803D2D6
-_0803D2AE:
- cmp r1, r0
- bge _0803D2D6
- movs r1, 0x1
- str r1, [sp, 0x8]
- b _0803D2D6
-_0803D2B8:
- cmp r8, r7
- bne _0803D2CE
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0803D2CE
- movs r2, 0x2
- str r2, [sp, 0x8]
- b _0803D2D6
-_0803D2CE:
- cmp r8, r7
- bcs _0803D2D6
- movs r3, 0x1
-_0803D2D4:
- str r3, [sp, 0x8]
-_0803D2D6:
- ldr r0, [sp, 0x8]
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end b_first_side
-
- thumb_func_start sub_803D2E8
-sub_803D2E8: @ 803D2E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r3, 0
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0803D354
- ldr r0, =gActiveBank
- strb r3, [r0]
- ldr r4, =gNoOfAllBanks
- mov r8, r0
- ldrb r0, [r4]
- cmp r3, r0
- bcc _0803D310
- b _0803D54A
-_0803D310:
- ldr r7, =gUnknown_0202407A
- ldr r6, =gUnknown_0202421C
- mov r2, r8
- ldr r5, =gTurnOrder
-_0803D318:
- adds r1, r3, r7
- ldrb r0, [r2]
- adds r0, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r3, r5
- ldrb r0, [r2]
- strb r0, [r1]
- adds r3, 0x1
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r4]
- cmp r0, r1
- bcc _0803D318
- b _0803D54A
- .pool
-_0803D354:
- movs r2, 0x2
- ands r1, r2
- cmp r1, 0
- beq _0803D3A4
- ldr r0, =gActiveBank
- strb r3, [r0]
- ldr r1, =gNoOfAllBanks
- mov r8, r0
- adds r2, r1, 0
- ldrb r2, [r2]
- cmp r3, r2
- bcs _0803D3C0
- ldr r0, =gUnknown_0202421C
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x3
- beq _0803D3BE
-_0803D376:
- mov r7, r8
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gNoOfAllBanks
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0803D3C0
- ldrb r0, [r7]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0803D376
- b _0803D3BE
- .pool
-_0803D3A4:
- ldr r1, =gUnknown_0202421C
- ldrb r0, [r1]
- ldr r4, =gActiveBank
- mov r8, r4
- cmp r0, 0x3
- bne _0803D3B4
- strb r3, [r4]
- movs r3, 0x5
-_0803D3B4:
- ldrb r0, [r1, 0x2]
- cmp r0, 0x3
- bne _0803D3C0
- mov r7, r8
- strb r2, [r7]
-_0803D3BE:
- movs r3, 0x5
-_0803D3C0:
- cmp r3, 0x5
- bne _0803D448
- ldr r6, =gUnknown_0202407A
- ldr r1, =gUnknown_0202421C
- mov r2, r8
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r6]
- ldr r2, =gTurnOrder
- mov r3, r8
- ldrb r0, [r3]
- strb r0, [r2]
- movs r3, 0x1
- movs r5, 0
- adds r4, r1, 0
- ldr r7, =gBattleMainFunc
- mov r10, r7
- ldr r0, =bc_80154A0
- mov r12, r0
- ldr r1, =gBattleStruct
- mov r9, r1
- ldr r7, =gNoOfAllBanks
- ldrb r7, [r7]
- cmp r5, r7
- bge _0803D41A
- adds r7, r6, 0
- adds r6, r4, 0
- adds r4, r2, 0
- ldr r2, =gNoOfAllBanks
-_0803D3FC:
- mov r0, r8
- ldrb r0, [r0]
- cmp r5, r0
- beq _0803D412
- adds r1, r3, r7
- adds r0, r5, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, r4
- strb r5, [r0]
- adds r3, 0x1
-_0803D412:
- adds r5, 0x1
- ldrb r1, [r2]
- cmp r5, r1
- blt _0803D3FC
-_0803D41A:
- mov r2, r12
- mov r3, r10
- str r2, [r3]
- mov r4, r9
- ldr r0, [r4]
- b _0803D554
- .pool
-_0803D448:
- movs r0, 0
- mov r7, r8
- strb r0, [r7]
- ldr r1, =gNoOfAllBanks
- ldrb r0, [r1]
- cmp r0, 0
- beq _0803D48E
- ldr r6, =gUnknown_0202421C
- mov r2, r8
- ldr r5, =gUnknown_0202407A
- ldr r4, =gTurnOrder
-_0803D45E:
- ldrb r0, [r2]
- adds r0, r6
- ldrb r1, [r0]
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0803D47C
- adds r0, r3, r5
- strb r1, [r0]
- adds r1, r3, r4
- mov r7, r8
- ldrb r0, [r7]
- strb r0, [r1]
- adds r3, 0x1
-_0803D47C:
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gNoOfAllBanks
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803D45E
-_0803D48E:
- movs r0, 0
- mov r2, r8
- strb r0, [r2]
- ldr r4, =gNoOfAllBanks
- ldrb r0, [r4]
- cmp r0, 0
- beq _0803D4D2
- ldr r6, =gUnknown_0202421C
- ldr r5, =gUnknown_0202407A
- ldr r4, =gTurnOrder
-_0803D4A2:
- ldrb r0, [r2]
- adds r0, r6
- ldrb r1, [r0]
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0803D4C0
- adds r0, r3, r5
- strb r1, [r0]
- adds r1, r3, r4
- mov r7, r8
- ldrb r0, [r7]
- strb r0, [r1]
- adds r3, 0x1
-_0803D4C0:
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gNoOfAllBanks
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803D4A2
-_0803D4D2:
- movs r5, 0
- b _0803D540
- .pool
-_0803D4E8:
- adds r4, r5, 0x1
- adds r7, r4, 0
- ldrb r1, [r1]
- cmp r7, r1
- bge _0803D53E
- ldr r6, =gUnknown_0202407A
- lsls r2, r5, 24
- mov r8, r2
-_0803D4F8:
- ldr r0, =gTurnOrder
- adds r1, r5, r0
- ldrb r3, [r1]
- adds r0, r4, r0
- ldrb r1, [r0]
- adds r0, r5, r6
- ldrb r2, [r0]
- cmp r2, 0x1
- beq _0803D534
- adds r0, r4, r6
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0803D534
- cmp r2, 0x2
- beq _0803D534
- cmp r0, 0x2
- beq _0803D534
- adds r0, r3, 0
- movs r2, 0
- bl b_first_side
- lsls r0, 24
- cmp r0, 0
- beq _0803D534
- lsls r1, r4, 24
- lsrs r1, 24
- mov r3, r8
- lsrs r0, r3, 24
- bl sub_803CEDC
-_0803D534:
- adds r4, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _0803D4F8
-_0803D53E:
- adds r5, r7, 0
-_0803D540:
- ldr r1, =gNoOfAllBanks
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r5, r0
- blt _0803D4E8
-_0803D54A:
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_80154A0
- str r0, [r1]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
-_0803D554:
- adds r0, 0x48
- movs r1, 0
- strb r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803D2E8
-
- thumb_func_start sub_803D580
-sub_803D580: @ 803D580
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gNoOfAllBanks
- ldrb r2, [r0]
- adds r5, r1, 0
- cmp r2, 0
- beq _0803D678
- ldr r7, =gProtectStructs
- adds r6, r5, 0
- ldr r0, =gBattleMons + 0x50
- mov r12, r0
- ldr r1, =gDisableStructs
- mov r8, r1
- mov r10, r8
-_0803D5AE:
- mov r2, r9
- cmp r2, 0
- beq _0803D5EC
- ldrb r1, [r6]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r6]
- lsls r1, 4
- adds r1, r7
- ldrb r2, [r1]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- b _0803D648
- .pool
-_0803D5EC:
- ldrb r0, [r6]
- lsls r0, 4
- adds r2, r0, r7
- movs r1, 0
- mov r4, r10
- movs r3, 0
-_0803D5F8:
- adds r0, r2, r1
- strb r3, [r0]
- adds r1, 0x1
- cmp r1, 0xF
- bls _0803D5F8
- ldrb r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r0, r4
- ldrb r0, [r1, 0x16]
- cmp r0, 0
- beq _0803D616
- subs r0, 0x1
- strb r0, [r1, 0x16]
-_0803D616:
- ldrb r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r0, r4
- ldrb r0, [r1, 0x19]
- cmp r0, 0
- beq _0803D648
- subs r0, 0x1
- strb r0, [r1, 0x19]
- ldrb r2, [r5]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x19]
- cmp r0, 0
- bne _0803D648
- movs r0, 0x58
- muls r2, r0
- add r2, r12
- ldr r0, [r2]
- ldr r1, =0xffbfffff
- ands r0, r1
- str r0, [r2]
-_0803D648:
- ldrb r2, [r5]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- bne _0803D666
- movs r0, 0x58
- muls r2, r0
- add r2, r12
- ldr r0, [r2]
- ldr r1, =0xfeffffff
- ands r0, r1
- str r0, [r2]
-_0803D666:
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gNoOfAllBanks
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803D5AE
-_0803D678:
- movs r0, 0
- ldr r2, =gSideTimers
- strb r0, [r2, 0x8]
- strb r0, [r2, 0x14]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803D580
-
- thumb_func_start sub_803D6A0
-sub_803D6A0: @ 803D6A0
- push {r4-r6,lr}
- ldr r2, =gActiveBank
- movs r0, 0
- strb r0, [r2]
- ldr r0, =gNoOfAllBanks
- ldrb r1, [r0]
- adds r6, r0, 0
- cmp r1, 0
- beq _0803D6DE
- adds r3, r2, 0
- movs r4, 0
- ldr r5, =gSpecialStatuses
-_0803D6B8:
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r5
- movs r1, 0
-_0803D6C4:
- adds r0, r2, r1
- strb r4, [r0]
- adds r1, 0x1
- cmp r1, 0x13
- bls _0803D6C4
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r6]
- cmp r0, r1
- bcc _0803D6B8
-_0803D6DE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803D6A0
-
- thumb_func_start bc_80154A0
-bc_80154A0: @ 803D6F0
- push {r4-r7,lr}
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- bne _0803D7AE
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r0, 0x48
- ldr r1, =gNoOfAllBanks
- ldrb r0, [r0]
- mov r12, r2
- adds r6, r1, 0
- ldrb r1, [r6]
- cmp r0, r1
- bcs _0803D7AE
- ldr r5, =gActiveBank
- ldr r4, =gBankAttacker
- movs r7, 0x84
- lsls r7, 1
-_0803D71C:
- ldr r1, [r2]
- adds r1, 0x48
- ldrb r0, [r1]
- strb r0, [r4]
- strb r0, [r5]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, =gChosenMovesByBanks
- ldrb r3, [r5]
- lsls r0, r3, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- bne _0803D7A0
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0803D7A0
- ldr r2, =gDisableStructs
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x18]
- lsls r0, 31
- cmp r0, 0
- bne _0803D7A0
- ldr r0, =gProtectStructs
- lsls r1, r3, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 29
- cmp r0, 0
- blt _0803D7A0
- ldr r0, =gUnknown_082DB1FF
- bl b_call_bc_move_exec
- b _0803D7E8
- .pool
-_0803D7A0:
- mov r2, r12
- ldr r0, [r2]
- adds r0, 0x48
- ldrb r0, [r0]
- ldrb r1, [r6]
- cmp r0, r1
- bcc _0803D71C
-_0803D7AE:
- bl b_clear_atk_up_if_hit_flag_unless_enraged
- ldr r1, =gUnknown_02024082
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gFightStateTracker
- ldr r0, =gUnknown_0202407A
- movs r3, 0
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, =gDynamicBasePower
- movs r2, 0
- strh r3, [r0]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- strb r2, [r0, 0x13]
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_bs_exec
- str r0, [r1]
- ldr r0, =gBattleCommunication
- strb r2, [r0, 0x3]
- strb r2, [r0, 0x4]
- ldr r0, =gBattleScripting
- strb r2, [r0, 0x16]
- ldr r0, =gBattleResources
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- adds r0, 0x20
- strb r2, [r0]
-_0803D7E8:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_80154A0
-
- thumb_func_start bc_bs_exec
-bc_bs_exec: @ 803D818
- push {r4-r6,lr}
- ldr r6, =gBattleOutcome
- ldrb r0, [r6]
- ldr r2, =gFightStateTracker
- cmp r0, 0
- beq _0803D828
- movs r0, 0xC
- strb r0, [r2]
-_0803D828:
- ldr r5, =gBattleStruct
- ldr r0, [r5]
- adds r0, 0x4B
- ldr r4, =gUnknown_02024082
- ldrb r1, [r4]
- strb r1, [r0]
- ldr r1, =gUnknown_0831BC0C
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, =gNoOfAllBanks
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bcc _0803D894
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xffefffff
- ands r0, r1
- str r0, [r2]
- ldr r3, =gBattleMainFunc
- ldr r2, =gUnknown_0831BC44
- ldrb r1, [r6]
- movs r0, 0x7F
- ands r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r3]
- b _0803D8AC
- .pool
-_0803D894:
- ldr r0, [r5]
- adds r0, 0x4B
- ldrb r0, [r0]
- cmp r0, r1
- beq _0803D8AC
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xfffffdff
- ands r0, r1
- ldr r1, =0xfff7ffff
- ands r0, r1
- str r0, [r2]
-_0803D8AC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_bs_exec
-
- thumb_func_start sub_803D8C0
-sub_803D8C0: @ 803D8C0
- push {r4,lr}
- ldr r1, =gFightStateTracker
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gBattleTypeFlags
- ldr r2, [r1]
- ldr r0, =0x02000002
- ands r0, r2
- cmp r0, 0
- beq _0803D920
- ldr r1, =gScriptResult
- ldr r4, =gBattleOutcome
- ldrb r0, [r4]
- strh r0, [r1]
- ldr r1, =gBattleTextBuff1
- ldrb r0, [r4]
- strb r0, [r1]
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, =gBankAttacker
- strb r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAA35
- str r0, [r1]
- ldrb r1, [r4]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r4]
- b _0803DAA4
- .pool
-_0803D920:
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _0803D95C
- ldr r0, =0x043f0900
- ands r2, r0
- cmp r2, 0
- beq _0803D95C
- bl sub_805EA60
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAA87
- str r0, [r1]
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- ldr r0, =0x000003fe
- cmp r1, r0
- bne _0803D946
- b _0803DA8A
-_0803D946:
- b _0803DA94
- .pool
-_0803D95C:
- ldr r0, [r1]
- movs r1, 0xA
- ands r0, r1
- cmp r0, 0x8
- beq _0803D968
- b _0803DA9E
-_0803D968:
- bl sub_805EA60
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DA92D
- str r0, [r1]
- ldr r2, =gTrainers
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x1]
- subs r0, 0x3
- cmp r0, 0x32
- bls _0803D98A
- b _0803DA94
-_0803D98A:
- lsls r0, 2
- ldr r1, =_0803D9A8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0803D9A8:
- .4byte _0803DA80
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA80
- .4byte _0803DA94
- .4byte _0803DA80
- .4byte _0803DA94
- .4byte _0803DA80
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA74
- .4byte _0803DA8A
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA74
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA80
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA94
- .4byte _0803DA80
-_0803DA74:
- ldr r0, =0x00000163
- bl PlayBGM
- b _0803DAA4
- .pool
-_0803DA80:
- movs r0, 0xD4
- lsls r0, 1
- bl PlayBGM
- b _0803DAA4
-_0803DA8A:
- movs r0, 0xB1
- lsls r0, 1
- bl PlayBGM
- b _0803DAA4
-_0803DA94:
- movs r0, 0xCE
- lsls r0, 1
- bl PlayBGM
- b _0803DAA4
-_0803DA9E:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DA96A
- str r0, [r1]
-_0803DAA4:
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803DCD8
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803D8C0
-
- thumb_func_start sub_803DAC0
-sub_803DAC0: @ 803DAC0
- push {r4,lr}
- ldr r1, =gFightStateTracker
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0803DB7C
- ldr r0, =0x003f0100
- ands r1, r0
- cmp r1, 0
- beq _0803DB44
- ldr r3, =gBattleOutcome
- ldrb r2, [r3]
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _0803DB2C
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB9C8
- str r0, [r1]
- movs r0, 0x7F
- ands r0, r2
- strb r0, [r3]
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r0, =0x00000ca9
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x8
- orrs r0, r2
- strb r0, [r1]
- b _0803DB82
- .pool
-_0803DB2C:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAA0B
- str r0, [r1]
- movs r0, 0x7F
- ands r0, r2
- strb r0, [r3]
- b _0803DB82
- .pool
-_0803DB44:
- ldr r1, =gBattleTextBuff1
- ldr r4, =gBattleOutcome
- ldrb r0, [r4]
- strb r0, [r1]
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, =gBankAttacker
- strb r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAA35
- str r0, [r1]
- ldrb r1, [r4]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r4]
- b _0803DB82
- .pool
-_0803DB7C:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DA96D
- str r0, [r1]
-_0803DB82:
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803DCD8
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803DAC0
-
- thumb_func_start sub_803DBA0
-sub_803DBA0: @ 803DBA0
- push {lr}
- ldr r1, =gFightStateTracker
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gBattleTypeFlags
- ldr r2, [r1]
- ldr r0, =0x003f0100
- ands r0, r2
- cmp r0, 0
- beq _0803DBFC
- movs r0, 0x8
- ands r2, r0
- cmp r2, 0
- beq _0803DBFC
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB9C1
- str r0, [r1]
- ldr r1, =gBattleOutcome
- movs r0, 0x9
- strb r0, [r1]
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r0, =0x00000ca9
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x8
- orrs r0, r2
- strb r0, [r1]
- b _0803DC6A
- .pool
-_0803DBFC:
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 19
- ands r0, r1
- cmp r0, 0
- beq _0803DC24
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB9C1
- str r0, [r1]
- ldr r1, =gBattleOutcome
- movs r0, 0x9
- strb r0, [r1]
- b _0803DC6A
- .pool
-_0803DC24:
- ldr r1, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 27
- lsrs r0, 30
- cmp r0, 0x1
- beq _0803DC54
- cmp r0, 0x2
- beq _0803DC64
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAAF0
- b _0803DC68
- .pool
-_0803DC54:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAADB
- b _0803DC68
- .pool
-_0803DC64:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAAE9
-_0803DC68:
- str r0, [r1]
-_0803DC6A:
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803DCD8
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803DBA0
-
- thumb_func_start bc_80158BC
-bc_80158BC: @ 803DC84
- ldr r1, =gFightStateTracker
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- ldr r2, =gBankAttacker
- ldrb r0, [r2]
- strb r0, [r1, 0x2]
- ldr r3, =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, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAAF7
- str r0, [r1]
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803DCD8
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end bc_80158BC
-
- thumb_func_start sub_803DCD8
-sub_803DCD8: @ 803DCD8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gFightStateTracker
- ldrb r0, [r0]
- subs r0, 0xB
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0803DCEE
- b _0803DE10
-_0803DCEE:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x023f0b92
- ands r1, r0
- cmp r1, 0
- bne _0803DDB6
- ldr r2, =gActiveBank
- strb r1, [r2]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r1, r0
- bcs _0803DDB2
- adds r5, r2, 0
- ldr r0, =gBattlePartyID
- mov r8, r0
- movs r7, 0x64
- ldr r6, =gPlayerParty
-_0803DD10:
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803DDA0
- ldr r4, =gBattleResults
- ldrh r0, [r4, 0x6]
- cmp r0, 0
- bne _0803DD74
- ldrb r0, [r5]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- muls r0, r7
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r4, 0x6]
- ldrb r0, [r5]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- muls r0, r7
- adds r0, r6
- movs r1, 0x2
- adds r2, r4, 0
- adds r2, 0x8
- bl GetMonData
- b _0803DDA0
- .pool
-_0803DD74:
- ldrb r0, [r5]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- muls r0, r7
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r4, 0x26]
- ldrb r0, [r5]
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- muls r0, r7
- adds r0, r6
- movs r1, 0x2
- adds r2, r4, 0
- adds r2, 0x14
- bl GetMonData
-_0803DDA0:
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803DD10
-_0803DDB2:
- bl sub_80EC728
-_0803DDB6:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x023f0b9a
- ands r0, r1
- cmp r0, 0
- bne _0803DDD2
- ldr r0, =gBattleResults
- ldrb r1, [r0, 0x5]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0803DDD2
- bl sub_80EE184
-_0803DDD2:
- bl sub_8186444
- movs r0, 0x3
- bl BeginFastPaletteFade
- movs r0, 0x5
- bl FadeOutMapMusic
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_803DE40
- str r0, [r1]
- ldr r1, =gUnknown_030061E8
- ldr r0, =sub_8038420
- str r0, [r1]
- b _0803DE2A
- .pool
-_0803DE10:
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0803DE2A
- ldr r1, =gBattleScriptingCommandsTable
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
-_0803DE2A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803DCD8
-
- thumb_func_start sub_803DE40
-sub_803DE40: @ 803DE40
- push {lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0803DE86
- bl ResetSpriteData
- ldr r0, =gUnknown_03005D54
- ldrb r0, [r0]
- cmp r0, 0
- beq _0803DE62
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0803DE80
-_0803DE62:
- ldr r1, =gBattleMainFunc
- ldr r0, =c4_overworld
- str r0, [r1]
- b _0803DEA2
- .pool
-_0803DE80:
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_evolution_cutscene
- str r0, [r1]
-_0803DE86:
- bl FreeAllWindowBuffers
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0803DEA2
- bl sub_805F094
- bl sub_8057028
- bl dp11_free
-_0803DEA2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803DE40
-
- thumb_func_start bc_evolution_cutscene
-bc_evolution_cutscene: @ 803DEB4
- push {r4-r6,lr}
- ldr r0, =gUnknown_03005D54
- ldrb r1, [r0]
- adds r3, r0, 0
- cmp r1, 0
- beq _0803DF2E
-_0803DEC0:
- movs r6, 0
-_0803DEC2:
- ldrb r2, [r3]
- ldr r0, =gBitTable
- lsls r1, r6, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0803DF20
- bics r2, r1
- strb r2, [r3]
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _0803DF20
- bl FreeAllWindowBuffers
- ldr r0, =gBattleMainFunc
- ldr r1, =sub_803DF48
- str r1, [r0]
- lsls r3, r6, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl evolution_cutscene
- b _0803DF34
- .pool
-_0803DF20:
- adds r6, 0x1
- ldr r3, =gUnknown_03005D54
- cmp r6, 0x5
- ble _0803DEC2
- ldrb r0, [r3]
- cmp r0, 0
- bne _0803DEC0
-_0803DF2E:
- ldr r1, =gBattleMainFunc
- ldr r0, =c4_overworld
- str r0, [r1]
-_0803DF34:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_evolution_cutscene
-
- thumb_func_start sub_803DF48
-sub_803DF48: @ 803DF48
- push {lr}
- ldr r0, =gMain
- ldr r1, [r0, 0x4]
- ldr r0, =sub_8038420
- cmp r1, r0
- bne _0803DF5A
- ldr r1, =gBattleMainFunc
- ldr r0, =bc_evolution_cutscene
- str r0, [r1]
-_0803DF5A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803DF48
-
- thumb_func_start c4_overworld
-c4_overworld: @ 803DF70
- push {r4-r6,lr}
- ldr r6, =gBattleTypeFlags
- ldr r0, [r6]
- movs r5, 0x2
- ands r0, r5
- cmp r0, 0
- bne _0803DF8C
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- bl RandomlyGivePartyPokerus
- adds r0, r4, 0
- bl PartySpreadPokerus
-_0803DF8C:
- ldr r4, [r6]
- adds r0, r4, 0
- ands r0, r5
- cmp r0, 0
- beq _0803DF9E
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- bne _0803DFEC
-_0803DF9E:
- ldr r1, =gScriptResult
- ldr r5, =gBattleOutcome
- ldrb r0, [r5]
- strh r0, [r1]
- ldr r3, =gMain
- ldr r0, =0x00000439
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, =gUnknown_03005D00
- ldr r0, [r0]
- str r0, [r3]
- movs r0, 0x80
- lsls r0, 3
- ands r4, r0
- cmp r4, 0
- beq _0803DFDE
- ldr r0, =gEnemyParty
- bl UpdateRoamerHPStatus
- ldrb r1, [r5]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0803DFDA
- cmp r1, 0x7
- bne _0803DFDE
-_0803DFDA:
- bl SetRoamerInactive
-_0803DFDE:
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_0803DFEC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c4_overworld
-
- thumb_func_start bc_move_exec_returning
-bc_move_exec_returning: @ 803E018
- push {lr}
- ldr r0, =gFightStateTracker
- ldrb r0, [r0]
- subs r0, 0xB
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0803E060
- ldr r3, =gBattleResources
- ldr r0, [r3]
- ldr r0, [r0, 0xC]
- adds r1, r0, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0
- beq _0803E03C
- subs r0, 0x1
- strb r0, [r1]
-_0803E03C:
- ldr r2, =gBattleMainFunc
- ldr r0, [r3]
- ldr r1, [r0, 0xC]
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 2
- adds r1, r0
- ldr r0, [r1]
- str r0, [r2]
- b _0803E07A
- .pool
-_0803E060:
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0803E07A
- ldr r1, =gBattleScriptingCommandsTable
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
-_0803E07A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end bc_move_exec_returning
-
- thumb_func_start sub_803E08C
-sub_803E08C: @ 803E08C
- push {lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0803E0A8
- ldr r1, =gBattleScriptingCommandsTable
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
-_0803E0A8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803E08C
-
- thumb_func_start sub_803E0B8
-sub_803E0B8: @ 803E0B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0x4
- str r0, [sp]
- ldr r6, =gBankAttacker
- ldr r1, =gTurnOrder
- ldr r0, =gUnknown_02024082
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r6]
- ldr r1, =gBattleStruct
- ldr r3, [r1]
- adds r0, r3, 0
- adds r0, 0x91
- ldrb r2, [r0]
- ldr r1, =gBitTable
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- beq _0803E110
- ldr r1, =gFightStateTracker
- movs r0, 0xC
- b _0803E83C
- .pool
-_0803E110:
- ldr r1, =gCritMultiplier
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, =gBattleScripting
- movs r0, 0x1
- strb r0, [r1, 0xE]
- ldr r5, =0x000001a3
- adds r0, r3, r5
- strb r2, [r0]
- ldr r0, =gBattleMoveFlags
- strb r2, [r0]
- ldr r0, =gUnknown_02024212
- strb r2, [r0]
- ldr r0, =gBattleCommunication
- strb r2, [r0, 0x6]
- ldr r2, =gCurrMovePos
- ldr r0, =gUnknown_020241E9
- mov r9, r0
- ldrb r0, [r6]
- ldr r3, =gBattleStruct
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0x80
- ldrb r0, [r0]
- mov r5, r9
- strb r0, [r5]
- strb r0, [r2]
- ldr r1, =gProtectStructs
- ldrb r4, [r6]
- lsls r0, r4, 4
- adds r3, r0, r1
- ldrb r1, [r3]
- lsls r0, r1, 29
- mov r8, r2
- cmp r0, 0
- bge _0803E1BC
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldr r2, =gCurrentMove
- ldr r1, =gUnknown_020241EC
- movs r0, 0xA5
- strh r0, [r1]
- strh r0, [r2]
- ldr r2, =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 4
- orrs r0, r1
- str r0, [r2]
- movs r0, 0xA5
- movs r1, 0
- bl GetMoveTarget
- ldrb r1, [r6]
- ldr r3, =gBattleStruct
- ldr r2, [r3]
- b _0803E316
- .pool
-_0803E1BC:
- ldr r5, =gBattleMons
- mov r10, r5
- movs r0, 0x58
- adds r5, r4, 0
- muls r5, r0
- mov r0, r10
- adds r0, 0x50
- adds r0, r5, r0
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 5
- ands r0, r1
- cmp r0, 0
- bne _0803E1E2
- movs r7, 0x80
- lsls r7, 15
- ands r7, r1
- cmp r7, 0
- beq _0803E204
-_0803E1E2:
- ldr r3, =gCurrentMove
- ldr r2, =gUnknown_020241EC
- ldr r1, =gUnknown_02024268
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- strh r0, [r3]
- b _0803E33C
- .pool
-_0803E204:
- ldr r1, =gDisableStructs
- mov r12, r1
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- add r0, r12
- ldrh r3, [r0, 0x6]
- adds r1, r3, 0
- cmp r1, 0
- beq _0803E2DC
- ldrb r2, [r0, 0xC]
- lsls r0, r2, 1
- adds r0, r5
- mov r4, r10
- adds r4, 0xC
- adds r0, r4
- ldrh r0, [r0]
- cmp r1, r0
- bne _0803E268
- ldr r2, =gCurrentMove
- ldr r0, =gUnknown_020241EC
- strh r3, [r0]
- strh r3, [r2]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r0, [r0, 0xC]
- mov r3, r9
- strb r0, [r3]
- mov r5, r8
- strb r0, [r5]
- ldrh r0, [r2]
- movs r1, 0
- bl GetMoveTarget
- ldrb r1, [r6]
- ldr r3, =gBattleStruct
- ldr r2, [r3]
- b _0803E316
- .pool
-_0803E268:
- cmp r1, 0
- beq _0803E2DC
- cmp r1, r0
- beq _0803E2DC
- mov r5, r9
- strb r2, [r5]
- mov r0, r8
- strb r2, [r0]
- ldr r3, =gCurrentMove
- ldr r2, =gUnknown_020241EC
- ldrb r0, [r0]
- lsls r0, 1
- ldrb r1, [r6]
- movs r5, 0x58
- muls r1, r5
- adds r0, r1
- adds r0, r4
- ldrh r0, [r0]
- strh r0, [r2]
- strh r0, [r3]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- movs r2, 0
- strh r7, [r0, 0x6]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- strb r2, [r0, 0xC]
- ldrb r0, [r6]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r12
- ldrb r2, [r1, 0xE]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0xE]
- ldrh r0, [r3]
- movs r1, 0
- bl GetMoveTarget
- ldrb r1, [r6]
- ldr r3, =gBattleStruct
- ldr r2, [r3]
- b _0803E316
- .pool
-_0803E2DC:
- ldr r3, =gBattleMons
- mov r5, r8
- ldrb r0, [r5]
- lsls r0, 1
- ldr r4, =gBankAttacker
- ldrb r2, [r4]
- movs r1, 0x58
- muls r1, r2
- adds r0, r1
- adds r3, 0xC
- adds r0, r3
- ldr r1, =gChosenMovesByBanks
- lsls r2, 1
- adds r2, r1
- ldrh r3, [r0]
- ldrh r2, [r2]
- cmp r3, r2
- beq _0803E334
- ldr r1, =gCurrentMove
- ldr r0, =gUnknown_020241EC
- strh r3, [r0]
- strh r3, [r1]
- ldrh r0, [r1]
- movs r1, 0
- bl GetMoveTarget
- ldrb r1, [r4]
- ldr r2, =gBattleStruct
- ldr r2, [r2]
-_0803E316:
- adds r1, r2
- strb r0, [r1, 0xC]
- b _0803E33C
- .pool
-_0803E334:
- ldr r1, =gCurrentMove
- ldr r0, =gUnknown_020241EC
- strh r3, [r0]
- strh r3, [r1]
-_0803E33C:
- ldr r2, =gBattleMons
- ldr r1, =gBankAttacker
- ldrb r3, [r1]
- movs r0, 0x58
- muls r0, r3
- adds r0, r2
- ldrh r0, [r0, 0x28]
- mov r8, r1
- cmp r0, 0
- beq _0803E384
- adds r0, r3, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803E37C
- ldr r0, =gBattleResults
- ldr r1, =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0, 0x22]
- b _0803E384
- .pool
-_0803E37C:
- ldr r0, =gBattleResults
- ldr r1, =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0, 0x24]
-_0803E384:
- mov r1, r8
- ldrb r0, [r1]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gSideTimers
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r5, r0, r1
- ldrb r0, [r5, 0x8]
- cmp r0, 0
- beq _0803E400
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x6]
- cmp r0, 0
- bne _0803E400
- mov r3, r8
- ldrb r0, [r3]
- bl GetBankSide
- adds r4, r0, 0
- ldrb r0, [r5, 0x9]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0803E400
- ldr r1, =gBattleMons
- ldrb r2, [r5, 0x9]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0803E400
- ldr r0, =gBankTarget
- strb r2, [r0]
- b _0803E76A
- .pool
-_0803E400:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- ldr r5, =gBankAttacker
- mov r8, r5
- cmp r0, 0
- bne _0803E412
- b _0803E6E0
-_0803E412:
- ldr r1, =gSideTimers
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x8]
- cmp r5, 0
- beq _0803E424
- b _0803E630
-_0803E424:
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _0803E440
- ldrb r0, [r4, 0x6]
- cmp r0, 0x10
- bne _0803E440
- b _0803E630
-_0803E440:
- ldr r3, =gBattleMons
- ldr r2, =gBankAttacker
- ldrb r6, [r2]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, r6, r0
- ldrb r1, [r0, 0xC]
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- mov r8, r2
- cmp r0, 0x1F
- bne _0803E460
- b _0803E630
-_0803E460:
- ldrb r0, [r4, 0x2]
- cmp r0, 0xD
- beq _0803E468
- b _0803E630
-_0803E468:
- adds r0, r6, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gActiveBank
- strb r5, [r1]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- bcs _0803E4E0
- adds r4, r1, 0
-_0803E480:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0803E4CE
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r1, r0
- ldrb r0, [r1, 0xC]
- ldrb r1, [r4]
- cmp r0, r1
- beq _0803E4CE
- ldr r1, =gBattleMons
- ldrb r2, [r4]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1F
- bne _0803E4CE
- adds r0, r2, 0
- bl sub_8048728
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [sp]
- cmp r0, r3
- bcs _0803E4CE
- ldrb r0, [r4]
- bl sub_8048728
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
-_0803E4CE:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803E480
-_0803E4E0:
- ldr r5, [sp]
- cmp r5, 0x4
- beq _0803E4E8
- b _0803E5E2
-_0803E4E8:
- ldr r2, =gBattleMoves
- ldr r0, =gUnknown_020241EC
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x6]
- ands r5, r0
- cmp r5, 0
- beq _0803E568
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803E548
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0803E544
- movs r0, 0x1
- b _0803E55A
- .pool
-_0803E544:
- movs r0, 0x3
- b _0803E55A
-_0803E548:
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0803E558
- movs r0, 0
- b _0803E55A
-_0803E558:
- movs r0, 0x2
-_0803E55A:
- bl GetBankByPlayerAI
- ldr r1, =gBankTarget
- strb r0, [r1]
- b _0803E578
- .pool
-_0803E568:
- ldr r2, =gBankTarget
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- ldrb r0, [r0, 0xC]
- strb r0, [r2]
-_0803E578:
- ldr r7, =gAbsentBankFlags
- ldrb r0, [r7]
- ldr r1, =gBitTable
- mov r8, r1
- ldr r5, =gBankTarget
- ldrb r1, [r5]
- lsls r1, 2
- add r1, r8
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- bne _0803E592
- b _0803E76A
-_0803E592:
- ldr r6, =gBankAttacker
- ldrb r0, [r6]
- bl GetBankSide
- adds r4, r0, 0
- ldrb r0, [r5]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0803E5C4
- ldrb r0, [r5]
- b _0803E758
- .pool
-_0803E5C4:
- ldrb r0, [r6]
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- strb r0, [r5]
- ldrb r1, [r7]
- ldrb r2, [r5]
- lsls r0, r2, 2
- add r0, r8
- b _0803E74E
-_0803E5E2:
- ldr r4, =gActiveBank
- ldr r0, =gTurnOrder
- ldr r3, [sp]
- adds r0, r3, r0
- ldrb r0, [r0]
- strb r0, [r4]
- ldrb r0, [r4]
- ldr r2, =gBattleMons
- movs r1, 0x58
- muls r1, r0
- adds r1, r2
- adds r1, 0x20
- ldrb r1, [r1]
- bl RecordAbilityBattle
- ldr r2, =gSpecialStatuses
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
- ldr r1, =gBankTarget
- ldrb r0, [r4]
- strb r0, [r1]
- b _0803E76A
- .pool
-_0803E630:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r4, 0x1
- ands r0, r4
- cmp r0, 0
- beq _0803E6E0
- ldr r2, =gBattleMoves
- ldr r0, =gUnknown_020241EC
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x6]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0803E6E0
- mov r5, r8
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803E684
- bl Random
- adds r1, r4, 0
- ands r1, r0
- cmp r1, 0
- beq _0803E680
- movs r0, 0x1
- b _0803E696
- .pool
-_0803E680:
- movs r0, 0x3
- b _0803E696
-_0803E684:
- bl Random
- adds r1, r4, 0
- ands r1, r0
- cmp r1, 0
- beq _0803E694
- movs r0, 0
- b _0803E696
-_0803E694:
- movs r0, 0x2
-_0803E696:
- bl GetBankByPlayerAI
- ldr r1, =gBankTarget
- strb r0, [r1]
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0803E76A
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- adds r4, r0, 0
- ldrb r0, [r5]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0803E76A
- ldrb r0, [r5]
- b _0803E758
- .pool
-_0803E6E0:
- ldr r5, =gBankTarget
- mov r2, r8
- ldrb r0, [r2]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- ldrb r0, [r0, 0xC]
- strb r0, [r5]
- ldr r6, =gAbsentBankFlags
- ldrb r1, [r6]
- ldr r7, =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r7
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0803E76A
- ldrb r0, [r2]
- bl GetBankSide
- adds r4, r0, 0
- ldrb r0, [r5]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0803E730
- ldrb r0, [r5]
- b _0803E758
- .pool
-_0803E730:
- mov r1, r8
- ldrb r0, [r1]
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- strb r0, [r5]
- ldrb r1, [r6]
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r7
-_0803E74E:
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0803E76A
- adds r0, r2, 0
-_0803E758:
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- strb r0, [r5]
-_0803E76A:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 10
- ands r1, r2
- adds r5, r0, 0
- cmp r1, 0
- beq _0803E808
- ldr r0, =gProtectStructs
- ldr r4, =gBankAttacker
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r0
- ldrb r0, [r1, 0x2]
- lsls r0, 27
- cmp r0, 0
- bge _0803E808
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0803E7B4
- ldr r1, =gFightStateTracker
- movs r0, 0xC
- b _0803E83C
- .pool
-_0803E7B4:
- ldr r3, =gUnknown_02024230
- lsls r0, r2, 2
- adds r0, r3
- ldr r0, [r0]
- cmp r0, 0
- beq _0803E7EC
- ldr r1, =gBattleCommunication
- movs r2, 0
- movs r0, 0x4
- strb r0, [r1, 0x5]
- ldr r1, =gBattlescriptCurrInstr
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- str r0, [r1]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r3
- str r2, [r0]
- b _0803E824
- .pool
-_0803E7EC:
- ldr r1, =gBattleCommunication
- movs r0, 0x4
- strb r0, [r1, 0x5]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =BattleScript_MoveUsedLoafingAround
- str r0, [r1]
- b _0803E824
- .pool
-_0803E808:
- ldr r4, =gBattlescriptCurrInstr
- ldr r3, =gUnknown_082D86A8
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- 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]
-_0803E824:
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _0803E838
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl sub_81A56E8
-_0803E838:
- ldr r1, =gFightStateTracker
- movs r0, 0xA
-_0803E83C:
- strb r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803E0B8
-
- thumb_func_start bs2_8016374
-bs2_8016374: @ 803E868
- push {r4,lr}
- ldr r3, =gBankAttacker
- ldr r1, =gTurnOrder
- ldr r0, =gUnknown_02024082
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r3]
- ldr r0, =gUnknown_02022E14
- movs r2, 0
- strh r2, [r0]
- ldr r0, =gUnknown_02022E16
- strh r2, [r0]
- ldr r1, =gUnknown_020244AC
- ldrb r0, [r3]
- adds r0, r1
- strb r2, [r0]
- ldr r1, =gUnknown_020244B0
- ldrb r0, [r3]
- adds r0, r1
- strb r2, [r0]
- ldr r2, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r2]
- movs r0, 0x7
- strb r0, [r2, 0x1]
- ldrb r4, [r3]
- strb r4, [r2, 0x2]
- ldrb r0, [r3]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x58
- ldrb r0, [r0]
- strb r0, [r2, 0x3]
- movs r0, 0xFF
- strb r0, [r2, 0x4]
- ldr r0, =gBattleScripting
- strb r4, [r0, 0x17]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAB15
- str r0, [r1]
- ldr r1, =gFightStateTracker
- movs r0, 0xA
- strb r0, [r1]
- ldr r1, =gBattleResults
- ldrb r0, [r1, 0x2]
- cmp r0, 0xFE
- bhi _0803E8CE
- adds r0, 0x1
- strb r0, [r1, 0x2]
-_0803E8CE:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bs2_8016374
-
- thumb_func_start sub_803E90C
-sub_803E90C: @ 803E90C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, =gBankAttacker
- ldr r2, =gBankTarget
- ldr r1, =gTurnOrder
- ldr r0, =gUnknown_02024082
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- strb r0, [r4]
- ldr r0, =gUnknown_02022E14
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02022E16
- strh r1, [r0]
- ldrb r0, [r4]
- bl sub_8045868
- ldr r5, =gLastUsedItem
- ldr r2, =gBattleBufferB
- ldrb r1, [r4]
- lsls r1, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r3, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r0, [r1]
- lsls r0, 8
- orrs r3, r0
- strh r3, [r5]
- cmp r3, 0xC
- bhi _0803E998
- ldr r2, =gBattlescriptCurrInstr
- ldr r1, =gUnknown_082DBD08
- ldrh r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, =gFightStateTracker
- mov r10, r0
- b _0803EBF6
- .pool
-_0803E998:
- adds r0, r3, 0
- subs r0, 0x50
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0803E9C0
- ldr r0, =gBattlescriptCurrInstr
- ldr r1, =gUnknown_082DBD54
- ldr r1, [r1]
- str r1, [r0]
- ldr r1, =gFightStateTracker
- mov r10, r1
- b _0803EBF6
- .pool
-_0803E9C0:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803E9E8
- ldr r0, =gBattlescriptCurrInstr
- ldr r1, =gUnknown_082DBD3C
- ldr r1, [r1]
- str r1, [r0]
- ldr r2, =gFightStateTracker
- mov r10, r2
- b _0803EBF6
- .pool
-_0803E9E8:
- ldr r3, =gBattleScripting
- ldrb r0, [r4]
- strb r0, [r3, 0x17]
- lsls r0, 24
- lsrs r0, 25
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- adds r0, r1
- adds r0, 0xC4
- ldrb r0, [r0]
- subs r0, 0x1
- mov r8, r4
- ldr r1, =gBattlescriptCurrInstr
- mov r9, r1
- ldr r6, =gUnknown_082DBD3C
- mov r12, r3
- adds r7, r2, 0
- ldr r2, =gFightStateTracker
- mov r10, r2
- cmp r0, 0x4
- bls _0803EA14
- b _0803EBDE
-_0803EA14:
- lsls r0, 2
- ldr r1, =_0803EA38
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0803EA38:
- .4byte _0803EBDE
- .4byte _0803EBDE
- .4byte _0803EA4C
- .4byte _0803EAE0
- .4byte _0803EBB0
-_0803EA4C:
- ldr r5, =gBattleCommunication
- movs r0, 0
- strb r0, [r5, 0x5]
- ldr r2, =gBankAttacker
- ldrb r0, [r2]
- lsrs r0, 1
- ldr r1, [r7]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _0803EA98
- movs r0, 0x3E
- ands r0, r1
- ldr r1, =gBattlescriptCurrInstr
- mov r9, r1
- ldr r6, =gUnknown_082DBD3C
- ldr r2, =gFightStateTracker
- mov r10, r2
- cmp r0, 0
- bne _0803EA7E
- b _0803EBDE
-_0803EA7E:
- movs r0, 0x5
- strb r0, [r5, 0x5]
- b _0803EBDE
- .pool
-_0803EA98:
- ldr r0, =gBattlescriptCurrInstr
- mov r9, r0
- ldr r6, =gUnknown_082DBD3C
- ldr r1, =gFightStateTracker
- mov r10, r1
- mov r4, r8
- adds r3, r7, 0
- adds r2, r5, 0
-_0803EAA8:
- ldrb r1, [r4]
- lsrs r1, 1
- ldr r0, [r3]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- lsrs r0, 1
- strb r0, [r1]
- ldrb r0, [r2, 0x5]
- adds r0, 0x1
- strb r0, [r2, 0x5]
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0803EAA8
- b _0803EBDE
- .pool
-_0803EAE0:
- ldr r3, =gBattleCommunication
- movs r0, 0x4
- strb r0, [r3, 0x5]
- ldr r2, =gBankAttacker
- ldrb r0, [r2]
- lsrs r0, 1
- ldr r1, [r7]
- adds r0, r1
- adds r6, r0, 0
- adds r6, 0xC6
- ldrb r1, [r6]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r8, r2
- cmp r5, 0
- beq _0803EB28
- movs r0, 0x5
- strb r0, [r3, 0x5]
- ldr r2, =gBattlescriptCurrInstr
- mov r9, r2
- ldr r6, =gUnknown_082DBD3C
- ldr r0, =gFightStateTracker
- mov r10, r0
- b _0803EBDE
- .pool
-_0803EB28:
- ldr r3, =gBattleTextBuff1
- movs r4, 0xFD
- strb r4, [r3]
- movs r0, 0x5
- strb r0, [r3, 0x1]
- movs r2, 0x1
- strb r2, [r3, 0x2]
- movs r0, 0xFF
- strb r0, [r3, 0x3]
- ldr r1, =gBattleTextBuff2
- strb r4, [r1]
- strb r5, [r1, 0x1]
- movs r0, 0xD2
- strb r0, [r1, 0x2]
- strb r5, [r1, 0x3]
- subs r0, 0xD3
- strb r0, [r1, 0x4]
- ldrb r0, [r6]
- ands r2, r0
- ldr r1, =gBattlescriptCurrInstr
- mov r9, r1
- ldr r6, =gUnknown_082DBD3C
- ldr r0, =gFightStateTracker
- mov r10, r0
- cmp r2, 0
- bne _0803EB8C
- mov r5, r8
- adds r4, r7, 0
- adds r2, r3, 0
-_0803EB62:
- ldrb r1, [r5]
- lsrs r1, 1
- ldr r0, [r4]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- lsrs r0, 1
- strb r0, [r1]
- ldrb r0, [r2, 0x2]
- adds r0, 0x1
- strb r0, [r2, 0x2]
- ldrb r0, [r5]
- lsrs r0, 1
- ldr r1, [r4]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0803EB62
-_0803EB8C:
- ldrb r0, [r3, 0x2]
- adds r0, 0xE
- movs r1, 0
- mov r2, r12
- strb r0, [r2, 0x10]
- strb r1, [r2, 0x11]
- b _0803EBDE
- .pool
-_0803EBB0:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0803EBCC
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _0803EBD0
- .pool
-_0803EBCC:
- ldr r0, =gBattleCommunication
- strb r1, [r0, 0x5]
-_0803EBD0:
- ldr r0, =gBankAttacker
- mov r8, r0
- ldr r1, =gBattlescriptCurrInstr
- mov r9, r1
- ldr r6, =gUnknown_082DBD3C
- ldr r2, =gFightStateTracker
- mov r10, r2
-_0803EBDE:
- mov r1, r8
- ldrb r0, [r1]
- lsrs r0, 1
- ldr r1, [r7]
- adds r0, r1
- adds r0, 0xC4
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- mov r2, r9
- str r0, [r2]
-_0803EBF6:
- movs r0, 0xA
- mov r1, r10
- strb r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803E90C
-
- thumb_func_start sub_803EC20
-sub_803EC20: @ 803EC20
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r7, 0
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r5
- adds r1, r0, r1
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0803EC54
- ldr r1, =gEnigmaBerries
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x7]
- b _0803EC5E
- .pool
-_0803EC54:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r1, r0, 24
-_0803EC5E:
- ldr r0, =gStringBank
- strb r5, [r0]
- cmp r1, 0x25
- bne _0803EC9C
- ldr r2, =gLastUsedItem
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r5
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- strh r0, [r2]
- ldr r0, =gProtectStructs
- lsls r2, r5, 4
- adds r2, r0
- ldrb r1, [r2, 0x1]
- movs r0, 0x19
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2, 0x1]
- b _0803ED70
- .pool
-_0803EC9C:
- ldr r0, =gBattleMons
- mov r10, r0
- movs r2, 0x58
- mov r9, r2
- mov r0, r9
- muls r0, r5
- add r0, r10
- mov r8, r0
- adds r0, 0x20
- ldrb r6, [r0]
- cmp r6, 0x32
- bne _0803ED5C
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _0803ED38
- ldr r4, =gBattleStruct
- ldr r1, [r4]
- adds r1, 0x6C
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_81A9E28
- lsls r0, 24
- lsrs r1, r0, 24
- mov r2, r8
- ldrh r0, [r2, 0x6]
- muls r0, r1
- movs r2, 0x1
- adds r1, r5, 0
- eors r1, r2
- mov r2, r9
- muls r2, r1
- adds r1, r2, 0
- add r1, r10
- ldrh r1, [r1, 0x6]
- bl __divsi3
- ldr r1, [r4]
- adds r1, 0x6C
- ldrb r2, [r1]
- lsls r1, r2, 4
- subs r1, r2
- lsls r1, 1
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- bl Random
- movs r1, 0xFF
- ands r1, r0
- cmp r4, r1
- bhi _0803ED0C
- b _0803EE12
-_0803ED0C:
- ldr r0, =gLastUsedAbility
- strb r6, [r0]
- ldr r0, =gProtectStructs
- lsls r2, r5, 4
- adds r2, r0
- ldrb r1, [r2, 0x1]
- movs r0, 0x19
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0x1]
- b _0803ED70
- .pool
-_0803ED38:
- ldr r0, =gLastUsedAbility
- strb r6, [r0]
- ldr r0, =gProtectStructs
- lsls r2, r5, 4
- adds r2, r0
- ldrb r1, [r2, 0x1]
- movs r0, 0x19
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0x1]
- b _0803ED70
- .pool
-_0803ED5C:
- ldr r1, =gBattleTypeFlags
- ldr r2, [r1]
- ldr r0, =0x043f0100
- ands r0, r2
- cmp r0, 0
- beq _0803ED80
- movs r0, 0x8
- ands r2, r0
- cmp r2, 0
- beq _0803ED80
-_0803ED70:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- b _0803EE12
- .pool
-_0803ED80:
- ldr r0, [r1]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0803EE06
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _0803EDBC
- bl sub_81A9E28
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r4, =gBattleMons
- movs r3, 0x58
- adds r0, r5, 0
- muls r0, r3
- adds r0, r4
- ldrh r0, [r0, 0x6]
- muls r0, r1
- movs r2, 0x1
- adds r1, r5, 0
- eors r1, r2
- muls r1, r3
- adds r1, r4
- b _0803EDDA
- .pool
-_0803EDBC:
- ldr r3, =gBattleMons
- movs r2, 0x58
- adds r0, r5, 0
- muls r0, r2
- adds r4, r0, r3
- movs r1, 0x1
- adds r0, r5, 0
- eors r0, r1
- muls r0, r2
- adds r1, r0, r3
- ldrh r0, [r4, 0x6]
- ldrh r2, [r1, 0x6]
- cmp r0, r2
- bcs _0803EE00
- lsls r0, 7
-_0803EDDA:
- ldrh r1, [r1, 0x6]
- bl __divsi3
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r1, 0x6C
- ldrb r2, [r1]
- lsls r1, r2, 4
- subs r1, r2
- lsls r1, 1
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- bl Random
- movs r1, 0xFF
- ands r1, r0
- cmp r4, r1
- bls _0803EE06
-_0803EE00:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_0803EE06:
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r1, 0x6C
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0803EE12:
- cmp r7, 0
- beq _0803EE24
- ldr r1, =gUnknown_02024082
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, =gBattleOutcome
- movs r0, 0x4
- strb r0, [r1]
-_0803EE24:
- adds r0, r7, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_803EC20
-
- thumb_func_start sub_803EE48
-sub_803EE48: @ 803EE48
- push {r4-r6,lr}
- ldr r4, =gBankAttacker
- ldr r1, =gTurnOrder
- ldr r5, =gUnknown_02024082
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0803EF0C
- ldr r0, =gNoOfAllBanks
- ldrb r1, [r0]
- strb r1, [r5]
- ldr r2, =gActiveBank
- movs r0, 0
- strb r0, [r2]
- lsls r1, 24
- cmp r1, 0
- beq _0803EEE0
- adds r4, r2, 0
- ldr r6, =gUnknown_0202421C
- ldr r5, =gBattleOutcome
-_0803EE7C:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803EEBC
- ldrb r0, [r4]
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0803EECE
- ldrb r0, [r5]
- movs r1, 0x2
- b _0803EECA
- .pool
-_0803EEBC:
- ldrb r0, [r4]
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0803EECE
- ldrb r0, [r5]
- movs r1, 0x1
-_0803EECA:
- orrs r0, r1
- strb r0, [r5]
-_0803EECE:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0803EE7C
-_0803EEE0:
- ldr r2, =gBattleOutcome
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r0, =0x00000ca9
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x8
- orrs r0, r2
- b _0803EF96
- .pool
-_0803EF0C:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0803EF4C
- ldrb r0, [r4]
- bl sub_803EC20
- lsls r0, 24
- cmp r0, 0
- bne _0803EF98
- ldrb r0, [r4]
- bl sub_8045868
- ldr r1, =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x5]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAB02
- str r0, [r1]
- ldr r1, =gFightStateTracker
- movs r0, 0xA
- b _0803EF96
- .pool
-_0803EF4C:
- ldr r1, =gBattleMons
- ldrb r2, [r4]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x0400e000
- ands r0, r1
- cmp r0, 0
- beq _0803EF8C
- ldr r1, =gBattleCommunication
- movs r0, 0x4
- strb r0, [r1, 0x5]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAB02
- str r0, [r1]
- ldr r1, =gFightStateTracker
- movs r0, 0xA
- b _0803EF96
- .pool
-_0803EF8C:
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r1, =gBattleOutcome
- movs r0, 0x6
-_0803EF96:
- strb r0, [r1]
-_0803EF98:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803EE48
-
- thumb_func_start sub_803EFA8
-sub_803EFA8: @ 803EFA8
- ldr r2, =gBankAttacker
- ldr r1, =gTurnOrder
- ldr r0, =gUnknown_02024082
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r0, =gUnknown_02022E14
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02022E16
- strh r1, [r0]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBD58
- ldr r0, [r0]
- str r0, [r1]
- ldr r1, =gFightStateTracker
- movs r0, 0xA
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_803EFA8
-
- thumb_func_start bs5_8016AC0
-bs5_8016AC0: @ 803EFF0
- ldr r2, =gBankAttacker
- ldr r1, =gTurnOrder
- ldr r0, =gUnknown_02024082
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r0, =gUnknown_02022E14
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02022E16
- strh r1, [r0]
- ldr r1, =gNumSafariBalls
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- ldr r1, =gLastUsedItem
- movs r0, 0x5
- strh r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBD08
- ldr r0, [r0, 0x14]
- str r0, [r1]
- ldr r1, =gFightStateTracker
- movs r0, 0xA
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end bs5_8016AC0
-
- thumb_func_start sub_803F050
-sub_803F050: @ 803F050
- push {r4-r6,lr}
- ldr r3, =gBankAttacker
- ldr r1, =gTurnOrder
- ldr r0, =gUnknown_02024082
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r3]
- ldr r0, =gUnknown_02022E14
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02022E16
- strh r1, [r0]
- ldr r6, =gBattleCommunication
- ldr r2, =gBattleBufferB
- ldrb r0, [r3]
- lsls r0, 9
- adds r1, r2, 0x1
- adds r0, r1
- ldrb r0, [r0]
- subs r0, 0x1
- strb r0, [r6, 0x5]
- ldr r1, =gLastUsedItem
- ldrb r0, [r3]
- lsls r0, 9
- adds r2, 0x2
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r1]
- ldr r1, =gBattleResults
- ldrb r0, [r1, 0x1F]
- cmp r0, 0xFE
- bhi _0803F096
- adds r0, 0x1
- strb r0, [r1, 0x1F]
-_0803F096:
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x7A
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _0803F0A8
- adds r0, 0x1
- strb r0, [r1]
-_0803F0A8:
- ldr r0, [r2]
- adds r3, r0, 0
- adds r3, 0x7B
- ldrb r5, [r3]
- adds r4, r5, 0
- cmp r4, 0x1
- bls _0803F100
- ldr r2, =gUnknown_0831BCE0
- adds r0, 0x7A
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- ldrb r6, [r6, 0x5]
- adds r0, r6
- adds r0, r2
- ldrb r0, [r0]
- cmp r4, r0
- bcs _0803F0FC
- movs r0, 0x1
- b _0803F0FE
- .pool
-_0803F0FC:
- subs r0, r5, r0
-_0803F0FE:
- strb r0, [r3]
-_0803F100:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBD58
- ldr r0, [r0, 0x8]
- str r0, [r1]
- ldr r1, =gFightStateTracker
- movs r0, 0xA
- strb r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803F050
-
- thumb_func_start sub_803F120
-sub_803F120: @ 803F120
- push {r4,lr}
- ldr r2, =gBankAttacker
- ldr r1, =gTurnOrder
- ldr r0, =gUnknown_02024082
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r0, =gUnknown_02022E14
- movs r4, 0
- strh r4, [r0]
- ldr r0, =gUnknown_02022E16
- strh r4, [r0]
- ldr r3, =gBattleStruct
- ldr r0, [r3]
- adds r2, r0, 0
- adds r2, 0x7C
- ldr r1, =gUnknown_0831BCEF
- adds r0, 0x79
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- ldrb r1, [r2]
- adds r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- adds r1, r0, 0
- adds r1, 0x7C
- ldrb r0, [r1]
- cmp r0, 0x14
- bls _0803F162
- movs r0, 0x14
- strb r0, [r1]
-_0803F162:
- ldr r0, [r3]
- adds r2, r0, 0
- adds r2, 0x7B
- ldr r1, =gUnknown_0831BCF3
- adds r0, 0x79
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- ldrb r1, [r2]
- adds r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- adds r1, r0, 0
- adds r1, 0x7B
- ldrb r0, [r1]
- cmp r0, 0x14
- bls _0803F188
- movs r0, 0x14
- strb r0, [r1]
-_0803F188:
- ldr r0, [r3]
- adds r1, r0, 0
- adds r1, 0x79
- ldrb r0, [r1]
- cmp r0, 0x2
- bhi _0803F1C4
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, =gBattleCommunication
- strb r4, [r0, 0x5]
- b _0803F1CA
- .pool
-_0803F1C4:
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
-_0803F1CA:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBD58
- ldr r0, [r0, 0x4]
- str r0, [r1]
- ldr r1, =gFightStateTracker
- movs r0, 0xA
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803F120
-
- thumb_func_start bs8_exit_by_flight
-bs8_exit_by_flight: @ 803F1F0
- push {r4,lr}
- ldr r2, =gBankAttacker
- ldr r1, =gTurnOrder
- ldr r4, =gUnknown_02024082
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- movs r0, 0x11
- bl PlaySE
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, =gBattleOutcome
- movs r0, 0x4
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bs8_exit_by_flight
-
- thumb_func_start bs9_8016C9C
-bs9_8016C9C: @ 803F22C
- ldr r3, =gBankAttacker
- ldr r1, =gTurnOrder
- ldr r0, =gUnknown_02024082
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- strb r2, [r3]
- ldr r0, =gUnknown_02022E14
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02022E16
- strh r1, [r0]
- ldr r1, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- strb r2, [r1, 0x2]
- ldr r2, =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, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBD58
- ldr r0, [r0, 0xC]
- str r0, [r1]
- ldr r1, =gFightStateTracker
- movs r0, 0xA
- strb r0, [r1]
- ldr r1, =gUnknown_0202407A
- movs r0, 0xC
- strb r0, [r1, 0x1]
- bx lr
- .pool
- thumb_func_end bs9_8016C9C
-
- thumb_func_start bsB_exit_by_move
-bsB_exit_by_move: @ 803F2A4
- push {lr}
- bl sub_8041728
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0803F2C0
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x4D
- strb r1, [r0]
- ldr r1, =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
-_0803F2C0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end bsB_exit_by_move
-
- thumb_func_start bsD_proceed
-bsD_proceed: @ 803F2CC
- ldr r1, =gUnknown_02024082
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r3, =gFightStateTracker
- ldr r2, =gUnknown_0202407A
- ldrb r0, [r1]
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r3]
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xf1e892af
- ands r0, r1
- str r0, [r2]
- bx lr
- .pool
- thumb_func_end bsD_proceed
-
- thumb_func_start bsC_8016D70
-bsC_8016D70: @ 803F300
- push {r4-r6,lr}
- ldr r1, =gTurnOrder
- ldr r2, =gUnknown_02024082
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- ldr r6, =gBattleStruct
- ldr r1, [r6]
- adds r0, r1
- adds r0, 0x5C
- movs r1, 0x6
- strb r1, [r0]
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- ldr r3, =gFightStateTracker
- ldr r1, =gUnknown_0202407A
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r3]
- bl sub_803D6A0
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xf1e892af
- ands r0, r1
- str r0, [r2]
- ldr r0, =gCurrentMove
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattleMoveDamage
- movs r4, 0
- str r4, [r0]
- ldr r0, =gBattleMoveFlags
- strb r1, [r0]
- ldr r5, =gBattleScripting
- strb r1, [r5, 0x18]
- strb r1, [r5, 0x19]
- ldr r2, =gUnknown_02024250
- ldr r3, =gBankAttacker
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- strh r4, [r0]
- ldr r2, =gUnknown_02024258
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- strh r4, [r0]
- ldr r0, [r6]
- strb r1, [r0, 0x13]
- ldr r0, =gDynamicBasePower
- strh r4, [r0]
- strb r1, [r5, 0x14]
- ldr r0, =gBattleCommunication
- strb r1, [r0, 0x3]
- strb r1, [r0, 0x4]
- strb r1, [r5, 0x16]
- ldr r0, =gBattleResources
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- adds r0, 0x20
- strb r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end bsC_8016D70
-
- thumb_func_start get_battle_side_of_something
-get_battle_side_of_something: @ 803F3CC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0
- cmp r1, 0xE
- bhi _0803F47A
- lsls r0, r1, 2
- ldr r1, =_0803F3E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0803F3E8:
- .4byte _0803F424
- .4byte _0803F430
- .4byte _0803F43C
- .4byte _0803F458
- .4byte _0803F464
- .4byte _0803F458
- .4byte _0803F464
- .4byte _0803F448
- .4byte _0803F464
- .4byte _0803F464
- .4byte _0803F44C
- .4byte _0803F464
- .4byte _0803F468
- .4byte _0803F46C
- .4byte _0803F470
-_0803F424:
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- b _0803F47A
- .pool
-_0803F430:
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- b _0803F47A
- .pool
-_0803F43C:
- ldr r0, =gEffectBank
- ldrb r0, [r0]
- b _0803F47A
- .pool
-_0803F448:
- movs r0, 0
- b _0803F47A
-_0803F44C:
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- b _0803F47A
- .pool
-_0803F458:
- ldr r0, =gBank1
- ldrb r0, [r0]
- b _0803F47A
- .pool
-_0803F464:
- movs r0, 0
- b _0803F472
-_0803F468:
- movs r0, 0x1
- b _0803F472
-_0803F46C:
- movs r0, 0x2
- b _0803F472
-_0803F470:
- movs r0, 0x3
-_0803F472:
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
-_0803F47A:
- pop {r1}
- bx r1
- thumb_func_end get_battle_side_of_something
-
- thumb_func_start sub_803F480
-sub_803F480: @ 803F480
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 16
- lsrs r2, 16
- ldr r1, =gBattleMons
- movs r4, 0x58
- muls r0, r4
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- mov r12, r1
- cmp r0, 0x2E
- bne _0803F532
- movs r3, 0
- adds r0, r5, 0
- muls r0, r4
- adds r1, 0xC
- adds r1, r0, r1
- b _0803F4BC
- .pool
-_0803F4B4:
- adds r1, 0x2
- adds r3, 0x1
- cmp r3, 0x3
- bgt _0803F4C2
-_0803F4BC:
- ldrh r0, [r1]
- cmp r0, r2
- bne _0803F4B4
-_0803F4C2:
- cmp r3, 0x4
- beq _0803F532
- movs r7, 0x58
- adds r2, r5, 0
- muls r2, r7
- adds r0, r3, r2
- mov r6, r12
- adds r6, 0x24
- adds r1, r0, r6
- ldrb r0, [r1]
- cmp r0, 0
- beq _0803F4DE
- subs r0, 0x1
- strb r0, [r1]
-_0803F4DE:
- mov r0, r12
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0803F532
- ldr r1, =gDisableStructs
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0803F532
- ldr r4, =gActiveBank
- strb r5, [r4]
- adds r1, r3, 0
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r4]
- muls r0, r7
- adds r0, r6
- adds r0, r3
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803F532:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803F480
-
- thumb_func_start sub_803F548
-sub_803F548: @ 803F548
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x4
- mov r8, r0
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r4, 0
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- bge _0803F5F0
- ldr r1, =gBattleMons
- movs r0, 0x58
- adds r7, r5, 0
- muls r7, r0
- adds r1, 0xC
- mov r10, r1
-_0803F57E:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- adds r6, r4, 0x1
- cmp r9, r0
- beq _0803F5E6
- ldr r0, =gBattleMons
- movs r3, 0x58
- adds r1, r4, 0
- muls r1, r3
- adds r1, r0
- adds r1, 0x20
- ldrb r1, [r1]
- adds r4, r0, 0
- cmp r1, 0x2E
- bne _0803F5E6
- movs r2, 0
- adds r0, r5, 0
- muls r0, r3
- adds r1, r4, 0
- adds r1, 0xC
- adds r0, r1
- ldrh r0, [r0]
- movs r1, 0x8F
- lsls r1, 1
- cmp r0, r1
- beq _0803F5CE
- adds r3, r1, 0
- mov r0, r10
- adds r1, r7, r0
-_0803F5C0:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- bgt _0803F5CE
- ldrh r0, [r1]
- cmp r0, r3
- bne _0803F5C0
-_0803F5CE:
- cmp r2, 0x4
- beq _0803F5E6
- mov r8, r2
- adds r1, r2, r7
- adds r0, r4, 0
- adds r0, 0x24
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _0803F5E6
- subs r0, 0x1
- strb r0, [r1]
-_0803F5E6:
- adds r4, r6, 0
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _0803F57E
-_0803F5F0:
- mov r1, r8
- cmp r1, 0x4
- beq _0803F658
- ldr r6, =gBattleMons
- movs r3, 0x58
- adds r0, r5, 0
- muls r0, r3
- adds r1, r6, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0803F658
- ldr r1, =gDisableStructs
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, =gBitTable
- mov r4, r8
- lsls r0, r4, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0803F658
- ldr r4, =gActiveBank
- strb r5, [r4]
- mov r1, r8
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r4]
- muls r0, r3
- adds r2, r6, 0
- adds r2, 0x24
- adds r0, r2
- add r0, r8
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803F658:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803F548
-
- thumb_func_start sub_803F67C
-sub_803F67C: @ 803F67C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r3, r0, 24
- movs r6, 0x4
- movs r1, 0
- ldr r0, =gNoOfAllBanks
- mov r8, r0
- ldrb r0, [r0]
- cmp r1, r0
- bge _0803F6FE
- ldr r7, =gBattleMons
- movs r2, 0x58
- mov r12, r2
- mov r5, r12
- muls r5, r3
- adds r0, r7, 0
- adds r0, 0xC
- adds r2, r5, r0
- mov r10, r2
- mov r9, r5
-_0803F6AE:
- mov r0, r12
- muls r0, r1
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- adds r4, r1, 0x1
- cmp r0, 0x2E
- bne _0803F6F4
- cmp r1, r3
- beq _0803F6F4
- movs r2, 0
- mov r1, r10
- ldrh r0, [r1]
- cmp r0, 0xC3
- beq _0803F6DE
- ldr r1, =gBattleMons + 0xC
- add r1, r9
-_0803F6D0:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- bgt _0803F6DE
- ldrh r0, [r1]
- cmp r0, 0xC3
- bne _0803F6D0
-_0803F6DE:
- cmp r2, 0x4
- beq _0803F6F4
- adds r6, r2, 0
- adds r0, r6, r5
- ldr r2, =gBattleMons + 0x24
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- beq _0803F6F4
- subs r0, 0x1
- strb r0, [r1]
-_0803F6F4:
- adds r1, r4, 0
- mov r0, r8
- ldrb r0, [r0]
- cmp r1, r0
- blt _0803F6AE
-_0803F6FE:
- cmp r6, 0x4
- beq _0803F762
- ldr r7, =gBattleMons
- movs r5, 0x58
- adds r0, r3, 0
- muls r0, r5
- adds r1, r7, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0803F762
- ldr r1, =gDisableStructs
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, =gBitTable
- lsls r0, r6, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0803F762
- ldr r4, =gActiveBank
- strb r3, [r4]
- adds r1, r6, 0
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r4]
- muls r0, r5
- adds r2, r7, 0
- adds r2, 0x24
- adds r0, r2
- adds r0, r6
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0803F762:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803F67C
-
- thumb_func_start sub_803F790
-sub_803F790: @ 803F790
- push {r4,r5,lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0803F7D0
- movs r2, 0
- ldr r4, =gNoOfAllBanks
- ldrb r0, [r4]
- cmp r2, r0
- bge _0803F7EE
- ldr r3, =gBattleExecBuffer
- ldr r5, =gBitTable
-_0803F7AC:
- ldm r5!, {r1}
- lsls r1, 28
- ldr r0, [r3]
- orrs r0, r1
- str r0, [r3]
- adds r2, 0x1
- ldrb r0, [r4]
- cmp r2, r0
- blt _0803F7AC
- b _0803F7EE
- .pool
-_0803F7D0:
- movs r2, 0
- ldr r4, =gNoOfAllBanks
- ldrb r0, [r4]
- cmp r2, r0
- bge _0803F7EE
- ldr r3, =gBattleExecBuffer
- ldr r5, =gBitTable
-_0803F7DE:
- ldr r0, [r3]
- ldm r5!, {r1}
- orrs r0, r1
- str r0, [r3]
- adds r2, 0x1
- ldrb r0, [r4]
- cmp r2, r0
- blt _0803F7DE
-_0803F7EE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803F790
-
- thumb_func_start MarkBufferBankForExecution
-MarkBufferBankForExecution: @ 803F800
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0803F834
- ldr r2, =gBattleExecBuffer
- ldr r1, =gBitTable
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- b _0803F844
- .pool
-_0803F834:
- ldr r2, =gBattleExecBuffer
- ldr r1, =gBitTable
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- orrs r1, r0
- str r1, [r2]
-_0803F844:
- pop {r0}
- bx r0
- .pool
- thumb_func_end MarkBufferBankForExecution
-
- thumb_func_start sub_803F850
-sub_803F850: @ 803F850
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r4, 0
- ldr r5, =gBattleExecBuffer
- ldr r1, =gBitTable
- lsls r0, r7, 2
- adds r6, r0, r1
- b _0803F87A
- .pool
-_0803F86C:
- lsls r0, r4, 2
- ldr r1, [r6]
- lsls r1, r0
- ldr r0, [r5]
- orrs r0, r1
- str r0, [r5]
- adds r4, 0x1
-_0803F87A:
- bl sub_8009FCC
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- blt _0803F86C
- ldr r2, =gBattleExecBuffer
- movs r1, 0x80
- lsls r1, 21
- lsls r1, r7
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803F850
-
- thumb_func_start CancelMultiTurnMoves
-CancelMultiTurnMoves: @ 803F8A0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gBattleMons
- movs r2, 0x58
- adds r3, r0, 0
- muls r3, r2
- adds r1, 0x50
- adds r3, r1
- ldr r1, [r3]
- ldr r2, =0xffffefff
- ands r1, r2
- ldr r2, =0xfffff3ff
- ands r1, r2
- movs r2, 0x71
- negs r2, r2
- ands r1, r2
- ldr r2, =0xfffffcff
- ands r1, r2
- str r1, [r3]
- ldr r1, =gStatuses3
- lsls r2, r0, 2
- adds r2, r1
- ldr r1, [r2]
- ldr r3, =0xfffbff3f
- ands r1, r3
- str r1, [r2]
- ldr r2, =gDisableStructs
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x11]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x11]
- movs r0, 0
- strb r0, [r1, 0x10]
- bx lr
- .pool
- thumb_func_end CancelMultiTurnMoves
-
- thumb_func_start sub_803F90C
-sub_803F90C: @ 803F90C
- push {lr}
- lsls r0, 24
- ldr r1, =gProtectStructs
- lsrs r0, 20
- adds r1, r0, r1
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- bne _0803F952
- ldrb r2, [r1, 0x1]
- lsls r0, r2, 30
- cmp r0, 0
- blt _0803F952
- lsls r0, r2, 26
- cmp r0, 0
- blt _0803F952
- lsls r0, r2, 25
- cmp r0, 0
- blt _0803F952
- lsrs r0, r2, 7
- cmp r0, 0
- bne _0803F952
- ldrb r1, [r1, 0x2]
- lsls r0, r1, 31
- cmp r0, 0
- bne _0803F952
- lsls r0, r1, 30
- cmp r0, 0
- blt _0803F952
- lsls r0, r1, 29
- cmp r0, 0
- blt _0803F952
- lsls r0, r2, 31
- cmp r0, 0
- beq _0803F95C
-_0803F952:
- movs r0, 0x1
- b _0803F95E
- .pool
-_0803F95C:
- movs r0, 0
-_0803F95E:
- pop {r1}
- bx r1
- thumb_func_end sub_803F90C
-
- thumb_func_start b_std_message
-b_std_message: @ 803F964
- push {r4,lr}
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r4, =gActiveBank
- strb r1, [r4]
- movs r0, 0
- adds r1, r2, 0
- bl dp01_build_cmdbuf_x10_TODO
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end b_std_message
-
- thumb_func_start sub_803F988
-sub_803F988: @ 803F988
- push {r4-r6,lr}
- movs r3, 0
- ldr r0, =gUnknown_020243FE
- strb r3, [r0]
- strb r3, [r0, 0x1]
- movs r1, 0
- ldr r0, =gNoOfAllBanks
- ldrb r2, [r0]
- adds r6, r0, 0
- cmp r1, r2
- bge _0803F9B6
- ldr r5, =gBitTable
- adds r4, r2, 0
- ldr r2, =gBattlePartyID
-_0803F9A4:
- ldrh r0, [r2]
- lsls r0, 2
- adds r0, r5
- ldr r0, [r0]
- orrs r3, r0
- adds r2, 0x4
- adds r1, 0x2
- cmp r1, r4
- blt _0803F9A4
-_0803F9B6:
- movs r1, 0x1
- adds r2, r6, 0
- ldrb r0, [r2]
- cmp r1, r0
- bge _0803F9D6
- ldr r5, =gUnknown_020243FE
- movs r4, 0x2
-_0803F9C4:
- adds r0, r1, 0
- ands r0, r4
- asrs r0, 1
- adds r0, r5
- strb r3, [r0]
- adds r1, 0x2
- ldrb r0, [r2]
- cmp r1, r0
- blt _0803F9C4
-_0803F9D6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803F988
-
- thumb_func_start sub_803F9EC
-sub_803F9EC: @ 803F9EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803FA50
- movs r0, 0x2
- ands r0, r5
- lsls r0, 24
- lsrs r0, 25
- mov r12, r0
- ldr r1, =gUnknown_020243FE
- adds r0, r1
- strb r4, [r0]
- adds r5, r4, 0
- ldr r0, =gNoOfAllBanks
- ldrb r2, [r0]
- mov r8, r1
- cmp r4, r2
- bge _0803FA4A
- ldr r0, =gAbsentBankFlags
- ldrb r7, [r0]
- ldr r1, =gBitTable
- adds r6, r2, 0
- ldr r3, =gBattlePartyID
- adds r2, r1, 0
-_0803FA2E:
- ldr r0, [r2]
- ands r0, r7
- cmp r0, 0
- bne _0803FA40
- ldrh r0, [r3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- orrs r4, r0
-_0803FA40:
- adds r3, 0x4
- adds r2, 0x8
- adds r5, 0x2
- cmp r5, r6
- blt _0803FA2E
-_0803FA4A:
- mov r0, r12
- add r0, r8
- strb r4, [r0]
-_0803FA50:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803F9EC
-
- thumb_func_start sub_803FA70
-sub_803FA70: @ 803FA70
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803FA8C
- adds r0, r4, 0
- bl sub_803F9EC
- b _0803FAC2
-_0803FA8C:
- movs r3, 0x1
- ldr r5, =gNoOfAllBanks
- ldrb r0, [r5]
- cmp r3, r0
- bge _0803FAC2
- ldr r0, =gUnknown_020243FE
- mov r12, r0
- movs r7, 0x2
- ldr r6, =gBitTable
- ldr r1, =gBattlePartyID
- lsls r0, r4, 1
- adds r4, r0, r1
-_0803FAA4:
- adds r2, r3, 0
- ands r2, r7
- asrs r2, 1
- add r2, r12
- ldrh r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- adds r3, 0x1
- ldrb r0, [r5]
- cmp r3, r0
- blt _0803FAA4
-_0803FAC2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803FA70
-
- .align 2, 0 @ Don't pad with nop.
- \ No newline at end of file
diff --git a/asm/battle_4.s b/asm/battle_4.s
deleted file mode 100644
index 241aa8677..000000000
--- a/asm/battle_4.s
+++ /dev/null
@@ -1,31160 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start atk00_attackcanceler
-atk00_attackcanceler: @ 8045FFC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0
- beq _08046020
- ldr r1, =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- b _08046398
- .pool
-_08046020:
- ldr r2, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08046064
- ldr r2, =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _08046064
- movs r0, 0x80
- lsls r0, 12
- orrs r1, r0
- str r1, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082D8A4E
- b _08046396
- .pool
-_08046064:
- bl AtkCanceller_UnableToUseMove
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08046072
- b _08046398
-_08046072:
- ldr r0, =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 _0804608A
- b _08046398
-_0804608A:
- ldr r4, =gBattleMons
- ldr r0, =gCurrMovePos
- ldrb r1, [r0]
- ldr r3, =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, =gHitMarker
- cmp r0, 0
- bne _08046108
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xA5
- beq _08046108
- ldr r0, [r5]
- ldr r1, =0x00800200
- ands r0, r1
- cmp r0, 0
- bne _08046108
- 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 _08046108
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB07A
- str r0, [r1]
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- b _08046398
- .pool
-_08046108:
- ldr r0, [r5]
- ldr r1, =0xff7fffff
- ands r0, r1
- str r0, [r5]
- movs r6, 0x80
- lsls r6, 18
- ands r0, r6
- cmp r0, 0
- bne _08046160
- 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 _08046160
- bl IsPokeDisobedient
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08046160
- cmp r2, 0x2
- bne _08046150
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- b _08046398
- .pool
-_08046150:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _08046398
- .pool
-_08046160:
- ldr r2, =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 18
- orrs r0, r1
- str r0, [r2]
- ldr r2, =gProtectStructs
- ldr r1, =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 _080461E8
- ldr r2, =gBattleMoves
- ldr r0, =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 _080461E8
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- ldr r2, =0x00000115
- adds r1, r3, 0
- bl sub_803F480
- 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, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB194
- b _08046396
- .pool
-_080461E8:
- movs r2, 0
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r2, r0
- bge _0804622A
- ldr r6, =gProtectStructs
- ldr r1, =gBattleMoves
- mov r12, r1
- adds r5, r0, 0
- ldr r7, =gTurnOrder
-_080461FC:
- adds r4, r2, r7
- ldrb r3, [r4]
- lsls r0, r3, 4
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _08046224
- ldr r0, =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 _08046224
- b _08046350
-_08046224:
- adds r2, 0x1
- cmp r2, r5
- blt _080461FC
-_0804622A:
- ldr r0, =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 _08046288
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- strb r0, [r1]
- ldr r4, =gLastUsedAbility
- movs r0, 0x1F
- strb r0, [r4]
- bl b_movescr_stack_push_cursor
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB53E
- str r0, [r1]
- mov r1, r8
- ldrb r0, [r1]
- ldrb r1, [r4]
- bl RecordAbilityBattle
- b _08046398
- .pool
-_08046288:
- lsls r0, r2, 4
- add r0, r9
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- bne _08046296
- b _08046390
-_08046296:
- ldr r1, =gBattleMoves
- ldr r2, =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 _08046390
- cmp r3, 0xAE
- bne _080462D4
- ldr r2, =gBattleMons
- ldr r0, =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 _080462D4
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _08046390
-_080462D4:
- ldrh r0, [r4]
- bl sub_8052F48
- lsls r0, 24
- cmp r0, 0
- beq _080462FA
- ldr r1, =gBattleMons
- ldr r0, =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 _08046390
-_080462FA:
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gUnknown_02024250
- ldr r3, =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, =gUnknown_02024258
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _08046390
- .pool
-_08046350:
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- ldr r2, =0x00000121
- adds r1, r3, 0
- bl sub_803F480
- 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 r1, =gBattleScripting
- ldrb r0, [r4]
- strb r0, [r1, 0x17]
- bl b_movescr_stack_push_cursor
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB1AC
- b _08046396
- .pool
-_08046390:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_08046396:
- str r0, [r1]
-_08046398:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk00_attackcanceler
-
- thumb_func_start mcmd_jump_if_move_not_executed
-mcmd_jump_if_move_not_executed: @ 80463AC
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r1, =gBattlescriptCurrInstr
- ldr r5, [r1]
- adds r4, r5, r0
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0804640C
- ldr r1, =gUnknown_02024250
- ldr r3, =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, =gUnknown_02024258
- 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 _08046426
- .pool
-_0804640C:
- bl b_feature_update_destiny_bond
- ldr r0, =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 _0804642A
-_08046426:
- ldr r0, =gBattlescriptCurrInstr
- str r4, [r0]
-_0804642A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- 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: @ 804643C
- push {lr}
- ldr r1, =gProtectStructs
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0804649C
- ldr r2, =gBattleMoves
- ldr r0, =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 _0804649C
- ldr r2, =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, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _080464A4
- .pool
-_0804649C:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080464A4:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk40_jump_if_move_affected_by_protect
-
- thumb_func_start sub_80464AC
-sub_80464AC: @ 80464AC
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r4, 0
- ldr r1, =gProtectStructs
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _080464F8
- ldr r2, =gBattleMoves
- ldr r0, =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 _080464F8
- ldr r2, =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, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- movs r4, 0x1
-_080464F8:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80464AC
-
- thumb_func_start sub_8046518
-sub_8046518: @ 8046518
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r2, =gStatuses3
- ldr r3, =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 _0804654A
- ldr r1, =gDisableStructs
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, =gBankAttacker
- ldrb r0, [r0, 0x15]
- ldrb r1, [r1]
- cmp r0, r1
- beq _08046634
-_0804654A:
- ldr r0, =gHitMarker
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 9
- ands r1, r2
- adds r2, r0, 0
- cmp r1, 0
- bne _08046590
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08046590
-_0804656A:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _08046634
- .pool
-_08046590:
- ldr r0, [r2]
- ldr r1, =0xfffeffff
- ands r0, r1
- str r0, [r2]
- movs r1, 0x80
- lsls r1, 10
- ands r0, r1
- cmp r0, 0
- bne _080465B2
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804656A
-_080465B2:
- ldr r0, [r2]
- ldr r1, =0xfffdffff
- ands r0, r1
- str r0, [r2]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- bne _080465D2
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ands r0, r1
- cmp r0, 0
- bne _0804656A
-_080465D2:
- ldr r0, [r2]
- ldr r1, =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 _08046622
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _08046622
- ldr r0, =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08046622
- ldr r0, =gBattleMoves
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x98
- beq _08046634
-_08046622:
- ldr r1, =gBattleMoves
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _08046634
- cmp r0, 0x4E
- bne _08046654
-_08046634:
- movs r0, 0x7
- adds r1, r5, 0
- bl mcmd_jump_if_move_not_executed
- movs r0, 0x1
- b _08046656
- .pool
-_08046654:
- movs r0, 0
-_08046656:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8046518
-
- thumb_func_start atk01_accuracycheck
-atk01_accuracycheck: @ 8046660
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, =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 _0804671C
- ldr r2, =gStatuses3
- ldr r3, =gBankTarget
- ldrb r4, [r3]
- lsls r0, r4, 2
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x18
- ands r1, r0
- cmp r1, 0
- beq _080466D0
- ldr r0, =0x0000ffff
- cmp r6, r0
- bne _080466D0
- ldr r1, =gDisableStructs
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, =gBankAttacker
- ldrb r0, [r0, 0x15]
- ldrb r1, [r1]
- cmp r0, r1
- bne _080466D0
- adds r0, r5, 0x7
- str r0, [r7]
- b _080469D2
- .pool
-_080466D0:
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ldr r1, =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _08046700
- 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 _080469D2
- .pool
-_08046700:
- movs r0, 0
- bl sub_80464AC
- lsls r0, 24
- cmp r0, 0
- beq _0804670E
- b _080469D2
-_0804670E:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x7
- str r0, [r1]
- b _080469D2
- .pool
-_0804671C:
- cmp r6, 0
- bne _08046724
- ldr r0, =gCurrentMove
- ldrh r6, [r0]
-_08046724:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08046744
- movs r1, 0x3F
- mov r10, r1
- mov r2, r10
- ands r2, r0
- mov r10, r2
- b _08046752
- .pool
-_08046744:
- ldr r1, =gBattleMoves
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- mov r10, r0
-_08046752:
- adds r0, r6, 0
- bl sub_80464AC
- lsls r0, 24
- cmp r0, 0
- beq _08046760
- b _080469D2
-_08046760:
- adds r0, r6, 0
- bl sub_8046518
- lsls r0, 24
- cmp r0, 0
- beq _0804676E
- b _080469D2
-_0804676E:
- ldr r3, =gBattleMons
- ldr r0, =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 _080467A8
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- ldrb r5, [r0, 0x1E]
- b _080467BE
- .pool
-_080467A8:
- ldr r0, =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
-_080467BE:
- lsls r0, r5, 24
- cmp r0, 0
- bge _080467C6
- movs r5, 0
-_080467C6:
- lsls r0, r5, 24
- asrs r0, 24
- cmp r0, 0xC
- ble _080467D0
- movs r5, 0xC
-_080467D0:
- ldr r1, =gBattleMoves
- lsls r4, r6, 1
- adds r0, r4, r6
- lsls r0, 2
- adds r7, r0, r1
- ldrb r3, [r7, 0x3]
- mov r8, r3
- 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 _08046822
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _08046822
- ldr r0, =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _08046822
- ldrb r0, [r7]
- cmp r0, 0x98
- bne _08046822
- movs r0, 0x32
- mov r8, r0
-_08046822:
- ldr r1, =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, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- movs r5, 0x58
- muls r0, r5
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0xE
- bne _08046860
- lsls r0, r4, 6
- adds r0, r4
- lsls r0, 1
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_08046860:
- 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 _080468B8
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _080468B8
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- muls r0, r5
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080468B8
- ldr r0, =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _080468B8
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_080468B8:
- ldr r2, =gBattleMons
- ldr r0, =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 _080468E4
- mov r1, r10
- cmp r1, 0x8
- bhi _080468E4
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_080468E4:
- ldr r2, =gBankTarget
- mov r8, r2
- ldrb r2, [r2]
- 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 _08046928
- ldr r1, =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x7]
- ldrb r2, [r0, 0x1A]
- b _08046944
- .pool
-_08046928:
- 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
-_08046944:
- ldr r0, =gStringBank
- ldr r1, =gBankTarget
- ldrb r1, [r1]
- strb r1, [r0]
- cmp r5, 0x16
- bne _08046960
- movs r0, 0x64
- subs r0, r2
- muls r0, r4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_08046960:
- 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 _080469CA
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080469C0
- ldr r1, =gBattleMoves
- ldr r2, [sp, 0x4]
- adds r0, r2, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x6]
- cmp r0, 0x8
- beq _080469A2
- cmp r0, 0x20
- bne _080469C0
-_080469A2:
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- b _080469C4
- .pool
-_080469C0:
- ldr r1, =gBattleCommunication
- movs r0, 0
-_080469C4:
- strb r0, [r1, 0x6]
- bl b_wonderguard_and_levitate
-_080469CA:
- movs r0, 0x7
- adds r1, r6, 0
- bl mcmd_jump_if_move_not_executed
-_080469D2:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk01_accuracycheck
-
- thumb_func_start atk02_attackstring
-atk02_attackstring: @ 80469E8
- push {r4,r5,lr}
- ldr r0, =gBattleExecBuffer
- ldr r5, [r0]
- cmp r5, 0
- bne _08046A20
- ldr r4, =gHitMarker
- ldr r0, [r4]
- movs r1, 0xC0
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- bne _08046A14
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x4
- bl b_std_message
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 3
- orrs r0, r1
- str r0, [r4]
-_08046A14:
- ldr r0, =gBattlescriptCurrInstr
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- ldr r0, =gBattleCommunication
- strb r5, [r0, 0x7]
-_08046A20:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk02_attackstring
-
- thumb_func_start atk03_ppreduce
-atk03_ppreduce: @ 8046A3C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r6, 0x1
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _08046A54
- b _08046BEE
-_08046A54:
- ldr r1, =gSpecialStatuses
- ldr r2, =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 _08046AF6
- ldr r2, =gBattleMoves
- ldr r0, =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 _08046AA6
- cmp r0, 0x20
- bgt _08046AA0
- cmp r0, 0x8
- beq _08046ABC
- b _08046AD6
- .pool
-_08046AA0:
- cmp r0, 0x40
- beq _08046ABC
- b _08046AD6
-_08046AA6:
- 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 _08046AF6
-_08046ABC:
- 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 _08046AF6
-_08046AD6:
- ldr r1, =gBankTarget
- mov r2, r9
- ldrb r0, [r2]
- ldrb r7, [r1]
- cmp r0, r7
- beq _08046AF6
- ldr r2, =gBattleMons
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2E
- bne _08046AF6
- adds r6, 0x1
-_08046AF6:
- ldr r0, =gHitMarker
- ldr r4, [r0]
- movs r0, 0xA0
- lsls r0, 4
- ands r4, r0
- cmp r4, 0
- bne _08046BDC
- ldr r2, =gBattleMons
- ldr r3, =gCurrMovePos
- ldr r1, =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 _08046BDC
- ldr r0, =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 _08046B70
- subs r0, r6
- strb r0, [r2]
- b _08046B72
- .pool
-_08046B70:
- strb r4, [r2]
-_08046B72:
- 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 _08046BDC
- ldr r1, =gDisableStructs
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, =gBitTable
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08046BDC
- ldr r0, =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
-_08046BDC:
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xfffff7ff
- ands r0, r1
- str r0, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08046BEE:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk03_ppreduce
-
- thumb_func_start atk04_critcalc
-atk04_critcalc: @ 8046C18
- push {r4-r7,lr}
- ldr r1, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- cmp r0, 0xAF
- bne _08046C48
- ldr r1, =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r6, [r0, 0x7]
- b _08046C50
- .pool
-_08046C48:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r6, r0, 24
-_08046C50:
- ldr r1, =gStringBank
- ldr r3, =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r4, =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, =gBattleMoves
- ldr r0, =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 _08046C90
- adds r5, 0x1
-_08046C90:
- adds r0, r5, 0
- cmp r1, 0x4B
- bne _08046C98
- adds r0, 0x1
-_08046C98:
- cmp r1, 0xC8
- bne _08046C9E
- adds r0, 0x1
-_08046C9E:
- adds r2, r0, 0
- cmp r1, 0xD1
- bne _08046CA6
- adds r2, 0x1
-_08046CA6:
- movs r1, 0
- cmp r6, 0x3F
- bne _08046CB6
- adds r0, r7, r4
- ldrh r0, [r0]
- cmp r0, 0x71
- bne _08046CB6
- movs r1, 0x1
-_08046CB6:
- lsls r5, r1, 1
- movs r3, 0
- cmp r6, 0x42
- bne _08046CD0
- mov r0, r12
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x53
- bne _08046CD0
- movs r3, 0x1
-_08046CD0:
- lsls r1, r3, 1
- cmp r6, 0x29
- bne _08046CF0
- adds r0, r5, 0x1
- adds r0, r2, r0
- b _08046CF2
- .pool
-_08046CF0:
- adds r0, r2, r5
-_08046CF2:
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- cmp r5, 0x4
- bls _08046D00
- movs r5, 0x4
-_08046D00:
- ldr r0, =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- ldrb r4, [r0]
- cmp r4, 0x4
- beq _08046D70
- cmp r4, 0x4B
- beq _08046D70
- ldr r1, =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 _08046D70
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x84
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- bne _08046D70
- bl Random
- ldr r2, =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 _08046D70
- ldr r1, =gCritMultiplier
- movs r0, 0x2
- b _08046D74
- .pool
-_08046D70:
- ldr r1, =gCritMultiplier
- movs r0, 0x1
-_08046D74:
- strb r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk04_critcalc
-
- thumb_func_start atk05_damagecalc1
-atk05_damagecalc1: @ 8046D8C
- push {r4-r7,lr}
- sub sp, 0x10
- ldr r4, =gSideAffecting
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldr r6, =gBankAttacker
- ldrb r0, [r6]
- movs r4, 0x58
- muls r0, r4
- ldr r2, =gBattleMons
- adds r0, r2
- ldrb r1, [r5]
- muls r1, r4
- adds r1, r2
- ldr r7, =gCurrentMove
- ldrh r2, [r7]
- ldr r4, =gDynamicBasePower
- ldrh r4, [r4]
- str r4, [sp]
- ldr r4, =gBattleStruct
- ldr r4, [r4]
- ldrb r4, [r4, 0x13]
- str r4, [sp, 0x4]
- ldrb r4, [r6]
- str r4, [sp, 0x8]
- ldrb r4, [r5]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- ldr r4, =gBattleMoveDamage
- ldr r1, =gCritMultiplier
- ldrb r1, [r1]
- muls r1, r0
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0xE]
- adds r3, r1, 0
- muls r3, r0
- str r3, [r4]
- ldr r1, =gStatuses3
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _08046E10
- ldr r2, =gBattleMoves
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0xD
- bne _08046E10
- lsls r0, r3, 1
- str r0, [r4]
-_08046E10:
- ldr r1, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _08046E32
- ldr r4, =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_08046E32:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk05_damagecalc1
-
- thumb_func_start AI_CalcDmg
-AI_CalcDmg: @ 8046E7C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r5, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r4, =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, =gBattleMons
- adds r0, r2
- muls r1, r5
- adds r1, r2
- ldr r2, =gCurrentMove
- mov r8, r2
- ldrh r2, [r2]
- ldr r6, =gDynamicBasePower
- ldrh r4, [r6]
- str r4, [sp]
- ldr r4, =gBattleStruct
- ldr r4, [r4]
- ldrb r4, [r4, 0x13]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- str r5, [sp, 0xC]
- bl CalculateBaseDamage
- ldr r4, =gBattleMoveDamage
- movs r1, 0
- strh r1, [r6]
- ldr r1, =gCritMultiplier
- ldrb r1, [r1]
- muls r1, r0
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0xE]
- adds r3, r1, 0
- muls r3, r0
- str r3, [r4]
- ldr r1, =gStatuses3
- lsls r0, r7, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _08046F0A
- ldr r2, =gBattleMoves
- mov r0, r8
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0xD
- bne _08046F0A
- lsls r0, r3, 1
- str r0, [r4]
-_08046F0A:
- ldr r0, =gProtectStructs
- lsls r1, r7, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 28
- cmp r0, 0
- bge _08046F28
- ldr r4, =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_08046F28:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AI_CalcDmg
-
- thumb_func_start battle_attack_damage_modulate_by_effectivity
-battle_attack_damage_modulate_by_effectivity: @ 8046F60
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, =gBattleMoveDamage
- ldr r0, [r5]
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _08046F80
- cmp r4, 0
- beq _08046F80
- movs r0, 0x1
- str r0, [r5]
-_08046F80:
- cmp r4, 0x5
- beq _08046FB0
- cmp r4, 0x5
- bgt _08046F94
- cmp r4, 0
- beq _08046F9A
- b _08047032
- .pool
-_08046F94:
- cmp r4, 0x14
- beq _08046FF0
- b _08047032
-_08046F9A:
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- movs r1, 0xFB
- ands r0, r1
- movs r1, 0xFD
- ands r0, r1
- b _08047030
- .pool
-_08046FB0:
- ldr r2, =gBattleMoves
- ldr r0, =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 _08047032
- ldr r2, =gBattleMoveFlags
- ldrb r1, [r2]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08047032
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08046FEC
- movs r0, 0xFD
- ands r0, r1
- b _08047030
- .pool
-_08046FEC:
- movs r0, 0x4
- b _0804702E
-_08046FF0:
- ldr r2, =gBattleMoves
- ldr r0, =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 _08047032
- ldr r2, =gBattleMoveFlags
- ldrb r1, [r2]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08047032
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0804702C
- movs r0, 0xFB
- ands r0, r1
- b _08047030
- .pool
-_0804702C:
- movs r0, 0x2
-_0804702E:
- orrs r0, r1
-_08047030:
- strb r0, [r2]
-_08047032:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end battle_attack_damage_modulate_by_effectivity
-
- thumb_func_start atk06_typecalc
-atk06_typecalc: @ 8047038
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r3, 0
- ldr r1, =gCurrentMove
- ldrh r0, [r1]
- cmp r0, 0xA5
- bne _0804704C
- b _08047260
-_0804704C:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08047068
- movs r1, 0x3F
- mov r8, r1
- ands r1, r0
- mov r8, r1
- b _08047078
- .pool
-_08047068:
- ldr r2, =gBattleMoves
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r8, r0
-_08047078:
- ldr r2, =gBattleMons
- ldr r0, =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 _0804709A
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r8
- bne _080470B0
-_0804709A:
- ldr r4, =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]
-_080470B0:
- ldr r2, =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 _08047128
- mov r1, r8
- cmp r1, 0x4
- bne _08047128
- ldr r3, =gLastUsedAbility
- strb r0, [r3]
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x9
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gUnknown_02024250
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, =gUnknown_02024258
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r0, =gBattleCommunication
- mov r1, r8
- strb r1, [r0, 0x6]
- ldrb r0, [r4]
- ldrb r1, [r3]
- bl RecordAbilityBattle
- b _080471C4
- .pool
-_08047128:
- ldr r1, =gUnknown_0831ACE8
- adds r0, r3, r1
- ldrb r0, [r0]
- adds r2, r1, 0
- b _080471A4
- .pool
-_08047138:
- adds r3, 0x3
- b _080471A0
-_0804713C:
- ldr r5, =gUnknown_0831ACE8
- adds r0, r3, r5
- ldrb r0, [r0]
- cmp r0, r8
- bne _08047198
- adds r1, r3, 0x1
- adds r1, r5
- ldr r2, =gBattleMons
- ldr r7, =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 _08047172
- 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]
-_08047172:
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r2
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r4, r1
- bne _08047198
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r4
- beq _08047198
- 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]
-_08047198:
- adds r3, 0x3
- ldr r5, =gBattleMons
- ldr r4, =gBankTarget
- ldr r2, =gUnknown_0831ACE8
-_080471A0:
- adds r0, r3, r2
- ldrb r0, [r0]
-_080471A4:
- cmp r0, 0xFF
- beq _080471C4
- cmp r0, 0xFE
- bne _0804713C
- 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 _08047138
-_080471C4:
- ldr r2, =gBattleMons
- ldr r5, =gBankTarget
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r6, [r0]
- cmp r6, 0x19
- bne _08047242
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- ldr r7, =gCurrentMove
- ldrh r1, [r7]
- bl move_weather_interaction
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08047242
- ldr r1, =gBattleMoveFlags
- mov r8, r1
- ldrb r4, [r1]
- ands r0, r4
- cmp r0, 0
- beq _08047200
- movs r0, 0x6
- ands r0, r4
- cmp r0, 0x6
- bne _08047242
-_08047200:
- ldr r2, =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 _08047242
- ldr r3, =gLastUsedAbility
- strb r6, [r3]
- movs r0, 0x1
- orrs r0, r4
- mov r1, r8
- strb r0, [r1]
- ldr r1, =gUnknown_02024250
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, =gUnknown_02024258
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r1, =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- ldrb r0, [r5]
- ldrb r1, [r3]
- bl RecordAbilityBattle
-_08047242:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08047260
- ldr r2, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r2
- ldrb r0, [r1, 0x1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1, 0x1]
-_08047260:
- ldr r1, =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
- .pool
- thumb_func_end atk06_typecalc
-
- thumb_func_start b_wonderguard_and_levitate
-b_wonderguard_and_levitate: @ 80472A8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r6, 0
- movs r5, 0
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- mov r9, r0
- cmp r1, 0xA5
- bne _080472C0
- b _08047508
-_080472C0:
- ldr r2, =gBattleMoves
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _080472D2
- b _08047508
-_080472D2:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _080472F4
- movs r1, 0x3F
- mov r12, r1
- mov r2, r12
- ands r2, r0
- mov r12, r2
- b _080472F8
- .pool
-_080472F4:
- ldrb r1, [r1, 0x2]
- mov r12, r1
-_080472F8:
- ldr r2, =gBattleMons
- ldr r3, =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 _0804733C
- mov r0, r12
- cmp r0, 0x4
- bne _0804733C
- ldr r0, =gLastUsedAbility
- strb r1, [r0]
- ldr r0, =gBattleCommunication
- mov r1, r12
- strb r1, [r0, 0x6]
- ldrb r0, [r3]
- movs r1, 0x1A
- bl RecordAbilityBattle
- b _08047508
- .pool
-_0804733C:
- ldr r1, =gUnknown_0831ACE8
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r4, r1, 0
- b _0804748E
- .pool
-_0804734C:
- adds r0, r5, r4
- ldrb r0, [r0]
- cmp r0, r12
- beq _08047356
- b _08047488
-_08047356:
- 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 _08047396
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _08047396
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r2, [r0]
- lsls r2, 4
- adds r2, r1
- ldrb r0, [r2, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1]
-_08047396:
- 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 _080473DC
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _080473DC
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _080473DC
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r2, [r0]
- lsls r2, 4
- adds r2, r1
- ldrb r0, [r2, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1]
-_080473DC:
- 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 _08047400
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _08047400
- movs r0, 0x1
- orrs r6, r0
-_08047400:
- 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 _0804742E
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0804742E
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0804742E
- movs r0, 0x1
- orrs r6, r0
-_0804742E:
- 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 _08047456
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _08047456
- movs r0, 0x2
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_08047456:
- 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 _08047488
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _08047488
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _08047488
- movs r0, 0x2
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_08047488:
- adds r5, 0x3
- adds r0, r5, r4
- ldrb r0, [r0]
-_0804748E:
- cmp r0, 0xFF
- beq _080474B2
- cmp r0, 0xFE
- beq _08047498
- b _0804734C
-_08047498:
- 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 _08047488
-_080474B2:
- 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 _08047508
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- mov r2, r9
- ldrh r1, [r2]
- bl move_weather_interaction
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08047508
- movs r0, 0x3
- ands r6, r0
- cmp r6, 0x1
- beq _08047508
- ldr r2, =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 _08047508
- ldr r0, =gLastUsedAbility
- strb r4, [r0]
- ldr r1, =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x19
- bl RecordAbilityBattle
-_08047508:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end b_wonderguard_and_levitate
-
- thumb_func_start b_attack_effectivity_adapt
-b_attack_effectivity_adapt: @ 804752C
- push {r4-r7,lr}
- adds r6, r2, 0
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r7, =gBattleMoveDamage
- ldr r0, [r7]
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- str r0, [r7]
- cmp r0, 0
- bne _08047552
- cmp r4, 0
- beq _08047552
- movs r0, 0x1
- str r0, [r7]
-_08047552:
- cmp r4, 0x5
- beq _0804757A
- cmp r4, 0x5
- bgt _08047564
- cmp r4, 0
- beq _0804756A
- b _080475DE
- .pool
-_08047564:
- cmp r4, 0x14
- beq _080475AC
- b _080475DE
-_0804756A:
- ldrb r0, [r6]
- movs r1, 0x8
- orrs r0, r1
- movs r1, 0xFB
- ands r0, r1
- movs r1, 0xFD
- ands r0, r1
- b _080475DC
-_0804757A:
- ldr r0, =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _080475DE
- ldrb r1, [r6]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _080475DE
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080475A8
- movs r0, 0xFD
- ands r0, r1
- b _080475DC
- .pool
-_080475A8:
- movs r0, 0x4
- b _080475DA
-_080475AC:
- ldr r0, =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _080475DE
- ldrb r1, [r6]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _080475DE
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080475D8
- movs r0, 0xFB
- ands r0, r1
- b _080475DC
- .pool
-_080475D8:
- movs r0, 0x2
-_080475DA:
- orrs r0, r1
-_080475DC:
- strb r0, [r6]
-_080475DE:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end b_attack_effectivity_adapt
-
- thumb_func_start TypeCalc
-TypeCalc: @ 80475E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- 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 r0, 0
- mov r8, r0
- mov r0, sp
- mov r1, r8
- strb r1, [r0]
- mov r2, r10
- cmp r2, 0xA5
- bne _08047616
- movs r0, 0
- b _0804779E
-_08047616:
- ldr r1, =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, =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 _0804764A
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- bne _0804765C
-_0804764A:
- ldr r4, =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- str r0, [r4]
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0804765C:
- 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 _08047690
- ldr r3, [sp, 0x8]
- cmp r3, 0x4
- bne _08047690
- movs r1, 0x9
- mov r0, sp
- ldrb r0, [r0]
- orrs r0, r1
- mov r1, sp
- strb r0, [r1]
- b _08047740
- .pool
-_08047690:
- ldr r1, =gUnknown_0831ACE8
- mov r2, r8
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xFF
- beq _08047740
- cmp r0, 0xFE
- bne _080476B6
- movs r0, 0x58
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- b _0804772E
- .pool
-_080476B0:
- movs r0, 0x3
- add r8, r0
- b _08047718
-_080476B6:
- ldr r7, =gUnknown_0831ACE8
- mov r1, r8
- adds r0, r1, r7
- ldrb r0, [r0]
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _08047710
- adds r1, 0x1
- adds r1, r7
- ldr r2, =gBattleMons
- movs r0, 0x58
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- adds r5, r0, r2
- adds r6, r5, 0
- adds r6, 0x21
- ldrb r4, [r1]
- ldrb r0, [r6]
- cmp r4, r0
- bne _080476F0
- mov r0, r8
- adds r0, 0x2
- adds r0, r7
- ldrb r0, [r0]
- mov r1, r10
- mov r2, sp
- bl b_attack_effectivity_adapt
-_080476F0:
- adds r0, r5, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r4, r0
- bne _08047710
- ldrb r0, [r6]
- cmp r0, r4
- beq _08047710
- mov r0, r8
- adds r0, 0x2
- adds r0, r7
- ldrb r0, [r0]
- mov r1, r10
- mov r2, sp
- bl b_attack_effectivity_adapt
-_08047710:
- movs r1, 0x3
- add r8, r1
- ldr r5, =gBattleMons
- ldr r2, =gUnknown_0831ACE8
-_08047718:
- mov r3, r8
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08047740
- cmp r0, 0xFE
- bne _080476B6
- movs r0, 0x58
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
-_0804772E:
- 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 _080476B0
-_08047740:
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x19
- bne _0804779A
- mov r0, sp
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0804779A
- ldr r0, [sp, 0x4]
- mov r1, r10
- bl move_weather_interaction
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _0804779A
- mov r0, sp
- ldrb r3, [r0]
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _08047782
- movs r0, 0x6
- ands r0, r3
- cmp r0, 0x6
- bne _0804779A
-_08047782:
- ldr r0, =gBattleMoves
- ldr r1, [sp, 0xC]
- add r1, r10
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0804779A
- mov r0, sp
- movs r1, 0x1
- orrs r1, r3
- strb r1, [r0]
-_0804779A:
- mov r0, sp
- ldrb r0, [r0]
-_0804779E:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end TypeCalc
-
- thumb_func_start ai_rate_move
-ai_rate_move: @ 80477BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- 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, =gBaseStats
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x6]
- mov r9, r1
- ldrb r0, [r0, 0x7]
- mov r8, r0
- cmp r6, 0xA5
- bne _080477FC
- movs r0, 0
- b _080478A0
- .pool
-_080477FC:
- ldr r2, =gBattleMoves
- lsls r1, r6, 1
- adds r0, r1, r6
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r10, r0
- str r1, [sp, 0x8]
- ldr r3, [sp, 0x4]
- cmp r3, 0x1A
- bne _08047824
- cmp r0, 0x4
- bne _08047824
- movs r1, 0x9
- mov r0, sp
- strb r1, [r0]
- b _0804786A
- .pool
-_08047824:
- ldr r0, =gUnknown_0831ACE8
- adds r1, r7, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0804786A
- adds r4, r1, 0
-_08047830:
- ldrb r0, [r4]
- cmp r0, 0xFE
- beq _0804785C
- cmp r0, r10
- bne _0804785C
- ldrb r5, [r4, 0x1]
- cmp r5, r9
- bne _0804784A
- ldrb r0, [r4, 0x2]
- adds r1, r6, 0
- mov r2, sp
- bl b_attack_effectivity_adapt
-_0804784A:
- cmp r5, r8
- bne _0804785C
- cmp r9, r8
- beq _0804785C
- ldrb r0, [r4, 0x2]
- adds r1, r6, 0
- mov r2, sp
- bl b_attack_effectivity_adapt
-_0804785C:
- adds r4, 0x3
- adds r7, 0x3
- ldr r1, =gUnknown_0831ACE8
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08047830
-_0804786A:
- ldr r3, [sp, 0x4]
- cmp r3, 0x19
- bne _0804789C
- mov r0, sp
- ldrb r2, [r0]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _08047884
- movs r0, 0x6
- ands r0, r2
- cmp r0, 0x6
- bne _0804789C
-_08047884:
- ldr r0, =gBattleMoves
- ldr r3, [sp, 0x8]
- adds r1, r3, r6
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0804789C
- mov r0, sp
- movs r1, 0x8
- orrs r1, r2
- strb r1, [r0]
-_0804789C:
- mov r0, sp
- ldrb r0, [r0]
-_080478A0:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_rate_move
-
- thumb_func_start sub_80478B8
-sub_80478B8: @ 80478B8
- 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, =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _080478EA
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _080478EA
- movs r0, 0x1
- str r0, [r4]
-_080478EA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80478B8
-
- thumb_func_start atk07_dmg_adjustment
-atk07_dmg_adjustment: @ 80478F4
- 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, =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _08047926
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _08047926
- movs r0, 0x1
- str r0, [r4]
-_08047926:
- ldr r7, =gBattleMons
- ldr r6, =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 _0804795C
- ldr r1, =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _08047976
- .pool
-_0804795C:
- 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
-_08047976:
- ldr r1, =gStringBank
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _080479B4
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _080479B4
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemEffectBattle
- ldr r2, =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]
-_080479B4:
- ldr r2, =gBattleMons
- ldr r3, =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 _08047A84
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x65
- beq _08047A06
- ldr r0, =gProtectStructs
- lsls r1, r4, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- blt _08047A06
- ldr r0, =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08047A84
-_08047A06:
- ldrb r0, [r3]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r1, [r0, 0x28]
- ldr r2, =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _08047A84
- subs r0, r1, 0x1
- str r0, [r2]
- ldr r1, =gProtectStructs
- ldrb r3, [r3]
- lsls r0, r3, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _08047A5C
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08047A84
- .pool
-_08047A5C:
- ldr r0, =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08047A84
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gLastUsedItem
- adds r0, r3, 0
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_08047A84:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk07_dmg_adjustment
-
- thumb_func_start atk08_dmg_adjustment2
-atk08_dmg_adjustment2: @ 8047AA4
- 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, =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _08047AD6
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _08047AD6
- movs r0, 0x1
- str r0, [r4]
-_08047AD6:
- ldr r7, =gBattleMons
- ldr r6, =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 _08047B0C
- ldr r1, =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _08047B26
- .pool
-_08047B0C:
- 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
-_08047B26:
- ldr r1, =gStringBank
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _08047B64
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _08047B64
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemEffectBattle
- ldr r2, =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]
-_08047B64:
- ldr r4, =gBattleMons
- ldr r6, =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 _08047C10
- ldr r5, =gProtectStructs
- lsls r0, r2, 4
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- blt _08047BA2
- ldr r0, =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08047C10
-_08047BA2:
- adds r0, r3, r4
- ldrh r1, [r0, 0x28]
- ldr r2, =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _08047C10
- 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 _08047BE8
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08047C10
- .pool
-_08047BE8:
- ldr r0, =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08047C10
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gLastUsedItem
- adds r0, r3, 0
- muls r0, r7
- adds r0, r4
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_08047C10:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk08_dmg_adjustment2
-
- thumb_func_start atk09_attackanimation
-atk09_attackanimation: @ 8047C30
- push {r4-r7,lr}
- sub sp, 0x10
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _08047C3E
- b _08047DB6
-_08047C3E:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- ldr r5, =gCurrentMove
- cmp r0, 0
- beq _08047C8C
- ldrh r0, [r5]
- cmp r0, 0x90
- beq _08047C8C
- cmp r0, 0xA4
- beq _08047C8C
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DABB9
- str r0, [r4]
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x18]
- adds r0, 0x1
- strb r0, [r1, 0x18]
- ldrb r0, [r1, 0x19]
- adds r0, 0x1
- strb r0, [r1, 0x19]
- b _08047DB6
- .pool
-_08047C8C:
- ldr r2, =gBattleMoves
- ldrh r1, [r5]
- 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 _08047CB2
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08047CB2
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08047CBA
-_08047CB2:
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x19]
- cmp r0, 0
- bne _08047D88
-_08047CBA:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08047DA8
- ldr r1, =gActiveBank
- ldr r3, =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r2, =gBattleMons
- ldr r0, =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- adds r4, r1, 0
- muls r4, r0
- adds r0, r2, 0
- adds r0, 0x50
- adds r0, r4, r0
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r1, r0
- adds r7, r3, 0
- mov r12, r2
- cmp r1, 0
- beq _08047D18
- ldr r0, =gUnknown_02024212
- ldrb r6, [r0]
- b _08047D42
- .pool
-_08047D18:
- ldr r3, =gUnknown_02024212
- ldrb r0, [r3]
- cmp r0, 0x1
- bls _08047D40
- mov r1, r12
- adds r0, r4, r1
- ldrh r2, [r0, 0x28]
- ldr r0, =gBattleMoveDamage
- ldr r1, [r0]
- movs r6, 0x1
- adds r4, r0, 0
- cmp r2, r1
- ble _08047D44
- ldrb r6, [r3]
- b _08047D44
- .pool
-_08047D40:
- ldrb r6, [r3]
-_08047D42:
- ldr r4, =gBattleMoveDamage
-_08047D44:
- ldrh r1, [r5]
- ldr r5, =gBattleScripting
- ldrb r2, [r5, 0x18]
- ldr r0, =gBattleMovePower
- ldrh r3, [r0]
- ldr r0, [r4]
- str r0, [sp]
- ldrb r4, [r7]
- movs r0, 0x58
- muls r0, r4
- add r0, r12
- adds r0, 0x2B
- ldrb r0, [r0]
- str r0, [sp, 0x4]
- ldrb r4, [r7]
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r4, =gDisableStructs
- adds r0, r4
- str r0, [sp, 0x8]
- str r6, [sp, 0xC]
- movs r0, 0
- bl dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes
- ldrb r0, [r5, 0x18]
- adds r0, 0x1
- strb r0, [r5, 0x18]
- ldrb r0, [r5, 0x19]
- adds r0, 0x1
- strb r0, [r5, 0x19]
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
-_08047D88:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _08047DB6
- .pool
-_08047DA8:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DABB9
- str r0, [r4]
-_08047DB6:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk09_attackanimation
-
- thumb_func_start atk0A_waitanimation
-atk0A_waitanimation: @ 8047DC8
- push {lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08047DDA
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08047DDA:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk0A_waitanimation
-
- thumb_func_start atk0B_healthbarupdate
-atk0B_healthbarupdate: @ 8047DE8
- push {r4,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08047EAA
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08047EA2
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r2, =gActiveBank
- strb r0, [r2]
- ldr r1, =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 _08047E68
- ldr r0, =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- beq _08047E68
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- cmp r0, 0
- bne _08047E68
- movs r0, 0x80
- adds r1, r2, 0
- bl b_std_message
- b _08047EA2
- .pool
-_08047E68:
- ldr r0, =gBattleMoveDamage
- ldr r0, [r0]
- ldr r1, =0x00002710
- cmp r0, r1
- bgt _08047E76
- lsls r0, 16
- lsrs r1, r0, 16
-_08047E76:
- movs r0, 0
- bl dp01_build_cmdbuf_x18_0_aa_health_bar_update
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08047EA2
- ldr r0, =gBattleMoveDamage
- ldr r0, [r0]
- cmp r0, 0
- ble _08047EA2
- ldr r0, =gBattleResults
- ldrb r1, [r0, 0x5]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x5]
-_08047EA2:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08047EAA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk0B_healthbarupdate
-
- thumb_func_start atk0C_datahpupdate
-atk0C_datahpupdate: @ 8047EC4
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _08047ED2
- b _080482A2
-_08047ED2:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldrb r1, [r0, 0x13]
- cmp r1, 0
- beq _08047EF4
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _08047EF4
- movs r6, 0x3F
- ands r6, r1
- b _08047F04
- .pool
-_08047EF4:
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r6, [r0, 0x2]
-_08047F04:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08047F12
- b _08048274
-_08047F12:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r7, =gActiveBank
- strb r0, [r7]
- ldr r1, =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 _08048028
- ldr r0, =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 _08048028
- ldr r0, =gHitMarker
- ldr r3, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r3, r0
- cmp r3, 0
- bne _08048028
- adds r5, r1, 0
- ldr r6, =gBattleMoveDamage
- ldr r4, [r6]
- cmp r5, r4
- blt _08047FBC
- ldr r0, =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _08047F76
- str r4, [r1]
-_08047F76:
- 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, =gUnknown_020241F4
- ldr r0, [r6]
- str r0, [r1]
- b _08047FEC
- .pool
-_08047FBC:
- ldr r0, =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _08047FD0
- str r5, [r1]
-_08047FD0:
- ldr r2, =gUnknown_020241F4
- 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]
-_08047FEC:
- ldr r0, =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 _08048000
- b _0804829A
-_08048000:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- bl b_movescr_stack_push_cursor
- ldr r0, =gUnknown_082DB6FB
- str r0, [r4]
- b _080482A2
- .pool
-_08048028:
- ldr r0, =gHitMarker
- ldr r2, [r0]
- ldr r1, =0xfffffeff
- ands r2, r1
- str r2, [r0]
- ldr r1, =gBattleMoveDamage
- ldr r5, [r1]
- mov r12, r0
- adds r7, r1, 0
- cmp r5, 0
- bge _0804807C
- ldr r4, =gBattleMons
- ldr r2, =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 _08048064
- b _0804823A
-_08048064:
- strh r3, [r1, 0x28]
- b _0804823A
- .pool
-_0804807C:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _08048098
- movs r0, 0x21
- negs r0, r0
- ands r2, r0
- mov r0, r12
- str r2, [r0]
- ldr r5, =gActiveBank
- b _080480E0
- .pool
-_08048098:
- ldr r0, =gTakenDmg
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- adds r0, r5
- str r0, [r1]
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- adds r5, r2, 0
- cmp r0, 0
- bne _080480D4
- ldr r1, =gTakenDmgBanks
- ldrb r0, [r5]
- adds r0, r1
- ldr r1, =gBankAttacker
- b _080480DC
- .pool
-_080480D4:
- ldr r1, =gTakenDmgBanks
- ldrb r0, [r5]
- adds r0, r1
- ldr r1, =gBankTarget
-_080480DC:
- ldrb r1, [r1]
- strb r1, [r0]
-_080480E0:
- ldr r4, =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 _08048110
- subs r0, r1
- strh r0, [r2, 0x28]
- ldr r0, =gUnknown_020241F4
- str r1, [r0]
- adds r7, r0, 0
- b _08048120
- .pool
-_08048110:
- ldr r2, =gUnknown_020241F4
- str r0, [r2]
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r4
- movs r1, 0
- strh r1, [r0, 0x28]
- adds r7, r2, 0
-_08048120:
- ldr r2, =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 _08048148
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _08048148
- ldr r0, [r7]
- str r0, [r3]
-_08048148:
- cmp r6, 0x8
- bhi _080481D0
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _080481CC
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xDC
- beq _080481CC
- ldr r3, =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, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _080481AC
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, =gBankAttacker
- b _080481B4
- .pool
-_080481AC:
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, =gBankTarget
-_080481B4:
- 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 _0804823A
- .pool
-_080481CC:
- cmp r6, 0x8
- bls _0804823A
-_080481D0:
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0804823A
- ldr r3, =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, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08048220
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, =gBankAttacker
- b _08048228
- .pool
-_08048220:
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, =gBankTarget
-_08048228:
- 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]
-_0804823A:
- mov r1, r12
- ldr r0, [r1]
- ldr r1, =0xffefffff
- ands r0, r1
- mov r1, r12
- str r0, [r1]
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- ldr r1, =gBattleMons + 0x28
- 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 _0804829A
- .pool
-_08048274:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r1, =gActiveBank
- strb r0, [r1]
- ldr r2, =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 _0804829A
- ldr r0, =0x0000ffff
- str r0, [r1]
-_0804829A:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_080482A2:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk0C_datahpupdate
-
- thumb_func_start atk0D_critmessage
-atk0D_critmessage: @ 80482BC
- push {lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _080482F2
- ldr r0, =gCritMultiplier
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080482EA
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _080482EA
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0xD9
- bl b_std_message
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
-_080482EA:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_080482F2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk0D_critmessage
-
- thumb_func_start atk0E_effectiveness_sound
-atk0E_effectiveness_sound: @ 8048310
- push {r4,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _080483D0
- ldr r4, =gActiveBank
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, =gBattleMoveFlags
- ldrb r2, [r1]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _080483C8
- movs r0, 0xFE
- ands r0, r2
- cmp r0, 0x10
- beq _08048382
- cmp r0, 0x10
- bgt _0804835E
- cmp r0, 0x4
- beq _08048372
- cmp r0, 0x4
- bgt _08048358
- cmp r0, 0x2
- beq _0804836C
- b _08048382
- .pool
-_08048358:
- cmp r0, 0x8
- beq _080483C8
- b _08048382
-_0804835E:
- cmp r0, 0x40
- beq _08048382
- cmp r0, 0x40
- bgt _08048382
- cmp r0, 0x20
- beq _080483C8
- b _08048382
-_0804836C:
- movs r0, 0
- movs r1, 0xE
- b _08048376
-_08048372:
- movs r0, 0
- movs r1, 0xC
-_08048376:
- bl dp01_build_cmdbuf_x2B_aa_0
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _080483C8
-_08048382:
- ldrb r1, [r1]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08048392
- movs r0, 0
- movs r1, 0xE
- b _0804839E
-_08048392:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080483B0
- movs r0, 0
- movs r1, 0xC
-_0804839E:
- bl dp01_build_cmdbuf_x2B_aa_0
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- b _080483C8
- .pool
-_080483B0:
- movs r0, 0x28
- ands r0, r1
- cmp r0, 0
- bne _080483C8
- movs r0, 0
- movs r1, 0xD
- bl dp01_build_cmdbuf_x2B_aa_0
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_080483C8:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_080483D0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk0E_effectiveness_sound
-
- thumb_func_start atk0F_resultmessage
-atk0F_resultmessage: @ 80483E0
- push {r4-r7,lr}
- movs r3, 0
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _080483EE
- b _08048580
-_080483EE:
- ldr r1, =gBattleMoveFlags
- ldrb r2, [r1]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r2
- adds r6, r1, 0
- ldr r7, =gBattleCommunication
- cmp r0, 0
- beq _0804842C
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _0804840E
- ldrb r0, [r7, 0x6]
- cmp r0, 0x2
- bls _0804842C
-_0804840E:
- ldr r1, =gUnknown_085CC834
- ldrb r0, [r7, 0x6]
- lsls r0, 1
- adds r0, r1
- ldrh r3, [r0]
- strb r4, [r7, 0x7]
- b _0804856A
- .pool
-_0804842C:
- movs r0, 0x1
- strb r0, [r7, 0x7]
- ldrb r5, [r6]
- movs r0, 0xFE
- ands r0, r5
- cmp r0, 0x10
- beq _08048470
- cmp r0, 0x10
- bgt _08048452
- cmp r0, 0x4
- beq _0804846C
- cmp r0, 0x4
- bgt _0804844C
- cmp r0, 0x2
- beq _08048468
- b _080484B8
-_0804844C:
- cmp r0, 0x8
- beq _080484C4
- b _080484B8
-_08048452:
- cmp r0, 0x40
- beq _08048474
- cmp r0, 0x40
- bgt _08048462
- cmp r0, 0x20
- bne _08048460
- b _08048564
-_08048460:
- b _080484B8
-_08048462:
- cmp r0, 0x80
- beq _08048478
- b _080484B8
-_08048468:
- movs r3, 0xDE
- b _0804856E
-_0804846C:
- movs r3, 0xDD
- b _0804856E
-_08048470:
- movs r3, 0xDA
- b _0804856E
-_08048474:
- movs r3, 0x99
- b _0804856E
-_08048478:
- ldr r4, =gLastUsedItem
- ldr r2, =gBattleMons
- ldr r3, =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- ldr r1, =gStringBank
- ldrb r0, [r3]
- strb r0, [r1]
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r6]
- bl b_movescr_stack_push_cursor
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB816
- b _0804857E
- .pool
-_080484B8:
- adds r2, r6, 0
- ldrb r5, [r2]
- movs r0, 0x8
- ands r0, r5
- cmp r0, 0
- beq _080484C8
-_080484C4:
- movs r3, 0x1B
- b _0804856E
-_080484C8:
- movs r0, 0x10
- ands r0, r5
- cmp r0, 0
- beq _080484F0
- 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, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB1CE
- b _0804857E
- .pool
-_080484F0:
- movs r0, 0x40
- ands r0, r5
- cmp r0, 0
- beq _08048510
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB1C7
- b _0804857E
- .pool
-_08048510:
- movs r0, 0x80
- ands r0, r5
- cmp r0, 0
- beq _08048558
- ldr r4, =gLastUsedItem
- ldr r2, =gBattleMons
- ldr r3, =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- ldr r1, =gStringBank
- ldrb r0, [r3]
- strb r0, [r1]
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r6]
- bl b_movescr_stack_push_cursor
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB816
- b _0804857E
- .pool
-_08048558:
- movs r0, 0x20
- ands r0, r5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08048568
-_08048564:
- movs r3, 0xE5
- b _0804856E
-_08048568:
- strb r0, [r7, 0x7]
-_0804856A:
- cmp r3, 0
- beq _08048578
-_0804856E:
- adds r0, r3, 0
- ldr r1, =gBankAttacker
- ldrb r1, [r1]
- bl b_std_message
-_08048578:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_0804857E:
- str r0, [r1]
-_08048580:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk0F_resultmessage
-
- thumb_func_start atk10_printstring
-atk10_printstring: @ 8048590
- push {r4,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _080485BA
- ldr r4, =gBattlescriptCurrInstr
- ldr r1, [r4]
- ldrb r0, [r1, 0x1]
- ldrb r1, [r1, 0x2]
- lsls r1, 8
- orrs r0, r1
- ldr r1, =gBankAttacker
- ldrb r1, [r1]
- bl b_std_message
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
-_080485BA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk10_printstring
-
- thumb_func_start atk11_printstring_playeronly
-atk11_printstring_playeronly: @ 80485D0
- push {r4,r5,lr}
- ldr r5, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl dp01_build_cmdbuf_x11_TODO
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk11_printstring_playeronly
-
- thumb_func_start atk12_waitmessage
-atk12_waitmessage: @ 8048614
- push {r4-r6,lr}
- ldr r0, =gBattleExecBuffer
- ldr r4, [r0]
- cmp r4, 0
- bne _08048662
- ldr r6, =gBattleCommunication
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- bne _0804863C
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
- b _08048662
- .pool
-_0804863C:
- ldr r5, =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r3, =gUnknown_0202432C
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bcc _08048662
- movs r1, 0
- strh r4, [r3]
- adds r0, r2, 0x3
- str r0, [r5]
- strb r1, [r6, 0x7]
-_08048662:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk12_waitmessage
-
- thumb_func_start atk13_printfromtable
-atk13_printfromtable: @ 8048670
- push {r4,r5,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _080486AE
- ldr r4, =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, =gBattleCommunication
- ldrb r0, [r5, 0x5]
- lsls r0, 1
- adds r1, r0
- ldrh r0, [r1]
- ldr r1, =gBankAttacker
- ldrb r1, [r1]
- bl b_std_message
- ldr r0, [r4]
- adds r0, 0x5
- str r0, [r4]
- movs r0, 0x1
- strb r0, [r5, 0x7]
-_080486AE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk13_printfromtable
-
- thumb_func_start atk14_printfromtable_playeronly
-atk14_printfromtable_playeronly: @ 80486C4
- push {r4-r6,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804870E
- ldr r5, =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, =gBattleCommunication
- ldrb r0, [r6, 0x5]
- lsls r0, 1
- adds r1, r0
- ldr r4, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldrh r1, [r1]
- movs r0, 0
- bl dp01_build_cmdbuf_x11_TODO
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x5
- str r0, [r5]
- movs r0, 0x1
- strb r0, [r6, 0x7]
-_0804870E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk14_printfromtable_playeronly
-
- thumb_func_start sub_8048728
-sub_8048728: @ 8048728
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r0, =gNoOfAllBanks
- ldrb r3, [r0]
- cmp r1, r3
- bge _0804874E
- ldr r4, =gTurnOrder
- ldrb r0, [r4]
- cmp r0, r2
- beq _0804874E
-_08048740:
- adds r1, 0x1
- cmp r1, r3
- bge _0804874E
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, r2
- bne _08048740
-_0804874E:
- lsls r0, r1, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8048728
-
- thumb_func_start SetMoveEffect
-SetMoveEffect: @ 8048760
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- movs r0, 0
- mov r10, r0
- movs r7, 0
- movs r1, 0x1
- str r1, [sp, 0x4]
- ldr r1, =gBattleCommunication
- ldrb r3, [r1, 0x3]
- movs r0, 0x40
- ands r0, r3
- cmp r0, 0
- beq _080487B8
- ldr r2, =gEffectBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r2]
- movs r0, 0xBF
- ands r0, r3
- adds r3, r1, 0
- strb r0, [r3, 0x3]
- movs r7, 0x40
- ldr r1, =gBattleScripting
- ldr r0, =gBankTarget
- b _080487C4
- .pool
-_080487B8:
- ldr r2, =gEffectBank
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r1, =gBattleScripting
- ldr r0, =gBankAttacker
-_080487C4:
- ldrb r0, [r0]
- strb r0, [r1, 0x17]
- mov r9, r2
- ldr r2, =gBattleMons
- mov r4, r9
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x13
- bne _08048828
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- bne _08048828
- cmp r5, 0
- bne _08048828
- ldr r1, =gBattleCommunication
- ldrb r0, [r1, 0x3]
- cmp r0, 0x9
- bhi _08048828
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r2, =gBattleCommunication
- strb r5, [r2, 0x3]
- bl _080499B8
- .pool
-_08048828:
- mov r3, r9
- ldrb r0, [r3]
- bl GetBankIdentity
- ldr r2, =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 _08048880
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- bne _08048880
- cmp r5, 0
- bne _08048880
- ldr r0, =gBattleCommunication
- ldrb r1, [r0, 0x3]
- cmp r1, 0x7
- bhi _08048880
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r4, =gBattleCommunication
- strb r5, [r4, 0x3]
- bl _080499B8
- .pool
-_08048880:
- ldr r3, =gBattleMons
- ldr r2, =gEffectBank
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- ldrh r4, [r0, 0x28]
- mov r9, r2
- mov r8, r3
- cmp r4, 0
- bne _080488C4
- ldr r1, =gBattleCommunication
- ldrb r0, [r1, 0x3]
- cmp r0, 0xB
- beq _080488C4
- cmp r0, 0x1F
- beq _080488C4
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r2, =gBattleCommunication
- strb r4, [r2, 0x3]
- bl _080499B8
- .pool
-_080488C4:
- mov r3, r9
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- mov r1, r8
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _080488FC
- cmp r7, 0x40
- beq _080488FC
- ldr r0, =gBattlescriptCurrInstr
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- movs r0, 0
- ldr r4, =gBattleCommunication
- strb r0, [r4, 0x3]
- bl _080499B8
- .pool
-_080488FC:
- ldr r1, =gBattleCommunication
- ldrb r0, [r1, 0x3]
- cmp r0, 0x6
- bls _08048906
- b _08048F40
-_08048906:
- ldr r1, =gStatusFlagsForMoveEffects
- ldr r2, =gBattleCommunication
- ldrb r0, [r2, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0x10
- bne _08048918
- b _08048AFC
-_08048918:
- cmp r0, 0x10
- bhi _08048930
- cmp r0, 0x7
- beq _0804894A
- cmp r0, 0x8
- beq _08048A00
- b _08048DF4
- .pool
-_08048930:
- cmp r0, 0x40
- bne _08048936
- b _08048C84
-_08048936:
- cmp r0, 0x40
- bhi _08048942
- cmp r0, 0x20
- bne _08048940
- b _08048BEA
-_08048940:
- b _08048DF4
-_08048942:
- cmp r0, 0x80
- bne _08048948
- b _08048D02
-_08048948:
- b _08048DF4
-_0804894A:
- mov r3, r9
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- add r0, r8
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2B
- beq _080489AC
- ldr r0, =gActiveBank
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gNoOfAllBanks
- ldrb r3, [r1]
- adds r7, r0, 0
- mov r12, r1
- cmp r3, 0
- beq _080489B8
- mov r4, r8
- ldr r0, [r4, 0x50]
- movs r1, 0x70
- ands r0, r1
- cmp r0, 0
- bne _080489B8
- adds r1, r7, 0
- mov r6, r8
- adds r6, 0x50
- movs r5, 0x58
- movs r4, 0x70
-_08048984:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r3
- bcs _080489B8
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r6
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _08048984
- b _080489B8
- .pool
-_080489AC:
- ldr r0, =gActiveBank
- ldr r2, =gNoOfAllBanks
- ldrb r1, [r2]
- strb r1, [r0]
- adds r7, r0, 0
- mov r12, r2
-_080489B8:
- mov r0, r9
- ldrb r2, [r0]
- movs r0, 0x58
- adds r1, r2, 0
- muls r1, r0
- mov r0, r8
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080489D0
- b _08048DF4
-_080489D0:
- ldrb r0, [r7]
- mov r3, r12
- ldrb r3, [r3]
- cmp r0, r3
- beq _080489DC
- b _08048DF4
-_080489DC:
- mov r4, r8
- adds r0, r1, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x48
- bne _080489EA
- b _08048DF4
-_080489EA:
- cmp r0, 0xF
- bne _080489F0
- b _08048DF4
-_080489F0:
- adds r0, r2, 0
- bl CancelMultiTurnMoves
- b _08048DE4
- .pool
-_08048A00:
- mov r2, r9
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- add r0, r8
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x11
- bne _08048A70
- cmp r5, 0x1
- beq _08048A1A
- cmp r6, 0x80
- bne _08048A70
-_08048A1A:
- ldr r0, =gLastUsedAbility
- strb r1, [r0]
- mov r3, r9
- ldrb r0, [r3]
- movs r1, 0x11
- bl RecordAbilityBattle
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB5E9
- str r0, [r4]
- ldr r2, =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- bne _08048A46
- b _08048D20
-_08048A46:
- movs r0, 0x1
- ldr r4, =gBattleCommunication
- strb r0, [r4, 0x5]
-_08048A4C:
- ldr r0, =0xffffdfff
- ands r1, r0
- str r1, [r2]
- bl _080499B2
- .pool
-_08048A70:
- mov r2, r9
- ldrb r0, [r2]
- movs r1, 0x58
- muls r0, r1
- add r0, r8
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r1, 0x3
- beq _08048A94
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _08048A94
- cmp r1, 0x8
- beq _08048A94
- cmp r0, 0x8
- bne _08048AAE
-_08048A94:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _08048AAE
- cmp r5, 0x1
- bne _08048AA8
- b _08048D66
-_08048AA8:
- cmp r6, 0x80
- bne _08048AAE
- b _08048D66
-_08048AAE:
- mov r3, r9
- ldrb r1, [r3]
- movs r0, 0x58
- muls r1, r0
- mov r4, r8
- adds r3, r1, r4
- adds r0, r3, 0
- adds r0, 0x21
- ldrb r4, [r0]
- cmp r4, 0x3
- bne _08048AC6
- b _08048DF4
-_08048AC6:
- adds r0, 0x1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _08048AD0
- b _08048DF4
-_08048AD0:
- cmp r4, 0x8
- bne _08048AD6
- b _08048DF4
-_08048AD6:
- cmp r0, 0x8
- bne _08048ADC
- b _08048DF4
-_08048ADC:
- mov r0, r8
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _08048AEA
- b _08048DF4
-_08048AEA:
- adds r0, r3, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x11
- bne _08048AF6
- b _08048DF4
-_08048AF6:
- b _08048DE4
- .pool
-_08048AFC:
- mov r2, r9
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- add r0, r8
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x29
- bne _08048B54
- cmp r5, 0x1
- beq _08048B16
- cmp r6, 0x80
- bne _08048B54
-_08048B16:
- ldr r0, =gLastUsedAbility
- strb r1, [r0]
- mov r3, r9
- ldrb r0, [r3]
- movs r1, 0x29
- bl RecordAbilityBattle
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB5D1
- str r0, [r4]
- ldr r2, =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _08048B42
- b _08048A46
-_08048B42:
- b _08048D20
- .pool
-_08048B54:
- mov r2, r9
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- mov r3, r8
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xA
- beq _08048B74
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _08048BA4
-_08048B74:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _08048BA4
- cmp r5, 0x1
- beq _08048B8A
- cmp r6, 0x80
- bne _08048BA4
-_08048B8A:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB5D1
- b _08048D72
- .pool
-_08048BA4:
- mov r4, r9
- ldrb r0, [r4]
- movs r1, 0x58
- adds r2, r0, 0
- muls r2, r1
- mov r0, r8
- adds r1, r2, r0
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _08048BBE
- b _08048DF4
-_08048BBE:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _08048BCA
- b _08048DF4
-_08048BCA:
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _08048BD6
- b _08048DF4
-_08048BD6:
- mov r0, r8
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _08048BE4
- b _08048DF4
-_08048BE4:
- movs r1, 0x1
- mov r10, r1
- b _08048DF4
-_08048BEA:
- 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 _08048C26
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _08048C26
- ldr r0, =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _08048C26
- movs r2, 0
- str r2, [sp, 0x4]
-_08048C26:
- ldr r4, =gBattleMons
- ldr r0, =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 _08048C40
- b _08048DF4
-_08048C40:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xF
- bne _08048C4C
- b _08048DF4
-_08048C4C:
- adds r0, r4, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _08048C5A
- b _08048DF4
-_08048C5A:
- ldr r4, [sp, 0x4]
- cmp r4, 0
- bne _08048C62
- b _08048DF4
-_08048C62:
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x28
- bne _08048C6E
- b _08048DF4
-_08048C6E:
- adds r0, r3, 0
- bl CancelMultiTurnMoves
- b _08048DE4
- .pool
-_08048C84:
- mov r2, r9
- ldrb r1, [r2]
- movs r0, 0x58
- muls r1, r0
- mov r3, r8
- adds r0, r1, r3
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0x7
- bne _08048CF4
- cmp r5, 0x1
- beq _08048CA2
- cmp r6, 0x80
- beq _08048CA2
- b _08048DF4
-_08048CA2:
- ldr r0, =gLastUsedAbility
- strb r2, [r0]
- mov r4, r9
- ldrb r0, [r4]
- movs r1, 0x7
- bl RecordAbilityBattle
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB5DD
- str r0, [r4]
- ldr r2, =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _08048CE8
- movs r0, 0x1
- ldr r3, =gBattleCommunication
- strb r0, [r3, 0x5]
- b _08048A4C
- .pool
-_08048CE8:
- ldr r4, =gBattleCommunication
- strb r0, [r4, 0x5]
- bl _080499B2
- .pool
-_08048CF4:
- mov r0, r8
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08048DF4
- b _08048DE4
-_08048D02:
- mov r2, r9
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- add r0, r8
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x11
- bne _08048D2C
- cmp r5, 0x1
- bne _08048D1A
- b _08048A1A
-_08048D1A:
- cmp r6, 0x80
- bne _08048D2C
- b _08048A1A
-_08048D20:
- ldr r1, =gBattleCommunication
- strb r0, [r1, 0x5]
- bl _080499B2
- .pool
-_08048D2C:
- mov r2, r9
- ldrb r0, [r2]
- movs r1, 0x58
- muls r0, r1
- add r0, r8
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r1, 0x3
- beq _08048D50
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _08048D50
- cmp r1, 0x8
- beq _08048D50
- cmp r0, 0x8
- bne _08048D94
-_08048D50:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _08048D94
- cmp r5, 0x1
- beq _08048D66
- cmp r6, 0x80
- bne _08048D94
-_08048D66:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB5E9
-_08048D72:
- str r0, [r4]
- ldr r1, =gBattleCommunication
- movs r2, 0
- movs r0, 0x2
- strb r0, [r1, 0x5]
- strb r2, [r1, 0x3]
- bl _080499B8
- .pool
-_08048D94:
- mov r3, r9
- ldrb r0, [r3]
- movs r6, 0x58
- muls r0, r6
- mov r2, r8
- adds r2, 0x4C
- adds r5, r0, r2
- ldr r4, [r5]
- cmp r4, 0
- bne _08048DF4
- mov r3, r8
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r3, [r0]
- cmp r3, 0x3
- beq _08048DEA
- adds r0, 0x1
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _08048DEA
- cmp r3, 0x8
- beq _08048DEA
- cmp r0, 0x8
- beq _08048DEA
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _08048DF4
- mov r4, r9
- 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]
-_08048DE4:
- movs r0, 0x1
- mov r10, r0
- b _08048DF4
-_08048DEA:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
-_08048DF4:
- mov r1, r10
- cmp r1, 0x1
- beq _08048DFC
- b _08048F1C
-_08048DFC:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, =gStatusFlagsForMoveEffects
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- cmp r3, 0x7
- bne _08048E50
- bl Random
- ldr r2, =gBattleMons
- ldr r1, =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 _08048E64
- .pool
-_08048E50:
- ldr r2, =gBattleMons
- ldr r0, =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]
-_08048E64:
- ldr r2, =gBattlescriptCurrInstr
- ldr r1, =gMoveEffectBS_Ptrs
- ldr r5, =gBattleCommunication
- ldrb r0, [r5, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- ldr r4, =gActiveBank
- ldr r1, =gEffectBank
- ldrb r0, [r1]
- strb r0, [r4]
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- ldr r1, =gBattleMons + 0x4C
- 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, =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _08048ED8
- movs r0, 0x1
- strb r0, [r5, 0x5]
- ldr r0, =0xffffdfff
- ands r1, r0
- str r1, [r2]
- b _08048EDA
- .pool
-_08048ED8:
- strb r0, [r5, 0x5]
-_08048EDA:
- ldr r0, =gBattleCommunication
- ldrb r2, [r0, 0x3]
- cmp r2, 0x2
- beq _08048EF2
- cmp r2, 0x6
- beq _08048EF2
- cmp r2, 0x5
- beq _08048EF2
- cmp r2, 0x3
- beq _08048EF2
- bl _080499B8
-_08048EF2:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB2
- ldr r2, =gBattleCommunication
- ldrb r1, [r2, 0x3]
- strb r1, [r0]
- ldr r2, =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 7
- orrs r0, r1
- str r0, [r2]
- bl _080499B8
- .pool
-_08048F1C:
- mov r3, r10
- cmp r3, 0
- beq _08048F26
- bl _080499B8
-_08048F26:
- ldr r0, =gBattleCommunication
- strb r3, [r0, 0x3]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bl _080499B8
- .pool
-_08048F40:
- mov r4, r9
- ldrb r1, [r4]
- movs r0, 0x58
- muls r1, r0
- mov r0, r8
- adds r0, 0x50
- adds r1, r0
- ldr r2, =gStatusFlagsForMoveEffects
- ldr r0, =gBattleCommunication
- ldrb r3, [r0, 0x3]
- lsls r0, r3, 2
- adds r0, r2
- ldr r1, [r1]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08048F66
- bl _08049994
-_08048F66:
- subs r0, r3, 0x7
- cmp r0, 0x34
- bls _08048F70
- bl _080499B2
-_08048F70:
- lsls r0, 2
- ldr r1, =_08048F88
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08048F88:
- .4byte _0804905C
- .4byte _080490D0
- .4byte _08049244
- .4byte _0804915C
- .4byte _080491D8
- .4byte _0804927C
- .4byte _080492C4
- .4byte _08049390
- .4byte _080493D4
- .4byte _080493D4
- .4byte _080493D4
- .4byte _080493D4
- .4byte _080493D4
- .4byte _080493D4
- .4byte _080493D4
- .4byte _0804941C
- .4byte _0804941C
- .4byte _0804941C
- .4byte _0804941C
- .4byte _0804941C
- .4byte _0804941C
- .4byte _0804941C
- .4byte _080494FC
- .4byte _08049544
- .4byte _08049564
- .4byte _08049720
- .4byte _0804975C
- .4byte _08049778
- .4byte _08049790
- .4byte _080497A8
- .4byte _08049808
- .4byte _08049820
- .4byte _08049468
- .4byte _08049468
- .4byte _08049468
- .4byte _08049468
- .4byte _08049468
- .4byte _08049468
- .4byte _08049468
- .4byte _080494B0
- .4byte _080494B0
- .4byte _080494B0
- .4byte _080494B0
- .4byte _080494B0
- .4byte _080494B0
- .4byte _080494B0
- .4byte _08049864
- .4byte _080498C0
- .4byte _080499B2
- .4byte _080499B2
- .4byte _080499B2
- .4byte _080499B2
- .4byte _080499A4
-_0804905C:
- mov r1, r9
- ldrb r0, [r1]
- movs r5, 0x58
- adds r1, r0, 0
- muls r1, r5
- mov r2, r8
- adds r0, r1, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _08049076
- bl _08049994
-_08049076:
- mov r4, r8
- adds r4, 0x50
- adds r0, r1, r4
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0804908A
- bl _08049994
-_0804908A:
- bl Random
- mov r3, r9
- 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, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, =gMoveEffectBS_Ptrs
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _080499B0
- .pool
-_080490D0:
- mov r4, r9
- ldrb r2, [r4]
- movs r4, 0x58
- adds r0, r2, 0
- muls r0, r4
- add r0, r8
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x27
- bne _08049114
- cmp r5, 0x1
- beq _080490F0
- cmp r6, 0x80
- beq _080490F0
- bl _08049994
-_080490F0:
- ldr r0, =gLastUsedAbility
- strb r1, [r0]
- mov r1, r9
- ldrb r0, [r1]
- movs r1, 0x27
- bl RecordAbilityBattle
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB603
- str r0, [r1]
- bl _080499B2
- .pool
-_08049114:
- adds r0, r2, 0
- bl sub_8048728
- ldr r1, =gUnknown_02024082
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bhi _0804912A
- bl _08049994
-_0804912A:
- mov r2, r9
- ldrb r0, [r2]
- adds r2, r0, 0
- muls r2, r4
- mov r0, r8
- adds r0, 0x50
- adds r2, r0
- ldr r1, =gStatusFlagsForMoveEffects
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- orrs r1, r0
- str r1, [r2]
- bl _08049994
- .pool
-_0804915C:
- mov r3, r9
- ldrb r0, [r3]
- movs r5, 0x58
- muls r0, r5
- mov r4, r8
- adds r4, 0x50
- adds r2, r0, r4
- ldr r1, [r2]
- movs r0, 0x70
- ands r0, r1
- cmp r0, 0
- beq _08049178
- bl _08049994
-_08049178:
- movs r0, 0x80
- lsls r0, 5
- orrs r1, r0
- str r1, [r2]
- ldr r1, =gUnknown_02024268
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- bl Random
- mov r2, r9
- 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, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, =gMoveEffectBS_Ptrs
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _080499B0
- .pool
-_080491D8:
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _08049210
- ldr r4, =gUnknown_0202432E
- ldrh r3, [r4]
- ldr r2, =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 _08049210
- ldr r3, =0x0000ffff
- adds r0, r3, 0
- strh r0, [r4]
-_08049210:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, =gMoveEffectBS_Ptrs
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- b _080499B0
- .pool
-_08049244:
- mov r4, r9
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- mov r1, r8
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _0804925A
- b _08049994
-_0804925A:
- bl Random
- ldr r4, =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 SetMoveEffect
- b _080499B2
- .pool
-_0804927C:
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r8
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 5
- orrs r0, r1
- str r0, [r2]
- ldr r1, =gUnknown_02024268
- mov r2, r9
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldr r1, =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- ldr r0, =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 _08049994
- .pool
-_080492C4:
- mov r3, r9
- ldrb r0, [r3]
- movs r6, 0x58
- muls r0, r6
- mov r4, r8
- adds r4, 0x50
- adds r0, r4
- ldr r5, [r0]
- movs r0, 0xE0
- lsls r0, 8
- ands r5, r0
- cmp r5, 0
- beq _080492E0
- b _08049994
-_080492E0:
- bl Random
- mov r2, r9
- 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]
- mov r3, r9
- ldrb r1, [r3]
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- lsls r1, 1
- adds r1, r0
- ldr r6, =gCurrentMove
- ldrh r0, [r6]
- strb r0, [r1, 0x4]
- ldrb r1, [r3]
- ldr r0, [r2]
- lsls r1, 1
- adds r1, r0
- ldrh r0, [r6]
- lsrs r0, 8
- strb r0, [r1, 0x5]
- ldrb r1, [r3]
- ldr r0, [r2]
- adds r1, r0
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r1, 0x14]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, =gMoveEffectBS_Ptrs
- ldr r2, =gBattleCommunication
- ldrb r0, [r2, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r4]
- strb r5, [r2, 0x5]
- ldr r3, =gUnknown_085CC982
- ldrh r0, [r3]
- ldrh r4, [r6]
- cmp r0, r4
- bne _0804934E
- b _080499B2
-_0804934E:
- adds r1, r2, 0
- adds r2, r6, 0
-_08049352:
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _08049362
- b _080499B2
-_08049362:
- ldrb r0, [r1, 0x5]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- ldrh r4, [r2]
- cmp r0, r4
- bne _08049352
- b _080499B2
- .pool
-_08049390:
- ldr r1, =gBattleMoveDamage
- ldr r0, =gUnknown_020241F4
- ldr r0, [r0]
- cmp r0, 0
- bge _0804939C
- adds r0, 0x3
-_0804939C:
- asrs r0, 2
- str r0, [r1]
- cmp r0, 0
- bne _080493A8
- movs r0, 0x1
- str r0, [r1]
-_080493A8:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, =gMoveEffectBS_Ptrs
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- b _080499B0
- .pool
-_080493D4:
- ldr r4, =gBattleCommunication
- ldrb r1, [r4, 0x3]
- adds r1, 0xF2
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x10
- adds r2, r7, 0
- movs r3, 0
- bl sub_8050A1C
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _080493F2
- b _08049994
-_080493F2:
- ldr r2, =gBattleScripting
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x10]
- strb r3, [r2, 0x11]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082D8CD4
- b _080499B0
- .pool
-_0804941C:
- movs r0, 0x70
- negs r0, r0
- ldr r4, =gBattleCommunication
- ldrb r1, [r4, 0x3]
- adds r1, 0xEB
- lsls r1, 24
- lsrs r1, 24
- adds r2, r7, 0
- movs r3, 0
- bl sub_8050A1C
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _0804943C
- b _08049994
-_0804943C:
- ldr r2, =gBattleScripting
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x10]
- strb r3, [r2, 0x11]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082D8D65
- b _080499B0
- .pool
-_08049468:
- ldr r4, =gBattleCommunication
- ldrb r1, [r4, 0x3]
- adds r1, 0xDA
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x20
- adds r2, r7, 0
- movs r3, 0
- bl sub_8050A1C
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _08049486
- b _08049994
-_08049486:
- ldr r2, =gBattleScripting
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x10]
- strb r3, [r2, 0x11]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082D8CD4
- b _080499B0
- .pool
-_080494B0:
- movs r0, 0x60
- negs r0, r0
- ldr r4, =gBattleCommunication
- ldrb r1, [r4, 0x3]
- adds r1, 0xD3
- lsls r1, 24
- lsrs r1, 24
- adds r2, r7, 0
- movs r3, 0
- bl sub_8050A1C
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _080494D0
- b _08049994
-_080494D0:
- ldr r2, =gBattleScripting
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x10]
- strb r3, [r2, 0x11]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082D8D65
- b _080499B0
- .pool
-_080494FC:
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r8
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 15
- orrs r0, r1
- str r0, [r2]
- ldr r2, =gDisableStructs
- mov r3, r9
- 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, =gUnknown_02024268
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- b _08049994
- .pool
-_08049544:
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r8
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 16
-_0804955A:
- orrs r0, r1
- str r0, [r2]
- b _08049994
- .pool
-_08049564:
- ldr r5, =gBattleTypeFlags
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 19
- ands r0, r1
- cmp r0, 0
- beq _08049574
- b _08049994
-_08049574:
- ldr r6, =gBankAttacker
- ldrb r0, [r6]
- bl GetBankSide
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080495A8
- ldr r0, [r5]
- ldr r1, =0x0a3f0902
- ands r0, r1
- cmp r0, 0
- bne _080495D4
- b _08049994
- .pool
-_080495A8:
- ldr r0, [r5]
- ldr r1, =0x0a3f0902
- ands r0, r1
- cmp r0, 0
- bne _080495D4
- ldr r0, =gWishFutureKnock
- adds r0, 0x29
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r3, =gBitTable
- ldr r2, =gBattlePartyID
- ldrb r0, [r6]
- 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 _080495D4
- b _08049994
-_080495D4:
- ldr r2, =gBattleMons
- ldr r1, =gBankTarget
- ldrb r0, [r1]
- movs r5, 0x58
- muls r0, r5
- adds r4, r0, r2
- ldrh r0, [r4, 0x2E]
- adds r7, r1, 0
- mov r8, r2
- cmp r0, 0
- beq _0804963C
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x3C
- bne _0804963C
- bl b_movescr_stack_push_cursor
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB682
- str r0, [r1]
- ldr r1, =gLastUsedAbility
- ldrb r0, [r7]
- muls r0, r5
- add r0, r8
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _080499B2
- .pool
-_0804963C:
- ldr r4, =gBankAttacker
- mov r10, r4
- ldrb r2, [r4]
- movs r0, 0x58
- mov r9, r0
- mov r0, r9
- muls r0, r2
- add r0, r8
- ldrh r4, [r0, 0x2E]
- cmp r4, 0
- beq _08049654
- b _08049994
-_08049654:
- ldrb r0, [r7]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- ldrh r3, [r0, 0x2E]
- adds r1, r3, 0
- cmp r1, 0xAF
- bne _08049668
- b _08049994
-_08049668:
- adds r0, r3, 0
- subs r0, 0x79
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bhi _08049676
- b _08049994
-_08049676:
- cmp r1, 0
- bne _0804967C
- b _08049994
-_0804967C:
- ldr r5, =gBattleStruct
- lsls r0, r2, 1
- adds r0, 0xD0
- ldr r1, [r5]
- adds r1, r0
- ldr r2, =gLastUsedItem
- strh r3, [r1]
- strh r3, [r2]
- ldrb r0, [r7]
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- add r0, r8
- movs r6, 0
- strh r4, [r0, 0x2E]
- ldr r4, =gActiveBank
- mov r1, r10
- ldrb r0, [r1]
- strb r0, [r4]
- str r2, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- mov r2, r10
- ldrb r0, [r2]
- bl MarkBufferBankForExecution
- ldrb r0, [r7]
- strb r0, [r4]
- ldrb r0, [r7]
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- mov r1, r8
- 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, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB422
- str r0, [r4]
- ldrb r0, [r7]
- ldr r1, [r5]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC8
- strb r6, [r0]
- ldrb r0, [r7]
- ldr r1, [r5]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC9
- strb r6, [r0]
- b _080499B2
- .pool
-_08049720:
- ldr r3, =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r8
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 19
- orrs r0, r1
- str r0, [r2]
- ldr r2, =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =gBankAttacker
- ldrb r1, [r1]
- strb r1, [r0, 0x14]
- b _08049994
- .pool
-_0804975C:
- ldr r0, =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r8
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 20
- b _0804955A
- .pool
-_08049778:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DAF27
- b _080499B0
- .pool
-_08049790:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DAFC3
- b _080499B0
- .pool
-_080497A8:
- ldr r6, =gBankTarget
- ldrb r0, [r6]
- movs r2, 0x58
- muls r0, r2
- mov r1, r8
- adds r1, 0x4C
- adds r5, r0, r1
- ldr r4, [r5]
- movs r0, 0x40
- ands r0, r4
- cmp r0, 0
- bne _080497C2
- b _08049994
-_080497C2:
- movs r0, 0x41
- negs r0, r0
- ands r4, r0
- str r4, [r5]
- ldr r4, =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, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB361
- b _080499B0
- .pool
-_08049808:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB117
- b _080499B0
- .pool
-_08049820:
- ldr r4, =gBattleMoveDamage
- ldr r0, =gUnknown_020241F4
- ldr r0, [r0]
- movs r1, 0x3
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _08049836
- movs r0, 0x1
- str r0, [r4]
-_08049836:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, =gMoveEffectBS_Ptrs
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- b _080499B0
- .pool
-_08049864:
- mov r4, r9
- ldrb r0, [r4]
- movs r5, 0x58
- muls r0, r5
- mov r4, r8
- adds r4, 0x50
- adds r2, r0, r4
- ldr r1, [r2]
- movs r0, 0xC0
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _08049880
- b _08049994
-_08049880:
- movs r0, 0x80
- lsls r0, 5
- orrs r1, r0
- str r1, [r2]
- ldr r1, =gUnknown_02024268
- mov r2, r9
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldr r1, =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- bl Random
- mov r3, r9
- ldrb r1, [r3]
- 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]
- orrs r0, r1
- str r0, [r2]
- b _080499B2
- .pool
-_080498C0:
- mov r4, r9
- ldrb r3, [r4]
- movs r5, 0x58
- adds r0, r3, 0
- muls r0, r5
- mov r2, r8
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0x3C
- bne _08049900
- ldrh r0, [r1, 0x2E]
- cmp r0, 0
- beq _08049994
- ldr r0, =gLastUsedAbility
- strb r2, [r0]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB63F
- str r0, [r1]
- ldrb r0, [r4]
- movs r1, 0x3C
- bl RecordAbilityBattle
- b _080499B2
- .pool
-_08049900:
- ldrh r0, [r1, 0x2E]
- cmp r0, 0
- beq _08049994
- adds r0, r3, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gLastUsedItem
- mov r3, r9
- ldrb r0, [r3]
- muls r0, r5
- add r0, r8
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
- ldrb r0, [r3]
- muls r0, r5
- add r0, r8
- movs r5, 0
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldr r2, =gWishFutureKnock
- adds r2, 0x29
- adds r2, r4, r2
- ldr r3, =gBitTable
- ldr r1, =gBattlePartyID
- mov r4, r9
- 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, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB168
- str r0, [r4]
- mov r1, r9
- ldrb r0, [r1]
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC8
- strb r5, [r0]
- mov r3, r9
- ldrb r0, [r3]
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC9
- strb r5, [r0]
- b _080499B2
- .pool
-_08049994:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _080499B2
- .pool
-_080499A4:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB1D5
-_080499B0:
- str r0, [r4]
-_080499B2:
- ldr r1, =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x3]
-_080499B8:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetMoveEffect
-
- thumb_func_start atk15_seteffectwithchancetarget
-atk15_seteffectwithchancetarget: @ 80499D4
- push {r4,lr}
- ldr r2, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x20
- bne _08049A10
- ldr r2, =gBattleMoves
- ldr r0, =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 _08049A20
- .pool
-_08049A10:
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r4, [r0, 0x5]
-_08049A20:
- ldr r3, =gBattleCommunication
- ldrb r2, [r3, 0x3]
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _08049A50
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08049A50
- movs r0, 0x7F
- ands r0, r2
- strb r0, [r3, 0x3]
- b _08049A7E
- .pool
-_08049A50:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bcs _08049A9A
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x3]
- cmp r0, 0
- beq _08049A9A
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08049A9A
- cmp r4, 0x63
- bls _08049A90
-_08049A7E:
- movs r0, 0
- movs r1, 0x80
- bl SetMoveEffect
- b _08049AA2
- .pool
-_08049A90:
- movs r0, 0
- movs r1, 0
- bl SetMoveEffect
- b _08049AA2
-_08049A9A:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08049AA2:
- ldr r0, =gBattleCommunication
- movs r1, 0
- strb r1, [r0, 0x3]
- ldr r0, =gBattleScripting
- strb r1, [r0, 0x16]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk15_seteffectwithchancetarget
-
- thumb_func_start atk16_seteffectprimary
-atk16_seteffectprimary: @ 8049AC0
- push {lr}
- movs r0, 0x1
- movs r1, 0
- bl SetMoveEffect
- pop {r0}
- bx r0
- thumb_func_end atk16_seteffectprimary
-
- thumb_func_start atk17_seteffectsecondary
-atk17_seteffectsecondary: @ 8049AD0
- push {lr}
- movs r0, 0
- movs r1, 0
- bl SetMoveEffect
- pop {r0}
- bx r0
- thumb_func_end atk17_seteffectsecondary
-
- thumb_func_start atk18_status_effect_clear
-atk18_status_effect_clear: @ 8049AE0
- push {lr}
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r2, =gActiveBank
- strb r0, [r2]
- ldr r3, =gBattleCommunication
- ldrb r0, [r3, 0x3]
- cmp r0, 0x6
- bhi _08049B14
- ldr r1, =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x4C
- b _08049B1E
- .pool
-_08049B14:
- ldr r1, =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
-_08049B1E:
- adds r2, r1
- ldr r1, =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, =gBattleCommunication
- movs r2, 0
- strb r2, [r0, 0x3]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- ldr r0, =gBattleScripting
- strb r2, [r0, 0x16]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk18_status_effect_clear
-
- thumb_func_start atk19_faint_pokemon
-atk19_faint_pokemon: @ 8049B5C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r0, =gBattlescriptCurrInstr
- ldr r2, [r0]
- ldrb r1, [r2, 0x2]
- adds r6, r0, 0
- cmp r1, 0
- beq _08049BE0
- ldrb r0, [r2, 0x1]
- bl get_battle_side_of_something
- ldr r5, =gActiveBank
- strb r0, [r5]
- ldr r2, =gHitMarker
- ldr r1, =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 _08049B94
- b _08049E2C
-_08049B94:
- 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, =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r2, [r0]
- ldr r1, =0x0000fdff
- ands r1, r2
- strh r1, [r0]
- b _08049E32
- .pool
-_08049BE0:
- ldrb r0, [r2, 0x1]
- cmp r0, 0x1
- bne _08049C08
- ldr r1, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- mov r9, r0
- ldr r4, =gUnknown_082DA7AA
- b _08049C18
- .pool
-_08049C08:
- ldr r1, =gActiveBank
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- mov r9, r0
- ldr r4, =gUnknown_082DA7B7
-_08049C18:
- mov r8, r1
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- mov r7, r8
- ldrb r3, [r7]
- lsls r0, r3, 2
- adds r0, r2
- ldr r2, [r0]
- ands r1, r2
- cmp r1, 0
- beq _08049C32
- b _08049E2C
-_08049C32:
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r3
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08049C42
- b _08049E2C
-_08049C42:
- ldr r5, =gHitMarker
- lsls r1, r2, 28
- ldr r0, [r5]
- orrs r0, r1
- str r0, [r5]
- ldr r0, [r6]
- adds r0, 0x7
- bl b_movescr_stack_push
- str r4, [r6]
- ldrb r0, [r7]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08049CA4
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 15
- orrs r0, r1
- str r0, [r5]
- ldr r1, =gBattleResults
- ldrb r0, [r1]
- cmp r0, 0xFE
- bhi _08049C78
- adds r0, 0x1
- strb r0, [r1]
-_08049C78:
- ldrb r0, [r7]
- bl sub_80570F4
- b _08049CCE
- .pool
-_08049CA4:
- ldr r4, =gBattleResults
- ldrb r0, [r4, 0x1]
- cmp r0, 0xFE
- bhi _08049CB0
- adds r0, 0x1
- strb r0, [r4, 0x1]
-_08049CB0:
- ldr r1, =gBattlePartyID
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r4, 0x20]
-_08049CCE:
- ldr r2, =gHitMarker
- ldr r1, [r2]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08049D0C
- ldr r6, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- movs r5, 0x58
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08049D0C
- movs r0, 0x41
- negs r0, r0
- ands r1, r0
- str r1, [r2]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- bl b_movescr_stack_push
- ldr r1, =gBattleMoveDamage
- mov r0, r9
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x28]
- str r0, [r1]
- ldr r0, =gUnknown_082DAE3E
- str r0, [r4]
-_08049D0C:
- ldr r1, =gStatuses3
- ldr r6, =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 _08049D24
- b _08049E32
-_08049D24:
- ldr r0, =gHitMarker
- ldr r5, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r5, r0
- cmp r5, 0
- beq _08049D34
- b _08049E32
-_08049D34:
- ldr r3, =gBankAttacker
- mov r8, r3
- ldrb r0, [r3]
- bl GetBankSide
- adds r4, r0, 0
- ldrb r0, [r6]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _08049E32
- ldr r0, =gBattleMons
- mov r9, r0
- mov r2, r8
- ldrb r1, [r2]
- movs r7, 0x58
- adds r2, r1, 0
- muls r2, r7
- adds r0, r2, r0
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08049E32
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xA5
- beq _08049E32
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, r1, r0
- adds r0, 0x80
- ldrb r4, [r0]
- adds r0, r4, r2
- mov r6, r9
- adds r6, 0x24
- adds r0, r6
- strb r5, [r0]
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB18D
- str r0, [r5]
- ldr r5, =gActiveBank
- mov r3, r8
- ldrb r0, [r3]
- 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, =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 _08049E32
- .pool
-_08049E2C:
- ldr r0, [r6]
- adds r0, 0x7
- str r0, [r6]
-_08049E32:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk19_faint_pokemon
-
- thumb_func_start atk1A_faint_animation
-atk1A_faint_animation: @ 8049E40
- push {r4,r5,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08049E6A
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl dp01_build_cmdbuf_x0A_A_A_A
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_08049E6A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk1A_faint_animation
-
- thumb_func_start atk1B_faint_effects_clear
-atk1B_faint_effects_clear: @ 8049E7C
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r0, =gBattleExecBuffer
- ldr r5, [r0]
- cmp r5, 0
- bne _08049EE8
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _08049EB4
- ldr r2, =gBattleMons
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08049EDC
-_08049EB4:
- ldr r1, =gBattleMons
- ldrb r0, [r4]
- movs r2, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- str r5, [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
-_08049EDC:
- bl sub_803A75C
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08049EE8:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk1B_faint_effects_clear
-
- thumb_func_start atk1C_jumpifstatus
-atk1C_jumpifstatus: @ 8049F04
- push {r4,r5,lr}
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- 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, =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 _08049F68
- adds r0, r1, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08049F68
- str r3, [r5]
- b _08049F70
- .pool
-_08049F68:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
-_08049F70:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk1C_jumpifstatus
-
- thumb_func_start atk1D_jumpifstatus2
-atk1D_jumpifstatus2: @ 8049F7C
- push {r4,r5,lr}
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- 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, =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 _08049FE0
- adds r0, r1, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08049FE0
- str r3, [r5]
- b _08049FE8
- .pool
-_08049FE0:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
-_08049FE8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk1D_jumpifstatus2
-
- thumb_func_start atk1E_jumpifability
-atk1E_jumpifability: @ 8049FF4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r6, =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 _0804A054
- ldr r0, =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 _0804A0C8
- ldr r1, =gLastUsedAbility
- strb r5, [r1]
- str r7, [r6]
- subs r4, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- ldrb r1, [r1]
- b _0804A0B0
- .pool
-_0804A054:
- cmp r0, 0x9
- bne _0804A08C
- ldr r0, =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 _0804A0C8
- ldr r1, =gLastUsedAbility
- strb r5, [r1]
- str r7, [r6]
- subs r4, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- ldrb r1, [r1]
- b _0804A0B0
- .pool
-_0804A08C:
- ldrb r0, [r2, 0x1]
- bl get_battle_side_of_something
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, r8
- bne _0804A0C8
- ldr r0, =gLastUsedAbility
- strb r1, [r0]
- str r7, [r6]
- ldrb r1, [r0]
- adds r0, r4, 0
-_0804A0B0:
- bl RecordAbilityBattle
- ldr r0, =gBattleScripting
- strb r4, [r0, 0x15]
- b _0804A0CE
- .pool
-_0804A0C8:
- ldr r0, [r6]
- adds r0, 0x7
- str r0, [r6]
-_0804A0CE:
- 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: @ 804A0DC
- push {r4-r6,lr}
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r4, [r0, 0x1]
- cmp r4, 0x1
- bne _0804A0FC
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- b _0804A106
- .pool
-_0804A0FC:
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r4, 0x1
-_0804A106:
- ands r4, r0
- ldr r6, =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, =gSideAffecting
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- ands r2, r0
- cmp r2, 0
- beq _0804A148
- str r5, [r6]
- b _0804A14E
- .pool
-_0804A148:
- adds r0, r3, 0
- adds r0, 0x8
- str r0, [r6]
-_0804A14E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk1F_jumpifsideaffecting
-
- thumb_func_start atk20_jumpifstat
-atk20_jumpifstat: @ 804A154
- push {r4,r5,lr}
- movs r5, 0
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =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 _0804A212
- lsls r0, 2
- ldr r1, =_0804A194
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0804A194:
- .4byte _0804A1AC
- .4byte _0804A1BC
- .4byte _0804A1CC
- .4byte _0804A1DC
- .4byte _0804A1EC
- .4byte _0804A200
-_0804A1AC:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bne _0804A212
- b _0804A20C
- .pool
-_0804A1BC:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- beq _0804A212
- b _0804A20C
- .pool
-_0804A1CC:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bls _0804A212
- b _0804A20C
- .pool
-_0804A1DC:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bcs _0804A212
- b _0804A20C
- .pool
-_0804A1EC:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- ands r2, r0
- cmp r2, 0
- beq _0804A212
- b _0804A20C
- .pool
-_0804A200:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- ands r2, r0
- cmp r2, 0
- bne _0804A212
-_0804A20C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0804A212:
- cmp r5, 0
- beq _0804A238
- ldr r3, =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 _0804A240
- .pool
-_0804A238:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x9
- str r0, [r1]
-_0804A240:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk20_jumpifstat
-
- thumb_func_start atk21_jumpifstatus3
-atk21_jumpifstatus3: @ 804A24C
- push {r4-r6,lr}
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r5, =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 _0804A2AC
- ldr r0, =gStatuses3
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- ands r0, r6
- cmp r0, 0
- bne _0804A2C4
- b _0804A2BC
- .pool
-_0804A2AC:
- ldr r0, =gStatuses3
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- ands r0, r6
- cmp r0, 0
- beq _0804A2C4
-_0804A2BC:
- str r3, [r4]
- b _0804A2CA
- .pool
-_0804A2C4:
- adds r0, r2, 0
- adds r0, 0xB
- str r0, [r4]
-_0804A2CA:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk21_jumpifstatus3
-
- thumb_func_start atk22_jumpiftype
-atk22_jumpiftype: @ 804A2D0
- push {r4-r6,lr}
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- 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, =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 _0804A314
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r5
- bne _0804A320
-_0804A314:
- str r6, [r4]
- b _0804A324
- .pool
-_0804A320:
- adds r0, r3, 0x7
- str r0, [r4]
-_0804A324:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk22_jumpiftype
-
- thumb_func_start atk23_getexp
-atk23_getexp: @ 804A32C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r6, 0
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x50
- mov r9, r0
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r1, =gBank1
- strb r0, [r1]
- ldr r2, =gUnknown_020243FE
- movs r1, 0x2
- ands r1, r0
- lsls r1, 24
- lsrs r1, 25
- adds r1, r2
- ldrb r1, [r1]
- mov r8, r1
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x1C]
- cmp r0, 0x6
- bls _0804A368
- bl _0804ACB2
-_0804A368:
- lsls r0, 2
- ldr r1, =_0804A38C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0804A38C:
- .4byte _0804A3A8
- .4byte _0804A414
- .4byte _0804A52E
- .4byte _0804A850
- .4byte _0804A954
- .4byte _0804AC40
- .4byte _0804AC88
-_0804A3A8:
- ldr r4, =gBank1
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0804A3BC
- bl _0804AC7C
-_0804A3BC:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x063f0982
- ands r0, r1
- cmp r0, 0
- beq _0804A3CC
- bl _0804AC7C
-_0804A3CC:
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x1C]
- adds r0, 0x1
- strb r0, [r1, 0x1C]
- ldr r0, =gBattleStruct
- ldr r2, [r0]
- adds r2, 0xDF
- ldr r3, =gBitTable
- ldr r1, =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 _0804ACB2
- .pool
-_0804A414:
- movs r5, 0
- movs r7, 0
-_0804A418:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0804A486
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0804A486
- ldr r0, =gBitTable
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _0804A44C
- adds r5, 0x1
-_0804A44C:
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _0804A478
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x00003226
- adds r0, r2
- ldrb r4, [r0]
- b _0804A480
- .pool
-_0804A478:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
-_0804A480:
- cmp r4, 0x19
- bne _0804A486
- adds r6, 0x1
-_0804A486:
- adds r7, 0x1
- cmp r7, 0x5
- ble _0804A418
- ldr r3, =gBaseStats
- ldr r2, =gBattleMons
- ldr r0, =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 _0804A4FC
- lsrs r4, r0, 17
- adds r0, r4, 0
- adds r1, r5, 0
- bl __divsi3
- mov r1, r9
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bne _0804A4D2
- movs r0, 0x1
- strh r0, [r1]
-_0804A4D2:
- ldr r5, =gUnknown_02024402
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- strh r0, [r5]
- lsls r0, 16
- cmp r0, 0
- bne _0804A516
- movs r0, 0x1
- strh r0, [r5]
- b _0804A516
- .pool
-_0804A4FC:
- adds r0, r1, 0
- adds r1, r5, 0
- bl __divsi3
- mov r2, r9
- strh r0, [r2]
- lsls r0, 16
- cmp r0, 0
- bne _0804A512
- movs r0, 0x1
- strh r0, [r2]
-_0804A512:
- ldr r0, =gUnknown_02024402
- strh r6, [r0]
-_0804A516:
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x1C]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1, 0x1C]
- ldr r1, =gBattleStruct
- ldr r0, [r1]
- strb r2, [r0, 0x10]
- ldr r0, [r1]
- adds r0, 0x53
- mov r4, r8
- strb r4, [r0]
-_0804A52E:
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0804A538
- b _0804ACB2
-_0804A538:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _0804A57C
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003226
- adds r0, r1
- ldrb r4, [r0]
- b _0804A584
- .pool
-_0804A57C:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
-_0804A584:
- ldr r5, =gBattleStruct
- cmp r4, 0x19
- beq _0804A5AC
- ldr r0, [r5]
- adds r1, r0, 0
- adds r1, 0x53
- ldrb r0, [r1]
- movs r2, 0x1
- ands r2, r0
- cmp r2, 0
- bne _0804A5AC
- lsrs r0, 1
- strb r0, [r1]
- ldr r1, =gBattleScripting
- b _0804A5D0
- .pool
-_0804A5AC:
- ldr r0, [r5]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- bne _0804A5E8
- ldr r1, [r5]
- adds r1, 0x53
- ldrb r0, [r1]
- lsrs r0, 1
- strb r0, [r1]
- ldr r1, =gBattleScripting
- movs r2, 0
-_0804A5D0:
- movs r0, 0x5
- strb r0, [r1, 0x1C]
- ldr r0, =gBattleMoveDamage
- str r2, [r0]
- b _0804ACB2
- .pool
-_0804A5E8:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0804A616
- ldr r0, =gBattleMons
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0804A616
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- cmp r0, 0
- bne _0804A616
- bl sub_805EA60
- ldr r0, =0x00000161
- bl PlayBGM
- ldr r1, [r5]
- ldrb r0, [r1, 0x12]
- adds r0, 0x1
- strb r0, [r1, 0x12]
-_0804A616:
- ldr r5, =gBattleStruct
- ldr r0, [r5]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _0804A630
- b _0804A824
-_0804A630:
- ldr r0, [r5]
- adds r0, 0x53
- ldrb r0, [r0]
- movs r3, 0x1
- ands r3, r0
- cmp r3, 0
- beq _0804A664
- ldr r1, =gBattleMoveDamage
- mov r2, r9
- ldrh r0, [r2]
- str r0, [r1]
- mov r9, r1
- b _0804A66A
- .pool
-_0804A664:
- ldr r0, =gBattleMoveDamage
- str r3, [r0]
- mov r9, r0
-_0804A66A:
- cmp r4, 0x19
- bne _0804A67A
- ldr r0, =gUnknown_02024402
- ldrh r1, [r0]
- mov r2, r9
- ldr r0, [r2]
- adds r0, r1
- str r0, [r2]
-_0804A67A:
- cmp r4, 0x28
- bne _0804A68E
- mov r4, r9
- ldr r1, [r4]
- movs r0, 0x96
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
-_0804A68E:
- ldr r5, =gBattleTypeFlags
- ldr r0, [r5]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0804A6AA
- ldr r4, =gBattleMoveDamage
- ldr r1, [r4]
- movs r0, 0x96
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
-_0804A6AA:
- ldr r4, =gBattleStruct
- ldr r0, [r4]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- bl IsTradedMon
- lsls r0, 24
- cmp r0, 0
- beq _0804A714
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _0804A6F8
- ldr r0, [r4]
- ldrb r0, [r0, 0x10]
- cmp r0, 0x2
- bls _0804A6F8
- ldr r7, =0x00000149
- ldr r0, =gBattleMoveDamage
- mov r9, r0
- b _0804A71A
- .pool
-_0804A6F8:
- ldr r4, =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 r9, r4
- b _0804A71A
- .pool
-_0804A714:
- ldr r7, =0x00000149
- ldr r1, =gBattleMoveDamage
- mov r9, r1
-_0804A71A:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0804A786
- ldr r0, =gBattlePartyID
- ldr r1, =gBattleStruct
- ldr r4, [r1]
- ldrh r0, [r0, 0x4]
- adds r5, r1, 0
- ldr r3, =gBitTable
- ldr r2, =gAbsentBankFlags
- ldrb r1, [r4, 0x10]
- cmp r0, r1
- bne _0804A76C
- ldrb r1, [r2]
- ldr r0, [r3, 0x8]
- ands r1, r0
- cmp r1, 0
- bne _0804A76C
- adds r1, r4, 0
- adds r1, 0x8F
- movs r0, 0x2
- strb r0, [r1]
- b _0804A78E
- .pool
-_0804A76C:
- ldrb r2, [r2]
- ldr r0, [r3]
- ands r2, r0
- cmp r2, 0
- bne _0804A77E
- ldr r0, [r5]
- adds r0, 0x8F
- strb r2, [r0]
- b _0804A78E
-_0804A77E:
- ldr r0, [r5]
- adds r0, 0x8F
- movs r1, 0x2
- b _0804A78C
-_0804A786:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x8F
-_0804A78C:
- strb r1, [r0]
-_0804A78E:
- ldr r1, =gBattleTextBuff1
- movs r2, 0
- mov r12, r2
- movs r3, 0xFD
- strb r3, [r1]
- movs r5, 0x4
- strb r5, [r1, 0x1]
- ldr r6, =gBattleStruct
- ldr r2, [r6]
- movs r4, 0x8F
- adds r4, r2
- mov r8, r4
- ldrb r0, [r4]
- strb r0, [r1, 0x2]
- ldrb r0, [r2, 0x10]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, =gBattleTextBuff2
- strb r3, [r1]
- mov r0, r12
- strb r0, [r1, 0x1]
- strb r7, [r1, 0x2]
- movs r4, 0xFF
- lsls r4, 8
- ands r7, r4
- asrs r0, r7, 8
- strb r0, [r1, 0x3]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x4]
- ldr r1, =gBattleTextBuff3
- strb r3, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- strb r5, [r1, 0x2]
- movs r0, 0x5
- strb r0, [r1, 0x3]
- mov r0, r9
- ldr r2, [r0]
- strb r2, [r1, 0x4]
- adds r0, r2, 0
- ands r0, r4
- 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]
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0xD
- bl b_std_message
- ldr r0, [r6]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r3, =gBattleMons
- ldr r1, =gBank1
- ldrb r2, [r1]
- movs r1, 0x58
- muls r1, r2
- adds r1, r3
- ldrh r1, [r1]
- bl MonGainEVs
-_0804A824:
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r1, 0x53
- ldrb r0, [r1]
- lsrs r0, 1
- strb r0, [r1]
- b _0804A92A
- .pool
-_0804A850:
- ldr r0, =gBattleExecBuffer
- ldr r2, [r0]
- cmp r2, 0
- beq _0804A85A
- b _0804ACB2
-_0804A85A:
- ldr r1, =gBattleBufferB
- ldr r7, =gBattleStruct
- ldr r0, [r7]
- adds r0, 0x8F
- ldrb r0, [r0]
- lsls r0, 9
- adds r0, r1
- strb r2, [r0]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0804A92A
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r6
- adds r0, r5
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- beq _0804A92A
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3A
- bl GetMonData
- ldr r4, =gBattleResources
- ldr r1, [r4]
- ldr r1, [r1, 0x10]
- strh r0, [r1]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3B
- bl GetMonData
- ldr r1, [r4]
- ldr r1, [r1, 0x10]
- strh r0, [r1, 0x2]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3C
- bl GetMonData
- ldr r1, [r4]
- ldr r1, [r1, 0x10]
- strh r0, [r1, 0x4]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3D
- bl GetMonData
- ldr r1, [r4]
- ldr r1, [r1, 0x10]
- strh r0, [r1, 0x6]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3E
- bl GetMonData
- ldr r1, [r4]
- ldr r1, [r1, 0x10]
- strh r0, [r1, 0x8]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3F
- bl GetMonData
- ldr r1, [r4]
- ldr r1, [r1, 0x10]
- strh r0, [r1, 0xA]
- ldr r4, =gActiveBank
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0x8F
- ldrb r0, [r0]
- strb r0, [r4]
- ldrb r1, [r1, 0x10]
- ldr r0, =gBattleMoveDamage
- ldrh r2, [r0]
- movs r0, 0
- bl dp01_build_cmdbuf_x19_a_bb
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0804A92A:
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x1C]
- adds r0, 0x1
- strb r0, [r1, 0x1C]
- b _0804ACB2
- .pool
-_0804A954:
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0804A95E
- b _0804ACB2
-_0804A95E:
- ldr r1, =gActiveBank
- ldr r0, =gBattleStruct
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x8F
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r3, =gBattleBufferB
- ldrb r2, [r1]
- lsls r1, r2, 9
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0x21
- beq _0804A97C
- b _0804AC28
-_0804A97C:
- adds r0, r3, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0xB
- beq _0804A988
- b _0804AC28
-_0804A988:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0804A9B2
- ldr r0, =gBattlePartyID
- lsls r1, r2, 1
- adds r1, r0
- ldrh r0, [r1]
- ldrb r4, [r4, 0x10]
- cmp r0, r4
- bne _0804A9B2
- adds r1, r0, 0
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- adds r1, r2, 0
- bl sub_805E990
-_0804A9B2:
- ldr r1, =gBattleTextBuff1
- movs r3, 0xFD
- strb r3, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r6, =gActiveBank
- ldrb r0, [r6]
- strb r0, [r1, 0x2]
- ldr r4, =gBattleStruct
- mov r9, r4
- ldr r2, [r4]
- ldrb r0, [r2, 0x10]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r4, =gBattleTextBuff2
- strb r3, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- strb r0, [r4, 0x2]
- movs r0, 0x3
- strb r0, [r4, 0x3]
- ldrb r0, [r2, 0x10]
- movs r1, 0x64
- mov r8, r1
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldr r7, =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, =gUnknown_03005D54
- ldr r1, =gBitTable
- mov r4, r9
- ldr r5, [r4]
- ldrb r0, [r5, 0x10]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DABBD
- str r0, [r1]
- ldr r4, =gBattleMoveDamage
- ldr r2, =gBattleBufferB
- ldrb r1, [r6]
- 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, [r5, 0x10]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0
- bl AdjustFriendship
- ldr r1, =gBattlePartyID
- mov r2, r9
- ldr r0, [r2]
- ldrb r2, [r0, 0x10]
- ldrh r0, [r1]
- cmp r0, r2
- bne _0804AB1E
- ldr r4, =gBattleMons
- ldrh r0, [r4, 0x28]
- cmp r0, 0
- beq _0804AB1E
- mov r0, r8
- muls r0, r2
- adds r0, r7
- movs r1, 0x38
- bl GetMonData
- adds r1, r4, 0
- adds r1, 0x2A
- strb r0, [r1]
- mov r1, r9
- ldr r0, [r1]
- ldrb r0, [r0, 0x10]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x39
- bl GetMonData
- strh r0, [r4, 0x28]
- mov r1, r9
- ldr r0, [r1]
- ldrb r0, [r0, 0x10]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3A
- bl GetMonData
- strh r0, [r4, 0x2C]
- mov r1, r9
- ldr r0, [r1]
- ldrb r0, [r0, 0x10]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3B
- bl GetMonData
- strh r0, [r4, 0x2]
- mov r1, r9
- ldr r0, [r1]
- ldrb r0, [r0, 0x10]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3C
- bl GetMonData
- strh r0, [r4, 0x4]
- mov r1, r9
- ldr r0, [r1]
- ldrb r0, [r0, 0x10]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3D
- bl GetMonData
- strh r0, [r4, 0x6]
- mov r1, r9
- ldr r0, [r1]
- ldrb r0, [r0, 0x10]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3D
- bl GetMonData
- strh r0, [r4, 0x6]
- mov r1, r9
- ldr r0, [r1]
- ldrb r0, [r0, 0x10]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3E
- bl GetMonData
- strh r0, [r4, 0x8]
- mov r1, r9
- ldr r0, [r1]
- ldrb r0, [r0, 0x10]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3F
- bl GetMonData
- strh r0, [r4, 0xA]
-_0804AB1E:
- ldr r0, =gBattlePartyID
- ldr r7, =gBattleStruct
- ldr r1, [r7]
- ldrb r2, [r1, 0x10]
- ldrh r0, [r0, 0x4]
- cmp r0, r2
- beq _0804AB2E
- b _0804AC2E
-_0804AB2E:
- ldr r6, =gBattleMons
- movs r4, 0xD8
- adds r4, r6
- mov r8, r4
- ldrh r0, [r4]
- cmp r0, 0
- beq _0804AC2E
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0804AC2E
- movs r5, 0x64
- adds r0, r2, 0
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0x38
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xDA
- strb r0, [r1]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r5
- adds r0, r4
- movs r1, 0x39
- bl GetMonData
- mov r1, r8
- strh r0, [r1]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3A
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xDC
- strh r0, [r1]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3B
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xB2
- strh r0, [r1]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3C
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xB4
- strh r0, [r1]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3D
- bl GetMonData
- movs r2, 0xB6
- adds r2, r6
- mov r8, r2
- strh r0, [r2]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3D
- bl GetMonData
- mov r1, r8
- strh r0, [r1]
- ldr r0, [r7]
- ldrb r0, [r0, 0x10]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3E
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xB8
- strh r0, [r1]
- b _0804AC2E
- .pool
-_0804AC28:
- ldr r1, =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
-_0804AC2E:
- ldr r1, =gBattleScripting
- movs r0, 0x5
- strb r0, [r1, 0x1C]
- b _0804ACB2
- .pool
-_0804AC40:
- ldr r0, =gBattleMoveDamage
- ldr r0, [r0]
- cmp r0, 0
- beq _0804AC58
- ldr r1, =gBattleScripting
- movs r0, 0x3
- strb r0, [r1, 0x1C]
- b _0804ACB2
- .pool
-_0804AC58:
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- ldrb r0, [r1, 0x10]
- adds r0, 0x1
- strb r0, [r1, 0x10]
- ldr r0, [r2]
- ldrb r0, [r0, 0x10]
- cmp r0, 0x5
- bhi _0804AC7C
- ldr r1, =gBattleScripting
- movs r0, 0x2
- strb r0, [r1, 0x1C]
- b _0804ACB2
- .pool
-_0804AC7C:
- ldr r1, =gBattleScripting
- movs r0, 0x6
- strb r0, [r1, 0x1C]
- b _0804ACB2
- .pool
-_0804AC88:
- ldr r0, =gBattleExecBuffer
- ldr r5, [r0]
- cmp r5, 0
- bne _0804ACB2
- ldr r4, =gBattleMons
- ldr r2, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0804ACB2:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk23_getexp
-
- thumb_func_start atk24
-atk24: @ 804ACD0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0804ACE2
- b _0804AF22
-_0804ACE2:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _0804AD48
- ldr r0, =gPartnerTrainerId
- ldrh r1, [r0]
- ldr r0, =0x00000c03
- cmp r1, r0
- bne _0804AD48
- movs r5, 0
-_0804ACFC:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0804AD2C
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804AD2C
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r0, r6, r0
- lsls r0, 16
- lsrs r6, r0, 16
-_0804AD2C:
- adds r5, 0x1
- cmp r5, 0x2
- ble _0804ACFC
- b _0804ADA8
- .pool
-_0804AD48:
- movs r5, 0
-_0804AD4A:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0804ADA2
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804ADA2
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _0804AD94
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- movs r1, 0xA8
- lsls r1, 2
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0804ADA2
-_0804AD94:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r0, r6, r0
- lsls r0, 16
- lsrs r6, r0, 16
-_0804ADA2:
- adds r5, 0x1
- cmp r5, 0x5
- ble _0804AD4A
-_0804ADA8:
- cmp r6, 0
- bne _0804ADB6
- ldr r0, =gBattleOutcome
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
-_0804ADB6:
- movs r6, 0
- movs r5, 0
-_0804ADBA:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0804AE10
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804AE10
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _0804AE02
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldr r1, =0x000002a1
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0804AE10
-_0804AE02:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r0, r6, r0
- lsls r0, 16
- lsrs r6, r0, 16
-_0804AE10:
- adds r5, 0x1
- cmp r5, 0x5
- ble _0804ADBA
- ldr r2, =gBattleOutcome
- cmp r6, 0
- bne _0804AE24
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_0804AE24:
- ldrb r0, [r2]
- cmp r0, 0
- bne _0804AF1A
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r2, =0x02000002
- ands r1, r2
- mov r8, r0
- cmp r1, 0
- beq _0804AF1A
- movs r3, 0
- movs r5, 0
- ldr r0, =gNoOfAllBanks
- ldrb r1, [r0]
- mov r12, r0
- ldr r7, =gBattlescriptCurrInstr
- cmp r3, r1
- bge _0804AE70
- ldr r0, =gHitMarker
- movs r6, 0x80
- lsls r6, 21
- ldr r4, [r0]
- adds r2, r1, 0
- ldr r1, =gSpecialStatuses
-_0804AE54:
- adds r0, r6, 0
- lsls r0, r5
- ands r0, r4
- cmp r0, 0
- beq _0804AE68
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _0804AE68
- adds r3, 0x1
-_0804AE68:
- adds r1, 0x28
- adds r5, 0x2
- cmp r5, r2
- blt _0804AE54
-_0804AE70:
- movs r2, 0
- movs r5, 0x1
- mov r4, r12
- ldrb r1, [r4]
- cmp r5, r1
- bge _0804AEAA
- ldr r0, =gHitMarker
- movs r4, 0x80
- lsls r4, 21
- mov r12, r4
- ldr r6, [r0]
- ldr r0, =gSpecialStatuses
- adds r4, r1, 0
- adds r1, r0, 0
- adds r1, 0x14
-_0804AE8E:
- mov r0, r12
- lsls r0, r5
- ands r0, r6
- cmp r0, 0
- beq _0804AEA2
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _0804AEA2
- adds r2, 0x1
-_0804AEA2:
- adds r1, 0x28
- adds r5, 0x2
- cmp r5, r4
- blt _0804AE8E
-_0804AEAA:
- mov r1, r8
- ldr r0, [r1]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804AEF0
- adds r0, r2, r3
- cmp r0, 0x1
- bgt _0804AEF8
- b _0804AF12
- .pool
-_0804AEF0:
- cmp r2, 0
- beq _0804AF12
- cmp r3, 0
- beq _0804AF12
-_0804AEF8:
- 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 _0804AF22
-_0804AF12:
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- b _0804AF22
-_0804AF1A:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0804AF22:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk24
-
- thumb_func_start sub_804AF30
-sub_804AF30: @ 804AF30
- ldr r1, =gBattleMoveFlags
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gBattleScripting
- movs r2, 0
- movs r1, 0x1
- strb r1, [r0, 0xE]
- ldr r0, =gCritMultiplier
- strb r1, [r0]
- ldr r0, =gBattleCommunication
- strb r2, [r0, 0x3]
- strb r2, [r0, 0x6]
- ldr r2, =gHitMarker
- ldr r0, [r2]
- subs r1, 0x42
- ands r0, r1
- ldr r1, =0xffffbfff
- ands r0, r1
- str r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_804AF30
-
- thumb_func_start atk25_move_values_cleanup
-atk25_move_values_cleanup: @ 804AF70
- push {lr}
- bl sub_804AF30
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk25_move_values_cleanup
-
- thumb_func_start atk26_set_multihit
-atk26_set_multihit: @ 804AF88
- ldr r3, =gUnknown_02024212
- ldr r2, =gBattlescriptCurrInstr
- ldr r0, [r2]
- ldrb r1, [r0, 0x1]
- strb r1, [r3]
- adds r0, 0x2
- str r0, [r2]
- bx lr
- .pool
- thumb_func_end atk26_set_multihit
-
- thumb_func_start atk27_decrement_multihit
-atk27_decrement_multihit: @ 804AFA0
- push {lr}
- ldr r1, =gUnknown_02024212
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _0804AFC4
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0804AFDE
- .pool
-_0804AFC4:
- ldr r3, =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]
-_0804AFDE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk27_decrement_multihit
-
- thumb_func_start atk28_goto
-atk28_goto: @ 804AFE8
- ldr r3, =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
- .pool
- thumb_func_end atk28_goto
-
- thumb_func_start atk29_jumpifbyte
-atk29_jumpifbyte: @ 804B008
- push {r4-r6,lr}
- ldr r3, =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 _0804B0A0
- lsls r0, r6, 2
- ldr r1, =_0804B054
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0804B054:
- .4byte _0804B06C
- .4byte _0804B074
- .4byte _0804B07C
- .4byte _0804B084
- .4byte _0804B08C
- .4byte _0804B096
-_0804B06C:
- ldrb r0, [r5]
- cmp r0, r4
- bne _0804B0A0
- b _0804B09E
-_0804B074:
- ldrb r0, [r5]
- cmp r0, r4
- beq _0804B0A0
- b _0804B09E
-_0804B07C:
- ldrb r0, [r5]
- cmp r0, r4
- bls _0804B0A0
- b _0804B09E
-_0804B084:
- ldrb r0, [r5]
- cmp r0, r4
- bcs _0804B0A0
- b _0804B09E
-_0804B08C:
- ldrb r0, [r5]
- ands r4, r0
- cmp r4, 0
- beq _0804B0A0
- b _0804B09E
-_0804B096:
- ldrb r0, [r5]
- ands r4, r0
- cmp r4, 0
- bne _0804B0A0
-_0804B09E:
- str r2, [r3]
-_0804B0A0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk29_jumpifbyte
-
- thumb_func_start atk2A_jumpifhalfword
-atk2A_jumpifhalfword: @ 804B0A8
- push {r4-r6,lr}
- ldr r3, =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 _0804B148
- lsls r0, r6, 2
- ldr r1, =_0804B0FC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0804B0FC:
- .4byte _0804B114
- .4byte _0804B11C
- .4byte _0804B124
- .4byte _0804B12C
- .4byte _0804B134
- .4byte _0804B13E
-_0804B114:
- ldrh r0, [r5]
- cmp r0, r4
- bne _0804B148
- b _0804B146
-_0804B11C:
- ldrh r0, [r5]
- cmp r0, r4
- beq _0804B148
- b _0804B146
-_0804B124:
- ldrh r0, [r5]
- cmp r0, r4
- bls _0804B148
- b _0804B146
-_0804B12C:
- ldrh r0, [r5]
- cmp r0, r4
- bcs _0804B148
- b _0804B146
-_0804B134:
- ldrh r0, [r5]
- ands r4, r0
- cmp r4, 0
- beq _0804B148
- b _0804B146
-_0804B13E:
- ldrh r0, [r5]
- ands r4, r0
- cmp r4, 0
- bne _0804B148
-_0804B146:
- str r2, [r3]
-_0804B148:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk2A_jumpifhalfword
-
- thumb_func_start atk2B_jumpifword
-atk2B_jumpifword: @ 804B150
- push {r4-r6,lr}
- ldr r3, =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 _0804B1FC
- lsls r0, r6, 2
- ldr r1, =_0804B1B0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0804B1B0:
- .4byte _0804B1C8
- .4byte _0804B1D0
- .4byte _0804B1D8
- .4byte _0804B1E0
- .4byte _0804B1E8
- .4byte _0804B1F2
-_0804B1C8:
- ldr r0, [r5]
- cmp r0, r4
- bne _0804B1FC
- b _0804B1FA
-_0804B1D0:
- ldr r0, [r5]
- cmp r0, r4
- beq _0804B1FC
- b _0804B1FA
-_0804B1D8:
- ldr r0, [r5]
- cmp r0, r4
- bls _0804B1FC
- b _0804B1FA
-_0804B1E0:
- ldr r0, [r5]
- cmp r0, r4
- bcs _0804B1FC
- b _0804B1FA
-_0804B1E8:
- ldr r0, [r5]
- ands r0, r4
- cmp r0, 0
- beq _0804B1FC
- b _0804B1FA
-_0804B1F2:
- ldr r0, [r5]
- ands r0, r4
- cmp r0, 0
- bne _0804B1FC
-_0804B1FA:
- str r2, [r3]
-_0804B1FC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk2B_jumpifword
-
- thumb_func_start atk2C_jumpifarrayequal
-atk2C_jumpifarrayequal: @ 804B204
- push {r4-r7,lr}
- ldr r2, =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 _0804B27C
- ldrb r0, [r5]
- ldrb r7, [r4]
- cmp r0, r7
- beq _0804B260
- adds r0, r3, 0
- b _0804B278
- .pool
-_0804B260:
- adds r5, 0x1
- adds r4, 0x1
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r6
- bcs _0804B27C
- ldrb r0, [r5]
- ldrb r3, [r4]
- cmp r0, r3
- beq _0804B260
- ldr r0, [r2]
-_0804B278:
- adds r0, 0xE
- str r0, [r2]
-_0804B27C:
- cmp r1, r6
- bne _0804B284
- mov r7, r12
- str r7, [r2]
-_0804B284:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk2C_jumpifarrayequal
-
- thumb_func_start atk2D_jumpifarraynotequal
-atk2D_jumpifarraynotequal: @ 804B28C
- push {r4-r7,lr}
- movs r7, 0
- ldr r3, =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 _0804B2F6
-_0804B2DA:
- ldrb r0, [r5]
- ldrb r2, [r4]
- cmp r0, r2
- bne _0804B2E8
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_0804B2E8:
- adds r5, 0x1
- adds r4, 0x1
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r6
- bcc _0804B2DA
-_0804B2F6:
- cmp r7, r6
- beq _0804B304
- mov r0, r12
- b _0804B308
- .pool
-_0804B304:
- ldr r0, [r3]
- adds r0, 0xE
-_0804B308:
- str r0, [r3]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk2D_jumpifarraynotequal
-
- thumb_func_start atk2E_setbyte
-atk2E_setbyte: @ 804B310
- ldr r3, =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
- .pool
- thumb_func_end atk2E_setbyte
-
- thumb_func_start atk2F_addbyte
-atk2F_addbyte: @ 804B338
- ldr r3, =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
- .pool
- thumb_func_end atk2F_addbyte
-
- thumb_func_start atk30_subbyte
-atk30_subbyte: @ 804B364
- ldr r3, =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
- .pool
- thumb_func_end atk30_subbyte
-
- thumb_func_start atk31_copyarray
-atk31_copyarray: @ 804B390
- push {r4-r6,lr}
- ldr r3, =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 _0804B3D4
-_0804B3C6:
- adds r0, r6, r2
- adds r1, r5, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, r4
- blt _0804B3C6
-_0804B3D4:
- ldr r0, [r3]
- adds r0, 0xA
- str r0, [r3]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk31_copyarray
-
- thumb_func_start atk32_copyarray_withindex
-atk32_copyarray_withindex: @ 804B3E4
- push {r4-r7,lr}
- ldr r3, =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 _0804B440
-_0804B42E:
- 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 _0804B42E
-_0804B440:
- ldr r0, [r3]
- adds r0, 0xE
- str r0, [r3]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk32_copyarray_withindex
-
- thumb_func_start atk33_orbyte
-atk33_orbyte: @ 804B450
- ldr r3, =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
- .pool
- thumb_func_end atk33_orbyte
-
- thumb_func_start atk34_orhalfword
-atk34_orhalfword: @ 804B47C
- push {r4,lr}
- ldr r4, =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
- .pool
- thumb_func_end atk34_orhalfword
-
- thumb_func_start atk35_orword
-atk35_orword: @ 804B4B4
- push {r4,lr}
- ldr r4, =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
- .pool
- thumb_func_end atk35_orword
-
- thumb_func_start atk36_bicbyte
-atk36_bicbyte: @ 804B4F8
- ldr r3, =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
- .pool
- thumb_func_end atk36_bicbyte
-
- thumb_func_start atk37_bichalfword
-atk37_bichalfword: @ 804B524
- push {r4,lr}
- ldr r4, =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
- .pool
- thumb_func_end atk37_bichalfword
-
- thumb_func_start atk38_bicword
-atk38_bicword: @ 804B55C
- push {r4,lr}
- ldr r4, =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
- .pool
- thumb_func_end atk38_bicword
-
- thumb_func_start atk39_pause
-atk39_pause: @ 804B5A0
- push {r4,r5,lr}
- ldr r0, =gBattleExecBuffer
- ldr r4, [r0]
- cmp r4, 0
- bne _0804B5CC
- ldr r5, =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r3, =gUnknown_0202432C
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bcc _0804B5CC
- strh r4, [r3]
- adds r0, r2, 0x3
- str r0, [r5]
-_0804B5CC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk39_pause
-
- thumb_func_start atk3A_waitstate
-atk3A_waitstate: @ 804B5E0
- push {lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804B5F2
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0804B5F2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk3A_waitstate
-
- thumb_func_start atk3B_healthbar_update
-atk3B_healthbar_update: @ 804B600
- push {lr}
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0804B620
- ldr r0, =gActiveBank
- ldr r1, =gBankTarget
- b _0804B624
- .pool
-_0804B620:
- ldr r0, =gActiveBank
- ldr r1, =gBankAttacker
-_0804B624:
- ldrb r1, [r1]
- strb r1, [r0]
- ldr r0, =gBattleMoveDamage
- ldrh r1, [r0]
- movs r0, 0
- bl dp01_build_cmdbuf_x18_0_aa_health_bar_update
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk3B_healthbar_update
-
- thumb_func_start atk3C_return
-atk3C_return: @ 804B658
- push {lr}
- bl b_movescr_stack_pop_cursor
- pop {r0}
- bx r0
- thumb_func_end atk3C_return
-
- thumb_func_start atk3D_end
-atk3D_end: @ 804B664
- push {lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _0804B67C
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl sub_81A5718
-_0804B67C:
- ldr r0, =gBattleMoveFlags
- movs r1, 0
- strb r1, [r0]
- ldr r0, =gActiveBank
- strb r1, [r0]
- ldr r1, =gFightStateTracker
- movs r0, 0xB
- strb r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk3D_end
-
- thumb_func_start atk3E_end2
-atk3E_end2: @ 804B6A4
- ldr r1, =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gFightStateTracker
- movs r0, 0xB
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end atk3E_end2
-
- thumb_func_start atk3F_end3
-atk3F_end3: @ 804B6BC
- push {lr}
- bl b_movescr_stack_pop_cursor
- ldr r3, =gBattleResources
- ldr r0, [r3]
- ldr r0, [r0, 0xC]
- adds r1, r0, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0
- beq _0804B6D6
- subs r0, 0x1
- strb r0, [r1]
-_0804B6D6:
- ldr r2, =gBattleMainFunc
- ldr r0, [r3]
- ldr r1, [r0, 0xC]
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 2
- adds r1, r0
- ldr r0, [r1]
- str r0, [r2]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk3F_end3
-
- thumb_func_start atk41_call
-atk41_call: @ 804B6F8
- push {r4,lr}
- ldr r4, =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
- .pool
- thumb_func_end atk41_call
-
- thumb_func_start atk42_jumpiftype2
-atk42_jumpiftype2: @ 804B728
- push {r4,lr}
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [r4]
- ldr r2, =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 _0804B756
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r2, r0
- bne _0804B778
-_0804B756:
- 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 _0804B77C
- .pool
-_0804B778:
- adds r0, r3, 0x7
- str r0, [r4]
-_0804B77C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk42_jumpiftype2
-
- thumb_func_start atk43_jumpifabilitypresent
-atk43_jumpifabilitypresent: @ 804B784
- push {r4,lr}
- sub sp, 0x4
- ldr r4, =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 _0804B7C0
- 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 _0804B7C6
- .pool
-_0804B7C0:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_0804B7C6:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk43_jumpifabilitypresent
-
- thumb_func_start atk44
-atk44: @ 804B7D0
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x54
- movs r1, 0x1
- strb r1, [r0]
- bx lr
- .pool
- thumb_func_end atk44
-
- thumb_func_start atk45_playanimation
-atk45_playanimation: @ 804B7EC
- push {r4-r6,lr}
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r6, =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 _0804B822
- cmp r0, 0x11
- beq _0804B822
- cmp r0, 0x2
- bne _0804B848
-_0804B822:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x2]
- ldrh r2, [r3]
- movs r0, 0
- bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- b _0804B8AA
- .pool
-_0804B848:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804B868
- adds r0, r2, 0x7
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DABB9
- b _0804B8A8
- .pool
-_0804B868:
- adds r0, r4, 0
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _0804B894
- ldr r1, =gStatuses3
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _0804B894
- adds r0, r2, 0x7
- b _0804B8A8
- .pool
-_0804B894:
- ldrb r1, [r2, 0x2]
- ldrh r2, [r3]
- movs r0, 0
- bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
- ldrb r0, [r6]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x7
-_0804B8A8:
- str r0, [r5]
-_0804B8AA:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk45_playanimation
-
- thumb_func_start atk46_playanimation2
-atk46_playanimation2: @ 804B8B0
- push {r4-r7,lr}
- ldr r6, =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r7, =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 _0804B8FA
- cmp r0, 0x11
- beq _0804B8FA
- cmp r0, 0x2
- bne _0804B920
-_0804B8FA:
- ldrb r1, [r3]
- ldrh r2, [r4]
- movs r0, 0
- bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
- b _0804B976
- .pool
-_0804B920:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804B934
- adds r0, r2, 0
- b _0804B972
- .pool
-_0804B934:
- adds r0, r5, 0
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _0804B960
- ldr r1, =gStatuses3
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _0804B960
- adds r0, r2, 0
- b _0804B972
- .pool
-_0804B960:
- ldrb r1, [r3]
- ldrh r2, [r4]
- movs r0, 0
- bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r0, [r6]
-_0804B972:
- adds r0, 0xA
- str r0, [r6]
-_0804B976:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk46_playanimation2
-
- thumb_func_start atk47_setgraphicalstatchangevalues
-atk47_setgraphicalstatchangevalues: @ 804B97C
- push {r4,lr}
- movs r3, 0
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x1A]
- movs r2, 0xF0
- ands r2, r0
- adds r4, r1, 0
- cmp r2, 0x20
- beq _0804B9AA
- cmp r2, 0x20
- bgt _0804B99C
- cmp r2, 0x10
- beq _0804B9A6
- b _0804B9B4
- .pool
-_0804B99C:
- cmp r2, 0x90
- beq _0804B9AE
- cmp r2, 0xA0
- beq _0804B9B2
- b _0804B9B4
-_0804B9A6:
- movs r3, 0xF
- b _0804B9B4
-_0804B9AA:
- movs r3, 0x27
- b _0804B9B4
-_0804B9AE:
- movs r3, 0x16
- b _0804B9B4
-_0804B9B2:
- movs r3, 0x2E
-_0804B9B4:
- ldrb r1, [r4, 0x1A]
- movs r0, 0xF
- ands r0, r1
- adds r0, r3, r0
- subs r0, 0x1
- movs r1, 0
- strb r0, [r4, 0x10]
- strb r1, [r4, 0x11]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk47_setgraphicalstatchangevalues
-
- thumb_func_start atk48_playstatchangeanimation
-atk48_playstatchangeanimation: @ 804B9D8
- 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, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- str r3, [sp]
- bl get_battle_side_of_something
- ldr r2, =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 _0804BAEC
- movs r0, 0x2
- ands r0, r1
- movs r1, 0x15
- cmp r0, 0
- beq _0804BA18
- movs r1, 0x2D
-_0804BA18:
- cmp r4, 0
- beq _0804BAC0
- movs r0, 0x1
- mov r10, r0
- ldr r0, =gBattleMons + 0x18
- mov r9, r0
- lsls r5, r1, 16
-_0804BA26:
- adds r0, r4, 0
- mov r1, r10
- ands r0, r1
- cmp r0, 0
- beq _0804BAB2
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x3]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0804BA58
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7, r0
- b _0804BAA0
- .pool
-_0804BA58:
- ldr r6, =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, =gSideTimers
- adds r0, r1
- ldrb r0, [r0, 0x4]
- ldr r3, [sp]
- cmp r0, 0
- bne _0804BAB2
- ldr r0, =gBattleMons
- ldrb r2, [r6]
- movs r1, 0x58
- muls r2, r1
- adds r0, r2, r0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1D
- beq _0804BAB2
- cmp r0, 0x49
- beq _0804BAB2
- cmp r0, 0x33
- bne _0804BA96
- cmp r7, 0x6
- beq _0804BAB2
-_0804BA96:
- cmp r0, 0x34
- bne _0804BA9E
- cmp r7, 0x1
- beq _0804BAB2
-_0804BA9E:
- adds r0, r7, r2
-_0804BAA0:
- add r0, r9
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _0804BAB2
- lsrs r0, r5, 16
- mov r8, r0
- adds r3, 0x1
-_0804BAB2:
- lsrs r4, 1
- movs r1, 0x80
- lsls r1, 9
- adds r5, r1
- adds r7, 0x1
- cmp r4, 0
- bne _0804BA26
-_0804BAC0:
- ldr r0, =gBattlescriptCurrInstr
- mov r9, r0
- cmp r3, 0x1
- ble _0804BB4E
- ldr r0, [r0]
- ldrb r1, [r0, 0x3]
- movs r0, 0x2
- ands r0, r1
- movs r1, 0x39
- mov r8, r1
- cmp r0, 0
- beq _0804BB4E
- movs r0, 0x3A
- b _0804BB4C
- .pool
-_0804BAEC:
- movs r0, 0x2
- ands r0, r1
- movs r1, 0xE
- cmp r0, 0
- beq _0804BAF8
- movs r1, 0x26
-_0804BAF8:
- mov r9, r5
- cmp r4, 0
- beq _0804BB34
- ldr r6, =gBattleMons + 0x18
- adds r5, r2, 0
- lsls r2, r1, 16
-_0804BB04:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _0804BB26
- 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 _0804BB26
- lsrs r1, r2, 16
- mov r8, r1
- adds r3, 0x1
-_0804BB26:
- lsrs r4, 1
- movs r0, 0x80
- lsls r0, 9
- adds r2, r0
- adds r7, 0x1
- cmp r4, 0
- bne _0804BB04
-_0804BB34:
- cmp r3, 0x1
- ble _0804BB4E
- 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 _0804BB4E
- movs r0, 0x38
-_0804BB4C:
- mov r8, r0
-_0804BB4E:
- mov r1, r9
- ldr r2, [r1]
- ldrb r1, [r2, 0x3]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0804BB6C
- cmp r3, 0x1
- bgt _0804BB6C
- adds r0, r2, 0x4
- mov r1, r9
- b _0804BBBA
- .pool
-_0804BB6C:
- cmp r3, 0
- beq _0804BBB4
- ldr r4, =gBattleScripting
- ldrb r0, [r4, 0x1B]
- cmp r0, 0
- bne _0804BBB4
- movs r0, 0
- movs r1, 0x1
- mov r2, r8
- str r3, [sp]
- bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x3]
- movs r0, 0x4
- ands r0, r1
- ldr r3, [sp]
- cmp r0, 0
- beq _0804BBA4
- cmp r3, 0x1
- ble _0804BBA4
- movs r0, 0x1
- strb r0, [r4, 0x1B]
-_0804BBA4:
- ldr r1, =gBattlescriptCurrInstr
- b _0804BBB6
- .pool
-_0804BBB4:
- mov r1, r9
-_0804BBB6:
- ldr r0, [r1]
- adds r0, 0x4
-_0804BBBA:
- 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 atk49_moveendturn
-atk49_moveendturn: @ 804BBCC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- movs r0, 0
- mov r10, r0
- ldr r2, =gUnknown_020241EC
- ldrh r1, [r2]
- ldr r0, =0x0000ffff
- movs r3, 0
- str r3, [sp, 0x18]
- cmp r1, r0
- beq _0804BBEE
- ldrh r2, [r2]
- str r2, [sp, 0x18]
-_0804BBEE:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r4, [r0, 0x1]
- str r4, [sp, 0x10]
- ldrb r0, [r0, 0x2]
- str r0, [sp, 0x14]
- ldr r1, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0804BC34
- ldr r1, =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x7]
- b _0804BC3E
- .pool
-_0804BC34:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r0, 24
-_0804BC3E:
- str r0, [sp, 0x8]
- ldr r1, =gBattleStruct
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, 0xC8
- ldr r1, [r1]
- adds r0, r1, r0
- str r0, [sp, 0xC]
- ldrb r0, [r1, 0x13]
- cmp r0, 0
- beq _0804BCF0
- movs r5, 0x3F
- ands r5, r0
- str r5, [sp, 0x4]
- b _0804BD02
- .pool
-_0804BC68:
- ldr r4, =gActiveBank
- strb r2, [r4]
- movs r0, 0
- movs r1, 0x1
- bl dp01_build_cmdbuf_x33_a_33_33
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _0804C15A
- .pool
-_0804BC80:
- ldr r4, =gActiveBank
- strb r2, [r4]
- movs r0, 0
- movs r1, 0
- bl dp01_build_cmdbuf_x33_a_33_33
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r5
- ldr r0, [r1]
- ldr r2, =0xfffbff3f
- ands r0, r2
- str r0, [r1]
- b _0804C15A
- .pool
-_0804BCAC:
- strb r2, [r7]
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- ldr r0, =gBattleScripting
- strb r4, [r0, 0x14]
- bl sub_804AF30
- ldr r2, =gUnknown_082D86A8
- mov r0, r8
- ldrh r1, [r0]
- 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, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB87D
- bl _0804C5B8
- .pool
-_0804BCF0:
- ldr r2, =gBattleMoves
- ldr r0, =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]
-_0804BD02:
- ldr r1, =gBattleScripting
- mov r12, r1
- b _0804BD1E
- .pool
-_0804BD14:
- mov r2, r10
- cmp r2, 0
- beq _0804BD1E
- bl _0804C5A4
-_0804BD1E:
- mov r3, r12
- ldrb r0, [r3, 0x14]
- cmp r0, 0x11
- bls _0804BD2A
- bl _0804C570
-_0804BD2A:
- lsls r0, 2
- ldr r1, =_0804BD38
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0804BD38:
- .4byte _0804BD80
- .4byte _0804BE5C
- .4byte _0804BF18
- .4byte _0804BF3C
- .4byte _0804BF54
- .4byte _0804BF7C
- .4byte _0804BFA0
- .4byte _0804C048
- .4byte _0804C0BE
- .4byte _0804C0F4
- .4byte _0804C194
- .4byte _0804C088
- .4byte _0804C0A8
- .4byte _0804C1D8
- .4byte _0804C21C
- .4byte _0804C3FC
- .4byte _0804C4E4
- .4byte _0804C570
-_0804BD80:
- ldr r6, =gBattleMons
- ldr r5, =gBankTarget
- ldrb r3, [r5]
- movs r7, 0x58
- adds r2, r3, 0
- muls r2, r7
- adds r0, r6, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 16
- ands r0, r1
- cmp r0, 0
- bne _0804BDA0
- b _0804C184
-_0804BDA0:
- adds r0, r2, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0804BDAA
- b _0804C184
-_0804BDAA:
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- cmp r1, r3
- bne _0804BDB4
- b _0804C184
-_0804BDB4:
- adds r0, r1, 0
- bl GetBankSide
- adds r4, r0, 0
- ldrb r0, [r5]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _0804BDCC
- b _0804C184
-_0804BDCC:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0804BDDA
- b _0804C184
-_0804BDDA:
- ldr r2, =gSpecialStatuses
- ldrb r3, [r5]
- lsls r0, r3, 2
- adds r0, r3
- lsls r1, r0, 2
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0804BDFE
- adds r0, r2, 0
- adds r0, 0xC
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0804BDFE
- b _0804C184
-_0804BDFE:
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0804BE14
- b _0804C184
-_0804BE14:
- adds r0, r3, 0
- muls r0, r7
- adds r1, r0, r6
- ldrb r2, [r1, 0x19]
- movs r0, 0x19
- ldrsb r0, [r1, r0]
- cmp r0, 0xB
- ble _0804BE26
- b _0804C184
-_0804BE26:
- adds r0, r2, 0x1
- strb r0, [r1, 0x19]
- bl b_movescr_stack_push_cursor
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAE0D
- str r0, [r1]
- b _0804C0B8
- .pool
-_0804BE5C:
- ldr r4, =gBattleMons
- ldr r6, =gBankTarget
- ldrb r2, [r6]
- movs r5, 0x58
- mov r12, r5
- mov r1, r12
- muls r1, r2
- adds r7, r4, 0
- adds r7, 0x4C
- adds r5, r1, r7
- ldr r3, [r5]
- movs r0, 0x20
- ands r0, r3
- cmp r0, 0
- bne _0804BE7C
- b _0804C184
-_0804BE7C:
- adds r0, r1, r4
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0804BE86
- b _0804C184
-_0804BE86:
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- cmp r0, r2
- bne _0804BE90
- b _0804C184
-_0804BE90:
- ldr r0, =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r0, 0xC
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _0804BEA4
- b _0804C184
-_0804BEA4:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0804BEB2
- b _0804C184
-_0804BEB2:
- ldr r0, [sp, 0x4]
- cmp r0, 0xA
- beq _0804BEBA
- b _0804C184
-_0804BEBA:
- movs r0, 0x21
- negs r0, r0
- ands r3, r0
- str r3, [r5]
- ldr r4, =gActiveBank
- ldrb r0, [r6]
- strb r0, [r4]
- ldrb r0, [r6]
- 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, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB282
- str r0, [r1]
- movs r2, 0x1
- mov r10, r2
- b _0804C184
- .pool
-_0804BF18:
- ldr r0, =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
- bne _0804BF32
- b _0804C184
-_0804BF32:
- movs r3, 0x1
- mov r10, r3
- b _0804C184
- .pool
-_0804BF3C:
- ldr r0, =gBankTarget
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x4
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- b _0804C0B2
- .pool
-_0804BF54:
- 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
- bne _0804BF6C
- b _0804C184
-_0804BF6C:
- movs r5, 0x1
- mov r10, r5
- ldr r0, =gBattleScripting
- mov r12, r0
- b _0804C570
- .pool
-_0804BF7C:
- ldr r0, =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 _0804BF96
- b _0804C184
-_0804BF96:
- movs r1, 0x1
- mov r10, r1
- b _0804C184
- .pool
-_0804BFA0:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _0804BFE4
- ldr r2, [sp, 0x8]
- cmp r2, 0x1D
- bne _0804BFE4
- ldr r0, =gUnknown_020241EC
- ldrh r2, [r0]
- adds r3, r0, 0
- cmp r2, 0xA5
- beq _0804BFE4
- ldr r4, [sp, 0xC]
- ldrh r1, [r4]
- cmp r1, 0
- beq _0804BFCC
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _0804BFE4
-_0804BFCC:
- cmp r2, 0xE2
- bne _0804BFDE
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0804BFDE
- b _0804C4B6
-_0804BFDE:
- ldrh r0, [r3]
- ldr r1, [sp, 0xC]
- strh r0, [r1]
-_0804BFE4:
- movs r4, 0
- ldr r2, =gBattleMons
- ldr r3, =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 _0804C01C
- mov r6, r9
- movs r3, 0x58
- adds r5, r1, 0
-_0804C006:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _0804C01C
- lsls r0, r4, 1
- ldrb r1, [r6]
- muls r1, r3
- adds r0, r1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r5
- bne _0804C006
-_0804C01C:
- cmp r4, 0x4
- bne _0804C026
- movs r0, 0
- ldr r1, [sp, 0xC]
- strh r0, [r1]
-_0804C026:
- mov r2, r12
- ldrb r0, [r2, 0x14]
- adds r0, 0x1
- strb r0, [r2, 0x14]
- b _0804C570
- .pool
-_0804C048:
- movs r4, 0
- ldr r0, =gNoOfAllBanks
- ldrb r3, [r0]
- cmp r4, r3
- blt _0804C054
- b _0804C202
-_0804C054:
- ldr r7, =gBattleStruct
- movs r6, 0
- movs r3, 0xD0
- adds r5, r0, 0
- ldr r2, =gBattleMons
-_0804C05E:
- ldr r0, [r7]
- adds r0, r3
- ldrh r1, [r0]
- cmp r1, 0
- beq _0804C06C
- strh r1, [r2, 0x2E]
- strh r6, [r0]
-_0804C06C:
- adds r3, 0x2
- adds r2, 0x58
- adds r4, 0x1
- ldrb r0, [r5]
- cmp r4, r0
- blt _0804C05E
- b _0804C202
- .pool
-_0804C088:
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ItemBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0804C184
- movs r2, 0x1
- mov r10, r2
- ldr r3, =gBattleScripting
- mov r12, r3
- b _0804C570
- .pool
-_0804C0A8:
- movs r0, 0x4
- movs r1, 0
- movs r2, 0
- bl ItemBattleEffects
-_0804C0B2:
- lsls r0, 24
- cmp r0, 0
- beq _0804C184
-_0804C0B8:
- movs r4, 0x1
- mov r10, r4
- b _0804C184
-_0804C0BE:
- ldr r1, =gStatuses3
- ldr r0, =gBankAttacker
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _0804C0D4
- b _0804C4B6
-_0804C0D4:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804C0E2
- b _0804BC68
-_0804C0E2:
- b _0804C4B6
- .pool
-_0804C0F4:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0804C120
- ldr r1, =gStatuses3
- ldr r0, =gBankAttacker
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _0804C120
- adds r0, r2, 0
- bl sub_803F90C
- lsls r0, 24
- cmp r0, 0
- beq _0804C184
-_0804C120:
- ldr r4, =gActiveBank
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- bl dp01_build_cmdbuf_x33_a_33_33
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, =gStatuses3
- ldrb r2, [r5]
- lsls r2, 2
- adds r2, r0
- ldr r0, [r2]
- ldr r1, =0xfffbff3f
- ands r0, r1
- str r0, [r2]
- ldr r2, =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]
-_0804C15A:
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x14]
- adds r0, 0x1
- strb r0, [r1, 0x14]
- b _0804C5BA
- .pool
-_0804C184:
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x14]
- adds r0, 0x1
- strb r0, [r1, 0x14]
- mov r12, r1
- b _0804C570
- .pool
-_0804C194:
- ldr r0, =gSpecialStatuses
- ldr r6, =gBankTarget
- ldrb r2, [r6]
- lsls r3, r2, 2
- adds r1, r3, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 29
- cmp r0, 0
- blt _0804C202
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r2, r0
- bcs _0804C202
- ldr r5, =gStatuses3
- adds r0, r3, r5
- ldr r0, [r0]
- ldr r1, =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _0804C1C2
- b _0804BC80
-_0804C1C2:
- b _0804C202
- .pool
-_0804C1D8:
- movs r4, 0
- ldr r0, =gNoOfAllBanks
- ldrb r2, [r0]
- cmp r4, r2
- bge _0804C202
- ldr r2, =gDisableStructs
- ldr r5, =0xfeffffff
- adds r3, r0, 0
- ldr r1, =gBattleMons + 0x50
-_0804C1EA:
- ldrb r0, [r2, 0xA]
- cmp r0, 0
- bne _0804C1F6
- ldr r0, [r1]
- ands r0, r5
- str r0, [r1]
-_0804C1F6:
- adds r2, 0x1C
- adds r1, 0x58
- adds r4, 0x1
- ldrb r0, [r3]
- cmp r4, r0
- blt _0804C1EA
-_0804C202:
- mov r1, r12
- ldrb r0, [r1, 0x14]
- adds r0, 0x1
- strb r0, [r1, 0x14]
- b _0804C570
- .pool
-_0804C21C:
- ldr r1, =gHitMarker
- ldr r3, [r1]
- movs r0, 0x80
- lsls r0, 5
- ands r0, r3
- ldr r2, =gBankAttacker
- mov r9, r2
- adds r5, r1, 0
- cmp r0, 0
- beq _0804C246
- ldr r0, =gActiveBank
- ldrb r2, [r2]
- strb r2, [r0]
- ldr r1, =gBankTarget
- ldrb r0, [r1]
- mov r4, r9
- strb r0, [r4]
- strb r2, [r1]
- ldr r0, =0xffffefff
- ands r3, r0
- str r3, [r5]
-_0804C246:
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- beq _0804C262
- ldr r0, =gUnknown_02024240
- mov r2, r9
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- ldr r0, =gUnknown_020241EC
- ldrh r0, [r0]
- strh r0, [r1]
-_0804C262:
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =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 _0804C27C
- b _0804C3E8
-_0804C27C:
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r1, 0x91
- ldrb r1, [r1]
- ands r1, r3
- adds r7, r0, 0
- cmp r1, 0
- beq _0804C28E
- b _0804C3E8
-_0804C28E:
- ldr r0, =gBattleMoves
- ldr r2, [sp, 0x18]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r1, [r1]
- mov r8, r0
- cmp r1, 0x7F
- bne _0804C2A4
- b _0804C3E8
-_0804C2A4:
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _0804C308
- ldr r0, =gLastUsedMovesByBanks
- lsls r1, r4, 1
- adds r1, r0
- ldr r0, =gUnknown_020241EC
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r0, =gUnknown_02024260
- mov r3, r9
- ldrb r1, [r3]
- lsls r1, 1
- adds r1, r0
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- strh r0, [r1]
- b _0804C322
- .pool
-_0804C308:
- ldr r1, =gLastUsedMovesByBanks
- lsls r0, r4, 1
- adds r0, r1
- ldr r1, =0x0000ffff
- strh r1, [r0]
- ldr r1, =gUnknown_02024260
- mov r4, r9
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- movs r1, 0x1
- negs r1, r1
- strh r1, [r0]
-_0804C322:
- ldr r2, =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 _0804C340
- ldr r0, =gUnknown_02024270
- adds r0, r3, r0
- mov r3, r9
- ldrb r1, [r3]
- strb r1, [r0]
-_0804C340:
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _0804C3DC
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0804C3DC
- ldr r0, =gUnknown_020241EC
- ldrh r3, [r0]
- ldr r0, =0x0000ffff
- cmp r3, r0
- bne _0804C390
- ldr r1, =gUnknown_02024250
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- strh r3, [r0]
- b _0804C3E8
- .pool
-_0804C390:
- ldr r0, =gUnknown_02024250
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- ldr r4, =gCurrentMove
- ldrh r0, [r4]
- strh r0, [r1]
- ldr r0, [r7]
- ldrb r3, [r0, 0x13]
- cmp r3, 0
- beq _0804C3C0
- ldr r0, =gUnknown_02024258
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- movs r0, 0x3F
- ands r0, r3
- b _0804C3E6
- .pool
-_0804C3C0:
- ldr r0, =gUnknown_02024258
- ldrb r2, [r2]
- 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 _0804C3E8
- .pool
-_0804C3DC:
- ldr r0, =gUnknown_02024250
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- ldr r0, =0x0000ffff
-_0804C3E6:
- strh r0, [r1]
-_0804C3E8:
- mov r4, r12
- ldrb r0, [r4, 0x14]
- adds r0, 0x1
- strb r0, [r4, 0x14]
- b _0804C570
- .pool
-_0804C3FC:
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r7, =gBitTable
- ldr r2, =gBankAttacker
- ldrb r3, [r2]
- lsls r0, r3, 2
- adds r0, r7
- ldr r4, [r0]
- ands r1, r4
- mov r9, r2
- cmp r1, 0
- bne _0804C4B6
- ldr r6, =gBattleStruct
- ldr r5, [r6]
- adds r0, r5, 0
- adds r0, 0x91
- ldrb r0, [r0]
- ands r0, r4
- cmp r0, 0
- bne _0804C4B6
- ldr r1, =gBattleMoves
- ldr r2, [sp, 0x18]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0804C4B6
- ldr r0, =gHitMarker
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 18
- ands r0, r1
- cmp r0, 0
- beq _0804C4B6
- ldr r4, =gBankTarget
- ldrb r0, [r4]
- cmp r3, r0
- beq _0804C4B6
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r7
- ldr r0, [r0]
- lsls r0, 28
- ands r1, r0
- cmp r1, 0
- bne _0804C4B6
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0804C4B6
- lsls r1, r2, 1
- adds r1, r5
- adds r1, 0x98
- ldr r3, =gUnknown_020241EC
- ldrh r0, [r3]
- strb r0, [r1]
- ldrb r1, [r4]
- ldr r0, [r6]
- lsls r1, 1
- adds r1, r0
- adds r1, 0x99
- ldrh r0, [r3]
- lsrs r0, 8
- strb r0, [r1]
- ldrb r0, [r4]
- mov r2, r9
- ldrb r1, [r2]
- ldr r2, [r6]
- lsls r0, 3
- lsls r1, 1
- adds r0, r1
- adds r0, r2
- adds r0, 0xE0
- ldrh r1, [r3]
- strb r1, [r0]
- ldrb r1, [r4]
- mov r4, r9
- ldrb r0, [r4]
- ldr r2, [r6]
- lsls r1, 3
- lsls r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0xE1
- ldrh r0, [r3]
- lsrs r0, 8
- strb r0, [r1]
-_0804C4B6:
- mov r5, r12
- ldrb r0, [r5, 0x14]
- adds r0, 0x1
- strb r0, [r5, 0x14]
- b _0804C570
- .pool
-_0804C4E4:
- ldr r5, =gHitMarker
- ldr r2, [r5]
- movs r0, 0x80
- lsls r0, 12
- ands r0, r2
- cmp r0, 0
- bne _0804C568
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0804C568
- ldr r1, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- cmp r0, 0
- blt _0804C568
- ldr r0, =gBattleMoves
- mov r9, r0
- ldr r1, =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 _0804C568
- movs r6, 0x80
- lsls r6, 2
- adds r4, r6, 0
- ands r4, r2
- cmp r4, 0
- bne _0804C568
- ldr r7, =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, =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0804C55E
- bl _0804BCAC
-_0804C55E:
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- ldr r2, =gBattleScripting
- mov r12, r2
-_0804C568:
- mov r3, r12
- ldrb r0, [r3, 0x14]
- adds r0, 0x1
- strb r0, [r3, 0x14]
-_0804C570:
- ldr r4, [sp, 0x10]
- cmp r4, 0x1
- bne _0804C582
- mov r5, r10
- cmp r5, 0
- bne _0804C582
- movs r0, 0x11
- mov r1, r12
- strb r0, [r1, 0x14]
-_0804C582:
- ldr r2, [sp, 0x10]
- cmp r2, 0x2
- bne _0804C598
- ldr r4, [sp, 0x14]
- mov r3, r12
- ldrb r3, [r3, 0x14]
- cmp r4, r3
- bne _0804C598
- movs r0, 0x11
- mov r4, r12
- strb r0, [r4, 0x14]
-_0804C598:
- mov r5, r12
- ldrb r0, [r5, 0x14]
- cmp r0, 0x11
- beq _0804C5A4
- bl _0804BD14
-_0804C5A4:
- mov r1, r12
- ldrb r0, [r1, 0x14]
- cmp r0, 0x11
- bne _0804C5BA
- mov r2, r10
- cmp r2, 0
- bne _0804C5BA
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
-_0804C5B8:
- str r0, [r1]
-_0804C5BA:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk49_moveendturn
-
- thumb_func_start atk4A_typecalc2
-atk4A_typecalc2: @ 804C5F4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r4, 0
- movs r5, 0
- ldr r2, =gBattleMoves
- ldr r0, =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, =gBattleMons
- ldr r3, =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 _0804C688
- mov r1, r8
- cmp r1, 0x4
- bne _0804C688
- ldr r3, =gLastUsedAbility
- strb r0, [r3]
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x9
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gUnknown_02024250
- ldrb r0, [r7]
- lsls r0, 1
- adds r0, r1
- strh r4, [r0]
- ldr r0, =gBattleCommunication
- mov r2, r8
- strb r2, [r0, 0x6]
- ldrb r0, [r7]
- ldrb r1, [r3]
- bl RecordAbilityBattle
- b _0804C76A
- .pool
-_0804C678:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
- b _0804C76A
- .pool
-_0804C688:
- ldr r1, =gUnknown_0831ACE8
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r6, r1, 0
- b _0804C74A
- .pool
-_0804C698:
- adds r0, r5, r6
- ldrb r0, [r0]
- cmp r0, r8
- bne _0804C744
- 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 _0804C6D6
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r1, [r0]
- cmp r1, 0
- beq _0804C678
- cmp r1, 0x5
- bne _0804C6CA
- movs r0, 0x4
- orrs r4, r0
-_0804C6CA:
- cmp r1, 0x14
- bne _0804C6D6
- movs r0, 0x2
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_0804C6D6:
- 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 _0804C744
- adds r0, 0x21
- ldrb r1, [r0]
- cmp r1, r2
- beq _0804C6FE
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804C678
-_0804C6FE:
- cmp r1, r2
- beq _0804C714
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0804C714
- movs r0, 0x4
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_0804C714:
- 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 _0804C744
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0804C744
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0804C744
- movs r0, 0x2
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_0804C744:
- adds r5, 0x3
- adds r0, r5, r6
- ldrb r0, [r0]
-_0804C74A:
- cmp r0, 0xFF
- beq _0804C76A
- cmp r0, 0xFE
- bne _0804C698
- 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 _0804C744
-_0804C76A:
- ldr r2, =gBattleMons
- ldr r0, =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 _0804C7E6
- movs r5, 0x29
- ands r5, r4
- cmp r5, 0
- bne _0804C7E6
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- ldr r7, =gCurrentMove
- ldrh r1, [r7]
- bl move_weather_interaction
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _0804C7E6
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0804C7AC
- movs r0, 0x6
- ands r4, r0
- cmp r4, 0x6
- bne _0804C7E6
-_0804C7AC:
- ldr r2, =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 _0804C7E6
- ldr r3, =gLastUsedAbility
- strb r6, [r3]
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gUnknown_02024250
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- strh r5, [r0]
- ldr r1, =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- ldrb r0, [r2]
- ldrb r1, [r3]
- bl RecordAbilityBattle
-_0804C7E6:
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0804C804
- ldr r2, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r2
- ldrb r0, [r1, 0x1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1, 0x1]
-_0804C804:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk4A_typecalc2
-
- thumb_func_start atk4B_return_atk_to_ball
-atk4B_return_atk_to_ball: @ 804C844
- push {r4,lr}
- ldr r4, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r2, =gHitMarker
- ldr r1, =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 _0804C872
- movs r0, 0
- movs r1, 0
- bl dp01_build_cmdbuf_x06_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0804C872:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk4B_return_atk_to_ball
-
- thumb_func_start atk4C_copy_poke_data
-atk4C_copy_poke_data: @ 804C894
- push {r4,r5,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804C8E4
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r3, =gBattlePartyID
- ldrb r0, [r4]
- lsls r2, r0, 1
- adds r2, r3
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- strh r0, [r2]
- ldr r1, =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 dp01_build_cmdbuf_x00_a_b_0
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_0804C8E4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk4C_copy_poke_data
-
- thumb_func_start atk4D_switch_data_update
-atk4D_switch_data_update: @ 804C904
- push {r4-r7,lr}
- sub sp, 0x58
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0804C912
- b _0804CAA4
-_0804C912:
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r6, =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, =gBattleBufferB
-_0804C93E:
- 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 _0804C93E
- ldr r4, =gBattleMons
- ldr r6, =gActiveBank
- ldrb r0, [r6]
- movs r7, 0x58
- adds r2, r0, 0
- muls r2, r7
- adds r2, r4
- ldr r3, =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, [r6]
- adds r1, r0, 0
- muls r1, r7
- 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, [r6]
- adds r1, r0, 0
- muls r1, r7
- adds r1, r4
- ldrh r0, [r1]
- ldrb r1, [r1, 0x17]
- lsrs r1, 7
- bl GetAbilityBySpecies
- ldrb r1, [r6]
- muls r1, r7
- adds r1, r4
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r6]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gWishFutureKnock
- adds r0, 0x29
- adds r0, r2, r0
- ldrb r1, [r0]
- ldr r3, =gBitTable
- ldr r2, =gBattlePartyID
- ldrb r5, [r6]
- 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 _0804C9DE
- adds r0, r5, 0
- muls r0, r7
- add r0, r12
- movs r1, 0
- strh r1, [r0, 0x2E]
-_0804C9DE:
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x7F
- bne _0804CA26
- movs r2, 0
- adds r4, r6, 0
- movs r6, 0x58
- mov r5, r12
- adds r5, 0x18
- add r3, sp, 0x18
-_0804C9FE:
- 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 _0804C9FE
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- mov r1, r12
- adds r1, 0x50
- adds r0, r1
- ldr r1, [sp, 0x50]
- str r1, [r0]
-_0804CA26:
- bl sub_803A284
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 10
- ands r0, r1
- cmp r0, 0
- beq _0804CA78
- ldr r4, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r3, [r0]
- movs r0, 0x58
- adds r2, r3, 0
- muls r2, r0
- adds r1, r2, r4
- ldrh r0, [r1, 0x2C]
- lsrs r0, 1
- ldrh r1, [r1, 0x28]
- cmp r0, r1
- bcc _0804CA78
- cmp r1, 0
- beq _0804CA78
- adds r0, r4, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0804CA78
- ldr r0, =gBattleStruct
- ldr r2, [r0]
- adds r2, 0x92
- ldr r1, =gBitTable
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
-_0804CA78:
- ldr r0, =gBattleScripting
- ldr r3, =gActiveBank
- ldrb r2, [r3]
- strb r2, [r0, 0x17]
- ldr r1, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- strb r2, [r1, 0x2]
- ldr r2, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0804CAA4:
- add sp, 0x58
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk4D_switch_data_update
-
- thumb_func_start atk4E_switchin_anim
-atk4E_switchin_anim: @ 804CAE8
- push {r4-r6,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804CB86
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r6, =gActiveBank
- strb r0, [r6]
- ldrb r0, [r6]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0804CB3E
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x063f0902
- ands r0, r1
- cmp r0, 0
- bne _0804CB3E
- ldr r4, =gBattleMons
- 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]
- muls r1, r5
- adds r4, 0x48
- adds r1, r4
- ldr r2, [r1]
- movs r1, 0x2
- bl HandleSetPokedexFlag
-_0804CB3E:
- ldr r2, =gAbsentBankFlags
- ldr r1, =gBitTable
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldrb r0, [r2]
- bics r0, r1
- strb r0, [r2]
- ldr r1, =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrb r1, [r0]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r2, [r0, 0x2]
- movs r0, 0
- bl dp01_build_cmdbuf_x05_a_b_c
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _0804CB86
- bl sub_81A56B4
-_0804CB86:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk4E_switchin_anim
-
- thumb_func_start atk4F_jump_if_cannot_switch
-atk4F_jump_if_cannot_switch: @ 804CBB0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- movs r0, 0x7F
- ands r0, r1
- bl get_battle_side_of_something
- ldr r3, =gActiveBank
- strb r0, [r3]
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804CC28
- ldr r1, =gBattleMons
- ldrb r3, [r3]
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x0400e000
- ands r0, r1
- cmp r0, 0
- bne _0804CBFC
- ldr r1, =gStatuses3
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- beq _0804CC28
-_0804CBFC:
- 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 _0804CF00
- .pool
-_0804CC28:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 15
- ands r0, r1
- cmp r0, 0
- beq _0804CCC0
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gPlayerParty
- mov r8, r1
- cmp r0, 0x1
- bne _0804CC4E
- ldr r0, =gEnemyParty
- mov r8, r0
-_0804CC4E:
- movs r4, 0
- ldrb r1, [r5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0804CC5C
- movs r4, 0x3
-_0804CC5C:
- adds r6, r4, 0x3
- cmp r4, r6
- bge _0804CCA4
- ldr r7, =gBattlePartyID
-_0804CC64:
- movs r0, 0x64
- muls r0, r4
- mov r1, r8
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0804CC9E
- adds r0, r5, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804CC9E
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0804CC9E
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, r4
- bne _0804CCA4
-_0804CC9E:
- adds r4, 0x1
- cmp r4, r6
- blt _0804CC64
-_0804CCA4:
- cmp r4, r6
- bne _0804CCAA
- b _0804CED0
-_0804CCAA:
- b _0804CEF8
- .pool
-_0804CCC0:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804CD8C
- movs r0, 0x80
- lsls r0, 16
- ands r1, r0
- cmp r1, 0
- beq _0804CD00
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0804CCEC
- ldr r0, =gPlayerParty
- b _0804CD16
- .pool
-_0804CCEC:
- ldr r1, =gEnemyParty
- mov r8, r1
- ldrb r0, [r5]
- movs r4, 0x3
- cmp r0, 0x1
- bne _0804CD32
- movs r4, 0
- b _0804CD32
- .pool
-_0804CD00:
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gPlayerParty
- mov r8, r1
- cmp r0, 0x1
- bne _0804CD18
- ldr r0, =gEnemyParty
-_0804CD16:
- mov r8, r0
-_0804CD18:
- movs r4, 0
- ldrb r0, [r5]
- bl sub_806D864
- lsls r0, 24
- lsrs r0, 24
- bl sub_806D82C
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _0804CD32
- movs r4, 0x3
-_0804CD32:
- adds r6, r4, 0x3
- cmp r4, r6
- bge _0804CCA4
- ldr r7, =gBattlePartyID
-_0804CD3A:
- movs r0, 0x64
- muls r0, r4
- mov r1, r8
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0804CD74
- adds r0, r5, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804CD74
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0804CD74
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, r4
- bne _0804CCA4
-_0804CD74:
- adds r4, 0x1
- cmp r4, r6
- blt _0804CD3A
- b _0804CCA4
- .pool
-_0804CD8C:
- movs r0, 0x80
- lsls r0, 8
- ands r1, r0
- cmp r1, 0
- beq _0804CE10
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0804CE10
- ldr r0, =gEnemyParty
- mov r8, r0
- movs r4, 0
- ldrb r0, [r5]
- cmp r0, 0x3
- bne _0804CDB4
- movs r4, 0x3
-_0804CDB4:
- adds r6, r4, 0x3
- cmp r4, r6
- blt _0804CDBC
- b _0804CCA4
-_0804CDBC:
- ldr r7, =gBattlePartyID
-_0804CDBE:
- movs r0, 0x64
- muls r0, r4
- mov r1, r8
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0804CDFA
- adds r0, r5, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804CDFA
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0804CDFA
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, r4
- beq _0804CDFA
- b _0804CCA4
-_0804CDFA:
- adds r4, 0x1
- cmp r4, r6
- blt _0804CDBE
- b _0804CCA4
- .pool
-_0804CE10:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bne _0804CE54
- movs r0, 0x1
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _0804CE48
- movs r0, 0x3
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- b _0804CE4A
- .pool
-_0804CE48:
- adds r6, r7, 0
-_0804CE4A:
- ldr r0, =gEnemyParty
- mov r8, r0
- b _0804CE82
- .pool
-_0804CE54:
- movs r0, 0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0804CE7C
- movs r0, 0x2
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- b _0804CE7E
- .pool
-_0804CE7C:
- adds r6, r7, 0
-_0804CE7E:
- ldr r1, =gPlayerParty
- mov r8, r1
-_0804CE82:
- movs r4, 0
-_0804CE84:
- movs r0, 0x64
- muls r0, r4
- mov r1, r8
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0804CEC6
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0804CEC6
- adds r0, r5, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804CEC6
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- beq _0804CEC6
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- bne _0804CECC
-_0804CEC6:
- adds r4, 0x1
- cmp r4, 0x5
- ble _0804CE84
-_0804CECC:
- cmp r4, 0x6
- bne _0804CEF8
-_0804CED0:
- ldr r3, =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 _0804CF00
- .pool
-_0804CEF8:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
-_0804CF00:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk4F_jump_if_cannot_switch
-
- thumb_func_start sub_804CF10
-sub_804CF10: @ 804CF10
- push {r4,r5,lr}
- sub sp, 0x4
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- ldr r4, =gBattleStruct
- ldr r1, [r4]
- adds r1, r0, r1
- adds r1, 0x58
- ldr r3, =gBattlePartyID
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r0, [r5]
- ldr r1, [r4]
- adds r0, r1
- adds r0, 0x5C
- movs r1, 0x6
- strb r1, [r0]
- ldr r1, [r4]
- adds r1, 0x93
- ldr r3, =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r3
- ldr r3, [r0]
- ldrb r0, [r1]
- bics r0, r3
- strb r0, [r1]
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, 0x60
- ldr r0, [r4]
- adds r0, r1
- 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
- .pool
- thumb_func_end sub_804CF10
-
- thumb_func_start atk50_openpartyscreen
-atk50_openpartyscreen: @ 804CF88
- 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, =gBattlescriptCurrInstr
- ldr r2, [r6]
- 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
- mov r8, r1
- ldrb r1, [r2, 0x1]
- adds r0, r1, 0
- mov r12, r6
- cmp r0, 0x5
- beq _0804CFBE
- b _0804D464
-_0804CFBE:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x41
- ands r1, r0
- cmp r1, 0x1
- beq _0804D0B0
- ldr r1, =gActiveBank
- strb r7, [r1]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r7, r0
- bcc _0804CFD8
- b _0804D450
-_0804CFD8:
- ldr r7, =gHitMarker
- ldr r6, =gBitTable
- adds r4, r1, 0
- ldr r2, =gAbsentBankFlags
- mov r8, r2
-_0804CFE2:
- 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 _0804D088
- adds r0, r2, 0
- movs r1, 0x6
- movs r2, 0x6
- bl sub_80423F4
- lsls r0, 24
- cmp r0, 0
- beq _0804D054
- 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
- movs r2, 0
- bl sub_8034464
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _0804D098
- .pool
-_0804D054:
- ldr r5, =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 _0804D098
- movs r0, 0x6
- bl sub_804CF10
- 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 _0804D098
- .pool
-_0804D088:
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_8034464
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0804D098:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0804CFE2
- b _0804D450
- .pool
-_0804D0B0:
- ands r0, r1
- cmp r0, 0
- bne _0804D0B8
- b _0804D450
-_0804D0B8:
- ldr r0, =gHitMarker
- mov r8, r0
- ldr r0, [r0]
- lsrs r5, r0, 28
- ldr r6, =gBitTable
- ldr r0, [r6]
- ands r0, r5
- cmp r0, 0
- beq _0804D170
- ldr r4, =gActiveBank
- strb r7, [r4]
- movs r0, 0
- movs r1, 0x6
- movs r2, 0x6
- bl sub_80423F4
- lsls r0, 24
- cmp r0, 0
- beq _0804D120
- ldr r2, =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 _0804D170
- .pool
-_0804D120:
- ldr r6, =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 _0804D15C
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5E
- ldrb r0, [r0]
- bl sub_804CF10
- 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 _0804D170
- .pool
-_0804D15C:
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_8034464
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- movs r0, 0x1
- mov r9, r0
-_0804D170:
- ldr r6, =gBitTable
- ldr r0, [r6, 0x8]
- ands r0, r5
- cmp r0, 0
- beq _0804D22E
- ldr r0, [r6]
- ands r0, r5
- cmp r0, 0
- bne _0804D22E
- ldr r4, =gActiveBank
- movs r0, 0x2
- strb r0, [r4]
- movs r0, 0x2
- movs r1, 0x6
- movs r2, 0x6
- bl sub_80423F4
- lsls r0, 24
- cmp r0, 0
- beq _0804D1D8
- ldr r2, =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, =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 _0804D22E
- .pool
-_0804D1D8:
- ldr r6, =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 _0804D214
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5C
- ldrb r0, [r0]
- bl sub_804CF10
- 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 _0804D22E
- .pool
-_0804D214:
- movs r0, 0x1
- mov r1, r9
- ands r0, r1
- cmp r0, 0
- bne _0804D22E
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_8034464
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0804D22E:
- ldr r6, =gBitTable
- ldr r0, [r6, 0x4]
- ands r0, r5
- cmp r0, 0
- beq _0804D2E4
- ldr r4, =gActiveBank
- movs r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
- movs r1, 0x6
- movs r2, 0x6
- bl sub_80423F4
- lsls r0, 24
- cmp r0, 0
- beq _0804D290
- ldr r2, =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, =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 _0804D2E4
- .pool
-_0804D290:
- ldr r6, =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 _0804D2CC
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5F
- ldrb r0, [r0]
- bl sub_804CF10
- 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 _0804D2E4
- .pool
-_0804D2CC:
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_8034464
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- movs r0, 0x2
- mov r2, r9
- orrs r2, r0
- mov r9, r2
-_0804D2E4:
- ldr r6, =gBitTable
- ldr r0, [r6, 0xC]
- ands r0, r5
- cmp r0, 0
- beq _0804D3A2
- ldr r0, [r6, 0x4]
- ands r0, r5
- cmp r0, 0
- bne _0804D3A2
- ldr r4, =gActiveBank
- movs r0, 0x3
- strb r0, [r4]
- movs r0, 0x3
- movs r1, 0x6
- movs r2, 0x6
- bl sub_80423F4
- lsls r0, 24
- cmp r0, 0
- beq _0804D34C
- ldr r2, =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, =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 _0804D3A2
- .pool
-_0804D34C:
- ldr r6, =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 _0804D388
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5D
- ldrb r0, [r0]
- bl sub_804CF10
- 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 _0804D3A2
- .pool
-_0804D388:
- movs r0, 0x2
- mov r1, r9
- ands r1, r0
- cmp r1, 0
- bne _0804D3A2
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_8034464
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0804D3A2:
- ldr r1, =gSpecialStatuses
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _0804D3FA
- adds r0, r1, 0
- adds r0, 0x28
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _0804D3FA
- cmp r5, 0
- beq _0804D3FA
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r0, =gBitTable
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0804D3E4
- ldr r1, =gActiveBank
- movs r0, 0x2
- strb r0, [r1]
- b _0804D3E8
- .pool
-_0804D3E4:
- ldr r0, =gActiveBank
- strb r1, [r0]
-_0804D3E8:
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_8034464
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_0804D3FA:
- ldr r1, =gSpecialStatuses
- ldrb r0, [r1, 0x14]
- lsls r0, 25
- cmp r0, 0
- blt _0804D450
- adds r0, r1, 0
- adds r0, 0x3C
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _0804D450
- cmp r5, 0
- beq _0804D450
- ldr r0, =gAbsentBankFlags
- ldrb r0, [r0]
- ldr r1, =gBitTable
- ldr r1, [r1, 0x4]
- ands r0, r1
- cmp r0, 0
- beq _0804D438
- ldr r1, =gActiveBank
- movs r0, 0x3
- b _0804D43C
- .pool
-_0804D438:
- ldr r1, =gActiveBank
- movs r0, 0x1
-_0804D43C:
- strb r0, [r1]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_8034464
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_0804D450:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- b _0804D804
- .pool
-_0804D464:
- cmp r0, 0x6
- beq _0804D46A
- b _0804D658
-_0804D46A:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804D478
- b _0804D5F4
-_0804D478:
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- bne _0804D482
- b _0804D5F4
-_0804D482:
- ldr r7, =gHitMarker
- ldr r0, [r7]
- lsrs r5, r0, 28
- ldr r4, =gBitTable
- ldr r0, [r4, 0x8]
- ands r0, r5
- cmp r0, 0
- beq _0804D52A
- ldr r0, [r4]
- ands r0, r5
- cmp r0, 0
- beq _0804D52A
- ldr r6, =gActiveBank
- movs r0, 0x2
- strb r0, [r6]
- ldr r0, =gBattleBufferB
- ldrb r1, [r0, 0x1]
- movs r0, 0x2
- movs r2, 0x6
- bl sub_80423F4
- lsls r0, 24
- cmp r0, 0
- beq _0804D4F8
- ldr r2, =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 _0804D52A
- .pool
-_0804D4F8:
- ldr r4, =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 _0804D52A
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5C
- ldrb r0, [r0]
- bl sub_804CF10
- 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]
-_0804D52A:
- ldr r4, =gBitTable
- ldr r0, [r4, 0xC]
- ands r0, r5
- cmp r0, 0
- beq _0804D5DA
- ldr r0, [r4, 0x4]
- ands r5, r0
- cmp r5, 0
- beq _0804D5DA
- ldr r5, =gActiveBank
- movs r0, 0x3
- strb r0, [r5]
- ldr r0, =gBattleBufferB
- ldr r2, =0x00000201
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x3
- movs r2, 0x6
- bl sub_80423F4
- lsls r0, 24
- cmp r0, 0
- beq _0804D5A8
- ldr r2, =gAbsentBankFlags
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, =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 _0804D5DA
- .pool
-_0804D5A8:
- ldr r4, =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 _0804D5DA
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x5D
- ldrb r0, [r0]
- bl sub_804CF10
- 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]
-_0804D5DA:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- mov r12, r1
- b _0804D5F8
- .pool
-_0804D5F4:
- adds r0, r2, 0x6
- str r0, [r6]
-_0804D5F8:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- lsrs r5, r0, 28
- ldr r1, =gBank1
- movs r0, 0
- strb r0, [r1]
- ldr r4, =gBitTable
- ldr r2, [r4]
- ands r2, r5
- ldr r6, =gNoOfAllBanks
- cmp r2, 0
- bne _0804D634
- adds r7, r6, 0
- ldrb r0, [r6]
- cmp r2, r0
- bcs _0804D634
- adds r3, r1, 0
-_0804D61A:
- 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 _0804D634
- ldrb r0, [r7]
- cmp r2, r0
- bcc _0804D61A
-_0804D634:
- ldrb r0, [r1]
- ldrb r6, [r6]
- cmp r0, r6
- beq _0804D63E
- b _0804D804
-_0804D63E:
- mov r1, r8
- mov r2, r12
- str r1, [r2]
- b _0804D804
- .pool
-_0804D658:
- movs r0, 0x80
- ands r0, r1
- movs r5, 0x1
- cmp r0, 0
- beq _0804D664
- movs r5, 0
-_0804D664:
- movs r0, 0x7F
- ands r0, r1
- bl get_battle_side_of_something
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gSpecialStatuses
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- bge _0804D690
- ldr r0, [r6]
- adds r0, 0x6
- str r0, [r6]
- b _0804D804
- .pool
-_0804D690:
- adds r0, r7, 0
- movs r1, 0x6
- movs r2, 0x6
- bl sub_80423F4
- lsls r0, 24
- cmp r0, 0
- beq _0804D6E0
- ldr r2, =gActiveBank
- strb r7, [r2]
- ldr r3, =gAbsentBankFlags
- ldr r4, =gBitTable
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r3]
- orrs r0, r1
- strb r0, [r3]
- ldr r3, =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 _0804D804
- .pool
-_0804D6E0:
- ldr r4, =gActiveBank
- strb r7, [r4]
- ldrb r0, [r4]
- ldr r3, =gBattleStruct
- ldr r1, [r3]
- adds r1, r0, r1
- adds r1, 0x58
- ldr r2, =gBattlePartyID
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r0, [r4]
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0x5C
- movs r1, 0x6
- strb r1, [r0]
- ldr r1, [r3]
- adds r1, 0x93
- ldr r2, =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r2
- ldr r2, [r0]
- ldrb r0, [r1]
- bics r0, r2
- strb r0, [r1]
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- ldr r3, [r3]
- adds r0, r3
- adds r0, 0x5C
- ldrb r2, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- adds r0, 0x60
- adds r3, r0
- str r3, [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 _0804D760
- ldr r1, =gBattleResults
- ldrb r0, [r1, 0x2]
- cmp r0, 0xFE
- bhi _0804D760
- adds r0, 0x1
- strb r0, [r1, 0x2]
-_0804D760:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804D7C4
- ldr r1, =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804D804
- adds r4, r1, 0
-_0804D77C:
- ldrb r0, [r4]
- cmp r0, r7
- beq _0804D792
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_8034464
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0804D792:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0804D77C
- b _0804D804
- .pool
-_0804D7C4:
- adds r0, r7, 0
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0804D7F4
- movs r0, 0x2
- eors r3, r0
- strb r3, [r4]
-_0804D7F4:
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl sub_8034464
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0804D804:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk50_openpartyscreen
-
- thumb_func_start atk51_switch_handle_order
-atk51_switch_handle_order: @ 804D820
- push {r4-r7,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0804D82C
- b _0804DA8A
-_0804D82C:
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r5, =gActiveBank
- strb r0, [r5]
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x1
- beq _0804D8CC
- cmp r0, 0x1
- bgt _0804D858
- cmp r0, 0
- beq _0804D862
- b _0804DA82
- .pool
-_0804D858:
- cmp r0, 0x2
- beq _0804D8E8
- cmp r0, 0x3
- beq _0804D922
- b _0804DA82
-_0804D862:
- movs r6, 0
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804D86E
- b _0804DA82
-_0804D86E:
- ldr r7, =gBattleBufferB
-_0804D870:
- ldrb r0, [r7]
- cmp r0, 0x22
- bne _0804D8AA
- ldr r5, =gBattleStruct
- ldr r0, [r5]
- adds r0, r6, r0
- adds r0, 0x5C
- ldrb r1, [r7, 0x1]
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, 0x93
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r6, 2
- adds r0, r2
- ldr r4, [r0]
- ands r1, r4
- cmp r1, 0
- bne _0804D8AA
- lsls r0, r6, 24
- lsrs r0, 24
- ldrb r1, [r7, 0x1]
- bl sub_8184FBC
- ldr r1, [r5]
- adds r1, 0x93
- ldrb r0, [r1]
- orrs r4, r0
- strb r4, [r1]
-_0804D8AA:
- movs r0, 0x80
- lsls r0, 2
- adds r7, r0
- adds r6, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804D870
- b _0804DA82
- .pool
-_0804D8CC:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804D8DA
- b _0804DA82
-_0804D8DA:
- ldrb r0, [r5]
- bl sub_803BDA0
- b _0804DA82
- .pool
-_0804D8E8:
- ldr r4, =gBattleStruct
- ldr r0, [r4]
- adds r0, 0x93
- ldrb r1, [r0]
- ldr r6, =gBitTable
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r6
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0804D922
- ldr r0, =gBattleBufferB
- lsls r1, r2, 9
- adds r0, 0x1
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r2, 0
- bl sub_8184FBC
- ldr r2, [r4]
- adds r2, 0x93
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
-_0804D922:
- ldr r1, =gBattleCommunication
- ldr r6, =gBattleBufferB
- ldr r7, =gActiveBank
- ldrb r0, [r7]
- lsls r0, 9
- adds r2, r6, 0x1
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- ldr r1, =gBattleStruct
- mov r12, r1
- ldr r1, [r1]
- adds r1, r0, r1
- adds r1, 0x5C
- lsls r0, 9
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x42
- ands r0, r1
- cmp r0, 0x42
- bne _0804DA14
- ldrb r0, [r7]
- mov r3, r12
- ldr r2, [r3]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- ldrb r2, [r1]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- ldr r2, [r3]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- lsls r0, 9
- adds r5, r6, 0x2
- adds r0, r5
- ldrb r2, [r0]
- movs r3, 0xF0
- adds r0, r3, 0
- ands r0, r2
- ldrb r2, [r1]
- orrs r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- mov r0, r12
- ldr r2, [r0]
- lsls r0, r1, 1
- adds r0, r1
- adds r0, r2
- adds r0, 0x61
- lsls r1, 9
- adds r6, 0x3
- adds r1, r6
- ldrb r1, [r1]
- strb r1, [r0]
- ldrb r0, [r7]
- movs r4, 0x2
- eors r0, r4
- mov r1, r12
- ldr r2, [r1]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- eors r0, r4
- mov r1, r12
- ldr r2, [r1]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r2
- adds r1, 0x60
- ldrb r0, [r7]
- lsls r0, 9
- adds r0, r5
- ldrb r0, [r0]
- ands r3, r0
- lsrs r3, 4
- ldrb r0, [r1]
- orrs r3, r0
- strb r3, [r1]
- ldrb r0, [r7]
- eors r4, r0
- mov r2, r12
- ldr r0, [r2]
- lsls r1, r4, 1
- adds r1, r4
- adds r1, r0
- adds r1, 0x62
- ldrb r0, [r7]
- lsls r0, 9
- adds r0, r6
- ldrb r0, [r0]
- strb r0, [r1]
- b _0804DA36
- .pool
-_0804DA14:
- movs r0, 0x80
- lsls r0, 15
- ands r1, r0
- cmp r1, 0
- beq _0804DA30
- ldrb r0, [r7]
- mov r3, r12
- ldr r1, [r3]
- adds r1, r0, r1
- adds r1, 0x5C
- ldrb r1, [r1]
- bl sub_80571DC
- b _0804DA36
-_0804DA30:
- ldrb r0, [r7]
- bl sub_803BDA0
-_0804DA36:
- ldr r1, =gBattleTextBuff1
- movs r5, 0xFD
- strb r5, [r1]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- ldr r4, =gBattleMons
- ldr r3, =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, =gBattleTextBuff2
- strb r5, [r2]
- movs r0, 0x7
- strb r0, [r2, 0x1]
- ldr r3, =gActiveBank
- ldrb r0, [r3]
- strb r0, [r2, 0x2]
- ldr r1, =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]
-_0804DA82:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
-_0804DA8A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk51_switch_handle_order
-
- thumb_func_start atk52_switch_in_effects
-atk52_switch_in_effects: @ 804DAAC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, =gBattlescriptCurrInstr
- mov r9, r0
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldrb r0, [r4]
- bl sub_803FA70
- ldr r1, =gHitMarker
- mov r8, r1
- ldr r1, =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 28
- mov r2, r8
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- ldr r2, =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, =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r1, [r0]
- movs r7, 0x80
- lsls r7, 2
- mov r10, r7
- mov r0, r10
- ands r0, r1
- cmp r0, 0
- beq _0804DB1C
- b _0804DC30
-_0804DB1C:
- 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
- bne _0804DB34
- b _0804DC30
-_0804DB34:
- ldr r7, =gBattleMons
- ldrb r2, [r4]
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- adds r1, r0, r7
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0804DC30
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0804DC30
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- beq _0804DC30
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r2, [r0]
- mov r1, r10
- orrs r1, r2
- strh r1, [r0]
- ldrb r0, [r4]
- adds r2, r0, 0
- muls r2, r6
- adds r0, r7, 0
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- ldr r1, =0xfdffffff
- ands r0, r1
- str r0, [r2]
- mov r1, r8
- ldr r0, [r1]
- movs r2, 0x41
- negs r2, r2
- ands r0, r2
- str r0, [r1]
- ldrb r0, [r4]
- bl GetBankSide
- ldr r2, =gSideTimers
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0xA]
- movs r1, 0x5
- subs r1, r0
- lsls r1, 25
- lsrs r1, 24
- ldr r5, =gBattleMoveDamage
- ldrb r0, [r4]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0, 0x2C]
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _0804DBC8
- movs r0, 0x1
- str r0, [r5]
-_0804DBC8:
- ldr r0, =gBattleScripting
- ldrb r1, [r4]
- strb r1, [r0, 0x17]
- bl b_movescr_stack_push_cursor
- mov r7, r9
- ldr r0, [r7]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0804DC14
- ldr r0, =gUnknown_082DAE90
- str r0, [r7]
- b _0804DD8E
- .pool
-_0804DC14:
- cmp r0, 0x1
- bne _0804DC24
- ldr r0, =gUnknown_082DAE59
- mov r1, r9
- str r0, [r1]
- b _0804DD8E
- .pool
-_0804DC24:
- ldr r0, =gUnknown_082DAEC7
- mov r2, r9
- str r0, [r2]
- b _0804DD8E
- .pool
-_0804DC30:
- ldr r2, =gBattleMons
- ldr r1, =gActiveBank
- ldrb r3, [r1]
- movs r0, 0x58
- muls r0, r3
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- adds r5, r1, 0
- ldr r4, =gDisableStructs
- cmp r0, 0x36
- bne _0804DC5E
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r2, r0, r4
- ldrb r1, [r2, 0x18]
- lsls r0, r1, 30
- cmp r0, 0
- blt _0804DC5E
- movs r0, 0x1
- orrs r0, r1
- strb r0, [r2, 0x18]
-_0804DC5E:
- ldrb r0, [r5]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x18]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x18]
- ldrb r1, [r5]
- movs r0, 0
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0804DC88
- b _0804DD8E
-_0804DC88:
- ldrb r1, [r5]
- movs r0, 0
- movs r2, 0
- bl ItemBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0804DD8E
- ldrb r0, [r5]
- bl GetBankSide
- ldr r1, =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r2, [r0]
- ldr r1, =0x0000fdff
- ands r1, r2
- strh r1, [r0]
- movs r4, 0
- ldr r0, =gNoOfAllBanks
- ldrb r7, [r0]
- cmp r4, r7
- bge _0804DCD8
- ldr r6, =gTurnOrder
- adds r1, r5, 0
- ldr r5, =gUnknown_0202407A
- movs r3, 0xC
- adds r2, r0, 0
-_0804DCC2:
- adds r0, r4, r6
- ldrb r0, [r0]
- ldrb r7, [r1]
- cmp r0, r7
- bne _0804DCD0
- adds r0, r4, r5
- strb r3, [r0]
-_0804DCD0:
- adds r4, 0x1
- ldrb r0, [r2]
- cmp r4, r0
- blt _0804DCC2
-_0804DCD8:
- movs r4, 0
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- bge _0804DD0C
- ldr r6, =gBattleStruct
- ldr r5, =gBattleMons
-_0804DCE6:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0xA8
- ldr r1, [r6]
- adds r1, r0
- movs r0, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x28]
- strh r0, [r1]
- adds r4, 0x1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _0804DCE6
-_0804DD0C:
- ldr r0, =gBattlescriptCurrInstr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r5, r0, 0
- cmp r1, 0x5
- bne _0804DD88
- ldr r0, =gHitMarker
- ldr r0, [r0]
- lsrs r4, r0, 28
- ldr r1, =gBank1
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r2, =gBitTable
- b _0804DD6E
- .pool
-_0804DD60:
- ldr r0, =gNoOfAllBanks
- ldrb r3, [r1]
- ldrb r0, [r0]
- cmp r3, r0
- bcs _0804DD88
- adds r0, r3, 0x1
- strb r0, [r1]
-_0804DD6E:
- ldrb r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r3, [r0]
- adds r0, r4, 0
- ands r0, r3
- cmp r0, 0
- beq _0804DD60
- ldr r0, =gAbsentBankFlags
- ldrb r0, [r0]
- ands r0, r3
- cmp r0, 0
- bne _0804DD60
-_0804DD88:
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_0804DD8E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk52_switch_in_effects
-
- thumb_func_start atk53_trainer_slide
-atk53_trainer_slide: @ 804DDA8
- push {r4,r5,lr}
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl GetBankByPlayerAI
- ldr r4, =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl dp01_build_cmdbuf_x08_8_8_8
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk53_trainer_slide
-
- thumb_func_start atk54_effectiveness_sound
-atk54_effectiveness_sound: @ 804DDD8
- push {r4,r5,lr}
- ldr r5, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl dp01_build_cmdbuf_x2B_aa_0
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk54_effectiveness_sound
-
- thumb_func_start atk55_play_sound
-atk55_play_sound: @ 804DE14
- push {r4,r5,lr}
- ldr r5, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- movs r2, 0
- bl sub_8034300
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk55_play_sound
-
- thumb_func_start atk56_fainting_cry
-atk56_fainting_cry: @ 804DE50
- push {r4,r5,lr}
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl dp01_build_cmdbuf_x2D_2D_2D_2D
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk56_fainting_cry
-
- thumb_func_start atk57
-atk57: @ 804DE80
- push {r4,lr}
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r0, =gBattleOutcome
- ldrb r1, [r0]
- movs r0, 0
- bl dp01_build_cmdbuf_x37_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk57
-
- thumb_func_start atk58_return_to_ball
-atk58_return_to_ball: @ 804DEB8
- push {r4,r5,lr}
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =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
- .pool
- thumb_func_end atk58_return_to_ball
-
- thumb_func_start atk59_learnmove_inbattle
-atk59_learnmove_inbattle: @ 804DEEC
- push {r4-r7,lr}
- ldr r0, =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, =gBattleStruct
- ldr r0, [r0]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldrb r1, [r2, 0x9]
- bl MonTryLearningNewMove
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, =0x0000fffe
- cmp r5, r0
- bne _0804DF56
- adds r7, r5, 0
-_0804DF3A:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0
- bl MonTryLearningNewMove
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r7
- beq _0804DF3A
-_0804DF56:
- cmp r5, 0
- bne _0804DF70
- ldr r0, =gBattlescriptCurrInstr
- str r4, [r0]
- b _0804E018
- .pool
-_0804DF70:
- ldr r0, =0x0000ffff
- cmp r5, r0
- bne _0804DF88
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
- b _0804E018
- .pool
-_0804DF88:
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, =gActiveBank
- strb r0, [r1]
- ldr r2, =gBattlePartyID
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r0, r2
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- ldrh r0, [r0]
- ldrb r1, [r1, 0x10]
- cmp r0, r1
- bne _0804DFC8
- ldr r4, =gBattleMons
- movs r0, 0x58
- adds r2, r3, 0
- muls r2, r0
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0804DFC8
- adds r0, r2, r4
- adds r1, r5, 0
- bl GiveMoveToBattleMon
-_0804DFC8:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0804E014
- movs r0, 0x2
- bl GetBankByPlayerAI
- ldr r1, =gActiveBank
- strb r0, [r1]
- ldr r2, =gBattlePartyID
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r0, r2
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- ldrh r0, [r0]
- ldrb r1, [r1, 0x10]
- cmp r0, r1
- bne _0804E014
- ldr r4, =gBattleMons
- movs r0, 0x58
- adds r2, r3, 0
- muls r2, r0
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0804E014
- adds r0, r2, r4
- adds r1, r5, 0
- bl GiveMoveToBattleMon
-_0804E014:
- ldr r0, =gBattlescriptCurrInstr
- str r6, [r0]
-_0804E018:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk59_learnmove_inbattle
-
- thumb_func_start atk5A
-atk5A: @ 804E038
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r0, =gActiveBank
- movs r1, 0
- strb r1, [r0]
- ldr r0, =gBattleScripting
- ldrb r1, [r0, 0x1F]
- adds r2, r0, 0
- cmp r1, 0x6
- bls _0804E052
- b _0804E3B8
-_0804E052:
- lsls r0, r1, 2
- ldr r1, =_0804E068
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0804E068:
- .4byte _0804E084
- .4byte _0804E0BC
- .4byte _0804E162
- .4byte _0804E1B8
- .4byte _0804E1E4
- .4byte _0804E38C
- .4byte _0804E3AC
-_0804E084:
- movs r4, 0
- str r4, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- ldr r0, =gText_BattleYesNoChoice
- movs r1, 0xC
- bl battle_show_message_maybe
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x1F]
- adds r0, 0x1
- strb r0, [r1, 0x1F]
- ldr r0, =gBattleCommunication
- strb r4, [r0, 0x1]
- movs r0, 0
- bl sub_8056B74
- b _0804E3B8
- .pool
-_0804E0BC:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804E0E4
- ldr r4, =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _0804E0E4
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x1]
- bl sub_8056BAC
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_8056B74
-_0804E0E4:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804E10C
- ldr r4, =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _0804E10C
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x1]
- bl sub_8056BAC
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_8056B74
-_0804E10C:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _0804E150
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gBattleCommunication
- ldrb r4, [r0, 0x1]
- cmp r4, 0
- bne _0804E20A
- str r5, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0804E192
- .pool
-_0804E150:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0804E15A
- b _0804E3B8
-_0804E15A:
- movs r0, 0x5
- bl PlaySE
- b _0804E20A
-_0804E162:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804E170
- b _0804E3B8
-_0804E170:
- bl FreeAllWindowBuffers
- ldr r0, =gPlayerParty
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- ldrb r1, [r1, 0x10]
- ldr r2, =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, =sub_80A92F8
- ldr r4, =gMoveToLearn
- ldrh r4, [r4]
- str r4, [sp]
- bl sub_81BFA38
-_0804E192:
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x1F]
- adds r0, 0x1
- strb r0, [r1, 0x1F]
- b _0804E3B8
- .pool
-_0804E1B8:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804E1C6
- b _0804E3B8
-_0804E1C6:
- ldr r0, =gMain
- ldr r1, [r0, 0x4]
- ldr r0, =sub_8038420
- cmp r1, r0
- beq _0804E1D2
- b _0804E3B8
-_0804E1D2:
- ldrb r0, [r2, 0x1F]
- adds r0, 0x1
- b _0804E3B6
- .pool
-_0804E1E4:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804E1F2
- b _0804E3B8
-_0804E1F2:
- ldr r0, =gMain
- ldr r1, [r0, 0x4]
- ldr r0, =sub_8038420
- cmp r1, r0
- beq _0804E1FE
- b _0804E3B8
-_0804E1FE:
- bl sub_81C1B94
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bne _0804E224
-_0804E20A:
- ldr r1, =gBattleScripting
- movs r0, 0x5
- strb r0, [r1, 0x1F]
- b _0804E3B8
- .pool
-_0804E224:
- ldr r6, =gBattleStruct
- ldr r0, [r6]
- ldrb r0, [r0, 0x10]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r7, =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 _0804E274
- ldr r0, =0x0000013f
- ldr r1, =gActiveBank
- ldrb r1, [r1]
- bl b_std_message
- ldr r1, =gBattleScripting
- movs r0, 0x6
- strb r0, [r1, 0x1F]
- b _0804E3B8
- .pool
-_0804E274:
- ldr r3, =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, =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]
- ldr r0, [r6]
- ldrb r0, [r0, 0x10]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- adds r1, r5, 0
- bl RemoveMonPPBonus
- ldr r0, [r6]
- ldrb r0, [r0, 0x10]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- ldr r7, =gMoveToLearn
- ldrh r1, [r7]
- adds r2, r5, 0
- bl SetMonMoveSlot
- ldr r0, =gBattlePartyID
- ldr r1, [r6]
- ldrh r0, [r0]
- ldrb r1, [r1, 0x10]
- cmp r0, r1
- bne _0804E30A
- ldr r4, =gBattleMons
- ldr r0, [r4, 0x50]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0804E30A
- ldr r0, =gDisableStructs
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0804E30A
- adds r0, r4, 0
- adds r1, r5, 0
- bl RemoveBattleMonPPBonus
- ldrh r1, [r7]
- adds r0, r4, 0
- adds r2, r5, 0
- bl SetBattleMonMoveSlot
-_0804E30A:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0804E3B8
- ldr r2, =gBattlePartyID
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- ldrh r0, [r2, 0x4]
- ldrb r1, [r1, 0x10]
- cmp r0, r1
- bne _0804E3B8
- ldr r4, =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 _0804E3B8
- ldr r0, =gDisableStructs
- adds r0, 0x50
- ldrb r1, [r0]
- lsrs r1, 4
- ldr r2, =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0804E3B8
- adds r4, 0xB0
- adds r0, r4, 0
- adds r1, r5, 0
- bl RemoveBattleMonPPBonus
- ldr r0, =gMoveToLearn
- ldrh r1, [r0]
- adds r0, r4, 0
- adds r2, r5, 0
- bl SetBattleMonMoveSlot
- b _0804E3B8
- .pool
-_0804E38C:
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0804E3B8
- .pool
-_0804E3AC:
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804E3B8
- movs r0, 0x2
-_0804E3B6:
- strb r0, [r2, 0x1F]
-_0804E3B8:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk5A
-
- thumb_func_start atk5B_80256E0
-atk5B_80256E0: @ 804E3C8
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, =gBattleScripting
- ldrb r4, [r5, 0x1F]
- cmp r4, 0
- beq _0804E3E0
- cmp r4, 0x1
- beq _0804E410
- b _0804E4FA
- .pool
-_0804E3E0:
- str r4, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- ldr r0, =gText_BattleYesNoChoice
- movs r1, 0xC
- bl battle_show_message_maybe
- ldrb r0, [r5, 0x1F]
- adds r0, 0x1
- strb r0, [r5, 0x1F]
- ldr r0, =gBattleCommunication
- strb r4, [r0, 0x1]
- movs r0, 0
- bl sub_8056B74
- b _0804E4FA
- .pool
-_0804E410:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804E438
- ldr r4, =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _0804E438
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x1]
- bl sub_8056BAC
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_8056B74
-_0804E438:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804E460
- ldr r4, =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _0804E460
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x1]
- bl sub_8056BAC
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_8056B74
-_0804E460:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0804E4C4
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0804E4A4
- ldr r3, =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 _0804E4AC
- .pool
-_0804E4A4:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0804E4AC:
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- b _0804E4FA
- .pool
-_0804E4C4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0804E4FA
- movs r0, 0x5
- bl PlaySE
- ldr r3, =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]
- str r4, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
-_0804E4FA:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk5B_80256E0
-
- thumb_func_start atk5C_hitanimation
-atk5C_hitanimation: @ 804E508
- push {r4,lr}
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r2, =gActiveBank
- strb r0, [r2]
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0804E58C
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- cmp r0, 0
- beq _0804E55A
- ldr r1, =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 _0804E55A
- ldr r0, =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _0804E58C
-_0804E55A:
- movs r0, 0
- bl dp01_build_cmdbuf_x29_29_29_29
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- b _0804E592
- .pool
-_0804E58C:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
-_0804E592:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk5C_hitanimation
-
- thumb_func_start sub_804E598
-sub_804E598: @ 804E598
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r6, r0, 16
- movs r7, 0
- movs r5, 0
- movs r0, 0x80
- lsls r0, 3
- cmp r6, r0
- bne _0804E5D8
- ldr r0, =gBattleResources
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, 0x94
- ldrb r2, [r0]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x4A
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- muls r0, r2
- b _0804E6CA
- .pool
-_0804E5D8:
- ldr r0, =gTrainers
- lsls r2, r6, 2
- adds r1, r2, r6
- lsls r1, 3
- adds r4, r1, r0
- ldrb r3, [r4]
- mov r12, r0
- cmp r3, 0x1
- beq _0804E62E
- cmp r3, 0x1
- bgt _0804E5F8
- cmp r3, 0
- beq _0804E602
- b _0804E644
- .pool
-_0804E5F8:
- cmp r3, 0x2
- beq _0804E618
- cmp r3, 0x3
- beq _0804E62E
- b _0804E644
-_0804E602:
- mov r0, r12
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r1
- subs r0, 0x8
- b _0804E642
-_0804E618:
- mov r0, r12
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r1
- subs r0, 0x8
- b _0804E642
-_0804E62E:
- mov r0, r12
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- subs r0, 0x10
-_0804E642:
- ldrb r5, [r0, 0x2]
-_0804E644:
- ldr r1, =gUnknown_0831AEB8
- lsls r0, r7, 2
- adds r4, r0, r1
- ldrb r3, [r4]
- ldr r0, =gBattleStruct
- mov r8, r0
- mov r9, r1
- ldr r1, =gBattleTypeFlags
- mov r10, r1
- cmp r3, 0xFF
- beq _0804E67A
- adds r0, r2, r6
- lsls r0, 3
- add r0, r12
- ldrb r1, [r0, 0x1]
- cmp r3, r1
- beq _0804E67A
- adds r2, r0, 0
- adds r0, r4, 0
-_0804E66A:
- adds r0, 0x4
- adds r7, 0x1
- ldrb r1, [r0]
- cmp r1, 0xFF
- beq _0804E67A
- ldrb r3, [r2, 0x1]
- cmp r1, r3
- bne _0804E66A
-_0804E67A:
- mov r0, r10
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- bne _0804E6B4
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0804E6B4
- mov r3, r8
- ldr r0, [r3]
- adds r0, 0x4A
- ldrb r0, [r0]
- lsls r0, 2
- adds r1, r5, 0
- muls r1, r0
- lsls r0, r7, 2
- add r0, r9
- ldrb r0, [r0, 0x1]
- lsls r0, 1
- b _0804E6C8
- .pool
-_0804E6B4:
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x4A
- ldrb r0, [r0]
- lsls r0, 2
- adds r1, r5, 0
- muls r1, r0
- lsls r0, r7, 2
- add r0, r9
- ldrb r0, [r0, 0x1]
-_0804E6C8:
- muls r0, r1
-_0804E6CA:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804E598
-
- thumb_func_start atk5D_getmoneyreward
-atk5D_getmoneyreward: @ 804E6D8
- push {r4,lr}
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r0, [r0]
- bl sub_804E598
- adds r4, r0, 0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0804E6FC
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r0, [r0]
- bl sub_804E598
- adds r4, r0
-_0804E6FC:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- adds r1, r4, 0
- bl AddMoney
- ldr r1, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk5D_getmoneyreward
-
- thumb_func_start atk5E_8025A70
-atk5E_8025A70: @ 804E764
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r6, =gActiveBank
- strb r0, [r6]
- ldr r5, =gBattleCommunication
- ldrb r0, [r5]
- mov r8, r4
- cmp r0, 0
- beq _0804E794
- cmp r0, 0x1
- beq _0804E7AC
- b _0804E800
- .pool
-_0804E794:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl dp01_build_cmdbuf_x00_a_b_0
- ldrb r0, [r6]
- bl MarkBufferBankForExecution
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _0804E800
-_0804E7AC:
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804E800
- ldrb r0, [r6]
- lsls r0, 9
- ldr r1, =gBattleBufferB + 4
- adds r0, r1
- mov r12, r0
- movs r2, 0
- adds r4, r6, 0
- movs r5, 0x58
- ldr r6, =gBattleMons + 0x24
- adds r7, r6, 0
- subs r7, 0x18
- mov r3, r12
- adds r3, 0xC
-_0804E7CE:
- 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 _0804E7CE
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0804E800:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk5E_8025A70
-
- thumb_func_start atk5F_8025B24
-atk5F_8025B24: @ 804E818
- push {lr}
- ldr r0, =gActiveBank
- ldr r2, =gBankAttacker
- ldrb r3, [r2]
- strb r3, [r0]
- ldr r1, =gBankTarget
- ldrb r0, [r1]
- strb r0, [r2]
- strb r3, [r1]
- ldr r2, =gHitMarker
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 5
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0804E854
- ldr r0, =0xffffefff
- ands r1, r0
- b _0804E856
- .pool
-_0804E854:
- orrs r1, r3
-_0804E856:
- str r1, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk5F_8025B24
-
- thumb_func_start atk60_increment_gamestat
-atk60_increment_gamestat: @ 804E868
- push {lr}
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0804E882
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl IncrementGameStat
-_0804E882:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk60_increment_gamestat
-
- thumb_func_start atk61_8025BA4
-atk61_8025BA4: @ 804E898
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x30
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804E94C
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r1, =gActiveBank
- strb r0, [r1]
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r8, r1
- cmp r0, 0
- bne _0804E8CA
- ldr r0, =gPlayerParty
- mov r8, r0
-_0804E8CA:
- movs r7, 0
- add r6, sp, 0x4
- mov r5, sp
-_0804E8D0:
- 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 _0804E8F4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _0804E914
-_0804E8F4:
- ldr r0, =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _0804E926
- .pool
-_0804E914:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_0804E926:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _0804E8D0
- movs r0, 0
- mov r1, sp
- movs r2, 0x1
- bl dp01_build_cmdbuf_x30_TODO
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0804E94C:
- add sp, 0x30
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk61_8025BA4
-
- thumb_func_start atk62_08025C6C
-atk62_08025C6C: @ 804E960
- push {r4,r5,lr}
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =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
- .pool
- thumb_func_end atk62_08025C6C
-
- thumb_func_start atk63_jumptorandomattack
-atk63_jumptorandomattack: @ 804E990
- push {r4,lr}
- ldr r0, =gBattlescriptCurrInstr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0
- beq _0804E9B4
- ldr r0, =gCurrentMove
- ldr r1, =gRandomMove
- ldrh r1, [r1]
- strh r1, [r0]
- b _0804E9C2
- .pool
-_0804E9B4:
- ldr r2, =gUnknown_020241EC
- ldr r1, =gCurrentMove
- ldr r0, =gRandomMove
- ldrh r0, [r0]
- strh r0, [r1]
- strh r0, [r2]
- adds r0, r1, 0
-_0804E9C2:
- ldr r3, =gUnknown_082D86A8
- ldr r2, =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
- .pool
- thumb_func_end atk63_jumptorandomattack
-
- thumb_func_start atk64_statusanimation
-atk64_statusanimation: @ 804E9F4
- push {r4,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804EA5C
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r1, =gStatuses3
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _0804EA54
- ldr r0, =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _0804EA54
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804EA54
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0
- movs r1, 0
- bl dp01_build_cmdbuf_x1B_aaaa_b
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0804EA54:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0804EA5C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk64_statusanimation
-
- thumb_func_start atk65_status2animation
-atk65_status2animation: @ 804EA84
- push {r4,r5,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804EB04
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r5, =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, =gStatuses3
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _0804EAFC
- ldr r0, =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _0804EAFC
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804EAFC
- ldr r1, =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 dp01_build_cmdbuf_x1B_aaaa_b
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
-_0804EAFC:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
-_0804EB04:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk65_status2animation
-
- thumb_func_start atk66_chosenstatusanimation
-atk66_chosenstatusanimation: @ 804EB2C
- push {r4,r5,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0804EB9E
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r5, =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, =gStatuses3
- ldrb r3, [r5]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _0804EB96
- ldr r0, =gDisableStructs
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _0804EB96
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804EB96
- ldrb r1, [r4, 0x2]
- movs r0, 0
- bl dp01_build_cmdbuf_x1B_aaaa_b
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
-_0804EB96:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x7
- str r0, [r1]
-_0804EB9E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk66_chosenstatusanimation
-
- thumb_func_start atk67_8025ECC
-atk67_8025ECC: @ 804EBC0
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, =gBattleCommunication
- ldrb r4, [r5]
- cmp r4, 0
- beq _0804EBD8
- cmp r4, 0x1
- beq _0804EC04
- b _0804EC96
- .pool
-_0804EBD8:
- str r4, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- ldr r0, =gText_BattleYesNoChoice
- movs r1, 0xC
- bl battle_show_message_maybe
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- strb r4, [r5, 0x1]
- movs r0, 0
- bl sub_8056B74
- b _0804EC96
- .pool
-_0804EC04:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804EC2A
- ldrb r0, [r5, 0x1]
- cmp r0, 0
- beq _0804EC2A
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r5, 0x1]
- bl sub_8056BAC
- movs r0, 0
- strb r0, [r5, 0x1]
- bl sub_8056B74
-_0804EC2A:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804EC52
- ldr r4, =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _0804EC52
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x1]
- bl sub_8056BAC
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_8056B74
-_0804EC52:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0804EC70
- ldr r0, =gBattleCommunication
- movs r4, 0x1
- strb r4, [r0, 0x1]
- b _0804EC7A
- .pool
-_0804EC70:
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0804EC96
-_0804EC7A:
- movs r0, 0x5
- bl PlaySE
- str r4, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0804EC96:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk67_8025ECC
-
- thumb_func_start atk68_80246A0
-atk68_80246A0: @ 804ECA4
- push {r4,r5,lr}
- movs r1, 0
- ldr r2, =gNoOfAllBanks
- ldr r5, =gBattlescriptCurrInstr
- ldrb r0, [r2]
- cmp r1, r0
- bge _0804ECC2
- ldr r4, =gUnknown_0202407A
- movs r3, 0xC
-_0804ECB6:
- adds r0, r1, r4
- strb r3, [r0]
- adds r1, 0x1
- ldrb r0, [r2]
- cmp r1, r0
- blt _0804ECB6
-_0804ECC2:
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk68_80246A0
-
- thumb_func_start atk69_dmg_adjustment2
-atk69_dmg_adjustment2: @ 804ECDC
- push {r4-r7,lr}
- ldr r7, =gBattleMons
- ldr r6, =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 _0804ED10
- ldr r1, =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _0804ED2A
- .pool
-_0804ED10:
- 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
-_0804ED2A:
- ldr r1, =gStringBank
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _0804ED68
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _0804ED68
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemEffectBattle
- ldr r2, =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]
-_0804ED68:
- ldr r2, =gBattleMons
- ldr r3, =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 _0804EE38
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x65
- beq _0804EDBA
- ldr r0, =gProtectStructs
- lsls r1, r4, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- blt _0804EDBA
- ldr r0, =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0804EE38
-_0804EDBA:
- ldrb r0, [r3]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r1, [r0, 0x28]
- ldr r2, =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _0804EE38
- subs r0, r1, 0x1
- str r0, [r2]
- ldr r1, =gProtectStructs
- ldrb r3, [r3]
- lsls r0, r3, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _0804EE10
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0804EE38
- .pool
-_0804EE10:
- ldr r0, =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0804EE38
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gLastUsedItem
- adds r0, r3, 0
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_0804EE38:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk69_dmg_adjustment2
-
- thumb_func_start atk6A_removeitem
-atk6A_removeitem: @ 804EE58
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r5, =gActiveBank
- strb r0, [r5]
- ldr r1, =gBattleStruct
- ldrb r4, [r5]
- lsls r0, r4, 1
- adds r0, 0xB8
- ldr r1, [r1]
- adds r1, r0
- ldr r2, =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
- .pool
- thumb_func_end atk6A_removeitem
-
- thumb_func_start atk6B_atknameinbuff1
-atk6B_atknameinbuff1: @ 804EEC8
- ldr r1, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- ldr r2, =gBankAttacker
- ldrb r0, [r2]
- strb r0, [r1, 0x2]
- ldr r3, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end atk6B_atknameinbuff1
-
- thumb_func_start atk6C_lvlbox_display
-atk6C_lvlbox_display: @ 804EF04
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gBattleScripting
- ldrb r1, [r0, 0x1E]
- adds r4, r0, 0
- cmp r1, 0
- bne _0804EF28
- bl sub_804F498
- cmp r0, 0
- beq _0804EF24
- movs r0, 0x3
- b _0804EF26
- .pool
-_0804EF24:
- movs r0, 0x1
-_0804EF26:
- strb r0, [r4, 0x1E]
-_0804EF28:
- ldrb r0, [r4, 0x1E]
- subs r0, 0x1
- cmp r0, 0x9
- bls _0804EF32
- b _0804F0F2
-_0804EF32:
- lsls r0, 2
- ldr r1, =_0804EF40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0804EF40:
- .4byte _0804EF68
- .4byte _0804EF94
- .4byte _0804EFAC
- .4byte _0804F000
- .4byte _0804F014
- .4byte _0804F02C
- .4byte _0804F014
- .4byte _0804F04C
- .4byte _0804F07C
- .4byte _0804F0C0
-_0804EF68:
- ldr r1, =gUnknown_02022E1E
- movs r0, 0x60
- strh r0, [r1]
- movs r0, 0x2
- movs r1, 0x7
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- bl ShowBg
- bl sub_804F17C
- ldr r1, =gBattleScripting
- movs r0, 0x2
- strb r0, [r1, 0x1E]
- b _0804F0F2
- .pool
-_0804EF94:
- bl sub_804F1CC
- lsls r0, 24
- cmp r0, 0
- beq _0804EFA0
- b _0804F0F2
-_0804EFA0:
- ldr r1, =gBattleScripting
- movs r0, 0x3
- strb r0, [r1, 0x1E]
- b _0804F0F2
- .pool
-_0804EFAC:
- ldr r1, =gUnknown_02022E18
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_02022E1A
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- movs r1, 0x7
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x1
- movs r1, 0x7
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x80
- str r0, [sp]
- movs r0, 0x12
- movs r1, 0x7
- movs r2, 0x1D
- movs r3, 0x13
- bl sub_8056A3C
- ldr r1, =gBattleScripting
- movs r0, 0x4
- strb r0, [r1, 0x1E]
- b _0804F0F2
- .pool
-_0804F000:
- bl sub_804F100
- movs r0, 0xD
- bl PutWindowTilemap
- movs r0, 0xD
- movs r1, 0x3
- bl CopyWindowToVram
- b _0804F06A
-_0804F014:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0804F0F2
- ldr r0, =gUnknown_02022E1A
- strh r1, [r0]
- b _0804F06A
- .pool
-_0804F02C:
- ldr r0, =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- beq _0804F0F2
- movs r0, 0x5
- bl PlaySE
- bl sub_804F144
- movs r0, 0xD
- movs r1, 0x2
- bl CopyWindowToVram
- b _0804F06A
- .pool
-_0804F04C:
- ldr r0, =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- beq _0804F0F2
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x81
- str r0, [sp]
- movs r0, 0x12
- movs r1, 0x7
- movs r2, 0x1D
- movs r3, 0x13
- bl sub_8056A3C
-_0804F06A:
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x1E]
- adds r0, 0x1
- strb r0, [r1, 0x1E]
- b _0804F0F2
- .pool
-_0804F07C:
- bl sub_804F344
- lsls r0, 24
- cmp r0, 0
- bne _0804F0F2
- movs r0, 0xE
- bl ClearWindowTilemap
- movs r0, 0xE
- movs r1, 0x1
- bl CopyWindowToVram
- movs r0, 0xD
- bl ClearWindowTilemap
- movs r0, 0xD
- movs r1, 0x1
- bl CopyWindowToVram
- movs r0, 0x2
- movs r1, 0x7
- movs r2, 0x2
- bl SetBgAttribute
- movs r0, 0x2
- bl ShowBg
- ldr r1, =gBattleScripting
- movs r0, 0xA
- strb r0, [r1, 0x1E]
- b _0804F0F2
- .pool
-_0804F0C0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0804F0F2
- movs r0, 0
- movs r1, 0x7
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x1
- movs r1, 0x7
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0804F0F2:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk6C_lvlbox_display
-
- thumb_func_start sub_804F100
-sub_804F100: @ 804F100
- push {lr}
- sub sp, 0x14
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- add r1, sp, 0x8
- bl sub_81D388C
- ldr r0, =gBattleResources
- ldr r0, [r0]
- ldr r1, [r0, 0x10]
- movs r0, 0xD
- str r0, [sp]
- movs r0, 0xF
- str r0, [sp, 0x4]
- movs r0, 0xD
- add r2, sp, 0x8
- movs r3, 0xE
- bl sub_81D3640
- add sp, 0x14
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_804F100
-
- thumb_func_start sub_804F144
-sub_804F144: @ 804F144
- push {lr}
- sub sp, 0x10
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldrb r1, [r0, 0x10]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- add r1, sp, 0x4
- bl sub_81D388C
- movs r0, 0xF
- str r0, [sp]
- movs r0, 0xD
- add r1, sp, 0x4
- movs r2, 0xE
- movs r3, 0xD
- bl sub_81D3784
- add sp, 0x10
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_804F144
-
- thumb_func_start sub_804F17C
-sub_804F17C: @ 804F17C
- push {lr}
- ldr r1, =gUnknown_02022E1E
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_02022E1C
- movs r2, 0xD0
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0831C2C8
- movs r1, 0x60
- movs r2, 0x20
- bl LoadPalette
- ldr r1, =gUnknown_0831C2E8
- movs r0, 0xE
- movs r2, 0
- movs r3, 0
- bl CopyToWindowPixelBuffer
- movs r0, 0xE
- bl PutWindowTilemap
- movs r0, 0xE
- movs r1, 0x3
- bl CopyWindowToVram
- bl sub_804F384
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_804F17C
-
- thumb_func_start sub_804F1CC
-sub_804F1CC: @ 804F1CC
- push {r4,r5,lr}
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _0804F1DC
- movs r0, 0x1
- b _0804F216
-_0804F1DC:
- ldr r4, =gUnknown_02022E1C
- ldrh r1, [r4]
- movs r5, 0x80
- lsls r5, 2
- cmp r1, r5
- bne _0804F1F0
- movs r0, 0
- b _0804F216
- .pool
-_0804F1F0:
- movs r0, 0xD0
- lsls r0, 1
- cmp r1, r0
- bne _0804F1FC
- bl sub_804F220
-_0804F1FC:
- ldrh r0, [r4]
- adds r0, 0x8
- strh r0, [r4]
- lsls r0, 16
- ldr r1, =0x01ff0000
- cmp r0, r1
- bls _0804F20C
- strh r5, [r4]
-_0804F20C:
- ldrh r1, [r4]
- eors r1, r5
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
-_0804F216:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_804F1CC
-
- thumb_func_start sub_804F220
-sub_804F220: @ 804F220
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r6, =gBattleStruct
- ldr r0, [r6]
- ldrb r0, [r0, 0x10]
- movs r5, 0x64
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0x38
- bl GetMonData
- mov r8, r0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- ldr r0, [r6]
- ldrb r0, [r0, 0x10]
- muls r0, r5
- adds r0, r4
- bl GetMonGender
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, [r6]
- ldrb r0, [r0, 0x10]
- muls r0, r5
- adds r0, r4
- ldr r5, =gStringVar4
- adds r1, r5, 0
- bl GetMonNickname
- str r5, [sp]
- mov r2, sp
- movs r1, 0
- movs r0, 0xE
- strb r0, [r2, 0x4]
- mov r0, sp
- strb r1, [r0, 0x5]
- movs r4, 0x20
- strb r4, [r0, 0x6]
- strb r1, [r0, 0x7]
- strb r4, [r0, 0x8]
- strb r1, [r0, 0x9]
- strb r1, [r0, 0xA]
- strb r1, [r0, 0xB]
- mov r3, sp
- ldrb r2, [r3, 0xC]
- subs r1, 0x10
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3, 0xC]
- mov r2, sp
- movs r0, 0x10
- strb r0, [r2, 0xC]
- ldrb r0, [r2, 0xD]
- ands r1, r0
- strb r1, [r2, 0xD]
- mov r0, sp
- strb r4, [r0, 0xD]
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- movs r0, 0xF9
- strb r0, [r5]
- adds r5, 0x1
- movs r0, 0x5
- strb r0, [r5]
- adds r5, 0x1
- adds r4, r5, 0
- adds r0, r4, 0
- mov r1, r8
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- subs r4, r5, r4
- movs r2, 0x4
- subs r2, r4
- lsls r2, 16
- lsrs r2, 16
- movs r1, 0x77
- bl StringFill
- adds r5, r0, 0
- cmp r7, 0xFF
- beq _0804F320
- cmp r7, 0
- bne _0804F300
- movs r1, 0
- movs r2, 0xC
- bl WriteColorChangeControlCode
- adds r5, r0, 0
- movs r1, 0x1
- movs r2, 0xD
- bl WriteColorChangeControlCode
- adds r5, r0, 0
- movs r0, 0xB5
- b _0804F318
- .pool
-_0804F300:
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0xE
- bl WriteColorChangeControlCode
- adds r5, r0, 0
- movs r1, 0x1
- movs r2, 0xF
- bl WriteColorChangeControlCode
- adds r5, r0, 0
- movs r0, 0xB6
-_0804F318:
- strb r0, [r5]
- adds r5, 0x1
- movs r0, 0xFF
- strb r0, [r5]
-_0804F320:
- mov r0, sp
- movs r1, 0xA
- strb r1, [r0, 0x7]
- strb r1, [r0, 0x9]
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- movs r0, 0xE
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_804F220
-
- thumb_func_start sub_804F344
-sub_804F344: @ 804F344
- push {lr}
- ldr r0, =gUnknown_02022E1C
- ldrh r1, [r0]
- movs r3, 0xD0
- lsls r3, 1
- adds r2, r0, 0
- cmp r1, r3
- bne _0804F35C
- movs r0, 0
- b _0804F380
- .pool
-_0804F35C:
- ldrh r0, [r2]
- adds r1, r0, 0
- subs r1, 0x10
- ldr r0, =0x0000019f
- cmp r1, r0
- bgt _0804F370
- strh r3, [r2]
- b _0804F372
- .pool
-_0804F370:
- strh r1, [r2]
-_0804F372:
- ldrh r1, [r2]
- movs r0, 0xD0
- lsls r0, 1
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
-_0804F380:
- pop {r1}
- bx r1
- thumb_func_end sub_804F344
-
- thumb_func_start sub_804F384
-sub_804F384: @ 804F384
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x10
- ldr r0, =gBattleStruct
- mov r8, r0
- ldr r0, [r0]
- ldrb r0, [r0, 0x10]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- mov r1, r8
- ldr r0, [r1]
- ldrb r0, [r0, 0x10]
- muls r0, r6
- adds r0, r5
- movs r1, 0
- bl GetMonData
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_80D2EDC
- str r0, [sp]
- ldr r5, =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r5
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- ldr r1, =0x0000ffff
- ands r0, r1
- ldr r1, =0xd75a0000
- orrs r0, r1
- str r0, [sp, 0x4]
- adds r0, r4, 0
- bl sub_80D30B0
- str r0, [sp, 0x8]
- add r4, sp, 0x8
- ldr r0, [r4, 0x4]
- ands r0, r5
- ldr r1, =0x0000d75a
- orrs r0, r1
- str r0, [r4, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl LoadSpritePalette
- ldr r0, =gUnknown_0831C3C0
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0xA
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x2E]
- ldr r0, =gUnknown_02022E1C
- ldrh r0, [r0]
- strh r0, [r1, 0x30]
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_804F384
-
- thumb_func_start sub_804F450
-sub_804F450: @ 804F450
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, =gUnknown_02022E1C
- ldrh r1, [r2, 0x30]
- ldrh r0, [r0]
- subs r1, r0
- strh r1, [r2, 0x24]
- lsls r1, 16
- cmp r1, 0
- beq _0804F470
- movs r0, 0x1
- strh r0, [r2, 0x2E]
- b _0804F48C
- .pool
-_0804F470:
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _0804F48C
- adds r0, r2, 0
- bl DestroySprite
- ldr r4, =0x0000d75a
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
-_0804F48C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_804F450
-
- thumb_func_start sub_804F498
-sub_804F498: @ 804F498
- push {lr}
- ldr r3, =gBattlePartyID
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- ldrh r1, [r3]
- ldrb r2, [r0, 0x10]
- cmp r1, r2
- beq _0804F4BA
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0804F4CC
- ldrh r0, [r3, 0x4]
- cmp r0, r2
- bne _0804F4CC
-_0804F4BA:
- movs r0, 0x1
- b _0804F4CE
- .pool
-_0804F4CC:
- movs r0, 0
-_0804F4CE:
- pop {r1}
- bx r1
- thumb_func_end sub_804F498
-
- thumb_func_start atk6D_set_sentpokes_values
-atk6D_set_sentpokes_values: @ 804F4D4
- push {lr}
- bl sub_803F988
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk6D_set_sentpokes_values
-
- thumb_func_start atk6E_set_atk_to_player0
-atk6E_set_atk_to_player0: @ 804F4EC
- push {lr}
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, =gBankAttacker
- strb r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk6E_set_atk_to_player0
-
- thumb_func_start atk6F_set_visible
-atk6F_set_visible: @ 804F50C
- push {r4,r5,lr}
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- bl dp01_build_cmdbuf_x33_a_33_33
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk6F_set_visible
-
- thumb_func_start atk70_record_ability
-atk70_record_ability: @ 804F540
- push {r4,lr}
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r1, =gActiveBank
- strb r0, [r1]
- ldrb r0, [r1]
- ldr r1, =gLastUsedAbility
- ldrb r1, [r1]
- bl RecordAbilityBattle
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk70_record_ability
-
- thumb_func_start sub_804F574
-sub_804F574: @ 804F574
- ldr r2, =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r2]
- movs r0, 0x2
- strb r0, [r2, 0x1]
- ldr r0, =gMoveToLearn
- 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
- .pool
- thumb_func_end sub_804F574
-
- thumb_func_start atk71_buffer_move_to_learn
-atk71_buffer_move_to_learn: @ 804F59C
- push {lr}
- bl sub_804F574
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk71_buffer_move_to_learn
-
- thumb_func_start atk72_jump_if_can_run_frombattle
-atk72_jump_if_can_run_frombattle: @ 804F5B4
- push {lr}
- ldr r0, =gBank1
- ldrb r0, [r0]
- bl sub_803EC20
- lsls r0, 24
- cmp r0, 0
- beq _0804F5E8
- ldr r3, =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 _0804F5F0
- .pool
-_0804F5E8:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0804F5F0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk72_jump_if_can_run_frombattle
-
- thumb_func_start atk73_hp_thresholds
-atk73_hp_thresholds: @ 804F5F8
- push {r4-r6,lr}
- ldr r0, =gBattleTypeFlags
- ldr r4, [r0]
- movs r6, 0x1
- ands r4, r6
- cmp r4, 0
- bne _0804F68E
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r1, =gActiveBank
- strb r0, [r1]
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gBattleMons
- movs r1, 0x58
- muls r1, r0
- adds r1, r2
- ldrh r5, [r1, 0x28]
- movs r0, 0x64
- muls r0, r5
- ldrh r1, [r1, 0x2C]
- bl __divsi3
- cmp r0, 0
- bne _0804F636
- movs r0, 0x1
-_0804F636:
- cmp r0, 0x45
- bgt _0804F63E
- cmp r5, 0
- bne _0804F65C
-_0804F63E:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB1
- strb r4, [r0]
- b _0804F68E
- .pool
-_0804F65C:
- cmp r0, 0x27
- ble _0804F670
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB1
- strb r6, [r0]
- b _0804F68E
- .pool
-_0804F670:
- cmp r0, 0x9
- ble _0804F684
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB1
- movs r1, 0x2
- b _0804F68C
- .pool
-_0804F684:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB1
- movs r1, 0x3
-_0804F68C:
- strb r1, [r0]
-_0804F68E:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk73_hp_thresholds
-
- thumb_func_start atk74_hp_thresholds2
-atk74_hp_thresholds2: @ 804F6A4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gBattleTypeFlags
- ldr r7, [r0]
- movs r0, 0x1
- mov r8, r0
- ands r7, r0
- cmp r7, 0
- bne _0804F73E
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- adds r4, r0, 0
- ldr r0, =gActiveBank
- strb r4, [r0]
- movs r0, 0x1
- eors r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gBattleStruct
- ldr r6, [r1]
- lsrs r0, 23
- adds r0, r6
- adds r0, 0xA8
- ldrb r5, [r0]
- ldr r1, =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 _0804F71C
- adds r0, r6, 0
- adds r0, 0xB1
- strb r7, [r0]
- b _0804F73E
- .pool
-_0804F71C:
- cmp r0, 0x1D
- bgt _0804F72A
- adds r0, r6, 0
- adds r0, 0xB1
- mov r1, r8
- strb r1, [r0]
- b _0804F73E
-_0804F72A:
- cmp r1, 0x45
- bgt _0804F736
- adds r1, r6, 0
- adds r1, 0xB1
- movs r0, 0x2
- b _0804F73C
-_0804F736:
- adds r1, r6, 0
- adds r1, 0xB1
- movs r0, 0x3
-_0804F73C:
- strb r0, [r1]
-_0804F73E:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk74_hp_thresholds2
-
- thumb_func_start atk75_8026A58
-atk75_8026A58: @ 804F754
- push {lr}
- sub sp, 0x4
- ldr r2, =gBankInMenu
- ldr r1, =gBankAttacker
- ldrb r0, [r1]
- strb r0, [r2]
- ldr r2, =gBattlePartyID
- ldrb r0, [r1]
- lsls r0, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r1, =gEnemyParty
- adds r0, r1
- ldr r1, =gLastUsedItem
- ldrh r1, [r1]
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0x1
- str r3, [sp]
- movs r3, 0
- bl ExecuteTableBasedItemEffect
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk75_8026A58
-
- thumb_func_start atk76_various
-atk76_various: @ 804F7AC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r1, =gActiveBank
- strb r0, [r1]
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x1A
- bls _0804F7CA
- b _0804FD70
-_0804F7CA:
- lsls r0, 2
- ldr r1, =_0804F7E0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0804F7E0:
- .4byte _0804F84C
- .4byte _0804F85C
- .4byte _0804F8BC
- .4byte _0804F8CC
- .4byte _0804F8E4
- .4byte _0804F920
- .4byte _0804F958
- .4byte _0804F9E0
- .4byte _0804FA20
- .4byte _0804FACC
- .4byte _0804FAE8
- .4byte _0804FB3C
- .4byte _0804FB94
- .4byte _0804FC18
- .4byte _0804FC2C
- .4byte _0804FC32
- .4byte _0804FC38
- .4byte _0804FC60
- .4byte _0804FC6A
- .4byte _0804FC78
- .4byte _0804FC8C
- .4byte _0804FCC4
- .4byte _0804FCD8
- .4byte _0804FCF0
- .4byte _0804FD1C
- .4byte _0804FD30
- .4byte _0804FD5C
-_0804F84C:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- b _0804FD70
- .pool
-_0804F85C:
- ldr r1, =gBankAttacker
- ldr r4, =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, =gSideTimers
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r2
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _0804F8A8
- ldr r1, =gBattleMons
- ldrb r2, [r2, 0x9]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0804F8A8
- strb r2, [r4]
- b _0804FD70
- .pool
-_0804F8A8:
- ldr r0, =gBankTarget
- ldr r1, =gActiveBank
- ldrb r1, [r1]
- strb r1, [r0]
- b _0804FD70
- .pool
-_0804F8BC:
- bl sub_803BB88
- ldr r1, =gBattleCommunication
- strb r0, [r1]
- b _0804FD70
- .pool
-_0804F8CC:
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- movs r1, 0
- bl GetMoveTarget
- ldr r1, =gBankTarget
- strb r0, [r1]
- b _0804FD70
- .pool
-_0804F8E4:
- ldr r2, =gHitMarker
- ldr r1, =gBitTable
- ldr r0, =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 _0804F914
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1]
- b _0804FD70
- .pool
-_0804F914:
- ldr r0, =gBattleCommunication
- strb r2, [r0]
- b _0804FD70
- .pool
-_0804F920:
- ldr r4, =gSpecialStatuses
- ldr r3, =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 _0804FD70
- .pool
-_0804F958:
- ldr r4, =gBattlePartyID
- ldr r1, =gBattleStruct
- ldr r0, [r1]
- ldrh r3, [r4]
- ldrb r2, [r0, 0x10]
- adds r6, r1, 0
- cmp r3, r2
- beq _0804F974
- ldrh r0, [r4, 0x4]
- cmp r0, r2
- beq _0804F970
- b _0804FD70
-_0804F970:
- cmp r3, r0
- bne _0804F988
-_0804F974:
- ldr r1, =gActiveBank
- movs r0, 0
- b _0804F98C
- .pool
-_0804F988:
- ldr r1, =gActiveBank
- movs r0, 0x2
-_0804F98C:
- strb r0, [r1]
- adds r5, r1, 0
- ldrb r2, [r5]
- lsls r0, r2, 1
- adds r0, 0xC8
- ldr r1, [r6]
- adds r4, r1, r0
- movs r3, 0
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0xC
- adds r0, r1
- ldrh r0, [r0]
- ldrh r2, [r4]
- cmp r0, r2
- beq _0804F9CC
- adds r6, r5, 0
- movs r5, 0x58
- adds r2, r1, 0
-_0804F9B4:
- adds r3, 0x1
- cmp r3, 0x3
- bgt _0804F9CC
- 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 _0804F9B4
-_0804F9CC:
- cmp r3, 0x4
- beq _0804F9D2
- b _0804FD70
-_0804F9D2:
- movs r0, 0
- strh r0, [r4]
- b _0804FD70
- .pool
-_0804F9E0:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0xB
- ands r0, r1
- cmp r0, 0x8
- beq _0804F9EE
- b _0804FD70
-_0804F9EE:
- ldr r1, =gBattleMons
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- bne _0804F9F8
- b _0804FD70
-_0804F9F8:
- adds r0, r1, 0
- adds r0, 0x80
- ldrh r0, [r0]
- cmp r0, 0
- bne _0804FA04
- b _0804FD70
-_0804FA04:
- ldr r0, =gHitMarker
- ldr r1, [r0]
- ldr r2, =0xffbfffff
- ands r1, r2
- str r1, [r0]
- b _0804FD70
- .pool
-_0804FA20:
- ldr r2, =gBattleCommunication
- mov r8, r2
- movs r0, 0
- strb r0, [r2]
- ldr r1, =gBattleScripting
- ldr r6, =gActiveBank
- ldrb r0, [r2, 0x1]
- strb r0, [r6]
- strb r0, [r1, 0x17]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r7, r0, 0
- adds r7, 0x92
- ldrb r3, [r7]
- ldr r1, =gBitTable
- ldrb r2, [r6]
- lsls r0, r2, 2
- adds r0, r1
- ldr r5, [r0]
- adds r0, r3, 0
- ands r0, r5
- cmp r0, 0
- beq _0804FA50
- b _0804FD70
-_0804FA50:
- ldr r4, =gBattleMons
- movs r0, 0x58
- mov r12, r0
- mov r1, r12
- muls r1, r2
- adds r2, r1, 0
- adds r1, r2, r4
- ldrh r0, [r1, 0x2C]
- lsrs r0, 1
- ldrh r1, [r1, 0x28]
- cmp r0, r1
- bcs _0804FA6A
- b _0804FD70
-_0804FA6A:
- cmp r1, 0
- bne _0804FA70
- b _0804FD70
-_0804FA70:
- adds r0, r4, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0804FA82
- b _0804FD70
-_0804FA82:
- orrs r3, r5
- strb r3, [r7]
- movs r0, 0x1
- mov r2, r8
- strb r0, [r2]
- ldrb r0, [r6]
- mov r1, r12
- muls r1, r0
- adds r0, r1, 0
- adds r1, r4, 0
- adds r1, 0x48
- adds r0, r1
- ldr r0, [r0]
- bl GetNatureFromPersonality
- ldr r1, =gUnknown_0831C4F8
- lsls r0, 24
- lsrs r0, 24
- adds r0, r1
- ldrb r0, [r0]
- mov r2, r8
- strb r0, [r2, 0x5]
- b _0804FD70
- .pool
-_0804FACC:
- ldr r4, =gBattleCommunication
- adds r0, r4, 0
- bl sub_81A5258
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _0804FADE
- b _0804FD78
-_0804FADE:
- strb r3, [r4, 0x1]
- b _0804FD70
- .pool
-_0804FAE8:
- ldr r0, =gBattleMons
- adds r0, 0x80
- movs r1, 0
- strh r1, [r0]
- ldr r2, =gHitMarker
- ldr r3, =gBitTable
- ldr r1, [r3, 0x4]
- lsls r1, 28
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldr r0, =gBattleStruct
- ldr r2, [r0]
- ldr r0, =0x000002a1
- adds r2, r0
- ldr r0, =gBattlePartyID
- ldrh r0, [r0, 0x2]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gDisableStructs
- adds r1, 0x34
- ldrb r0, [r1]
- movs r2, 0x2
- b _0804FBF4
- .pool
-_0804FB3C:
- ldr r1, =gBattleMons
- movs r0, 0
- strh r0, [r1, 0x28]
- ldr r2, =gHitMarker
- ldr r3, =gBitTable
- ldr r1, [r3]
- lsls r1, 28
- ldr r0, [r2]
- orrs r0, r1
- movs r1, 0x80
- lsls r1, 15
- orrs r0, r1
- str r0, [r2]
- ldr r0, =gBattleStruct
- ldr r2, [r0]
- movs r1, 0xA8
- lsls r1, 2
- adds r2, r1
- ldr r0, =gBattlePartyID
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, =gDisableStructs
- ldrb r0, [r2, 0x18]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x18]
- b _0804FD70
- .pool
-_0804FB94:
- ldr r0, =gBattleMons
- movs r1, 0
- strh r1, [r0, 0x28]
- adds r0, 0x80
- strh r1, [r0]
- ldr r2, =gHitMarker
- ldr r3, =gBitTable
- ldr r0, [r3]
- lsls r0, 28
- ldr r1, [r2]
- orrs r1, r0
- ldr r0, [r3, 0x4]
- lsls r0, 28
- orrs r1, r0
- movs r0, 0x80
- lsls r0, 15
- orrs r1, r0
- str r1, [r2]
- ldr r5, =gBattleStruct
- ldr r2, [r5]
- movs r0, 0xA8
- lsls r0, 2
- adds r2, r0
- ldr r4, =gBattlePartyID
- ldrh r0, [r4]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, [r5]
- ldr r1, =0x000002a1
- adds r2, r1
- ldrh r0, [r4, 0x2]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gDisableStructs
- ldrb r0, [r1, 0x18]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1, 0x18]
- adds r1, 0x34
- ldrb r0, [r1]
-_0804FBF4:
- orrs r0, r2
- strb r0, [r1]
- b _0804FD70
- .pool
-_0804FC18:
- movs r0, 0
- bl sub_8033E10
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- b _0804FD70
- .pool
-_0804FC2C:
- bl sub_81A5BF8
- b _0804FD70
-_0804FC32:
- bl sub_81A5D44
- b _0804FD70
-_0804FC38:
- ldr r1, =gRefereeStringsTable
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, =gDisplayedStringBattle
- movs r1, 0x16
- bl battle_show_message_maybe
- b _0804FD70
- .pool
-_0804FC60:
- movs r0, 0x16
- bl IsTextPrinterActive
- lsls r0, 16
- b _0804FD24
-_0804FC6A:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _0804FC76
- b _0804FD78
-_0804FC76:
- b _0804FD70
-_0804FC78:
- ldr r4, =gActiveBank
- movs r0, 0x1
- strb r0, [r4]
- ldr r0, =gBattleMons
- adds r0, 0x58
- b _0804FCA2
- .pool
-_0804FC8C:
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r0, 0x3
- bls _0804FD70
- ldr r4, =gActiveBank
- movs r0, 0x3
- strb r0, [r4]
- ldr r0, =gBattleMons
- movs r2, 0x84
- lsls r2, 1
- adds r0, r2
-_0804FCA2:
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0804FD70
- movs r0, 0
- movs r1, 0
- bl dp01_build_cmdbuf_x06_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _0804FD70
- .pool
-_0804FCC4:
- ldr r0, =gMPlay_BGM
- ldr r1, =0x0000ffff
- movs r2, 0x55
- bl m4aMPlayVolumeControl
- b _0804FD70
- .pool
-_0804FCD8:
- ldr r0, =gMPlay_BGM
- ldr r1, =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- b _0804FD70
- .pool
-_0804FCF0:
- ldr r0, =gBattleStruct
- ldr r2, [r0]
- ldr r0, =0x000002a2
- adds r2, r0
- ldr r1, =gBitTable
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- b _0804FD70
- .pool
-_0804FD1C:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl sub_805725C
-_0804FD24:
- cmp r0, 0
- bne _0804FD78
- b _0804FD70
- .pool
-_0804FD30:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0804FD50
- ldr r1, =gBattleOutcome
- movs r0, 0x5
- strb r0, [r1]
- b _0804FD70
- .pool
-_0804FD50:
- ldr r1, =gBattleOutcome
- movs r0, 0xA
- strb r0, [r1]
- b _0804FD70
- .pool
-_0804FD5C:
- movs r1, 0xCE
- lsls r1, 1
- movs r0, 0
- movs r2, 0x1
- bl sub_8034300
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_0804FD70:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
-_0804FD78:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk76_various
-
- thumb_func_start atk77_setprotect
-atk77_setprotect: @ 804FD8C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0x1
- ldr r2, =gUnknown_02024260
- ldr r1, =gBankAttacker
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r0, r2
- ldrh r0, [r0]
- mov r8, r1
- ldr r7, =gDisableStructs
- cmp r0, 0xB6
- beq _0804FDBC
- cmp r0, 0xC5
- beq _0804FDBC
- cmp r0, 0xCB
- beq _0804FDBC
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r7
- movs r1, 0
- strb r1, [r0, 0x8]
-_0804FDBC:
- ldr r0, =gUnknown_02024082
- ldrb r1, [r0]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _0804FDCC
- movs r6, 0
-_0804FDCC:
- ldr r2, =sProtectSuccessRates
- 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
- bcc _0804FE80
- cmp r6, 0
- beq _0804FE80
- ldr r4, =gBattleMoves
- ldr r3, =gCurrentMove
- ldrh r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- cmp r0, 0x6F
- bne _0804FE1C
- ldr r0, =gProtectStructs
- ldrb r1, [r5]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1]
- ldr r1, =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
-_0804FE1C:
- ldrh r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- cmp r0, 0x74
- bne _0804FE42
- ldr r0, =gProtectStructs
- ldrb r1, [r5]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
-_0804FE42:
- 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 _0804FEA2
- .pool
-_0804FE80:
- ldr r2, =gDisableStructs
- ldr r0, =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, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_0804FEA2:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk77_setprotect
-
- thumb_func_start atk78_faintifabilitynotdamp
-atk78_faintifabilitynotdamp: @ 804FEC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gBattleExecBuffer
- ldr r2, [r0]
- cmp r2, 0
- bne _0804FFCC
- ldr r1, =gBankTarget
- strb r2, [r1]
- ldr r0, =gNoOfAllBanks
- ldrb r3, [r0]
- adds r5, r1, 0
- mov r8, r0
- ldr r6, =gBattleMons
- cmp r2, r3
- bcs _0804FF14
- adds r0, r6, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _0804FF14
- adds r2, r3, 0
- adds r4, r6, 0
- movs r3, 0x58
-_0804FEF8:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r2
- bcs _0804FF14
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _0804FEF8
-_0804FF14:
- ldrb r0, [r5]
- mov r1, r8
- ldrb r1, [r1]
- cmp r0, r1
- bne _0804FFB0
- ldr r4, =gActiveBank
- ldr r7, =gBankAttacker
- ldrb r0, [r7]
- strb r0, [r4]
- ldr r2, =gBattleMoveDamage
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r6
- ldrh r0, [r0, 0x28]
- str r0, [r2]
- ldr r1, =0x00007fff
- movs r0, 0
- bl dp01_build_cmdbuf_x18_0_aa_health_bar_update
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, =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 _0804FFCC
- adds r3, r5, 0
- ldrb r5, [r7]
- ldr r7, =gBitTable
- adds r4, r0, 0
- ldr r6, =gAbsentBankFlags
-_0804FF60:
- ldrb r2, [r3]
- cmp r2, r5
- beq _0804FF76
- ldrb r0, [r6]
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r7
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- beq _0804FFCC
-_0804FF76:
- adds r0, r2, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r4
- bcc _0804FF60
- b _0804FFCC
- .pool
-_0804FFB0:
- ldr r1, =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, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB560
- str r0, [r1]
-_0804FFCC:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk78_faintifabilitynotdamp
-
- thumb_func_start atk79_setatkhptozero
-atk79_setatkhptozero: @ 804FFE4
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gBattleExecBuffer
- ldr r3, [r0]
- cmp r3, 0
- bne _08050028
- ldr r4, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08050028:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk79_setatkhptozero
-
- thumb_func_start atk7A_jumpwhiletargetvalid
-atk7A_jumpwhiletargetvalid: @ 8050044
- push {r4-r7,lr}
- ldr r3, =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, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- adds r7, r3, 0
- cmp r0, 0
- beq _080500DC
- ldr r0, =gBankTarget
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- ldr r2, =gBankAttacker
- lsls r1, 24
- lsrs r1, 24
- adds r3, r0, 0
- ldr r6, =gAbsentBankFlags
- ldr r5, =gBitTable
- ldr r0, =gNoOfAllBanks
- mov r12, r0
- ldrb r0, [r2]
- cmp r1, r0
- bne _0805009A
-_0805008A:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r2]
- cmp r0, r1
- beq _0805008A
-_0805009A:
- ldrb r0, [r6]
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r5
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- bne _0805008A
- ldrb r0, [r3]
- mov r2, r12
- ldrb r2, [r2]
- cmp r0, r2
- bcc _080500D8
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- b _080500E0
- .pool
-_080500D8:
- str r4, [r7]
- b _080500E0
-_080500DC:
- adds r0, r2, 0x5
- str r0, [r3]
-_080500E0:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk7A_jumpwhiletargetvalid
-
- thumb_func_start atk7B_healhalfHP_if_possible
-atk7B_healhalfHP_if_possible: @ 80500E8
- push {r4-r6,lr}
- ldr r4, =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, =gBankTarget
- cmp r0, 0x1
- bne _08050110
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r3]
-_08050110:
- ldr r1, =gBattleMoveDamage
- ldr r6, =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 _0805012A
- movs r0, 0x1
- str r0, [r1]
-_0805012A:
- 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 _08050158
- str r2, [r4]
- b _0805015E
- .pool
-_08050158:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_0805015E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk7B_healhalfHP_if_possible
-
- thumb_func_start atk7C_8025508
-atk7C_8025508: @ 8050164
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r2, =gNoOfAllBanks
- ldr r0, =gBankAttacker
- mov r10, r0
- movs r1, 0
- add r0, sp, 0x4
-_0805017A:
- strh r1, [r0]
- subs r0, 0x2
- cmp r0, sp
- bge _0805017A
- movs r1, 0
- mov r8, r1
- movs r5, 0
- ldrb r1, [r2]
- cmp r5, r1
- bge _080501D0
- ldr r0, =gBankAttacker
- ldrb r6, [r0]
- ldr r2, =0x0000ffff
- mov r9, r2
- lsls r4, r6, 3
- mov r2, sp
- ldr r0, =gBattleStruct
- mov r12, r0
- adds r7, r1, 0
-_080501A0:
- cmp r5, r6
- beq _080501C8
- mov r1, r12
- ldr r0, [r1]
- adds r0, r4, r0
- adds r1, r0, 0
- adds r1, 0xE0
- ldrb r3, [r1]
- adds r0, 0xE1
- ldrb r0, [r0]
- lsls r0, 8
- orrs r3, r0
- cmp r3, 0
- beq _080501C8
- cmp r3, r9
- beq _080501C8
- strh r3, [r2]
- adds r2, 0x2
- movs r0, 0x1
- add r8, r0
-_080501C8:
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, r7
- blt _080501A0
-_080501D0:
- mov r1, r10
- ldrb r0, [r1]
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r1, r0, 0
- adds r1, 0x98
- ldrb r3, [r1]
- adds r0, 0x99
- ldrb r0, [r0]
- lsls r0, 8
- orrs r3, r0
- cmp r3, 0
- beq _08050220
- ldr r0, =0x0000ffff
- cmp r3, r0
- beq _08050220
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, =gCurrentMove
- strh r3, [r4]
- b _0805024A
- .pool
-_08050220:
- mov r0, r8
- cmp r0, 0
- beq _08050290
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xfffffbff
- ands r0, r1
- str r0, [r2]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r1, r8
- bl __modsi3
- adds r5, r0, 0
- ldr r4, =gCurrentMove
- lsls r0, r5, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4]
-_0805024A:
- ldrh r0, [r4]
- movs r1, 0
- bl GetMoveTarget
- ldr r1, =gBankTarget
- strb r0, [r1]
- ldr r5, =gBattlescriptCurrInstr
- ldr r3, =gUnknown_082D86A8
- ldr r2, =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 _080502AE
- .pool
-_08050290:
- ldr r2, =gSpecialStatuses
- mov r0, r10
- 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 r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_080502AE:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk7C_8025508
-
- thumb_func_start atk7D_set_rain
-atk7D_set_rain: @ 80502C8
- push {lr}
- ldr r2, =gBattleWeather
- ldrh r0, [r2]
- movs r1, 0x7
- ands r1, r0
- cmp r1, 0
- beq _080502F4
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08050304
- .pool
-_080502F4:
- movs r0, 0x1
- strh r0, [r2]
- ldr r0, =gBattleCommunication
- strb r1, [r0, 0x5]
- ldr r0, =gWishFutureKnock
- adds r0, 0x28
- movs r1, 0x5
- strb r1, [r0]
-_08050304:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk7D_set_rain
-
- thumb_func_start atk7E_setreflect
-atk7E_setreflect: @ 805031C
- push {r4-r6,lr}
- ldr r6, =gBankAttacker
- ldrb r0, [r6]
- bl GetBankIdentity
- ldr r4, =gSideAffecting
- movs r5, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r1, [r1]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _0805035C
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0
- b _080503D0
- .pool
-_0805035C:
- ldrb r0, [r6]
- bl GetBankIdentity
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r6]
- bl GetBankIdentity
- ldr r4, =gSideTimers
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x5
- strb r1, [r0]
- ldrb r0, [r6]
- bl GetBankIdentity
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r6]
- strb r1, [r0, 0x1]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ands r0, r5
- cmp r0, 0
- beq _080503CC
- movs r0, 0x1
- bl CountAliveMonsInBattle
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _080503CC
- ldr r0, =gBattleCommunication
- strb r1, [r0, 0x5]
- b _080503D2
- .pool
-_080503CC:
- ldr r1, =gBattleCommunication
- movs r0, 0x1
-_080503D0:
- strb r0, [r1, 0x5]
-_080503D2:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk7E_setreflect
-
- thumb_func_start atk7F_setseeded
-atk7F_setseeded: @ 80503E8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r7, =gBattleMoveFlags
- ldrb r5, [r7]
- movs r0, 0x29
- ands r0, r5
- cmp r0, 0
- bne _0805041A
- ldr r0, =gStatuses3
- mov r9, r0
- ldr r1, =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 _08050438
-_0805041A:
- movs r0, 0x1
- orrs r0, r5
- strb r0, [r7]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08050488
- .pool
-_08050438:
- ldr r1, =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 _08050454
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xC
- bne _0805046C
-_08050454:
- movs r0, 0x1
- orrs r0, r5
- strb r0, [r7]
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08050488
- .pool
-_0805046C:
- ldr r0, =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, =gBattleCommunication
- strb r3, [r0, 0x5]
-_08050488:
- ldr r1, =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
- .pool
- thumb_func_end atk7F_setseeded
-
- thumb_func_start atk80_manipulatedamage
-atk80_manipulatedamage: @ 80504A8
- push {r4,lr}
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- ldrb r2, [r0, 0x1]
- adds r4, r1, 0
- cmp r2, 0x1
- beq _080504D8
- cmp r2, 0x1
- bgt _080504C4
- cmp r2, 0
- beq _080504CA
- b _08050518
- .pool
-_080504C4:
- cmp r2, 0x2
- beq _08050510
- b _08050518
-_080504CA:
- ldr r1, =gBattleMoveDamage
- ldr r0, [r1]
- negs r0, r0
- b _08050516
- .pool
-_080504D8:
- ldr r3, =gBattleMoveDamage
- ldr r0, [r3]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- str r0, [r3]
- cmp r0, 0
- bne _080504EA
- str r2, [r3]
-_080504EA:
- ldr r2, =gBattleMons
- ldr r0, =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 _08050518
- str r1, [r3]
- b _08050518
- .pool
-_08050510:
- ldr r1, =gBattleMoveDamage
- ldr r0, [r1]
- lsls r0, 1
-_08050516:
- str r0, [r1]
-_08050518:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk80_manipulatedamage
-
- thumb_func_start atk81_setrest
-atk81_setrest: @ 8050528
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r0, =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, =gActiveBank
- ldr r2, =gBankTarget
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r2]
- strb r0, [r5]
- ldr r4, =gBattleMoveDamage
- ldr r1, =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 _08050598
- mov r0, r12
- str r6, [r0]
- b _080505E8
- .pool
-_08050598:
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r4, r0
- ldr r1, [r0]
- movs r0, 0xF8
- ands r1, r0
- cmp r1, 0
- beq _080505B4
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _080505B8
- .pool
-_080505B4:
- ldr r0, =gBattleCommunication
- strb r1, [r0, 0x5]
-_080505B8:
- 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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080505E8:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk81_setrest
-
- thumb_func_start atk82_jumpifnotfirstturn
-atk82_jumpifnotfirstturn: @ 80505F8
- push {r4,r5,lr}
- ldr r5, =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, =gDisableStructs
- ldr r0, =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 _08050638
- adds r0, r4, 0x5
- str r0, [r5]
- b _0805063A
- .pool
-_08050638:
- str r3, [r5]
-_0805063A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end atk82_jumpifnotfirstturn
-
- thumb_func_start atk83_nop
-atk83_nop: @ 8050640
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end atk83_nop
-
- thumb_func_start UproarWakeUpCheck
-UproarWakeUpCheck: @ 8050650
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r2, 0
- ldr r0, =gNoOfAllBanks
- ldrb r1, [r0]
- mov r8, r0
- cmp r2, r1
- bge _080506C4
- ldr r0, =gBattleMons
- mov r12, r0
- movs r0, 0x58
- muls r0, r3
- add r0, r12
- adds r5, r0, 0
- adds r5, 0x20
- adds r4, r1, 0
- movs r3, 0
- ldr r6, =gBattleScripting
- ldr r7, =gBattleCommunication
-_0805067C:
- mov r0, r12
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x70
- ands r0, r1
- cmp r0, 0
- beq _080506BC
- ldrb r0, [r5]
- cmp r0, 0x2B
- beq _080506BC
- movs r3, 0
- strb r2, [r6, 0x17]
- ldr r1, =gBankTarget
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _080506DC
- cmp r0, r2
- beq _080506D0
- movs r0, 0x1
- strb r0, [r7, 0x5]
- b _080506C4
- .pool
-_080506BC:
- adds r3, 0x58
- adds r2, 0x1
- cmp r2, r4
- blt _0805067C
-_080506C4:
- mov r1, r8
- ldrb r1, [r1]
- cmp r2, r1
- beq _080506E0
- movs r0, 0x1
- b _080506E2
-_080506D0:
- ldr r0, =gBattleCommunication
- strb r3, [r0, 0x5]
- b _080506C4
- .pool
-_080506DC:
- strb r2, [r1]
- b _080506C4
-_080506E0:
- movs r0, 0
-_080506E2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end UproarWakeUpCheck
-
- thumb_func_start atk84_jump_if_cant_sleep
-atk84_jump_if_cant_sleep: @ 80506EC
- push {r4-r6,lr}
- ldr r5, =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, =gBankTarget
- ldrb r0, [r6]
- bl UproarWakeUpCheck
- lsls r0, 24
- cmp r0, 0
- beq _08050720
- str r4, [r5]
- b _08050762
- .pool
-_08050720:
- ldr r1, =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 _08050738
- cmp r1, 0x48
- bne _0805075C
-_08050738:
- ldr r2, =gLastUsedAbility
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- str r4, [r5]
- ldrb r1, [r2]
- adds r0, r3, 0
- bl RecordAbilityBattle
- b _08050762
- .pool
-_0805075C:
- ldr r0, [r5]
- adds r0, 0x5
- str r0, [r5]
-_08050762:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk84_jump_if_cant_sleep
-
- thumb_func_start atk85_stockpile
-atk85_stockpile: @ 8050768
- push {r4,r5,lr}
- ldr r5, =gDisableStructs
- ldr r4, =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 _080507A0
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _080507CA
- .pool
-_080507A0:
- adds r0, 0x1
- movs r3, 0
- strb r0, [r1, 0x9]
- ldr r2, =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, =gBattleCommunication
- strb r3, [r0, 0x5]
-_080507CA:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk85_stockpile
-
- thumb_func_start atk86_stockpiletobasedamage
-atk86_stockpiletobasedamage: @ 80507E4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r3, =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, =gDisableStructs
- ldr r6, =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 _08050828
- str r2, [r3]
- b _080508CA
- .pool
-_08050828:
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x6]
- cmp r0, 0x1
- beq _080508B0
- ldr r0, =gBattleMoveDamage
- mov r8, r0
- ldr r4, =gSideAffecting
- ldr r5, =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, =gBattleMons
- adds r0, r2
- ldrb r1, [r5]
- muls r1, r4
- adds r1, r2
- ldr r2, =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, =gBattleScripting
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x9]
- strb r0, [r2, 0x18]
- ldr r1, =gProtectStructs
- ldrb r0, [r6]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _080508B0
- lsls r0, r3, 4
- subs r0, r3
- movs r1, 0xA
- bl __divsi3
- mov r1, r8
- str r0, [r1]
-_080508B0:
- ldr r2, =gDisableStructs
- ldr r0, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080508CA:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk86_stockpiletobasedamage
-
- thumb_func_start atk87_stockpiletohpheal
-atk87_stockpiletohpheal: @ 8050904
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, =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, =gDisableStructs
- mov r8, r0
- ldr r6, =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 _08050954
- str r2, [r7]
- ldr r0, =gBattleCommunication
- strb r1, [r0, 0x5]
- b _080509D0
- .pool
-_08050954:
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r3
- adds r1, r0, r1
- ldrh r0, [r1, 0x2C]
- ldrh r3, [r1, 0x28]
- cmp r0, r3
- bne _08050984
- movs r0, 0
- strb r0, [r4, 0x9]
- str r2, [r7]
- ldr r1, =gBankTarget
- ldrb r0, [r6]
- strb r0, [r1]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _080509D0
- .pool
-_08050984:
- ldr r5, =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 _080509A0
- str r4, [r5]
-_080509A0:
- ldr r0, [r5]
- negs r0, r0
- str r0, [r5]
- ldr r3, =gBattleScripting
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x9]
- movs r2, 0
- strb r0, [r3, 0x18]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- strb r2, [r0, 0x9]
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- ldr r1, =gBankTarget
- ldrb r0, [r6]
- strb r0, [r1]
-_080509D0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk87_stockpiletohpheal
-
- thumb_func_start atk88_negativedamage
-atk88_negativedamage: @ 80509E8
- push {lr}
- ldr r2, =gBattleMoveDamage
- ldr r0, =gUnknown_020241F4
- ldr r0, [r0]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- negs r0, r0
- str r0, [r2]
- cmp r0, 0
- bne _08050A04
- movs r0, 0x1
- negs r0, r0
- str r0, [r2]
-_08050A04:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk88_negativedamage
-
- thumb_func_start sub_8050A1C
-sub_8050A1C: @ 8050A1C
- 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 _08050A50
- ldr r0, =gActiveBank
- ldr r1, =gBankAttacker
- b _08050A54
- .pool
-_08050A50:
- ldr r0, =gActiveBank
- ldr r1, =gBankTarget
-_08050A54:
- ldrb r1, [r1]
- strb r1, [r0]
- movs r0, 0xBF
- ands r5, r0
- movs r0, 0x80
- ands r0, r5
- cmp r0, 0
- beq _08050A6E
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08050A6E:
- movs r0, 0x7F
- ands r5, r0
- movs r0, 0x20
- ands r0, r5
- cmp r0, 0
- beq _08050A84
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_08050A84:
- movs r0, 0xDF
- ands r5, r0
- ldr r1, =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 _08050AA8
- b _08050D8C
-_08050AA8:
- ldr r4, =gSideTimers
- ldr r1, =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, 0x4]
- cmp r0, 0
- beq _08050B48
- mov r2, r9
- cmp r2, 0
- bne _08050B48
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAE
- beq _08050B78
- cmp r5, 0x1
- bne _08050B68
- ldr r4, =gSpecialStatuses
- ldr r3, =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 _08050B10
- ldr r0, =gBattlescriptCurrInstr
- mov r4, r8
- str r4, [r0]
- b _08050B68
- .pool
-_08050B10:
- mov r0, r8
- bl b_movescr_stack_push
- ldr r1, =gBattleScripting
- ldr r6, =gActiveBank
- ldrb r0, [r6]
- strb r0, [r1, 0x17]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAE03
- 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 _08050B68
- .pool
-_08050B48:
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAE
- beq _08050B78
- mov r0, r10
- cmp r0, 0x1
- beq _08050B78
- movs r0, 0
- bl sub_80464AC
- lsls r0, 24
- cmp r0, 0
- beq _08050B78
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082D9F1C
- str r0, [r1]
-_08050B68:
- movs r0, 0x1
- b _08050E80
- .pool
-_08050B78:
- ldr r2, =gBattleMons
- ldr r1, =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 _08050B94
- cmp r0, 0x49
- bne _08050C2C
-_08050B94:
- mov r0, r9
- cmp r0, 0
- bne _08050C2C
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAE
- beq _08050C2C
- cmp r5, 0x1
- bne _08050B68
- ldr r4, =gSpecialStatuses
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _08050BD4
- ldr r0, =gBattlescriptCurrInstr
- mov r1, r8
- str r1, [r0]
- b _08050B68
- .pool
-_08050BD4:
- mov r0, r8
- bl b_movescr_stack_push
- ldr r1, =gBattleScripting
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- strb r0, [r1, 0x17]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB5C7
- str r0, [r1]
- ldr r1, =gLastUsedAbility
- ldrb r0, [r2]
- movs r3, 0x58
- muls r0, r3
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r2]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- ldr r6, =gActiveBank
- 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 _08050B68
- .pool
-_08050C2C:
- ldr r1, =gActiveBank
- ldrb r0, [r1]
- movs r4, 0x58
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x33
- bne _08050C8C
- mov r2, r9
- cmp r2, 0
- bne _08050C8C
- cmp r7, 0x6
- bne _08050C8C
- cmp r5, 0x1
- bne _08050B68
- mov r0, r8
- bl b_movescr_stack_push
- ldr r1, =gBattleScripting
- ldr r3, =gActiveBank
- ldrb r0, [r3]
- strb r0, [r1, 0x17]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB62F
- str r0, [r1]
- ldr r1, =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 _08050B68
- .pool
-_08050C8C:
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- movs r4, 0x58
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x34
- bne _08050CF0
- mov r0, r9
- cmp r0, 0
- bne _08050CF0
- cmp r7, 0x1
- bne _08050CF0
- cmp r5, 0x1
- beq _08050CAE
- b _08050B68
-_08050CAE:
- mov r0, r8
- bl b_movescr_stack_push
- ldr r1, =gBattleScripting
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- strb r0, [r1, 0x17]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB62F
- str r0, [r1]
- ldr r1, =gLastUsedAbility
- ldrb r0, [r2]
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r2]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _08050B68
- .pool
-_08050CF0:
- ldr r3, =gActiveBank
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x13
- bne _08050D08
- cmp r5, 0
- bne _08050D08
- b _08050B68
-_08050D08:
- lsls r0, r6, 24
- asrs r0, 28
- movs r1, 0x7
- ands r0, r1
- negs r0, r0
- lsls r0, 24
- ldr r3, =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 _08050D32
- strb r4, [r3, 0x1]
- movs r0, 0xD3
- strb r0, [r3, 0x2]
- strb r4, [r3, 0x3]
- movs r2, 0x4
-_08050D32:
- 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 r4, =gActiveBank
- ldrb r2, [r4]
- 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 _08050DE2
- movs r1, 0
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- ldr r3, =gBattleCommunication
- mov r8, r3
- cmp r0, r2
- bne _08050D76
- movs r1, 0x1
-_08050D76:
- mov r4, r8
- strb r1, [r4, 0x5]
- b _08050E10
- .pool
-_08050D8C:
- asrs r6, r0, 28
- movs r0, 0x7
- ands r6, r0
- ldr r3, =gBattleTextBuff2
- strb r2, [r3]
- movs r2, 0x1
- cmp r6, 0x2
- bne _08050DA6
- strb r4, [r3, 0x1]
- movs r0, 0xD1
- strb r0, [r3, 0x2]
- strb r4, [r3, 0x3]
- movs r2, 0x4
-_08050DA6:
- 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, =gBattleMons
- ldr r4, =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 _08050DFC
-_08050DE2:
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- mov r8, r1
- b _08050E10
- .pool
-_08050DFC:
- movs r1, 0
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- ldr r2, =gBattleCommunication
- mov r8, r2
- cmp r0, r3
- bne _08050E0C
- movs r1, 0x1
-_08050E0C:
- mov r3, r8
- strb r1, [r3, 0x5]
-_08050E10:
- ldr r2, =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 _08050E40
- movs r0, 0
- strb r0, [r1]
-_08050E40:
- ldr r1, =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 _08050E56
- movs r0, 0xC
- strb r0, [r1]
-_08050E56:
- mov r2, r8
- ldrb r0, [r2, 0x5]
- cmp r0, 0x2
- bne _08050E7E
- movs r3, 0x1
- ands r3, r5
- cmp r3, 0
- beq _08050E70
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
-_08050E70:
- mov r4, r8
- ldrb r0, [r4, 0x5]
- cmp r0, 0x2
- bne _08050E7E
- cmp r3, 0
- bne _08050E7E
- b _08050B68
-_08050E7E:
- movs r0, 0
-_08050E80:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8050A1C
-
- thumb_func_start atk89_statbuffchange
-atk89_statbuffchange: @ 8050EA0
- push {r4,r5,lr}
- ldr r5, =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, =gBattleScripting
- ldrb r4, [r0, 0x1A]
- movs r0, 0xF0
- ands r0, r4
- lsls r0, 24
- asrs r0, 24
- movs r1, 0xF
- ands r1, r4
- ldrb r2, [r2, 0x1]
- bl sub_8050A1C
- lsls r0, 24
- cmp r0, 0
- bne _08050EDC
- ldr r0, [r5]
- adds r0, 0x6
- str r0, [r5]
-_08050EDC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk89_statbuffchange
-
- thumb_func_start atk8A_normalisebuffs
-atk8A_normalisebuffs: @ 8050EEC
- push {r4-r7,lr}
- movs r2, 0
- ldr r0, =gNoOfAllBanks
- ldrb r1, [r0]
- ldr r0, =gBattlescriptCurrInstr
- mov r12, r0
- cmp r2, r1
- bge _08050F24
- ldr r0, =gBattleMons
- movs r4, 0x6
- adds r5, r1, 0
- movs r7, 0x58
- adds r6, r0, 0
- adds r6, 0x18
-_08050F08:
- adds r3, r2, 0x1
- movs r1, 0x7
- adds r0, r2, 0
- muls r0, r7
- adds r0, r6
- adds r0, 0x7
-_08050F14:
- strb r4, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _08050F14
- adds r2, r3, 0
- cmp r2, r5
- blt _08050F08
-_08050F24:
- mov r1, r12
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk8A_normalisebuffs
-
- thumb_func_start atk8B_setbide
-atk8B_setbide: @ 8050F40
- push {r4,r5,lr}
- ldr r4, =gBattleMons
- ldr r3, =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, =gUnknown_02024268
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, =gCurrentMove
- ldrh r1, [r1]
- movs r2, 0
- strh r1, [r0]
- ldr r1, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk8B_setbide
-
- thumb_func_start atk8C_confuseifrepeatingattackends
-atk8C_confuseifrepeatingattackends: @ 8050FB0
- push {lr}
- ldr r1, =gBattleMons
- ldr r0, =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 _08050FD2
- ldr r1, =gBattleCommunication
- movs r0, 0x75
- strb r0, [r1, 0x3]
-_08050FD2:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk8C_confuseifrepeatingattackends
-
- thumb_func_start atk8D_setmultihit_counter
-atk8D_setmultihit_counter: @ 8050FF0
- push {r4,r5,lr}
- ldr r0, =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- cmp r1, 0
- beq _0805100C
- ldr r0, =gUnknown_02024212
- strb r1, [r0]
- b _08051026
- .pool
-_0805100C:
- ldr r4, =gUnknown_02024212
- bl Random
- movs r5, 0x3
- ands r0, r5
- strb r0, [r4]
- cmp r0, 0x1
- bls _08051022
- bl Random
- ands r0, r5
-_08051022:
- adds r0, 0x2
- strb r0, [r4]
-_08051026:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk8D_setmultihit_counter
-
- thumb_func_start atk8E_prepare_multihit
-atk8E_prepare_multihit: @ 805103C
- ldr r1, =gBattleScripting
- movs r2, 0
- movs r0, 0xFD
- strb r0, [r1, 0x8]
- movs r0, 0x1
- strb r0, [r1, 0x9]
- strb r0, [r1, 0xA]
- strb r0, [r1, 0xB]
- strb r2, [r1, 0xC]
- movs r0, 0xFF
- strb r0, [r1, 0xD]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end atk8E_prepare_multihit
-
- thumb_func_start sub_8051064
-sub_8051064: @ 8051064
- push {r4-r7,lr}
- ldr r6, =gBattleMons
- ldr r7, =gBankAttacker
- ldrb r0, [r7]
- movs r5, 0x58
- adds r1, r0, 0
- muls r1, r5
- adds r1, r6
- adds r1, 0x2A
- ldr r4, =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 _080510AC
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r1, r3, r1
- adds r1, 0x58
- ldr r2, =gBattlePartyID
- lsls r0, r3, 1
- b _08051108
- .pool
-_080510AC:
- 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 _080510FC
- ldr r3, =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 _08051116
- .pool
-_080510FC:
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r1, r4, r1
- adds r1, 0x58
- ldr r2, =gBattlePartyID
- lsls r0, r4, 1
-_08051108:
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DADD8
- str r0, [r1]
- movs r0, 0x1
-_08051116:
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8051064
-
- thumb_func_start atk8F_forcerandomswitch
-atk8F_forcerandomswitch: @ 805112C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r5, =gBattleTypeFlags
- ldr r0, [r5]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0805114A
- b _08051410
-_0805114A:
- ldr r4, =gBankTarget
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- str r1, [sp]
- cmp r0, 0
- bne _08051160
- ldr r0, =gPlayerParty
- str r0, [sp]
-_08051160:
- ldr r2, [r5]
- movs r1, 0x81
- lsls r1, 1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, r1
- beq _08051182
- ldr r1, =0x02000100
- adds r0, r2, 0
- ands r0, r1
- cmp r0, r1
- beq _08051182
- movs r0, 0x80
- lsls r0, 15
- ands r0, r2
- cmp r0, 0
- beq _080511C8
-_08051182:
- ldr r2, =gBankTarget
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- adds r1, r2, 0
- cmp r0, 0
- beq _080511AC
- movs r0, 0x3
- mov r9, r0
- movs r0, 0x6
- b _080511B2
- .pool
-_080511AC:
- movs r0, 0
- mov r9, r0
- movs r0, 0x3
-_080511B2:
- mov r8, r0
- movs r0, 0x3
- mov r10, r0
- movs r0, 0x1
- str r0, [sp, 0x8]
- ldr r2, =gBattlePartyID
- ldrb r1, [r1]
- b _0805128E
- .pool
-_080511C8:
- movs r0, 0x42
- ands r0, r2
- cmp r0, 0x42
- beq _080511DA
- ldr r1, =0x02000040
- adds r0, r2, 0
- ands r0, r1
- cmp r0, r1
- bne _0805121C
-_080511DA:
- ldrb r0, [r4]
- bl sub_806D864
- lsls r0, 24
- lsrs r0, 24
- bl sub_806D82C
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _080511FC
- movs r1, 0x3
- mov r9, r1
- movs r0, 0x6
- b _08051202
- .pool
-_080511FC:
- movs r1, 0
- mov r9, r1
- movs r0, 0x3
-_08051202:
- mov r8, r0
- movs r1, 0x3
- mov r10, r1
- movs r0, 0x1
- str r0, [sp, 0x8]
- ldr r2, =gBattlePartyID
- ldr r0, =gBankTarget
- ldrb r1, [r0]
- b _0805128E
- .pool
-_0805121C:
- movs r0, 0x80
- lsls r0, 8
- ands r0, r2
- cmp r0, 0
- beq _08051274
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08051240
- movs r1, 0
- mov r9, r1
- movs r0, 0x6
- mov r8, r0
- mov r10, r0
- movs r1, 0x2
- b _08051260
-_08051240:
- ldrb r1, [r4]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08051252
- movs r0, 0x3
- mov r9, r0
- movs r1, 0x6
- b _08051258
-_08051252:
- movs r0, 0
- mov r9, r0
- movs r1, 0x3
-_08051258:
- mov r8, r1
- movs r0, 0x3
- mov r10, r0
- movs r1, 0x1
-_08051260:
- str r1, [sp, 0x8]
- ldr r2, =gBattlePartyID
- ldr r0, =gBankTarget
- ldrb r1, [r0]
- b _0805128E
- .pool
-_08051274:
- movs r0, 0x1
- ands r2, r0
- cmp r2, 0
- beq _080512A4
- movs r0, 0
- mov r9, r0
- movs r1, 0x6
- mov r8, r1
- mov r10, r1
- movs r0, 0x2
- str r0, [sp, 0x8]
- ldr r2, =gBattlePartyID
- ldrb r1, [r4]
-_0805128E:
- lsls r0, r1, 1
- adds r0, r2
- ldrh r7, [r0]
- movs r0, 0x2
- eors r1, r0
- lsls r1, 1
- adds r1, r2
- ldrh r5, [r1]
- b _080512BE
- .pool
-_080512A4:
- movs r1, 0
- mov r9, r1
- movs r0, 0x6
- mov r8, r0
- mov r10, r0
- movs r1, 0x1
- str r1, [sp, 0x8]
- ldr r1, =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r5, [r0]
- adds r7, r5, 0
-_080512BE:
- mov r6, r9
- cmp r6, r8
- bge _080512FC
-_080512C4:
- movs r0, 0x64
- muls r0, r6
- ldr r1, [sp]
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080512F6
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080512F6
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080512F6
- ldr r0, [sp, 0x4]
- adds r0, 0x1
- str r0, [sp, 0x4]
-_080512F6:
- adds r6, 0x1
- cmp r6, r8
- blt _080512C4
-_080512FC:
- ldr r1, [sp, 0x4]
- ldr r0, [sp, 0x8]
- cmp r1, r0
- bgt _08051328
- ldr r3, =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 _08051414
- .pool
-_08051328:
- bl sub_8051064
- lsls r0, 24
- cmp r0, 0
- beq _08051378
-_08051332:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r1, r10
- bl __modsi3
- adds r6, r0, 0
- add r6, r9
- cmp r6, r7
- beq _08051332
- cmp r6, r5
- beq _08051332
- movs r0, 0x64
- muls r0, r6
- ldr r1, [sp]
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08051332
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _08051332
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08051332
-_08051378:
- ldr r4, =gBankTarget
- ldrb r0, [r4]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- adds r0, 0x5C
- strb r6, [r0]
- bl sub_81B1250
- lsls r0, 24
- cmp r0, 0
- bne _08051396
- ldrb r0, [r4]
- bl sub_803BDA0
-_08051396:
- ldr r0, =gBattleTypeFlags
- ldr r2, [r0]
- movs r1, 0x81
- lsls r1, 1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, r1
- beq _080513C0
- movs r0, 0x42
- ands r0, r2
- cmp r0, 0x42
- beq _080513C0
- ldr r1, =0x02000100
- adds r0, r2, 0
- ands r0, r1
- cmp r0, r1
- beq _080513C0
- ldr r0, =0x02000040
- ands r2, r0
- cmp r2, r0
- bne _080513DE
-_080513C0:
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- lsls r4, r6, 24
- lsrs r4, 24
- adds r1, r4, 0
- movs r2, 0
- bl sub_81B8E80
- ldrb r1, [r5]
- movs r0, 0x2
- eors r0, r1
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_81B8E80
-_080513DE:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _08051414
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- lsls r1, r6, 24
- lsrs r1, 24
- bl sub_80571DC
- b _08051414
- .pool
-_08051410:
- bl sub_8051064
-_08051414:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk8F_forcerandomswitch
-
- thumb_func_start atk90_conversion_type_change
-atk90_conversion_type_change: @ 8051424
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- ldr r2, =gBattleMons
- ldr r3, =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 _08051466
- movs r5, 0x58
- adds r2, r1, 0
-_0805144C:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bhi _08051466
- lsls r1, r6, 1
- ldrb r0, [r3]
- muls r0, r5
- adds r1, r0
- adds r1, r2
- ldrh r0, [r1]
- cmp r0, 0
- bne _0805144C
-_08051466:
- movs r3, 0
- cmp r3, r6
- bcs _080514E8
- ldr r0, =gBattleMoves
- mov r10, r0
- ldr r5, =gBattleMons
- mov r12, r5
- ldr r7, =gBankAttacker
- ldrb r0, [r7]
- movs r4, 0x58
- adds r5, r0, 0
- muls r5, r4
- movs r0, 0xC
- add r0, r12
- mov r9, r0
-_08051484:
- 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 _080514C6
- mov r0, r8
- adds r1, r5, r0
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _080514B2
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _080514C4
-_080514B2:
- movs r2, 0x7
- b _080514C6
- .pool
-_080514C4:
- movs r2, 0
-_080514C6:
- ldrb r0, [r7]
- muls r0, r4
- add r0, r12
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r2, r1
- beq _080514DE
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r2, r0
- bne _080514E8
-_080514DE:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r6
- bcc _08051484
-_080514E8:
- cmp r3, r6
- bne _0805150C
- ldr r3, =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 _080515B0
- .pool
-_0805150C:
- movs r7, 0x3
- ldr r5, =gBattleMoves
- mov r9, r5
-_08051512:
- bl Random
- adds r3, r0, 0
- ands r3, r7
- cmp r3, r6
- bcs _08051512
- ldr r4, =gBattleMons
- lsls r1, r3, 1
- ldr r3, =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 _08051572
- mov r0, r8
- adds r2, r5, r0
- adds r0, r2, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _08051560
- adds r0, r2, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _08051570
-_08051560:
- movs r2, 0x7
- b _08051572
- .pool
-_08051570:
- movs r2, 0
-_08051572:
- 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 _08051512
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r2, r0
- beq _08051512
- strb r2, [r1]
- ldrb r0, [r4]
- muls r0, r3
- add r0, r8
- adds r0, 0x22
- strb r2, [r0]
- ldr r1, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080515B0:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk90_conversion_type_change
-
- thumb_func_start atk91_givepaydaymoney
-atk91_givepaydaymoney: @ 80515C8
- push {r4,lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x02000002
- ands r0, r1
- cmp r0, 0
- bne _08051650
- ldr r1, =gUnknown_0202432E
- ldrh r0, [r1]
- cmp r0, 0
- beq _08051650
- adds r1, r0, 0
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x4A
- ldrb r0, [r0]
- adds r4, r1, 0
- muls r4, r0
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- adds r1, r4, 0
- bl AddMoney
- ldr r1, =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]
- strb r4, [r1, 0x4]
- movs r0, 0xFF
- lsls r0, 8
- ands r4, r0
- lsrs r4, 8
- strb r4, [r1, 0x5]
- movs r0, 0xFF
- strb r0, [r1, 0x6]
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, =gUnknown_082DB307
- str r0, [r4]
- b _08051658
- .pool
-_08051650:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08051658:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk91_givepaydaymoney
-
- thumb_func_start atk92_setlightscreen
-atk92_setlightscreen: @ 8051664
- push {r4-r6,lr}
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- bl GetBankIdentity
- ldr r4, =gSideAffecting
- movs r6, 0x1
- adds r1, r6, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r1, [r1]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080516A4
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0
- b _08051718
- .pool
-_080516A4:
- ldrb r0, [r5]
- bl GetBankIdentity
- adds r1, r6, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r5]
- bl GetBankIdentity
- ldr r4, =gSideTimers
- adds r1, r6, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x5
- strb r1, [r0, 0x2]
- ldrb r0, [r5]
- bl GetBankIdentity
- adds r1, r6, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r5]
- strb r1, [r0, 0x3]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ands r0, r6
- cmp r0, 0
- beq _08051714
- movs r0, 0x1
- bl CountAliveMonsInBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08051714
- ldr r1, =gBattleCommunication
- movs r0, 0x4
- b _08051718
- .pool
-_08051714:
- ldr r1, =gBattleCommunication
- movs r0, 0x3
-_08051718:
- strb r0, [r1, 0x5]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk92_setlightscreen
-
- thumb_func_start atk93_ko_move
-atk93_ko_move: @ 8051730
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r7, =gBattleMons
- ldr r6, =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 _08051768
- ldr r1, =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _08051782
- .pool
-_08051768:
- 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
-_08051782:
- ldr r1, =gStringBank
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _080517C0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _080517C0
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemEffectBattle
- ldr r2, =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]
-_080517C0:
- ldr r1, =gBattleMons
- ldr r2, =gBankTarget
- ldrb r3, [r2]
- movs r6, 0x58
- adds r0, r3, 0
- muls r0, r6
- adds r5, r0, r1
- adds r0, r5, 0
- adds r0, 0x20
- ldrb r4, [r0]
- mov r8, r1
- mov r9, r2
- cmp r4, 0x5
- bne _0805181C
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =gLastUsedAbility
- strb r4, [r0]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB552
- str r0, [r1]
- mov r1, r9
- ldrb r0, [r1]
- movs r1, 0x5
- bl RecordAbilityBattle
- b _08051A70
- .pool
-_0805181C:
- ldr r1, =gStatuses3
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x18
- ands r0, r1
- cmp r0, 0
- bne _080518A0
- ldr r1, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- lsls r2, r0, 1
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldr r7, =gBankAttacker
- ldrb r0, [r7]
- muls r0, r6
- add r0, r8
- 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
- blt _08051870
- b _08051A08
-_08051870:
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- add r1, r8
- adds r1, 0x2A
- mov r2, r9
- ldrb r0, [r2]
- muls r0, r6
- add r0, r8
- adds r0, 0x2A
- ldrb r1, [r1]
- movs r4, 0x1
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08051936
- b _08051A08
- .pool
-_080518A0:
- ldr r1, =gDisableStructs
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldr r1, =gBankAttacker
- ldrb r0, [r0, 0x15]
- adds r7, r1, 0
- ldrb r3, [r7]
- cmp r0, r3
- bne _080518CA
- ldrb r0, [r7]
- muls r0, r6
- add r0, r8
- adds r0, 0x2A
- adds r1, r5, 0
- adds r1, 0x2A
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _08051942
-_080518CA:
- ldr r1, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- lsls r2, r0, 1
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldr r6, =gBattleMons
- ldrb r0, [r7]
- movs r5, 0x58
- muls r0, r5
- adds r0, r6
- adds r0, 0x2A
- ldrb r1, [r0]
- ldr r0, =gBankTarget
- mov r8, r0
- ldrb r0, [r0]
- muls r0, r5
- adds r0, r6
- adds r0, 0x2A
- ldrb r0, [r0]
- subs r1, r0
- ldrb r2, [r2, 0x3]
- adds r1, r2
- lsls r1, 16
- lsrs r4, r1, 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 _08051934
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r6
- adds r1, 0x2A
- mov r2, r8
- ldrb r0, [r2]
- muls r0, r5
- adds r0, r6
- adds r0, 0x2A
- ldrb r1, [r1]
- movs r4, 0x1
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08051936
-_08051934:
- movs r4, 0
-_08051936:
- ldr r3, =gBattleMons
- mov r8, r3
- ldr r0, =gBankTarget
- mov r9, r0
- cmp r4, 0
- beq _08051A08
-_08051942:
- ldr r0, =gProtectStructs
- mov r1, r9
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- bge _08051990
- ldr r1, =gBattleMoveDamage
- movs r0, 0x58
- muls r0, r2
- add r0, r8
- ldrh r0, [r0, 0x28]
- subs r0, 0x1
- str r0, [r1]
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x40
- b _080519EE
- .pool
-_08051990:
- ldr r0, =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _080519DC
- ldr r1, =gBattleMoveDamage
- movs r3, 0x58
- adds r0, r2, 0
- muls r0, r3
- add r0, r8
- ldrh r0, [r0, 0x28]
- subs r0, 0x1
- str r0, [r1]
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gLastUsedItem
- mov r2, r9
- ldrb r0, [r2]
- muls r0, r3
- add r0, r8
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
- b _080519F2
- .pool
-_080519DC:
- ldr r1, =gBattleMoveDamage
- movs r0, 0x58
- muls r0, r2
- add r0, r8
- ldrh r0, [r0, 0x28]
- str r0, [r1]
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x10
-_080519EE:
- orrs r0, r1
- strb r0, [r2]
-_080519F2:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08051A70
- .pool
-_08051A08:
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r3, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- movs r2, 0x58
- adds r1, r0, 0
- muls r1, r2
- adds r1, r3
- adds r1, 0x2A
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- adds r0, 0x2A
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bcc _08051A50
- ldr r1, =gBattleCommunication
- movs r0, 0
- b _08051A54
- .pool
-_08051A50:
- ldr r1, =gBattleCommunication
- movs r0, 0x1
-_08051A54:
- strb r0, [r1, 0x5]
- ldr r3, =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]
-_08051A70:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk93_ko_move
-
- thumb_func_start atk94_gethalfcurrentenemyhp
-atk94_gethalfcurrentenemyhp: @ 8051A84
- push {lr}
- ldr r3, =gBattleMoveDamage
- ldr r2, =gBattleMons
- ldr r0, =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 _08051AA2
- movs r0, 0x1
- str r0, [r3]
-_08051AA2:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk94_gethalfcurrentenemyhp
-
- thumb_func_start atk95_setsandstorm
-atk95_setsandstorm: @ 8051AC0
- push {lr}
- ldr r2, =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _08051AEC
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08051AFE
- .pool
-_08051AEC:
- movs r0, 0x8
- strh r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x5]
- ldr r0, =gWishFutureKnock
- adds r0, 0x28
- movs r1, 0x5
- strb r1, [r0]
-_08051AFE:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk95_setsandstorm
-
- thumb_func_start atk96_weatherdamage
-atk96_weatherdamage: @ 8051B18
- 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 _08051B36
- b _08051C48
-_08051B36:
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08051B4C
- b _08051C48
-_08051B4C:
- ldr r2, =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x18
- ands r0, r1
- adds r4, r2, 0
- ldr r5, =gBankAttacker
- cmp r0, 0
- beq _08051BDA
- ldr r0, =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 _08051BD4
- cmp r0, 0x8
- beq _08051BD4
- cmp r0, 0x4
- beq _08051BD4
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x5
- beq _08051BD4
- cmp r0, 0x8
- beq _08051BD4
- cmp r0, 0x4
- beq _08051BD4
- adds r0, r3, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x8
- beq _08051BD4
- ldr r0, =gStatuses3
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08051BD4
- movs r0, 0x80
- lsls r0, 11
- ands r1, r0
- cmp r1, 0
- bne _08051BD4
- ldr r1, =gBattleMoveDamage
- ldrh r0, [r3, 0x2C]
- lsrs r0, 4
- str r0, [r1]
- cmp r0, 0
- bne _08051BDA
- movs r0, 0x1
- b _08051BD8
- .pool
-_08051BD4:
- ldr r1, =gBattleMoveDamage
- movs r0, 0
-_08051BD8:
- str r0, [r1]
-_08051BDA:
- ldrh r1, [r4]
- movs r4, 0x80
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08051C50
- ldr r1, =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 _08051C3C
- adds r0, r2, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xF
- beq _08051C3C
- ldr r0, =gStatuses3
- lsls r1, r3, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r1, 0
- ands r0, r4
- cmp r0, 0
- bne _08051C3C
- movs r0, 0x80
- lsls r0, 11
- ands r1, r0
- cmp r1, 0
- bne _08051C3C
- ldr r1, =gBattleMoveDamage
- ldrh r0, [r2, 0x2C]
- lsrs r0, 4
- str r0, [r1]
- cmp r0, 0
- bne _08051C50
- movs r0, 0x1
- str r0, [r1]
- b _08051C50
- .pool
-_08051C3C:
- ldr r1, =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
- b _08051C50
- .pool
-_08051C48:
- ldr r1, =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
- ldr r5, =gBankAttacker
-_08051C50:
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08051C6A
- ldr r1, =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
-_08051C6A:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk96_weatherdamage
-
- thumb_func_start atk97_try_infatuation
-atk97_try_infatuation: @ 8051C90
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08051CC8
- ldr r1, =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- b _08051CD8
- .pool
-_08051CC8:
- ldr r1, =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gEnemyParty
-_08051CD8:
- adds r5, r1, r0
- ldr r4, =gBankTarget
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08051D0C
- ldr r1, =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- b _08051D1C
- .pool
-_08051D0C:
- ldr r1, =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gEnemyParty
-_08051D1C:
- 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, =gBankTarget
- ldrb r0, [r5]
- movs r6, 0x58
- muls r0, r6
- ldr r1, =gBattleMons
- adds r0, r1
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0xC
- bne _08051D94
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB5F5
- str r0, [r1]
- ldr r0, =gLastUsedAbility
- strb r2, [r0]
- ldrb r0, [r5]
- movs r1, 0xC
- bl RecordAbilityBattle
- b _08051E2C
- .pool
-_08051D94:
- 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 _08051DE4
- ldrb r0, [r5]
- muls r0, r6
- ldr r4, =gBattleMons
- adds r4, 0x50
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0xF0
- lsls r1, 12
- ands r0, r1
- cmp r0, 0
- bne _08051DE4
- mov r0, r10
- mov r1, r9
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08051DE4
- mov r0, r8
- adds r1, r7, 0
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08051E08
-_08051DE4:
- ldr r3, =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 _08051E2C
- .pool
-_08051E08:
- ldrb r0, [r5]
- adds r2, r0, 0
- muls r2, r6
- adds r2, r4
- ldr r1, =gBitTable
- ldr r0, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08051E2C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk97_try_infatuation
-
- thumb_func_start atk98_status_icon_update
-atk98_status_icon_update: @ 8051E48
- push {r4-r7,lr}
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08051F34
- ldr r5, =gBattlescriptCurrInstr
- ldr r1, [r5]
- ldrb r0, [r1, 0x1]
- cmp r0, 0x4
- beq _08051EA0
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r3, =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 dp01_build_cmdbuf_x1A_aaaa_bbbb
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- b _08051F34
- .pool
-_08051EA0:
- ldr r4, =gActiveBank
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- strb r0, [r4]
- ldr r6, =gAbsentBankFlags
- ldrb r1, [r6]
- ldr r7, =gBitTable
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r7
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08051EDC
- ldr r3, =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 dp01_build_cmdbuf_x1A_aaaa_bbbb
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08051EDC:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08051F2C
- 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 _08051F2C
- ldr r3, =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 dp01_build_cmdbuf_x1A_aaaa_bbbb
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08051F2C:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08051F34:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk98_status_icon_update
-
- thumb_func_start atk99_setmist
-atk99_setmist: @ 8051F58
- push {r4-r6,lr}
- ldr r6, =gSideTimers
- ldr r4, =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, 0x4]
- cmp r0, 0
- beq _08051F98
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =gBattleCommunication
- strb r5, [r0, 0x5]
- b _08051FE6
- .pool
-_08051F98:
- 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, 0x4]
- 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
- ldrb r1, [r4]
- strb r1, [r0, 0x5]
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r2, =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, =gBattleCommunication
- strb r3, [r0, 0x5]
-_08051FE6:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk99_setmist
-
- thumb_func_start atk9A_set_focusenergy
-atk9A_set_focusenergy: @ 8052000
- push {lr}
- ldr r1, =gBattleMons
- ldr r0, =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 _08052040
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08052048
- .pool
-_08052040:
- orrs r1, r3
- str r1, [r0]
- ldr r0, =gBattleCommunication
- strb r2, [r0, 0x5]
-_08052048:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk9A_set_focusenergy
-
- thumb_func_start atk9B_transformdataexecution
-atk9B_transformdataexecution: @ 805205C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, =gUnknown_020241EC
- ldr r2, =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r7, =gBattleMons
- ldr r0, =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 _080520A2
- ldr r0, =gStatuses3
- lsls r1, 2
- adds r1, r0
- ldr r2, [r1]
- ldr r0, =0x000400c0
- ands r2, r0
- cmp r2, 0
- beq _080520D8
-_080520A2:
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- b _080521EC
- .pool
-_080520D8:
- ldr r3, =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, =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, =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, =gActiveBank
- mov r8, r0
-_08052170:
- adds r0, r5, r4
- adds r1, r2, r4
- ldrb r1, [r1]
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x23
- bls _08052170
- movs r4, 0
- ldr r7, =gBattleMoves
- ldr r3, =gBattleMons + 0xC
- adds r5, r3, 0
- adds r5, 0x18
-_08052188:
- 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 _080521C4
- adds r0, r4, r2
- adds r0, r5
- b _080521CA
- .pool
-_080521C4:
- adds r0, r4, r2
- adds r0, r5
- movs r1, 0x5
-_080521CA:
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x3
- ble _08052188
- ldrb r0, [r6]
- mov r1, r8
- strb r0, [r1]
- movs r0, 0
- movs r1, 0x2
- bl dp01_build_cmdbuf_x38_a
- mov r2, r8
- ldrb r0, [r2]
- bl MarkBufferBankForExecution
- ldr r1, =gBattleCommunication
- movs r0, 0
-_080521EC:
- strb r0, [r1, 0x5]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk9B_transformdataexecution
-
- thumb_func_start atk9C_set_substitute
-atk9C_set_substitute: @ 80521FC
- push {r4-r7,lr}
- ldr r7, =gBattleMons
- ldr r6, =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 _08052216
- movs r2, 0x1
-_08052216:
- ldrh r0, [r3, 0x28]
- cmp r0, r2
- bhi _0805223C
- ldr r1, =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08052290
- .pool
-_0805223C:
- ldr r4, =gBattleMoveDamage
- str r1, [r4]
- cmp r1, 0
- bne _08052248
- movs r0, 0x1
- str r0, [r4]
-_08052248:
- 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, =0xffff1fff
- ands r0, r2
- str r0, [r1]
- ldr r2, =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, =gBattleCommunication
- strb r2, [r0, 0x5]
- ldr r2, =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 1
- orrs r0, r1
- str r0, [r2]
-_08052290:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk9C_set_substitute
-
- thumb_func_start sub_80522B8
-sub_80522B8: @ 80522B8
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r3, 0
- ldr r0, =gUnknown_0831C3E0
- ldrh r1, [r0]
- ldr r4, =0x0000fffe
- adds r5, r0, 0
- cmp r1, r4
- beq _080522E0
- cmp r1, r2
- beq _080522E0
- adds r1, r5, 0
-_080522D2:
- adds r1, 0x2
- adds r3, 0x1
- ldrh r0, [r1]
- cmp r0, r4
- beq _080522E0
- cmp r0, r2
- bne _080522D2
-_080522E0:
- lsls r0, r3, 1
- adds r0, r5
- ldrh r1, [r0]
- ldr r0, =0x0000fffe
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80522B8
-
- thumb_func_start atk9D_copyattack
-atk9D_copyattack: @ 8052300
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gUnknown_020241EC
- ldr r1, =0x0000ffff
- adds r7, r1, 0
- strh r7, [r0]
- ldr r5, =gLastUsedMovesByBanks
- ldr r6, =gBankTarget
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- bl sub_80522B8
- lsls r0, 24
- cmp r0, 0
- bne _0805235A
- ldr r3, =gBattleMons
- ldr r2, =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 _0805235A
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- cmp r1, 0
- beq _0805235A
- cmp r1, r7
- bne _08052394
-_0805235A:
- ldr r3, =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 _080524CC
- .pool
-_08052394:
- movs r2, 0
- mov r3, r12
- adds r3, 0xC
- adds r0, r4, r3
- ldrh r0, [r0]
- ldr r4, =gBattlescriptCurrInstr
- mov r10, r4
- cmp r0, r1
- beq _080523CE
- mov r8, r3
- adds r7, r5, 0
- adds r5, r6, 0
- mov r4, r9
- movs r3, 0x58
-_080523B0:
- adds r2, 0x1
- cmp r2, 0x3
- bgt _080523CE
- 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 _080523B0
-_080523CE:
- cmp r2, 0x4
- bne _080524B0
- ldr r5, =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, =gLastUsedMovesByBanks
- ldr r3, =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r4, =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 _08052438
- 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 _0805244C
- .pool
-_08052438:
- 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]
-_0805244C:
- ldr r1, =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, =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, =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 _080524CC
- .pool
-_080524B0:
- 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]
-_080524CC:
- 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 atk9E_metronome
-atk9E_metronome: @ 80524DC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, =gCurrentMove
- movs r6, 0xB1
- lsls r6, 1
- ldr r5, =gUnknown_0831C3E0
- ldr r0, =gBattlescriptCurrInstr
- mov r8, r0
-_080524EE:
- bl Random
- ldr r2, =0x000001ff
- adds r1, r2, 0
- ands r0, r1
- adds r0, 0x1
- strh r0, [r7]
- cmp r0, r6
- bhi _080524EE
- movs r0, 0x3
-_08052502:
- subs r0, 0x1
- cmp r0, 0
- bge _08052502
- ldr r4, =gCurrentMove
- ldrh r2, [r4]
- ldr r3, =0x0000ffff
- subs r0, r5, 0x2
-_08052510:
- adds r0, 0x2
- ldrh r1, [r0]
- cmp r1, r2
- beq _0805251C
- cmp r1, r3
- bne _08052510
-_0805251C:
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _080524EE
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r3, =gUnknown_082D86A8
- ldr r2, =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 GetMoveTarget
- ldr r1, =gBankTarget
- strb r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atk9E_metronome
-
- thumb_func_start atk9F_dmgtolevel
-atk9F_dmgtolevel: @ 8052584
- ldr r3, =gBattleMoveDamage
- ldr r2, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r0, [r0]
- str r0, [r3]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end atk9F_dmgtolevel
-
- thumb_func_start atkA0_psywavedamageeffect
-atkA0_psywavedamageeffect: @ 80525B4
- push {r4,lr}
- movs r4, 0xF
-_080525B8:
- bl Random
- adds r3, r4, 0
- ands r3, r0
- cmp r3, 0xA
- bgt _080525B8
- lsls r0, r3, 2
- adds r0, r3
- lsls r3, r0, 1
- ldr r4, =gBattleMoveDamage
- ldr r2, =gBattleMons
- ldr r0, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA0_psywavedamageeffect
-
- thumb_func_start atkA1_counterdamagecalculator
-atkA1_counterdamagecalculator: @ 8052608
- push {r4-r6,lr}
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, =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 _080526BC
- cmp r6, r2
- beq _080526BC
- ldr r6, =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 _080526BC
- ldr r1, =gBattleMoveDamage
- lsls r0, r3, 1
- str r0, [r1]
- ldr r1, =gSideTimers
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _08052690
- ldrb r1, [r1, 0x9]
- adds r0, r1, 0
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08052690
- ldr r0, =gBankTarget
- strb r1, [r0]
- b _080526A0
- .pool
-_08052690:
- ldr r2, =gBankTarget
- ldr r1, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0xC]
- strb r0, [r2]
-_080526A0:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _080526EC
- .pool
-_080526BC:
- ldr r2, =gSpecialStatuses
- ldr r0, =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, =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]
-_080526EC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA1_counterdamagecalculator
-
- thumb_func_start atkA2_mirrorcoatdamagecalculator
-atkA2_mirrorcoatdamagecalculator: @ 8052700
- push {r4-r6,lr}
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, =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 _080527B4
- cmp r6, r2
- beq _080527B4
- ldr r6, =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 _080527B4
- ldr r1, =gBattleMoveDamage
- lsls r0, r3, 1
- str r0, [r1]
- ldr r1, =gSideTimers
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _08052788
- ldrb r1, [r1, 0x9]
- adds r0, r1, 0
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08052788
- ldr r0, =gBankTarget
- strb r1, [r0]
- b _08052798
- .pool
-_08052788:
- ldr r2, =gBankTarget
- ldr r1, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0xD]
- strb r0, [r2]
-_08052798:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _080527E4
- .pool
-_080527B4:
- ldr r2, =gSpecialStatuses
- ldr r0, =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, =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]
-_080527E4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA2_mirrorcoatdamagecalculator
-
- thumb_func_start atkA3_disablelastusedattack
-atkA3_disablelastusedattack: @ 80527F8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r4, 0
- ldr r2, =gBattleMons
- ldr r3, =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r7, r2, 0
- adds r7, 0xC
- adds r0, r7
- ldr r5, =gLastUsedMovesByBanks
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r0]
- mov r9, r2
- adds r6, r3, 0
- ldr r2, =gDisableStructs
- mov r8, r2
- ldrh r1, [r1]
- cmp r0, r1
- beq _0805284C
- mov r12, r6
- movs r3, 0x58
-_0805282C:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _0805284C
- 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 _0805282C
-_0805284C:
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- bne _08052910
- cmp r4, 0x4
- beq _08052910
- 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 _08052910
- ldr r1, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0805292A
- .pool
-_08052910:
- ldr r3, =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]
-_0805292A:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA3_disablelastusedattack
-
- thumb_func_start atkA4_setencore
-atkA4_setencore: @ 805293C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r5, 0
- ldr r3, =gBattleMons
- ldr r4, =gBankTarget
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r6, r3, 0
- adds r6, 0xC
- adds r0, r6
- ldr r2, =gLastUsedMovesByBanks
- lsls r1, 1
- adds r1, r2
- ldrh r0, [r0]
- mov r10, r3
- mov r8, r2
- ldr r2, =gDisableStructs
- mov r9, r2
- ldrh r1, [r1]
- cmp r0, r1
- beq _08052996
- mov r12, r4
- adds r7, r6, 0
- mov r6, r8
- movs r3, 0x58
-_08052976:
- adds r5, 0x1
- cmp r5, 0x3
- bgt _08052996
- 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 _08052976
-_08052996:
- ldrb r0, [r4]
- lsls r0, 1
- add r0, r8
- ldrh r2, [r0]
- cmp r2, 0xA5
- beq _080529AA
- cmp r2, 0xE3
- beq _080529AA
- cmp r2, 0x77
- bne _080529AC
-_080529AA:
- movs r5, 0x4
-_080529AC:
- 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 _08052A44
- cmp r5, 0x4
- beq _08052A44
- 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 _08052A44
- 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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08052A5E
- .pool
-_08052A44:
- ldr r3, =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]
-_08052A5E:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA4_setencore
-
- thumb_func_start atkA5_painsplitdmgcalc
-atkA5_painsplitdmgcalc: @ 8052A70
- push {r4-r7,lr}
- ldr r6, =gBattleMons
- ldr r0, =gBankTarget
- mov r12, r0
- ldrb r0, [r0]
- movs r7, 0x58
- adds r2, r0, 0
- muls r2, r7
- adds r0, r6, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- bne _08052B10
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- muls r0, r7
- adds r0, r6
- ldrh r3, [r0, 0x28]
- adds r0, r2, r6
- ldrh r1, [r0, 0x28]
- adds r3, r1
- asrs r3, 1
- ldr r4, =gBattleMoveDamage
- subs r1, r3
- str r1, [r4]
- ldr r2, =gBattleScripting
- strb r1, [r2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- asrs r0, 8
- strb r0, [r2, 0x1]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- asrs r0, 16
- strb r0, [r2, 0x2]
- lsrs r1, 24
- strb r1, [r2, 0x3]
- ldrb r0, [r5]
- muls r0, r7
- adds r0, r6
- ldrh r0, [r0, 0x28]
- subs r0, r3
- str r0, [r4]
- ldr r2, =gSpecialStatuses
- mov r0, r12
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x4
- adds r0, r2
- ldr r1, =0x0000ffff
- str r1, [r0]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08052B2A
- .pool
-_08052B10:
- ldr r3, =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]
-_08052B2A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA5_painsplitdmgcalc
-
- thumb_func_start atkA6_settypetorandomresistance
-atkA6_settypetorandomresistance: @ 8052B34
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r1, =gUnknown_02024250
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- lsls r0, 1
- adds r2, r0, r1
- ldrh r1, [r2]
- cmp r1, 0
- beq _08052B7E
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _08052B7E
- ldrh r0, [r2]
- bl sub_8052F48
- lsls r0, 24
- cmp r0, 0
- beq _08052C1C
- ldr r1, =gBattleMons
- ldr r2, =gUnknown_02024270
- ldrb r0, [r4]
- adds r0, r2
- 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 _08052C1C
-_08052B7E:
- ldr r3, =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 _08052D08
- .pool
-_08052BB4:
- 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, =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, =gBattlescriptCurrInstr
- b _08052C0A
- .pool
-_08052BE0:
- 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, =gBattleMons
- adds r0, r7
- adds r0, 0x22
- strb r2, [r0]
- ldr r1, =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
-_08052C0A:
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08052D08
- .pool
-_08052C1C:
- movs r4, 0
- mov r8, r4
- movs r7, 0x7F
- mov r9, r7
-_08052C24:
- bl Random
- mov r4, r9
- ands r4, r0
- cmp r4, 0x70
- bhi _08052C24
- lsls r0, r4, 1
- adds r4, r0, r4
- ldr r6, =gUnknown_0831ACE8
- adds r3, r4, r6
- ldr r1, =gUnknown_02024258
- ldr r2, =gBankAttacker
- ldrb r5, [r2]
- lsls r0, r5, 1
- adds r0, r1
- ldrb r1, [r3]
- mov r10, r2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08052C80
- adds r0, r4, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _08052C80
- ldr r7, =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 _08052C80
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- bne _08052BB4
-_08052C80:
- movs r7, 0x1
- add r8, r7
- ldr r0, =0x000003e7
- cmp r8, r0
- ble _08052C24
- movs r0, 0
- mov r8, r0
- ldr r1, =gBattlescriptCurrInstr
- mov r12, r1
- ldr r3, =gUnknown_0831ACE8
- adds r0, r4, 0x1
- adds r0, r3
- mov r9, r0
- adds r5, r3, 0
-_08052C9C:
- ldrb r1, [r5]
- cmp r1, 0xFF
- bgt _08052CA6
- cmp r1, 0xFE
- bge _08052CE0
-_08052CA6:
- mov r4, r10
- ldrb r2, [r4]
- lsls r0, r2, 1
- ldr r7, =gUnknown_02024258
- adds r0, r7
- ldrh r0, [r0]
- cmp r1, r0
- bne _08052CE0
- ldrb r0, [r5, 0x2]
- cmp r0, 0x5
- bhi _08052CE0
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- ldr r1, =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 _08052CE0
- adds r0, r2, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- beq _08052CE0
- b _08052BE0
-_08052CE0:
- adds r5, 0x3
- movs r0, 0x3
- add r8, r0
- ldr r0, =0x0000014f
- cmp r8, r0
- bls _08052C9C
- 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]
-_08052D08:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA6_settypetorandomresistance
-
- thumb_func_start atkA7_setalwayshitflag
-atkA7_setalwayshitflag: @ 8052D34
- push {r4,lr}
- ldr r4, =gStatuses3
- ldr r3, =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, =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =gBankAttacker
- ldrb r1, [r1]
- strb r1, [r0, 0x15]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA7_setalwayshitflag
-
- thumb_func_start atkA8_copymovepermanently
-atkA8_copymovepermanently: @ 8052D8C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- ldr r0, =gUnknown_020241EC
- ldr r1, =0x0000ffff
- adds r5, r1, 0
- strh r5, [r0]
- ldr r3, =gBattleMons
- ldr r2, =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 _08052DC4
- b _08052F18
-_08052DC4:
- ldr r0, =gUnknown_02024240
- ldr r2, =gBankTarget
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- ldrh r1, [r1]
- mov r9, r0
- mov r8, r2
- cmp r1, 0xA5
- bne _08052DDA
- b _08052F18
-_08052DDA:
- cmp r1, 0
- bne _08052DE0
- b _08052F18
-_08052DE0:
- cmp r1, r5
- bne _08052DE6
- b _08052F18
-_08052DE6:
- cmp r1, 0xA6
- bne _08052DEC
- b _08052F18
-_08052DEC:
- movs r7, 0
- mov r5, r9
- mov r0, r12
- adds r0, 0xC
- adds r1, r4, r0
- mov r3, r8
-_08052DF8:
- ldrh r2, [r1]
- cmp r2, 0xA6
- beq _08052E0A
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r2, r0
- beq _08052E12
-_08052E0A:
- adds r1, 0x2
- adds r7, 0x1
- cmp r7, 0x3
- ble _08052DF8
-_08052E12:
- cmp r7, 0x4
- beq _08052E18
- b _08052F18
-_08052E18:
- ldr r4, =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, =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, =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
-_08052E7A:
- 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 _08052E7A
- 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, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldr r3, =gUnknown_02024240
- ldr r2, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08052F32
- .pool
-_08052F18:
- ldr r3, =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]
-_08052F32:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA8_copymovepermanently
-
- thumb_func_start sub_8052F48
-sub_8052F48: @ 8052F48
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r2, =gBattleMoves
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1]
- cmp r0, 0x91
- beq _08052F72
- cmp r0, 0x27
- beq _08052F72
- cmp r0, 0x4B
- beq _08052F72
- cmp r0, 0x97
- beq _08052F72
- cmp r0, 0x9B
- beq _08052F72
- cmp r0, 0x1A
- bne _08052F7C
-_08052F72:
- movs r0, 0x1
- b _08052F7E
- .pool
-_08052F7C:
- movs r0, 0
-_08052F7E:
- pop {r1}
- bx r1
- thumb_func_end sub_8052F48
-
- thumb_func_start sub_8052F84
-sub_8052F84: @ 8052F84
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _08052FA2
- cmp r1, 0xD6
- beq _08052FA2
- movs r0, 0x89
- lsls r0, 1
- cmp r1, r0
- beq _08052FA2
- cmp r1, 0x77
- beq _08052FA2
- cmp r1, 0x76
- bne _08052FA6
-_08052FA2:
- movs r0, 0x1
- b _08052FA8
-_08052FA6:
- movs r0, 0
-_08052FA8:
- pop {r1}
- bx r1
- thumb_func_end sub_8052F84
-
- thumb_func_start move_weather_interaction
-move_weather_interaction: @ 8052FAC
- push {lr}
- lsls r1, 16
- lsrs r2, r1, 16
- ldr r1, =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 _08052FD0
- ldr r0, =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- bne _08053010
-_08052FD0:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0x91
- beq _08052FF2
- cmp r0, 0x27
- beq _08052FF2
- cmp r0, 0x4B
- beq _08052FF2
- cmp r0, 0x97
- beq _08052FF2
- cmp r0, 0x9B
- beq _08052FF2
- cmp r0, 0x1A
- bne _08053010
-_08052FF2:
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 20
- ands r0, r1
- cmp r0, 0
- beq _08053010
- movs r0, 0x1
- b _08053012
- .pool
-_08053010:
- movs r0, 0x2
-_08053012:
- pop {r1}
- bx r1
- thumb_func_end move_weather_interaction
-
- thumb_func_start atkA9_sleeptalk_choose_move
-atkA9_sleeptalk_choose_move: @ 8053018
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- movs r5, 0
- ldr r0, =gBankAttacker
- mov r9, r0
- movs r1, 0x58
- mov r8, r1
- ldr r7, =gBattleMons + 0xC
- movs r0, 0x84
- lsls r0, 1
- mov r10, r0
-_08053036:
- 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_8052F84
- lsls r0, 24
- cmp r0, 0
- bne _08053076
- 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 _08053076
- cmp r1, 0xFD
- beq _08053076
- adds r0, r1, 0
- bl sub_8052F48
- lsls r0, 24
- cmp r0, 0
- beq _08053084
-_08053076:
- ldr r1, =gBitTable
- lsls r0, r5, 2
- adds r0, r1
- ldr r0, [r0]
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_08053084:
- adds r5, 0x1
- cmp r5, 0x3
- ble _08053036
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- adds r1, r6, 0
- movs r2, 0xFD
- bl CheckMoveLimitations
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xF
- bne _080530B8
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0805311C
- .pool
-_080530B8:
- movs r7, 0x3
- ldr r4, =gBitTable
-_080530BC:
- 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 _080530BC
- ldr r4, =gRandomMove
- ldr r2, =gBattleMons
- lsls r1, r5, 1
- ldr r0, =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, =gCurrMovePos
- strb r5, [r0]
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldrh r0, [r4]
- movs r1, 0
- bl GetMoveTarget
- ldr r1, =gBankTarget
- strb r0, [r1]
- ldr r3, =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]
-_0805311C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkA9_sleeptalk_choose_move
-
- thumb_func_start atkAA_set_destinybond
-atkAA_set_destinybond: @ 8053150
- ldr r1, =gBattleMons
- ldr r0, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end atkAA_set_destinybond
-
- thumb_func_start b_feature_update_destiny_bond
-b_feature_update_destiny_bond: @ 8053180
- push {r4,r5,lr}
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, =gBankTarget
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =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 _080531CA
- cmp r5, r3
- beq _080531CA
- ldr r2, =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- bne _080531CA
- movs r0, 0x40
- orrs r1, r0
- str r1, [r2]
-_080531CA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end b_feature_update_destiny_bond
-
- thumb_func_start atkAB_DestinyBondFlagUpdate
-atkAB_DestinyBondFlagUpdate: @ 80531E0
- push {lr}
- bl b_feature_update_destiny_bond
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkAB_DestinyBondFlagUpdate
-
- thumb_func_start atkAC_remaininghptopower
-atkAC_remaininghptopower: @ 80531F8
- push {lr}
- ldr r2, =gBattleMons
- ldr r0, =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 sub_8075034
- lsls r0, 24
- lsrs r1, r0, 24
- movs r3, 0
- ldr r0, =gUnknown_0831C408
- ldrb r2, [r0]
- cmp r1, r2
- ble _08053232
- adds r2, r0, 0
-_08053224:
- adds r3, 0x2
- cmp r3, 0xB
- bgt _08053232
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r1, r0
- bgt _08053224
-_08053232:
- ldr r2, =gDynamicBasePower
- ldr r1, =gUnknown_0831C408
- adds r0, r3, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkAC_remaininghptopower
-
- thumb_func_start atkAD_spite_ppreduce
-atkAD_spite_ppreduce: @ 8053260
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, =gLastUsedMovesByBanks
- ldr r1, =gBankTarget
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r0, r4
- ldrh r2, [r0]
- mov r8, r1
- cmp r2, 0
- bne _08053280
- b _08053408
-_08053280:
- ldr r0, =0x0000ffff
- cmp r2, r0
- bne _08053288
- b _08053408
-_08053288:
- movs r7, 0
- ldr r0, =gBattleMons
- movs r1, 0x58
- muls r1, r3
- adds r3, r0, 0
- adds r3, 0xC
- adds r1, r3
- ldrh r1, [r1]
- cmp r2, r1
- beq _080532C0
- adds r6, r4, 0
- mov r5, r8
- adds r4, r3, 0
- movs r3, 0x58
-_080532A4:
- adds r7, 0x1
- cmp r7, 0x3
- bgt _080532C0
- 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 _080532A4
-_080532C0:
- cmp r7, 0x4
- bne _080532C6
- b _08053408
-_080532C6:
- 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, =gBattleMons
- adds r1, 0x24
- mov r10, r1
- add r0, r10
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _080532E6
- b _08053408
-_080532E6:
- 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 _08053304
- adds r6, r0, 0
-_08053304:
- ldr r1, =gBattleTextBuff1
- movs r5, 0xFD
- strb r5, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldr r2, =gLastUsedMovesByBanks
- 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, =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, =gActiveBank
- mov r3, r8
- ldrb r0, [r3]
- strb r0, [r4]
- ldr r1, =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, =gBitTable
- lsls r0, r7, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080533B8
- mov r2, r9
- muls r2, r3
- ldr r0, =gBattleMons
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _080533B8
- 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
-_080533B8:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r1, =gBattleMons
- ldr r0, =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 _08053422
- adds r0, r2, 0
- bl CancelMultiTurnMoves
- b _08053422
- .pool
-_08053408:
- ldr r3, =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]
-_08053422:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkAD_spite_ppreduce
-
- thumb_func_start atkAE_heal_party_status
-atkAE_heal_party_status: @ 8053438
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r4, 0
- str r4, [sp, 0x4]
- mov r8, r4
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xD7
- beq _08053454
- b _0805363E
-_08053454:
- ldr r6, =gBattleCommunication
- mov r0, r8
- strb r0, [r6, 0x5]
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r10, r1
- cmp r0, 0
- bne _08053470
- ldr r2, =gPlayerParty
- mov r10, r2
-_08053470:
- ldr r4, =gBattleMons
- ldrb r3, [r5]
- movs r7, 0x58
- adds r2, r3, 0
- muls r2, r7
- adds r0, r2, r4
- adds r1, r0, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0x2B
- beq _080534C4
- adds r0, r4, 0
- adds r0, 0x4C
- adds r0, r2, r0
- mov r1, r8
- str r1, [r0]
- ldrb r0, [r5]
- adds r2, r0, 0
- muls r2, r7
- adds r0, r4, 0
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- ldr r1, =0xf7ffffff
- ands r0, r1
- str r0, [r2]
- b _080534D4
- .pool
-_080534C4:
- ldrb r1, [r1]
- adds r0, r3, 0
- bl RecordAbilityBattle
- ldrb r0, [r6, 0x5]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r6, 0x5]
-_080534D4:
- ldr r7, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r2, 0x2
- mov r9, r2
- mov r1, r9
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r1, =gBattleScripting
- strb r0, [r1, 0x17]
- strb r0, [r7]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805357A
- ldr r0, =gAbsentBankFlags
- ldrb r2, [r0]
- ldr r1, =gBitTable
- ldrb r3, [r7]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- bne _0805357A
- ldr r5, =gBattleMons
- movs r6, 0x58
- adds r4, r3, 0
- muls r4, r6
- adds r0, r4, r5
- adds r1, r0, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0x2B
- beq _08053568
- adds r0, r5, 0
- adds r0, 0x4C
- adds r0, r4, r0
- str r2, [r0]
- ldrb r0, [r7]
- adds r2, r0, 0
- muls r2, r6
- adds r0, r5, 0
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- ldr r1, =0xf7ffffff
- ands r0, r1
- str r0, [r2]
- b _0805357A
- .pool
-_08053568:
- ldrb r1, [r1]
- adds r0, r3, 0
- bl RecordAbilityBattle
- ldr r1, =gBattleCommunication
- ldrb r0, [r1, 0x5]
- mov r2, r9
- orrs r0, r2
- strb r0, [r1, 0x5]
-_0805357A:
- movs r6, 0
- ldr r7, =gBattleMons
-_0805357E:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- add r4, r10
- 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 _08053636
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- beq _08053636
- ldr r2, =gBattlePartyID
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r6
- bne _080535D0
- movs r0, 0x58
- muls r0, r1
- b _08053600
- .pool
-_080535D0:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08053618
- ldr r0, =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r6
- bne _08053618
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08053618
- movs r0, 0x58
- muls r0, r3
-_08053600:
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- b _08053624
- .pool
-_08053618:
- adds r0, r5, 0
- adds r1, r4, 0
- bl GetAbilityBySpecies
- lsls r0, 24
- lsrs r0, 24
-_08053624:
- cmp r0, 0x2B
- beq _08053636
- movs r0, 0x1
- lsls r0, r6
- mov r1, r8
- orrs r1, r0
- lsls r0, r1, 24
- lsrs r0, 24
- mov r8, r0
-_08053636:
- adds r6, 0x1
- cmp r6, 0x5
- ble _0805357E
- b _080536BC
-_0805363E:
- ldr r1, =gBattleCommunication
- movs r0, 0x4
- strb r0, [r1, 0x5]
- movs r2, 0x3F
- mov r8, r2
- ldr r3, =gBattleMons
- ldr r2, =gBankAttacker
- ldrb r0, [r2]
- movs r5, 0x58
- muls r0, r5
- movs r1, 0x4C
- adds r1, r3
- mov r9, r1
- add r0, r9
- str r4, [r0]
- ldrb r0, [r2]
- adds r1, r0, 0
- muls r1, r5
- adds r7, r3, 0
- adds r7, 0x50
- adds r1, r7
- ldr r0, [r1]
- ldr r6, =0xf7ffffff
- ands r0, r6
- str r0, [r1]
- ldrb r0, [r2]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080536BC
- ldr r0, =gAbsentBankFlags
- ldrb r2, [r0]
- ldr r1, =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- bne _080536BC
- adds r0, r3, 0
- muls r0, r5
- add r0, r9
- str r2, [r0]
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r7
- ldr r0, [r1]
- ands r0, r6
- str r0, [r1]
-_080536BC:
- mov r2, r8
- cmp r2, 0
- beq _080536DE
- ldr r4, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- add r0, sp, 0x4
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_080536DE:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkAE_heal_party_status
-
- thumb_func_start atkAF_cursetarget
-atkAF_cursetarget: @ 805371C
- push {r4,r5,lr}
- ldr r5, =gBattleMons
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- movs r4, 0x58
- adds r1, r0, 0
- muls r1, r4
- adds r0, r5, 0
- adds r0, 0x50
- adds r1, r0
- ldr r2, [r1]
- movs r3, 0x80
- lsls r3, 21
- adds r0, r2, 0
- ands r0, r3
- cmp r0, 0
- beq _08053768
- ldr r3, =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 _0805378C
- .pool
-_08053768:
- orrs r2, r3
- str r2, [r1]
- ldr r1, =gBattleMoveDamage
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _08053784
- movs r0, 0x1
- str r0, [r1]
-_08053784:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0805378C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkAF_cursetarget
-
- thumb_func_start atkB0_set_spikes
-atkB0_set_spikes: @ 80537A0
- push {r4,lr}
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSideTimers
- lsls r2, r0, 1
- adds r0, r2, r0
- lsls r0, 2
- adds r3, r0, r1
- ldrb r0, [r3, 0xA]
- cmp r0, 0x3
- bne _08053804
- ldr r2, =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, =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 _0805381E
- .pool
-_08053804:
- ldr r1, =gSideAffecting
- adds r1, r2, r1
- ldrh r2, [r1]
- movs r0, 0x10
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r3, 0xA]
- adds r0, 0x1
- strb r0, [r3, 0xA]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0805381E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkB0_set_spikes
-
- thumb_func_start atkB1_set_foresight
-atkB1_set_foresight: @ 805382C
- ldr r1, =gBattleMons
- ldr r0, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end atkB1_set_foresight
-
- thumb_func_start atkB2_setperishsong
-atkB2_setperishsong: @ 805385C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r6, 0
- movs r3, 0
- ldr r0, =gNoOfAllBanks
- adds r7, r0, 0
- ldr r0, =gBankAttacker
- mov r8, r0
- ldrb r1, [r7]
- cmp r6, r1
- bge _080538C8
- movs r5, 0x20
- ldr r0, =gBattleMons
- mov r12, r0
- ldr r0, =gDisableStructs
- adds r4, r0, 0
- adds r4, 0xF
- ldr r2, =gStatuses3
-_08053884:
- ldr r1, [r2]
- adds r0, r1, 0
- ands r0, r5
- cmp r0, 0
- bne _0805389C
- movs r0, 0x58
- muls r0, r3
- add r0, r12
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2B
- bne _080538B4
-_0805389C:
- adds r6, 0x1
- b _080538BC
- .pool
-_080538B4:
- orrs r1, r5
- str r1, [r2]
- movs r0, 0x33
- strb r0, [r4]
-_080538BC:
- adds r4, 0x1C
- adds r2, 0x4
- adds r3, 0x1
- ldrb r0, [r7]
- cmp r3, r0
- blt _08053884
-_080538C8:
- mov r1, r8
- ldrb r0, [r1]
- bl sub_803F67C
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bne _080538FC
- ldr r3, =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 _08053904
- .pool
-_080538FC:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08053904:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkB2_setperishsong
-
- thumb_func_start atkB3_rolloutdamagecalculation
-atkB3_rolloutdamagecalculation: @ 8053914
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08053948
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082D8A60
- str r0, [r1]
- b _08053A60
- .pool
-_08053948:
- ldr r2, =gBattleMons
- ldr r1, =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, =gDisableStructs
- mov r12, r1
- ldr r2, =gCurrentMove
- mov r8, r2
- cmp r0, 0
- bne _080539BA
- 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, =gUnknown_02024268
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r1
- mov r2, r8
- ldrh r1, [r2]
- strh r1, [r0]
-_080539BA:
- 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 _080539EE
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r4
- ldr r0, [r1]
- ldr r2, =0xffffefff
- ands r0, r2
- str r0, [r1]
-_080539EE:
- ldr r3, =gDynamicBasePower
- ldr r2, =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, =gBattlescriptCurrInstr
- adds r5, r3, 0
- cmp r2, r1
- bge _08053A3C
- adds r1, r5, 0
- adds r3, r4, 0
- movs r4, 0x5
-_08053A28:
- 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 _08053A28
-_08053A3C:
- 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 _08053A5A
- ldrh r0, [r5]
- lsls r0, 1
- strh r0, [r5]
-_08053A5A:
- ldr r0, [r7]
- adds r0, 0x1
- str r0, [r7]
-_08053A60:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkB3_rolloutdamagecalculation
-
- thumb_func_start atkB4_jumpifconfusedandstatmaxed
-atkB4_jumpifconfusedandstatmaxed: @ 8053A90
- push {r4,r5,lr}
- ldr r5, =gBattleMons
- ldr r0, =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, =gBattlescriptCurrInstr
- cmp r0, 0
- beq _08053AEC
- 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 _08053AEC
- 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 _08053AF2
- .pool
-_08053AEC:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_08053AF2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end atkB4_jumpifconfusedandstatmaxed
-
- thumb_func_start atkB5_furycuttercalc
-atkB5_furycuttercalc: @ 8053AF8
- push {r4,r5,lr}
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08053B34
- ldr r2, =gDisableStructs
- ldr r0, =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, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082D8A60
- str r0, [r1]
- b _08053B8C
- .pool
-_08053B34:
- ldr r5, =gDisableStructs
- ldr r4, =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 _08053B4C
- adds r0, 0x1
- strb r0, [r1, 0x10]
-_08053B4C:
- ldr r3, =gDynamicBasePower
- ldr r2, =gBattleMoves
- ldr r0, =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, =gBattlescriptCurrInstr
- ldrb r1, [r0, 0x10]
- cmp r2, r1
- bge _08053B86
- adds r1, r3, 0
- adds r3, r0, 0
-_08053B78:
- ldrh r0, [r1]
- lsls r0, 1
- strh r0, [r1]
- adds r2, 0x1
- ldrb r0, [r3, 0x10]
- cmp r2, r0
- blt _08053B78
-_08053B86:
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
-_08053B8C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkB5_furycuttercalc
-
- thumb_func_start atkB6_happinesstodamagecalculation
-atkB6_happinesstodamagecalculation: @ 8053BAC
- push {r4,lr}
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x79
- bne _08053BEC
- ldr r4, =gDynamicBasePower
- ldr r2, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2B
- ldrb r1, [r0]
- b _08053C02
- .pool
-_08053BEC:
- ldr r4, =gDynamicBasePower
- ldr r2, =gBattleMons
- ldr r0, =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
-_08053C02:
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- movs r1, 0x19
- bl __divsi3
- strh r0, [r4]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkB6_happinesstodamagecalculation
-
- thumb_func_start atkB7_presentdamagecalculation
-atkB7_presentdamagecalculation: @ 8053C30
- push {r4,lr}
- bl Random
- movs r4, 0xFF
- ands r4, r0
- cmp r4, 0x65
- bgt _08053C4C
- ldr r1, =gDynamicBasePower
- movs r0, 0x28
- strh r0, [r1]
- b _08053C8E
- .pool
-_08053C4C:
- cmp r4, 0xB1
- bgt _08053C5C
- ldr r1, =gDynamicBasePower
- movs r0, 0x50
- strh r0, [r1]
- b _08053C8E
- .pool
-_08053C5C:
- cmp r4, 0xCB
- bgt _08053C6C
- ldr r1, =gDynamicBasePower
- movs r0, 0x78
- strh r0, [r1]
- b _08053C8E
- .pool
-_08053C6C:
- ldr r3, =gBattleMoveDamage
- ldr r2, =gBattleMons
- ldr r0, =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 _08053C88
- movs r0, 0x1
- str r0, [r3]
-_08053C88:
- ldr r0, [r3]
- negs r0, r0
- str r0, [r3]
-_08053C8E:
- cmp r4, 0xCB
- bgt _08053CAC
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082D8A30
- b _08053CE6
- .pool
-_08053CAC:
- ldr r2, =gBattleMons
- ldr r0, =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 _08053CD8
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082D9EFB
- b _08053CE6
- .pool
-_08053CD8:
- ldr r2, =gBattleMoveFlags
- ldrb r1, [r2]
- movs r0, 0xF7
- ands r0, r1
- strb r0, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082D9EE1
-_08053CE6:
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkB7_presentdamagecalculation
-
- thumb_func_start atkB8_set_safeguard
-atkB8_set_safeguard: @ 8053CFC
- push {r4-r7,lr}
- ldr r7, =gBankAttacker
- ldrb r0, [r7]
- bl GetBankIdentity
- ldr r4, =gSideAffecting
- movs r6, 0x1
- adds r1, r6, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r1, [r1]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08053D40
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- b _08053D88
- .pool
-_08053D40:
- ldrb r0, [r7]
- bl GetBankIdentity
- adds r1, r6, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r0, [r1]
- movs r2, 0x20
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r7]
- bl GetBankIdentity
- ldr r5, =gSideTimers
- adds r1, r6, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r4, 0x5
- strb r4, [r0, 0x6]
- ldrb r0, [r7]
- bl GetBankIdentity
- adds r1, r6, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r7]
- strb r1, [r0, 0x7]
- ldr r0, =gBattleCommunication
- strb r4, [r0, 0x5]
-_08053D88:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkB8_set_safeguard
-
- thumb_func_start atkB9_magnitudedamagecalculation
-atkB9_magnitudedamagecalculation: @ 8053DA4
- 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 _08053DD0
- ldr r1, =gDynamicBasePower
- movs r0, 0xA
- strh r0, [r1]
- movs r3, 0x4
- b _08053E3C
- .pool
-_08053DD0:
- cmp r3, 0xE
- bgt _08053DE4
- ldr r1, =gDynamicBasePower
- movs r0, 0x1E
- strh r0, [r1]
- movs r3, 0x5
- b _08053E3C
- .pool
-_08053DE4:
- cmp r3, 0x22
- bgt _08053DF8
- ldr r1, =gDynamicBasePower
- movs r0, 0x32
- strh r0, [r1]
- movs r3, 0x6
- b _08053E3C
- .pool
-_08053DF8:
- cmp r3, 0x40
- bgt _08053E0C
- ldr r1, =gDynamicBasePower
- movs r0, 0x46
- strh r0, [r1]
- movs r3, 0x7
- b _08053E3C
- .pool
-_08053E0C:
- cmp r3, 0x54
- bgt _08053E20
- ldr r1, =gDynamicBasePower
- movs r0, 0x5A
- strh r0, [r1]
- movs r3, 0x8
- b _08053E3C
- .pool
-_08053E20:
- cmp r3, 0x5E
- bgt _08053E34
- ldr r1, =gDynamicBasePower
- movs r0, 0x6E
- strh r0, [r1]
- movs r3, 0x9
- b _08053E3C
- .pool
-_08053E34:
- ldr r1, =gDynamicBasePower
- movs r0, 0x96
- strh r0, [r1]
- movs r3, 0xA
-_08053E3C:
- ldr r1, =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, =gBankTarget
- strb r2, [r1]
- ldr r0, =gNoOfAllBanks
- ldrb r3, [r0]
- adds r6, r1, 0
- ldr r0, =gBattlescriptCurrInstr
- mov r8, r0
- cmp r2, r3
- bcs _08053E94
- adds r4, r6, 0
- ldr r0, =gBankAttacker
- ldrb r5, [r0]
- ldr r1, =gBitTable
- mov r12, r1
- ldr r7, =gAbsentBankFlags
-_08053E72:
- ldrb r2, [r4]
- cmp r2, r5
- beq _08053E88
- ldrb r0, [r7]
- ldrb r1, [r6]
- lsls r1, 2
- add r1, r12
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- beq _08053E94
-_08053E88:
- adds r0, r2, 0x1
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r3
- bcc _08053E72
-_08053E94:
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkB9_magnitudedamagecalculation
-
- thumb_func_start atkBA_jumpifnopursuitswitchdmg
-atkBA_jumpifnopursuitswitchdmg: @ 8053EC8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gUnknown_02024212
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08053EF8
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08053EF4
- movs r0, 0x1
- b _08053F12
- .pool
-_08053EF4:
- movs r0, 0
- b _08053F12
-_08053EF8:
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08053F10
- movs r0, 0x3
- b _08053F12
- .pool
-_08053F10:
- movs r0, 0x2
-_08053F12:
- bl GetBankByPlayerAI
- ldr r1, =gBankTarget
- strb r0, [r1]
- ldr r0, =gUnknown_0202421C
- ldr r1, =gBankTarget
- ldrb r3, [r1]
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0
- beq _08053F2A
- b _08054030
-_08053F2A:
- ldr r5, =gBankAttacker
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r1, r3, r1
- ldrb r2, [r5]
- ldrb r1, [r1, 0xC]
- cmp r2, r1
- bne _08054030
- ldr r4, =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 _08054030
- ldrb r0, [r5]
- muls r0, r2
- adds r0, r4
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08054030
- ldr r0, =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 _08054030
- ldr r0, =gChosenMovesByBanks
- lsls r1, r3, 1
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0xE4
- bne _08054030
- movs r1, 0
- ldr r0, =gNoOfAllBanks
- ldr r2, =gCurrentMove
- mov r8, r2
- ldr r7, =gCurrMovePos
- mov r10, r7
- ldr r2, =gUnknown_020241E9
- mov r9, r2
- ldr r7, =gHitMarker
- mov r12, r7
- ldrb r2, [r0]
- cmp r1, r2
- bge _08053FB6
- ldr r6, =gTurnOrder
- ldr r5, =gBankTarget
- ldr r4, =gUnknown_0202407A
- movs r3, 0xB
- adds r2, r0, 0
-_08053FA0:
- adds r0, r1, r6
- ldrb r0, [r0]
- ldrb r7, [r5]
- cmp r0, r7
- bne _08053FAE
- adds r0, r1, r4
- strb r3, [r0]
-_08053FAE:
- adds r1, 0x1
- ldrb r0, [r2]
- cmp r1, r0
- blt _08053FA0
-_08053FB6:
- movs r0, 0xE4
- mov r1, r8
- strh r0, [r1]
- ldr r2, =gBankTarget
- ldrb r0, [r2]
- ldr r7, =gBattleStruct
- ldr r1, [r7]
- adds r0, r1
- adds r0, 0x80
- ldrb r0, [r0]
- mov r1, r9
- strb r0, [r1]
- mov r2, r10
- strb r0, [r2]
- ldr r7, =gBattlescriptCurrInstr
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- movs r0, 0x1
- ldr r1, =gBattleScripting
- strb r0, [r1, 0x18]
- mov r2, r12
- ldr r0, [r2]
- ldr r1, =0xfffffbff
- ands r0, r1
- str r0, [r2]
- b _0805404A
- .pool
-_08054030:
- ldr r3, =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]
-_0805404A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkBA_jumpifnopursuitswitchdmg
-
- thumb_func_start atkBB_setsunny
-atkBB_setsunny: @ 805405C
- push {lr}
- ldr r2, =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _08054088
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _0805409A
- .pool
-_08054088:
- movs r0, 0x20
- strh r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x4
- strb r0, [r1, 0x5]
- ldr r0, =gWishFutureKnock
- adds r0, 0x28
- movs r1, 0x5
- strb r1, [r0]
-_0805409A:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkBB_setsunny
-
- thumb_func_start atkBC_maxattackhalvehp
-atkBC_maxattackhalvehp: @ 80540B4
- push {r4,r5,lr}
- ldr r5, =gBattleMons
- ldr r4, =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 _080540CC
- movs r1, 0x1
-_080540CC:
- movs r0, 0x19
- ldrsb r0, [r2, r0]
- cmp r0, 0xB
- bgt _08054110
- ldrh r0, [r2, 0x28]
- cmp r0, r1
- bls _08054110
- movs r0, 0xC
- strb r0, [r2, 0x19]
- ldr r1, =gBattleMoveDamage
- ldrb r0, [r4]
- muls r0, r3
- adds r0, r5
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _080540F4
- movs r0, 0x1
- str r0, [r1]
-_080540F4:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0805412A
- .pool
-_08054110:
- ldr r3, =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]
-_0805412A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkBC_maxattackhalvehp
-
- thumb_func_start atkBD_copyfoestats
-atkBD_copyfoestats: @ 8054134
- push {r4-r7,lr}
- movs r2, 0
- ldr r7, =gBattlescriptCurrInstr
- ldr r6, =gBankAttacker
- movs r4, 0x58
- ldr r3, =gBattleMons + 0x18
- ldr r5, =gBankTarget
-_08054142:
- 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 _08054142
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkBD_copyfoestats
-
- thumb_func_start atkBE_breakfree
-atkBE_breakfree: @ 805417C
- push {r4-r6,lr}
- ldr r1, =gBattleMons
- ldr r5, =gBankAttacker
- ldrb r2, [r5]
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- adds r4, r1, 0
- adds r4, 0x50
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0xE0
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _08054210
- ldr r1, =gBattleScripting
- ldr r3, =gBankTarget
- ldrb r0, [r3]
- strb r0, [r1, 0x17]
- ldrb r0, [r5]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r4
- ldr r0, [r1]
- ldr r2, =0xffff1fff
- ands r0, r2
- str r0, [r1]
- ldrb r0, [r5]
- ldr r1, =gBattleStruct
- ldr r2, [r1]
- adds r0, r2
- ldrb r0, [r0, 0x14]
- strb r0, [r3]
- ldr r1, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r2
- ldrb r0, [r0, 0x4]
- strb r0, [r1, 0x2]
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r2
- ldrb r0, [r0, 0x5]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- bl b_movescr_stack_push_cursor
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAFC5
- b _080542BA
- .pool
-_08054210:
- ldr r4, =gStatuses3
- lsls r0, r2, 2
- adds r3, r0, r4
- ldr r1, [r3]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08054250
- 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, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAFD6
- b _080542BA
- .pool
-_08054250:
- adds r0, r2, 0
- bl GetBankSide
- ldr r4, =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080542B4
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r2, [r0]
- ldr r1, =0x0000ffef
- ands r1, r2
- movs r4, 0
- strh r1, [r0]
- ldrb r0, [r5]
- bl GetBankSide
- ldr r2, =gSideTimers
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- strb r4, [r1, 0xA]
- bl b_movescr_stack_push_cursor
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DAFDD
- b _080542BA
- .pool
-_080542B4:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_080542BA:
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkBE_breakfree
-
- thumb_func_start atkBF_set_defense_curl
-atkBF_set_defense_curl: @ 80542C8
- ldr r1, =gBattleMons
- ldr r0, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end atkBF_set_defense_curl
-
- thumb_func_start atkC0_recoverbasedonsunlight
-atkC0_recoverbasedonsunlight: @ 80542F8
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, =gBankTarget
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- strb r0, [r1]
- ldr r7, =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 _080543D8
- ldr r4, =gBattleWeather
- ldrh r0, [r4]
- cmp r0, 0
- beq _0805434A
- 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 _0805434A
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08054378
-_0805434A:
- ldr r3, =gBattleMoveDamage
- ldr r2, =gBattleMons
- ldr r0, =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 _080543B2
- .pool
-_08054378:
- ldrh r1, [r4]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _080543A4
- ldr r4, =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 _080543B2
- .pool
-_080543A4:
- ldr r1, =gBattleMoveDamage
- ldrb r0, [r5]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0, 0x2C]
- lsrs r0, 2
- str r0, [r1]
-_080543B2:
- adds r2, r1, 0
- ldr r0, [r2]
- cmp r0, 0
- bne _080543BE
- movs r0, 0x1
- str r0, [r2]
-_080543BE:
- ldr r0, [r1]
- negs r0, r0
- str r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _080543F2
- .pool
-_080543D8:
- ldr r3, =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]
-_080543F2:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkC0_recoverbasedonsunlight
-
- thumb_func_start atkC1_hidden_power
-atkC1_hidden_power: @ 8054400
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r2, =gBattleMons
- ldr r0, =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, =gDynamicBasePower
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- movs r1, 0x3F
- bl __divsi3
- adds r0, 0x1E
- strh r0, [r5]
- ldr r6, =gBattleStruct
- ldr r5, [r6]
- lsls r0, r4, 4
- subs r0, r4
- movs r1, 0x3F
- bl __divsi3
- adds r0, 0x1
- strb r0, [r5, 0x13]
- ldr r1, [r6]
- ldrb r0, [r1, 0x13]
- cmp r0, 0x8
- bls _080544F0
- adds r0, 0x1
- strb r0, [r1, 0x13]
-_080544F0:
- ldr r2, [r6]
- ldrb r0, [r2, 0x13]
- movs r1, 0xC0
- orrs r0, r1
- strb r0, [r2, 0x13]
- ldr r1, =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
- .pool
- thumb_func_end atkC1_hidden_power
-
- thumb_func_start atkC2_selectnexttarget
-atkC2_selectnexttarget: @ 8054524
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gBankTarget
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gNoOfAllBanks
- ldrb r1, [r1]
- adds r6, r0, 0
- ldr r0, =gBattlescriptCurrInstr
- mov r8, r0
- cmp r1, 0
- beq _0805456E
- adds r3, r6, 0
- ldr r0, =gBankAttacker
- ldrb r5, [r0]
- ldr r0, =gBitTable
- mov r12, r0
- adds r4, r1, 0
- ldr r7, =gAbsentBankFlags
-_0805454C:
- ldrb r2, [r3]
- cmp r2, r5
- beq _08054562
- ldrb r0, [r7]
- ldrb r1, [r6]
- lsls r1, 2
- add r1, r12
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- beq _0805456E
-_08054562:
- adds r0, r2, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r4
- bcc _0805454C
-_0805456E:
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkC2_selectnexttarget
-
- thumb_func_start atkC3_setfutureattack
-atkC3_setfutureattack: @ 8054598
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- ldr r0, =gWishFutureKnock
- mov r8, r0
- ldr r6, =gBankTarget
- ldrb r1, [r6]
- adds r0, r1, r0
- ldrb r7, [r0]
- cmp r7, 0
- beq _080545DC
- ldr r3, =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 _080546CC
- .pool
-_080545DC:
- adds r0, r1, 0
- bl GetBankIdentity
- ldr r4, =gSideAffecting
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- mov r10, r1
- ands r0, r1
- lsls r0, 1
- adds r0, r4
- ldrh r2, [r0]
- movs r1, 0x40
- movs r5, 0
- mov r3, sp
- strh r5, [r3, 0x10]
- orrs r1, r2
- strh r1, [r0]
- ldrb r0, [r6]
- lsls r0, 1
- mov r1, r8
- adds r1, 0x18
- adds r0, r1
- ldr r1, =gCurrentMove
- mov r9, r1
- ldrh r1, [r1]
- strh r1, [r0]
- mov r0, r8
- adds r0, 0x4
- ldrb r2, [r6]
- adds r0, r2
- ldr r5, =gBankAttacker
- ldrb r1, [r5]
- strb r1, [r0]
- ldrb r0, [r6]
- add r0, r8
- movs r1, 0x3
- strb r1, [r0]
- ldrb r0, [r6]
- bl GetBankIdentity
- mov r1, r10
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldrb r0, [r5]
- movs r4, 0x58
- muls r0, r4
- ldr r2, =gBattleMons
- adds r0, r2
- ldrb r1, [r6]
- muls r1, r4
- adds r1, r2
- mov r4, r9
- ldrh r2, [r4]
- str r7, [sp]
- str r7, [sp, 0x4]
- ldrb r4, [r5]
- str r4, [sp, 0x8]
- ldrb r4, [r6]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- ldrb r1, [r6]
- lsls r1, 2
- mov r2, r8
- adds r2, 0x8
- adds r1, r2
- str r0, [r1]
- ldr r1, =gProtectStructs
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _0805468C
- ldrb r4, [r6]
- lsls r4, 2
- adds r4, r2
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0805468C:
- mov r5, r9
- ldrh r1, [r5]
- ldr r0, =0x00000161
- cmp r1, r0
- bne _080546BC
- ldr r0, =gBattleCommunication
- mov r1, r10
- strb r1, [r0, 0x5]
- b _080546C4
- .pool
-_080546BC:
- ldr r0, =gBattleCommunication
- mov r2, sp
- ldrb r2, [r2, 0x10]
- strb r2, [r0, 0x5]
-_080546C4:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080546CC:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkC3_setfutureattack
-
- thumb_func_start atkC4_beat_up
-atkC4_beat_up: @ 80546E4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r7, =gEnemyParty
- cmp r0, 0
- bne _080546FE
- ldr r7, =gPlayerParty
-_080546FE:
- ldr r2, =gBattleMons
- ldr r0, =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08054740
- ldr r3, =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 _080548DC
- .pool
-_08054740:
- ldr r6, =gBattleCommunication
- ldrb r0, [r6]
- mov r8, r0
- cmp r0, 0x5
- bls _0805474C
- b _080548A8
-_0805474C:
- adds r4, r6, 0
- movs r5, 0x64
-_08054750:
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08054794
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08054794
- 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 _08054794
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x37
- bl GetMonData
- cmp r0, 0
- beq _080547A4
-_08054794:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r6, r4, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _08054750
-_080547A4:
- ldr r1, =gBattleCommunication
- mov r9, r1
- ldrb r2, [r1]
- cmp r2, 0x5
- bhi _080548A8
- ldr r1, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r6, =gBankAttacker
- ldrb r0, [r6]
- strb r0, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x9
- str r0, [r1]
- ldr r2, =gBattleMoveDamage
- mov r8, r2
- ldr r5, =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, =gBattleMoves
- ldr r0, =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, =gBattleMons
- ldr r1, =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, =gProtectStructs
- ldrb r0, [r6]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _08054870
- lsls r0, r2, 4
- subs r0, r2
- movs r1, 0xA
- bl __divsi3
- mov r1, r8
- str r0, [r1]
-_08054870:
- mov r2, r9
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _080548E2
- .pool
-_080548A8:
- mov r0, r8
- cmp r0, 0
- beq _080548C8
- ldr r3, =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 _080548DC
- .pool
-_080548C8:
- ldr r3, =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]
-_080548DC:
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_080548E2:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkC4_beat_up
-
- thumb_func_start atkC5_hidepreattack
-atkC5_hidepreattack: @ 80548F4
- push {lr}
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- cmp r1, 0x5B
- beq _08054934
- cmp r1, 0x5B
- bgt _0805490C
- cmp r1, 0x13
- beq _08054918
- b _08054960
- .pool
-_0805490C:
- ldr r0, =0x00000123
- cmp r1, r0
- beq _0805494C
- adds r0, 0x31
- cmp r1, r0
- bne _08054960
-_08054918:
- ldr r2, =gStatuses3
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x40
- b _0805495C
- .pool
-_08054934:
- ldr r2, =gStatuses3
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x80
- b _0805495C
- .pool
-_0805494C:
- ldr r2, =gStatuses3
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 11
-_0805495C:
- orrs r0, r2
- str r0, [r1]
-_08054960:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkC5_hidepreattack
-
- thumb_func_start atkC6_unhidepostattack
-atkC6_unhidepostattack: @ 8054978
- push {lr}
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- cmp r1, 0x5B
- beq _080549BC
- cmp r1, 0x5B
- bgt _08054990
- cmp r1, 0x13
- beq _0805499C
- b _080549EA
- .pool
-_08054990:
- ldr r0, =0x00000123
- cmp r1, r0
- beq _080549D8
- adds r0, 0x31
- cmp r1, r0
- bne _080549EA
-_0805499C:
- ldr r2, =gStatuses3
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x41
- negs r2, r2
- b _080549E6
- .pool
-_080549BC:
- ldr r2, =gStatuses3
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x81
- negs r2, r2
- b _080549E6
- .pool
-_080549D8:
- ldr r2, =gStatuses3
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- ldr r2, =0xfffbffff
-_080549E6:
- ands r0, r2
- str r0, [r1]
-_080549EA:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkC6_unhidepostattack
-
- thumb_func_start atkC7_setminimize
-atkC7_setminimize: @ 8054A08
- push {lr}
- ldr r0, =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _08054A2C
- ldr r2, =gStatuses3
- ldr r0, =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]
-_08054A2C:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkC7_setminimize
-
- thumb_func_start atkC8_sethail
-atkC8_sethail: @ 8054A48
- push {lr}
- ldr r3, =gBattleWeather
- ldrh r1, [r3]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08054A78
- ldr r2, =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08054A86
- .pool
-_08054A78:
- strh r2, [r3]
- ldr r0, =gBattleCommunication
- movs r1, 0x5
- strb r1, [r0, 0x5]
- ldr r0, =gWishFutureKnock
- adds r0, 0x28
- strb r1, [r0]
-_08054A86:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkC8_sethail
-
- thumb_func_start atkC9_jumpifattackandspecialattackcannotfall
-atkC9_jumpifattackandspecialattackcannotfall: @ 8054AA0
- push {r4,lr}
- ldr r2, =gBattleMons
- ldr r0, =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 _08054AF4
- movs r0, 0x1C
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bne _08054AF4
- ldr r0, =gBattleCommunication
- ldrb r0, [r0, 0x6]
- cmp r0, 0x1
- beq _08054AF4
- ldr r3, =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 _08054B20
- .pool
-_08054AF4:
- ldr r4, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r2, =gBattleMoveDamage
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0, 0x28]
- str r0, [r2]
- ldr r1, =0x00007fff
- movs r0, 0
- bl dp01_build_cmdbuf_x18_0_aa_health_bar_update
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08054B20:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkC9_jumpifattackandspecialattackcannotfall
-
- thumb_func_start atkCA_setforcedtarget
-atkCA_setforcedtarget: @ 8054B3C
- push {r4,r5,lr}
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- ldr r5, =gSideTimers
- 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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkCA_setforcedtarget
-
- thumb_func_start atkCB_setcharge
-atkCB_setcharge: @ 8054B88
- push {r4,lr}
- ldr r0, =gStatuses3
- ldr r3, =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, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkCB_setcharge
-
- thumb_func_start atkCC_callterrainattack
-atkCC_callterrainattack: @ 8054BEC
- push {r4,lr}
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, =gCurrentMove
- ldr r1, =gUnknown_0831C414
- ldr r0, =gUnknown_02022FF0
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4]
- ldrh r0, [r4]
- movs r1, 0
- bl GetMoveTarget
- ldr r1, =gBankTarget
- strb r0, [r1]
- ldr r3, =gUnknown_082D86A8
- ldr r2, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkCC_callterrainattack
-
- thumb_func_start atkCD_cureifburnedparalysedorpoisoned
-atkCD_cureifburnedparalysedorpoisoned: @ 8054C60
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r1, =gBattleMons
- ldr r3, =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 _08054CBC
- movs r0, 0
- str r0, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r4, =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 _08054CD6
- .pool
-_08054CBC:
- ldr r3, =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]
-_08054CD6:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkCD_cureifburnedparalysedorpoisoned
-
- thumb_func_start atkCE_settorment
-atkCE_settorment: @ 8054CE4
- push {lr}
- ldr r1, =gBattleMons
- ldr r0, =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 _08054D28
- ldr r3, =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 _08054D34
- .pool
-_08054D28:
- orrs r1, r2
- str r1, [r0]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08054D34:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkCE_settorment
-
- thumb_func_start atkCF_jumpifnodamage
-atkCF_jumpifnodamage: @ 8054D3C
- push {lr}
- ldr r2, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08054D5C
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _08054D74
-_08054D5C:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08054D8E
- .pool
-_08054D74:
- ldr r3, =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]
-_08054D8E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkCF_jumpifnodamage
-
- thumb_func_start atkD0_settaunt
-atkD0_settaunt: @ 8054D98
- push {r4,lr}
- ldr r4, =gDisableStructs
- ldr r3, =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 _08054DE8
- 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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08054E02
- .pool
-_08054DE8:
- ldr r3, =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]
-_08054E02:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkD0_settaunt
-
- thumb_func_start atkD1_set_helpinghand
-atkD1_set_helpinghand: @ 8054E0C
- push {r4,lr}
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r3, =gBankTarget
- strb r0, [r3]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08054E90
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- ldrb r3, [r3]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08054E90
- ldr r1, =gProtectStructs
- ldrb r0, [r4]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- blt _08054E90
- lsls r0, r3, 4
- adds r2, r0, r1
- ldrb r1, [r2]
- lsls r0, r1, 28
- cmp r0, 0
- blt _08054E90
- movs r0, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08054EAA
- .pool
-_08054E90:
- ldr r3, =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]
-_08054EAA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkD1_set_helpinghand
-
- thumb_func_start atkD2_swap_items
-atkD2_swap_items: @ 8054EB4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, =gBattleTypeFlags
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 19
- ands r0, r1
- cmp r0, 0
- bne _08054F9A
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08054EE8
- ldr r0, [r4]
- ldr r1, =0x0a3f0902
- ands r0, r1
- cmp r0, 0
- beq _08054F9A
-_08054EE8:
- ldr r6, =gBankAttacker
- ldrb r0, [r6]
- bl GetBankSide
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r7, =gBankTarget
- ldrb r0, [r7]
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x0a3f0902
- ands r0, r1
- cmp r0, 0
- bne _08054F46
- ldr r0, =gWishFutureKnock
- adds r2, r0, 0
- adds r2, 0x29
- adds r0, r4, r2
- ldrb r1, [r0]
- ldr r4, =gBitTable
- ldr r3, =gBattlePartyID
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08054F9A
- adds r0, r5, r2
- ldrb r1, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08054F9A
-_08054F46:
- ldr r0, =gBattleMons
- mov r8, r0
- ldr r1, =gBankAttacker
- ldrb r4, [r1]
- movs r5, 0x58
- adds r0, r4, 0
- muls r0, r5
- add r0, r8
- mov r9, r0
- ldrh r3, [r0, 0x2E]
- adds r1, r3, 0
- cmp r1, 0
- bne _08054F6E
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- muls r0, r5
- add r0, r8
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- beq _08054F9A
-_08054F6E:
- cmp r1, 0xAF
- beq _08054F9A
- ldr r7, =gBankTarget
- ldrb r0, [r7]
- muls r0, r5
- mov r2, r8
- adds r1, r0, r2
- ldrh r2, [r1, 0x2E]
- cmp r2, 0xAF
- beq _08054F9A
- adds r0, r3, 0
- subs r0, 0x79
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bls _08054F9A
- adds r0, r2, 0
- subs r0, 0x79
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bhi _08054FDC
-_08054F9A:
- ldr r3, =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 _08055132
- .pool
-_08054FDC:
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x3C
- bne _08055010
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DB63F
- str r0, [r1]
- ldr r1, =gLastUsedAbility
- ldrb r0, [r7]
- muls r0, r5
- add r0, r8
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _08055132
- .pool
-_08055010:
- ldr r3, =gBattleStruct
- mov r10, r3
- lsls r0, r4, 1
- adds r0, 0xD0
- ldr r1, [r3]
- adds r6, r1, r0
- mov r0, r9
- ldrh r0, [r0, 0x2E]
- mov r9, r0
- strh r2, [r6]
- ldr r1, =gBankAttacker
- ldrb r0, [r1]
- muls r0, r5
- add r0, r8
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldrb r0, [r7]
- muls r0, r5
- add r0, r8
- mov r2, r9
- strh r2, [r0, 0x2E]
- ldr r4, =gActiveBank
- ldr r3, =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r4]
- str r6, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldr r1, =gBankAttacker
- ldrb r0, [r1]
- bl MarkBufferBankForExecution
- ldrb r0, [r7]
- strb r0, [r4]
- ldrb r0, [r7]
- muls r0, r5
- mov r1, r8
- 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
- ldrb r0, [r7]
- mov r2, r10
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC8
- movs r3, 0
- strb r3, [r0]
- ldrb r0, [r7]
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC9
- strb r3, [r0]
- ldr r1, =gBankAttacker
- ldrb r0, [r1]
- ldr r1, [r2]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC8
- strb r3, [r0]
- ldr r2, =gBankAttacker
- ldrb r0, [r2]
- mov r3, r10
- ldr r1, [r3]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC9
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r1, =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, =gBattleTextBuff2
- strb r3, [r1]
- strb r2, [r1, 0x1]
- mov r2, r9
- strb r2, [r1, 0x2]
- mov r3, r9
- lsrs r0, r3, 8
- strb r0, [r1, 0x3]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x4]
- cmp r3, 0
- beq _08055118
- ldrh r0, [r6]
- cmp r0, 0
- beq _0805512C
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- b _08055130
- .pool
-_08055118:
- ldrh r0, [r6]
- cmp r0, 0
- beq _0805512C
- ldr r0, =gBattleCommunication
- movs r1, 0
- strb r1, [r0, 0x5]
- b _08055132
- .pool
-_0805512C:
- ldr r1, =gBattleCommunication
- movs r0, 0x1
-_08055130:
- strb r0, [r1, 0x5]
-_08055132:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkD2_swap_items
-
- thumb_func_start atkD3_copy_ability
-atkD3_copy_ability: @ 8055148
- push {r4,lr}
- ldr r3, =gBattleMons
- ldr r4, =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 _0805519C
- cmp r0, 0x19
- beq _0805519C
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- strb r1, [r0]
- ldr r1, =gLastUsedAbility
- ldrb r0, [r4]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _080551B6
- .pool
-_0805519C:
- ldr r3, =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]
-_080551B6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkD3_copy_ability
-
- thumb_func_start atkD4_wish_effect
-atkD4_wish_effect: @ 80551C0
- push {r4-r7,lr}
- ldr r7, =gBattlescriptCurrInstr
- ldr r2, [r7]
- ldrb r3, [r2, 0x1]
- cmp r3, 0
- beq _080551D8
- cmp r3, 0x1
- beq _08055210
- b _0805528C
- .pool
-_080551D8:
- ldr r1, =gWishFutureKnock
- ldr r4, =gBankAttacker
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r5, [r4]
- adds r3, r0, r5
- ldrb r0, [r3]
- cmp r0, 0
- bne _0805525C
- movs r0, 0x2
- strb r0, [r3]
- ldrb r0, [r4]
- adds r1, 0x24
- adds r1, r0, r1
- ldr r2, =gBattlePartyID
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x6
- b _0805528A
- .pool
-_08055210:
- ldr r1, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r4, =gBankTarget
- ldrb r0, [r4]
- strb r0, [r1, 0x2]
- ldr r0, =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, =gBattleMoveDamage
- ldr r6, =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 _08055248
- str r3, [r1]
-_08055248:
- 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 _08055288
-_0805525C:
- 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 _0805528C
- .pool
-_08055288:
- adds r0, r2, 0x6
-_0805528A:
- str r0, [r7]
-_0805528C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atkD4_wish_effect
-
- thumb_func_start atkD5_setroots
-atkD5_setroots: @ 8055294
- push {lr}
- ldr r1, =gStatuses3
- ldr r0, =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 _080552D8
- ldr r3, =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 _080552E4
- .pool
-_080552D8:
- orrs r1, r3
- str r1, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080552E4:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkD5_setroots
-
- thumb_func_start atkD6_doubledamagedealtifdamaged
-atkD6_doubledamagedealtifdamaged: @ 80552EC
- push {lr}
- ldr r3, =gProtectStructs
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r0, r3, 0x4
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0805530C
- adds r0, r2, r3
- ldr r1, =gBankTarget
- ldrb r0, [r0, 0xC]
- ldrb r1, [r1]
- cmp r0, r1
- beq _08055324
-_0805530C:
- adds r0, r3, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0805532A
- adds r0, r2, r3
- ldr r1, =gBankTarget
- ldrb r0, [r0, 0xD]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0805532A
-_08055324:
- ldr r1, =gBattleScripting
- movs r0, 0x2
- strb r0, [r1, 0xE]
-_0805532A:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkD6_doubledamagedealtifdamaged
-
- thumb_func_start atkD7_setyawn
-atkD7_setyawn: @ 805534C
- push {r4,lr}
- ldr r1, =gStatuses3
- ldr r0, =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 _08055374
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x4C
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080553A0
-_08055374:
- ldr r3, =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 _080553B0
- .pool
-_080553A0:
- movs r0, 0x80
- lsls r0, 5
- orrs r2, r0
- str r2, [r4]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080553B0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkD7_setyawn
-
- thumb_func_start atkD8_setdamagetohealthdifference
-atkD8_setdamagetohealthdifference: @ 80553BC
- push {lr}
- ldr r2, =gBattleMons
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- movs r1, 0x58
- muls r0, r1
- adds r3, r0, r2
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- muls r0, r1
- adds r1, r0, r2
- ldrh r0, [r3, 0x28]
- ldrh r2, [r1, 0x28]
- cmp r0, r2
- bhi _08055408
- ldr r3, =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 _0805541A
- .pool
-_08055408:
- ldr r2, =gBattleMoveDamage
- ldrh r0, [r3, 0x28]
- ldrh r1, [r1, 0x28]
- subs r0, r1
- str r0, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0805541A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkD8_setdamagetohealthdifference
-
- thumb_func_start atkD9_scaledamagebyhealthratio
-atkD9_scaledamagebyhealthratio: @ 8055428
- push {r4,lr}
- ldr r4, =gDynamicBasePower
- ldrh r0, [r4]
- cmp r0, 0
- bne _08055464
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r3, [r0, 0x1]
- ldr r2, =gBattleMons
- ldr r0, =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 _08055464
- movs r0, 0x1
- strh r0, [r4]
-_08055464:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkD9_scaledamagebyhealthratio
-
- thumb_func_start atkDA_abilityswap
-atkDA_abilityswap: @ 805548C
- push {r4-r6,lr}
- ldr r5, =gBattleMons
- ldr r0, =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 _080554B4
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- muls r0, r4
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0
- beq _080554D4
-_080554B4:
- cmp r1, 0x19
- beq _080554D4
- ldr r6, =gBankTarget
- ldrb r0, [r6]
- muls r0, r4
- adds r0, r5
- adds r0, 0x20
- ldrb r3, [r0]
- cmp r3, 0x19
- beq _080554D4
- ldr r0, =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08055504
-_080554D4:
- ldr r3, =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 _0805551A
- .pool
-_08055504:
- ldrb r1, [r2]
- strb r3, [r2]
- ldrb r0, [r6]
- muls r0, r4
- adds r0, r5
- adds r0, 0x20
- strb r1, [r0]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0805551A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkDA_abilityswap
-
- thumb_func_start atkDB_imprisoneffect
-atkDB_imprisoneffect: @ 8055524
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r1, =gStatuses3
- ldr r4, =gBankAttacker
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _08055574
- b _080555F6
- .pool
-_0805554C:
- ldr r0, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _080555EE
- .pool
-_08055574:
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrb r0, [r4]
- bl sub_803F548
- movs r6, 0
- b _080555E6
-_0805558A:
- adds r0, r6, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r8, r0
- beq _080555E0
- movs r4, 0
- ldr r7, =gBankAttacker
- mov r9, r7
- ldr r0, =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
-_080555B4:
- movs r2, 0
- ldrh r1, [r3]
- mov r0, r12
- adds r0, 0xC
- adds r0, r5, r0
-_080555BE:
- ldrh r7, [r0]
- cmp r1, r7
- bne _080555C8
- cmp r1, 0
- bne _080555D0
-_080555C8:
- adds r0, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- ble _080555BE
-_080555D0:
- cmp r2, 0x4
- bne _080555DC
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _080555B4
-_080555DC:
- cmp r4, 0x4
- bne _0805554C
-_080555E0:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_080555E6:
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0805558A
-_080555EE:
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bne _08055610
-_080555F6:
- ldr r3, =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]
-_08055610:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkDB_imprisoneffect
-
- thumb_func_start atkDC_setgrudge
-atkDC_setgrudge: @ 805562C
- push {lr}
- ldr r1, =gStatuses3
- ldr r0, =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 _08055670
- ldr r3, =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 _0805567C
- .pool
-_08055670:
- orrs r1, r3
- str r1, [r2]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0805567C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkDC_setgrudge
-
- thumb_func_start atkDD_weightdamagecalculation
-atkDD_weightdamagecalculation: @ 8055684
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
- ldr r2, =gUnknown_0831C428
- ldrh r0, [r2]
- ldr r1, =0x0000ffff
- cmp r0, r1
- beq _080556FC
- adds r6, r2, 0
- ldr r0, =gBattleMons
- mov r8, r0
- adds r7, r1, 0
- adds r4, r6, 0
-_080556A0:
- ldr r0, =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 _080556CE
- adds r4, 0x4
- adds r5, 0x2
- ldrh r0, [r4]
- cmp r0, r7
- bne _080556A0
-_080556CE:
- lsls r0, r5, 1
- adds r0, r6
- ldrh r1, [r0]
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _080556FC
- ldr r0, =gDynamicBasePower
- adds r1, r5, 0x1
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- strh r1, [r0]
- b _08055702
- .pool
-_080556FC:
- ldr r1, =gDynamicBasePower
- movs r0, 0x78
- strh r0, [r1]
-_08055702:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkDD_weightdamagecalculation
-
- thumb_func_start atkDE_asistattackselect
-atkDE_asistattackselect: @ 805571C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r0, 0
- mov r10, r0
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x18
- str r0, [sp, 0x4]
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- ldr r0, =gPlayerParty
- str r0, [sp]
- cmp r1, 0
- beq _0805574C
- ldr r1, =gEnemyParty
- str r1, [sp]
-_0805574C:
- movs r2, 0
-_0805574E:
- ldr r1, =gBattlePartyID
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- adds r1, r2, 0x1
- str r1, [sp, 0x8]
- ldrh r0, [r0]
- cmp r2, r0
- beq _080557F4
- 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 _080557F4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080557F4
- movs r5, 0
- ldr r1, =0x0000ffff
- mov r8, r1
- mov r9, r6
- mov r1, r10
- lsls r0, r1, 1
- ldr r1, [sp, 0x4]
- adds r6, r0, r1
-_08055798:
- 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_8052F84
- lsls r0, 24
- adds r1, r5, 0x1
- cmp r0, 0
- bne _080557EE
- ldr r0, =gUnknown_0831C3E0
- ldrh r2, [r0]
- adds r3, r0, 0
- cmp r2, r8
- beq _080557E2
- cmp r4, r2
- beq _080557D8
- ldr r5, =0x0000ffff
- adds r2, r3, 0
-_080557CA:
- adds r2, 0x2
- adds r7, 0x1
- ldrh r0, [r2]
- cmp r0, r5
- beq _080557E2
- cmp r4, r0
- bne _080557CA
-_080557D8:
- lsls r0, r7, 1
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, r8
- bne _080557EE
-_080557E2:
- cmp r4, 0
- beq _080557EE
- strh r4, [r6]
- adds r6, 0x2
- movs r0, 0x1
- add r10, r0
-_080557EE:
- adds r5, r1, 0
- cmp r5, 0x3
- ble _08055798
-_080557F4:
- ldr r2, [sp, 0x8]
- cmp r2, 0x5
- ble _0805574E
- mov r1, r10
- cmp r1, 0
- beq _0805586C
- ldr r2, =gHitMarker
- ldr r0, [r2]
- ldr r1, =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, =gRandomMove
- bl Random
- movs r1, 0xFF
- ands r1, r0
- mov r0, r10
- muls r0, r1
- asrs r0, 8
- lsls r0, 1
- ldr r1, [sp, 0x4]
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4]
- ldrh r0, [r4]
- movs r1, 0
- bl GetMoveTarget
- ldr r1, =gBankTarget
- strb r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08055886
- .pool
-_0805586C:
- ldr r3, =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]
-_08055886:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkDE_asistattackselect
-
- thumb_func_start atkDF_setmagiccoat
-atkDF_setmagiccoat: @ 805589C
- push {lr}
- ldr r1, =gBankTarget
- ldr r3, =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r2, =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, =gUnknown_02024082
- ldrb r1, [r0]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _080558FC
- ldr r3, =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 _08055914
- .pool
-_080558FC:
- ldr r0, =gProtectStructs
- ldrb r1, [r3]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x10
- orrs r0, r2
- strb r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08055914:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkDF_setmagiccoat
-
- thumb_func_start atkE0_setstealstatchange
-atkE0_setstealstatchange: @ 8055920
- push {lr}
- ldr r2, =gSpecialStatuses
- ldr r3, =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, =gUnknown_02024082
- ldrb r1, [r0]
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _08055978
- ldr r3, =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 _0805598E
- .pool
-_08055978:
- ldr r0, =gProtectStructs
- ldrb r1, [r3]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- orrs r0, r2
- strb r0, [r1]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0805598E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkE0_setstealstatchange
-
- thumb_func_start atkE1_intimidate_string_loader
-atkE1_intimidate_string_loader: @ 805599C
- push {r4-r6,lr}
- ldr r4, =gBattleScripting
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xD8
- ldrb r0, [r0]
- strb r0, [r4, 0x17]
- ldrb r0, [r4, 0x17]
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r2]
- movs r0, 0x9
- strb r0, [r2, 0x1]
- ldr r3, =gBattleMons
- ldrb r1, [r4, 0x17]
- 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, =gBankTarget
- ldr r1, =gNoOfAllBanks
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _08055A22
- adds r4, r2, 0
- ldr r6, =gBitTable
-_080559E2:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- beq _08055A04
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ands r1, r0
- ldr r2, =gNoOfAllBanks
- cmp r1, 0
- beq _08055A18
-_08055A04:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- adds r2, r1, 0
- ldrb r1, [r2]
- cmp r0, r1
- bcc _080559E2
-_08055A18:
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- ldrb r2, [r2]
- cmp r0, r2
- bcc _08055A64
-_08055A22:
- ldr r3, =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 _08055A6C
- .pool
-_08055A64:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08055A6C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkE1_intimidate_string_loader
-
- thumb_func_start atkE2_switchout_abilities
-atkE2_switchout_abilities: @ 8055A78
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r3, =gBattleMons
- ldrb r0, [r4]
- movs r6, 0x58
- adds r1, r0, 0
- muls r1, r6
- adds r0, r1, r3
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1E
- bne _08055AD2
- adds r3, 0x4C
- adds r1, r3
- movs r0, 0
- str r0, [r1]
- ldr r2, =gBitTable
- ldrb r1, [r4]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, r1, r0
- adds r0, 0x58
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0]
- adds r0, r1, 0
- muls r0, r6
- adds r0, r3
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08055AD2:
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkE2_switchout_abilities
-
- thumb_func_start atkE3_jumpiffainted
-atkE3_jumpiffainted: @ 8055AF4
- push {r4,lr}
- ldr r4, =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl get_battle_side_of_something
- ldr r1, =gActiveBank
- strb r0, [r1]
- ldr r2, =gBattleMons
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08055B3C
- 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 _08055B42
- .pool
-_08055B3C:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_08055B42:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atkE3_jumpiffainted
-
- thumb_func_start atkE4_getsecretpowereffect
-atkE4_getsecretpowereffect: @ 8055B48
- push {lr}
- ldr r0, =gUnknown_02022FF0
- ldrb r0, [r0]
- cmp r0, 0x7
- bhi _08055BE4
- lsls r0, 2
- ldr r1, =_08055B64
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08055B64:
- .4byte _08055B84
- .4byte _08055B90
- .4byte _08055B9C
- .4byte _08055BA8
- .4byte _08055BB4
- .4byte _08055BC0
- .4byte _08055BCC
- .4byte _08055BD8
-_08055B84:
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- b _08055BE8
- .pool
-_08055B90:
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- b _08055BE8
- .pool
-_08055B9C:
- ldr r1, =gBattleCommunication
- movs r0, 0x1B
- b _08055BE8
- .pool
-_08055BA8:
- ldr r1, =gBattleCommunication
- movs r0, 0x17
- b _08055BE8
- .pool
-_08055BB4:
- ldr r1, =gBattleCommunication
- movs r0, 0x16
- b _08055BE8
- .pool
-_08055BC0:
- ldr r1, =gBattleCommunication
- movs r0, 0x18
- b _08055BE8
- .pool
-_08055BCC:
- ldr r1, =gBattleCommunication
- movs r0, 0x7
- b _08055BE8
- .pool
-_08055BD8:
- ldr r1, =gBattleCommunication
- movs r0, 0x8
- b _08055BE8
- .pool
-_08055BE4:
- ldr r1, =gBattleCommunication
- movs r0, 0x5
-_08055BE8:
- strb r0, [r1, 0x3]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkE4_getsecretpowereffect
-
- thumb_func_start atkE5_pickup
-atkE5_pickup: @ 8055C00
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- bl InBattlePike
- lsls r0, 24
- cmp r0, 0
- beq _08055C18
- b _08055DD8
-_08055C18:
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _08055CC4
- movs r6, 0
- mov r7, sp
- ldr r0, =gBaseStats
- mov r8, r0
-_08055C2A:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, =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
- strh r0, [r7]
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _08055C6C
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x17]
- b _08055C76
- .pool
-_08055C6C:
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x16]
-_08055C76:
- cmp r0, 0x35
- bne _08055CB6
- cmp r5, 0
- beq _08055CB6
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- beq _08055CB6
- ldrh r0, [r7]
- cmp r0, 0
- bne _08055CB6
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08055CB6
- bl CalculateBattlePyramidPickupItemId
- strh r0, [r7]
- movs r0, 0x64
- muls r0, r6
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
-_08055CB6:
- adds r6, 0x1
- cmp r6, 0x5
- ble _08055C2A
- b _08055DD8
- .pool
-_08055CC4:
- movs r6, 0
- movs r1, 0x64
- mov r8, r1
- ldr r7, =gPlayerParty
- mov r10, sp
-_08055CCE:
- mov r4, r8
- muls r4, r6
- adds r4, r7
- 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
- mov r1, r10
- strh r0, [r1]
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _08055D30
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- ldr r1, =gBaseStats
- adds r0, r1
- ldrb r0, [r0, 0x17]
- b _08055D3C
- .pool
-_08055D10:
- mov r0, r8
- muls r0, r6
- adds r0, r7
- adds r2, r1, 0
- adds r2, 0x63
- subs r2, r4
- lsls r2, 1
- ldr r1, =gRarePickupItems
- adds r2, r1
- movs r1, 0xC
- bl SetMonData
- b _08055DD0
- .pool
-_08055D30:
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- ldr r1, =gBaseStats
- adds r0, r1
- ldrb r0, [r0, 0x16]
-_08055D3C:
- adds r1, r6, 0x1
- mov r9, r1
- cmp r0, 0x35
- bne _08055DD0
- cmp r5, 0
- beq _08055DD0
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- beq _08055DD0
- mov r1, r10
- ldrh r0, [r1]
- cmp r0, 0
- bne _08055DD0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08055DD0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r4, r0, 16
- mov r0, r8
- muls r0, r6
- adds r0, r7
- movs r1, 0x38
- bl GetMonData
- subs r0, 0x1
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9
- bls _08055D9C
- movs r1, 0x9
-_08055D9C:
- movs r2, 0
- b _08055DAE
- .pool
-_08055DA4:
- adds r0, r4, 0
- subs r0, 0x62
- cmp r0, 0x1
- bls _08055D10
- adds r2, 0x1
-_08055DAE:
- cmp r2, 0x8
- bgt _08055DD0
- ldr r0, =gPickupProbabilities
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, r4
- ble _08055DA4
- mov r0, r8
- muls r0, r6
- adds r0, r7
- adds r2, r1, r2
- lsls r2, 1
- ldr r1, =gPickupItems
- adds r2, r1
- movs r1, 0xC
- bl SetMonData
-_08055DD0:
- mov r6, r9
- cmp r6, 0x5
- bgt _08055DD8
- b _08055CCE
-_08055DD8:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkE5_pickup
-
- thumb_func_start atkE6_castform_change_animation
-atkE6_castform_change_animation: @ 8055DFC
- push {r4,lr}
- ldr r4, =gActiveBank
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- strb r0, [r4]
- ldr r1, =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
- ldr r3, =gBattleStruct
- cmp r0, 0
- beq _08055E2C
- ldr r0, [r3]
- adds r0, 0x7F
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_08055E2C:
- ldr r0, [r3]
- adds r0, 0x7F
- ldrb r2, [r0]
- movs r0, 0
- movs r1, 0
- bl dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkE6_castform_change_animation
-
- thumb_func_start atkE7_castform_data_change
-atkE7_castform_data_change: @ 8055E64
- push {r4,lr}
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- bl CastformDataTypeChange
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _08055E8E
- ldr r0, =BattleScript_CastformChange
- bl b_push_move_exec
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x7F
- subs r1, r4, 0x1
- strb r1, [r0]
-_08055E8E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkE7_castform_data_change
-
- thumb_func_start atkE8_settypebasedhalvers
-atkE8_settypebasedhalvers: @ 8055EA4
- push {r4,lr}
- movs r4, 0
- ldr r2, =gBattleMoves
- ldr r0, =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0xC9
- bne _08055EF4
- ldr r1, =gStatuses3
- ldr r0, =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 _08055F18
- orrs r1, r3
- str r1, [r2]
- ldr r0, =gBattleCommunication
- strb r4, [r0, 0x5]
- b _08055F1C
- .pool
-_08055EF4:
- ldr r1, =gStatuses3
- ldr r0, =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 _08055F18
- orrs r1, r3
- str r1, [r2]
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- movs r4, 0x1
-_08055F18:
- cmp r4, 0
- beq _08055F38
-_08055F1C:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08055F52
- .pool
-_08055F38:
- ldr r3, =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]
-_08055F52:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkE8_settypebasedhalvers
-
- thumb_func_start atkE9_setweatherballtype
-atkE9_setweatherballtype: @ 8055F5C
- 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 _08055FFC
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _08055FFC
- ldr r2, =gBattleWeather
- ldrb r0, [r2]
- cmp r0, 0
- beq _08055F9A
- ldr r1, =gBattleScripting
- movs r0, 0x2
- strb r0, [r1, 0xE]
-_08055F9A:
- ldrh r1, [r2]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08055FB8
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- movs r0, 0x8B
- b _08055FFA
- .pool
-_08055FB8:
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _08055FCC
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- movs r0, 0x85
- b _08055FFA
- .pool
-_08055FCC:
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _08055FE0
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- movs r0, 0x8A
- b _08055FFA
- .pool
-_08055FE0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08055FF4
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- movs r0, 0x8F
- b _08055FFA
- .pool
-_08055FF4:
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- movs r0, 0x80
-_08055FFA:
- strb r0, [r1, 0x13]
-_08055FFC:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkE9_setweatherballtype
-
- thumb_func_start atkEA_recycleitem
-atkEA_recycleitem: @ 8056014
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r7, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r7]
- ldr r1, =gBattleStruct
- ldrb r2, [r7]
- lsls r0, r2, 1
- adds r0, 0xB8
- ldr r1, [r1]
- adds r6, r1, r0
- ldrh r5, [r6]
- cmp r5, 0
- beq _08056094
- ldr r4, =gBattleMons
- movs r3, 0x58
- adds r0, r2, 0
- muls r0, r3
- adds r0, r4
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- bne _08056094
- ldr r1, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _080560AE
- .pool
-_08056094:
- ldr r3, =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]
-_080560AE:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkEA_recycleitem
-
- thumb_func_start atkEB_settypetoterrain
-atkEB_settypetoterrain: @ 80560BC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gBattleMons
- mov r8, r0
- ldr r7, =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, =sTerrainToType
- ldr r4, =gUnknown_02022FF0
- ldrb r0, [r4]
- adds r0, r5
- ldrb r2, [r0]
- mov r1, r12
- ldrb r0, [r1]
- adds r1, r2, 0
- cmp r0, r1
- beq _08056144
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- beq _08056144
- 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, =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, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0805615E
- .pool
-_08056144:
- ldr r3, =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]
-_0805615E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkEB_settypetoterrain
-
- thumb_func_start atkEC_pursuit_sth
-atkEC_pursuit_sth: @ 805616C
- push {r4-r6,lr}
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r4, =gActiveBank
- strb r0, [r4]
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r6, 0x1
- ands r0, r6
- cmp r0, 0
- beq _0805620C
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0805620C
- ldr r0, =gUnknown_0202421C
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _0805620C
- ldr r1, =gChosenMovesByBanks
- lsls r0, r3, 1
- adds r0, r1
- ldrh r2, [r0]
- cmp r2, 0xE4
- bne _0805620C
- ldr r0, =gUnknown_0202407A
- adds r0, r3, r0
- movs r1, 0xB
- strb r1, [r0]
- ldr r0, =gCurrentMove
- strh r2, [r0]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r0, =gBattleScripting
- strb r6, [r0, 0x18]
- ldrb r1, [r5]
- adds r0, 0x20
- strb r1, [r0]
- ldrb r0, [r4]
- strb r0, [r5]
- b _08056226
- .pool
-_0805620C:
- ldr r3, =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]
-_08056226:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkEC_pursuit_sth
-
- thumb_func_start atkED_802B4B4
-atkED_802B4B4: @ 8056230
- push {r4,lr}
- ldr r1, =gEffectBank
- ldr r3, =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r2, =gBankTarget
- lsls r0, 24
- lsrs r0, 24
- adds r4, r1, 0
- ldrb r1, [r2]
- cmp r0, r1
- bne _08056264
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x17]
- strb r0, [r2]
- strb r0, [r3]
- b _0805626A
- .pool
-_08056264:
- ldr r1, =gBattleScripting
- ldrb r0, [r1, 0x17]
- strb r0, [r2]
-_0805626A:
- ldrb r0, [r4]
- strb r0, [r1, 0x17]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkED_802B4B4
-
- thumb_func_start atkEE_removelightscreenreflect
-atkEE_removelightscreenreflect: @ 8056284
- push {r4,lr}
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSideTimers
- lsls r3, r0, 1
- adds r0, r3, r0
- lsls r0, 2
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- bne _080562AC
- ldrb r1, [r4, 0x2]
- cmp r1, 0
- beq _080562E4
-_080562AC:
- ldr r2, =gSideAffecting
- adds r2, r3, r2
- ldrh r1, [r2]
- ldr r0, =0x0000fffe
- ands r0, r1
- movs r3, 0
- ldr r1, =0x0000fffd
- ands r0, r1
- strh r0, [r2]
- strb r3, [r4]
- strb r3, [r4, 0x2]
- ldr r1, =gBattleScripting
- movs r0, 0x1
- strb r0, [r1, 0x18]
- strb r0, [r1, 0x19]
- b _080562EA
- .pool
-_080562E4:
- ldr r0, =gBattleScripting
- strb r1, [r0, 0x18]
- strb r1, [r0, 0x19]
-_080562EA:
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkEE_removelightscreenreflect
-
- thumb_func_start atkEF_pokeball_catch_calculation
-atkEF_pokeball_catch_calculation: @ 8056300
- push {r4-r6,lr}
- movs r4, 0
- ldr r0, =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0805630E
- b _08056696
-_0805630E:
- ldr r5, =gActiveBank
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r6, =gBankTarget
- movs r1, 0x1
- eors r0, r1
- strb r0, [r6]
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0805635C
- movs r0, 0
- movs r1, 0x5
- bl dp01_build_cmdbuf_x0D_a
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBE02
- b _08056694
- .pool
-_0805635C:
- movs r0, 0x80
- lsls r0, 2
- ands r1, r0
- cmp r1, 0
- beq _08056384
- movs r0, 0
- movs r1, 0x4
- bl dp01_build_cmdbuf_x0D_a
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBDCA
- b _08056694
- .pool
-_08056384:
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- cmp r0, 0x5
- bne _080563B0
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x7C
- 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 _080563C8
- .pool
-_080563B0:
- ldr r3, =gBaseStats
- ldr r2, =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]
-_080563C8:
- ldr r2, =gLastUsedItem
- ldrh r0, [r2]
- cmp r0, 0x5
- bhi _080563D2
- b _080564C8
-_080563D2:
- subs r0, 0x6
- cmp r0, 0x6
- bls _080563DA
- b _080564D2
-_080563DA:
- lsls r0, 2
- ldr r1, =_080563F4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080563F4:
- .4byte _08056410
- .4byte _08056440
- .4byte _08056452
- .4byte _08056480
- .4byte _080564B0
- .4byte _08056472
- .4byte _08056472
-_08056410:
- ldr r2, =gBattleMons
- ldr r0, =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 _080564A4
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xB
- beq _080564A4
- cmp r1, 0x6
- beq _080564A4
- cmp r0, 0x6
- beq _080564A4
- b _08056472
- .pool
-_08056440:
- bl sav1_map_get_light_level
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0xA
- cmp r0, 0x5
- bne _080564D2
- movs r4, 0x23
- b _080564D2
-_08056452:
- ldr r2, =gBattleMons
- ldr r0, =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r1, [r0]
- cmp r1, 0x27
- bhi _08056472
- movs r0, 0x28
- subs r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bhi _080564D2
-_08056472:
- movs r4, 0xA
- b _080564D2
- .pool
-_08056480:
- ldr r2, =gBattleMons
- ldr r0, =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 GetSetPokedexFlag
- lsls r0, 24
- movs r4, 0xA
- cmp r0, 0
- beq _080564D2
-_080564A4:
- movs r4, 0x1E
- b _080564D2
- .pool
-_080564B0:
- ldr r0, =gBattleResults
- ldrb r0, [r0, 0x13]
- adds r0, 0xA
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x28
- bls _080564D2
- movs r4, 0x28
- b _080564D2
- .pool
-_080564C8:
- ldr r1, =sBallCatchBonuses
- ldrh r0, [r2]
- subs r0, 0x2
- adds r0, r1
- ldrb r4, [r0]
-_080564D2:
- adds r0, r5, 0
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- ldr r5, =gBattleMons
- ldr r1, =gBankTarget
- ldrb r2, [r1]
- movs r1, 0x58
- adds r4, r2, 0
- muls r4, r1
- 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 _0805650E
- lsls r6, 1
-_0805650E:
- movs r0, 0xD8
- ands r4, r0
- cmp r4, 0
- beq _08056522
- lsls r0, r6, 4
- subs r0, r6
- movs r1, 0xA
- bl __udivsi3
- adds r6, r0, 0
-_08056522:
- ldr r1, =gLastUsedItem
- ldrh r0, [r1]
- cmp r0, 0x5
- beq _08056564
- cmp r0, 0x1
- bne _08056550
- ldr r0, =gBattleResults
- ldrb r1, [r0, 0x5]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0, 0x5]
- b _08056564
- .pool
-_08056550:
- ldr r0, =gBattleResults
- ldrh r1, [r1]
- adds r0, r1
- adds r1, r0, 0
- adds r1, 0x34
- ldrb r0, [r1]
- cmp r0, 0xFE
- bhi _08056564
- adds r0, 0x1
- strb r0, [r1]
-_08056564:
- cmp r6, 0xFE
- bls _080565C8
- movs r0, 0
- movs r1, 0x4
- bl dp01_build_cmdbuf_x0D_a
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBD84
- str r0, [r1]
- ldr r1, =gBattlePartyID
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- ldr r2, =gLastUsedItem
- movs r1, 0x26
- bl SetMonData
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- beq _08056656
- b _08056680
- .pool
-_080565C8:
- 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, =0x000ffff0
- adds r1, r6, 0
- bl __udivsi3
- adds r6, r0, 0
- movs r4, 0
- b _080565FA
- .pool
-_080565F4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080565FA:
- cmp r4, 0x3
- bhi _0805660A
- bl Random
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcc _080565F4
-_0805660A:
- ldr r5, =gLastUsedItem
- ldrh r0, [r5]
- cmp r0, 0x1
- bne _08056614
- movs r4, 0x4
-_08056614:
- movs r0, 0
- adds r1, r4, 0
- bl dp01_build_cmdbuf_x0D_a
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- cmp r4, 0x4
- bne _0805668C
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBD84
- str r0, [r1]
- ldr r1, =gBattlePartyID
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =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 _08056680
-_08056656:
- ldr r1, =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- b _08056696
- .pool
-_08056680:
- ldr r1, =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08056696
- .pool
-_0805668C:
- ldr r0, =gBattleCommunication
- strb r4, [r0, 0x5]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, =gUnknown_082DBDD4
-_08056694:
- str r0, [r1]
-_08056696:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkEF_pokeball_catch_calculation
-
- thumb_func_start atkF0_copy_caught_poke
-atkF0_copy_caught_poke: @ 80566A8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gBattlePartyID
- mov r9, r0
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- movs r6, 0x1
- eors r0, r6
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- movs r7, 0x64
- muls r0, r7
- ldr r1, =gEnemyParty
- mov r8, r1
- add r0, r8
- bl GiveMonToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _08056792
- bl sub_813B21C
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08056734
- ldr r0, =gBattleCommunication
- strb r1, [r0, 0x5]
- ldr r4, =gStringVar1
- ldr r0, =0x00004036
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl sav3_get_box_name
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r0, [r5]
- eors r0, r6
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- muls r0, r7
- add r0, r8
- ldr r2, =gStringVar2
- movs r1, 0x2
- bl GetMonData
- b _0805677E
- .pool
-_08056734:
- ldr r4, =gStringVar1
- ldr r0, =0x00004036
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl sav3_get_box_name
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r0, [r5]
- eors r0, r6
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- muls r0, r7
- add r0, r8
- ldr r2, =gStringVar2
- movs r1, 0x2
- bl GetMonData
- ldr r4, =gStringVar3
- bl get_unknown_box_id
- lsls r0, 24
- lsrs r0, 24
- bl sav3_get_box_name
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
-_0805677E:
- ldr r0, =0x000008ab
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08056792
- ldr r1, =gBattleCommunication
- ldrb r0, [r1, 0x5]
- adds r0, 0x1
- strb r0, [r1, 0x5]
-_08056792:
- ldr r0, =gBattlePartyID
- mov r10, r0
- ldr r1, =gBankAttacker
- mov r9, r1
- ldrb r0, [r1]
- movs r4, 0x1
- eors r0, r4
- lsls r0, 1
- add r0, r10
- ldrh r0, [r0]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r6, =gEnemyParty
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- ldr r5, =gBattleResults
- strh r0, [r5, 0x28]
- mov r1, r9
- ldrb r0, [r1]
- eors r0, r4
- lsls r0, 1
- add r0, r10
- ldrh r0, [r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- adds r2, r5, 0
- adds r2, 0x2A
- movs r1, 0x2
- bl GetMonData
- mov r1, r9
- ldrb r0, [r1]
- eors r4, r0
- lsls r4, 1
- add r4, r10
- ldrh r0, [r4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0x26
- movs r2, 0
- bl GetMonData
- movs r1, 0xF
- ands r0, r1
- lsls r0, 2
- ldrb r2, [r5, 0x5]
- movs r1, 0x3D
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x5]
- ldr r1, =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
- .pool
- thumb_func_end atkF0_copy_caught_poke
-
- thumb_func_start atkF1_setpoke_as_caught
-atkF1_setpoke_as_caught: @ 8056850
- push {r4,r5,lr}
- ldr r4, =gEnemyParty
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- bl GetMonData
- adds r4, r0, 0
- adds r0, r5, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080568A8
- ldr r3, =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 _080568C2
- .pool
-_080568A8:
- adds r0, r5, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- adds r2, r4, 0
- bl HandleSetPokedexFlag
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080568C2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkF1_setpoke_as_caught
-
- thumb_func_start atkF2_display_dex_info
-atkF2_display_dex_info: @ 80568CC
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gEnemyParty
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =gBattleCommunication
- ldrb r0, [r0]
- cmp r0, 0x5
- bls _080568E8
- b _08056A2C
-_080568E8:
- lsls r0, 2
- ldr r1, =_08056900
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08056900:
- .4byte _08056918
- .4byte _0805692A
- .4byte _08056978
- .4byte _080569C8
- .4byte _080569E0
- .4byte _08056A18
-_08056918:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08056A06
-_0805692A:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08056938
- b _08056A2C
-_08056938:
- bl FreeAllWindowBuffers
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- ldr r3, =gBattleMons
- ldr r1, =gBankTarget
- ldrb r2, [r1]
- movs r1, 0x58
- muls r2, r1
- adds r1, r3, 0
- adds r1, 0x54
- adds r1, r2, r1
- ldr r1, [r1]
- adds r3, 0x48
- adds r2, r3
- ldr r2, [r2]
- bl sub_80BFDF4
- ldr r1, =gBattleCommunication
- strb r0, [r1, 0x1]
- b _08056A08
- .pool
-_08056978:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08056A2C
- ldr r0, =gMain
- ldr r1, [r0, 0x4]
- ldr r0, =sub_8038420
- cmp r1, r0
- bne _08056A2C
- ldr r2, =gTasks
- ldr r4, =gBattleCommunication
- ldrb r1, [r4, 0x1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- bne _08056A2C
- ldr r0, =vblank_cb_08078BB4
- bl SetVBlankCallback
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08056A2C
- .pool
-_080569C8:
- bl c2_berry_program_update_menu
- bl sub_8035AA4
- ldr r1, =gUnknown_02022E20
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- b _08056A06
- .pool
-_080569E0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08056A2C
- ldr r0, =0x0000ffff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
-_08056A06:
- ldr r1, =gBattleCommunication
-_08056A08:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08056A2C
- .pool
-_08056A18:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08056A2C
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08056A2C:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkF2_display_dex_info
-
- thumb_func_start sub_8056A3C
-sub_8056A3C: @ 8056A3C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x10]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x1C]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- movs r1, 0
- add r0, sp, 0xC
- strh r1, [r0]
- ldr r6, [sp, 0x10]
- cmp r6, r3
- ble _08056A76
- b _08056B62
-_08056A76:
- mov r4, r8
- adds r0, r6, 0x1
- str r0, [sp, 0x18]
- ldr r2, [sp, 0x1C]
- cmp r4, r2
- bgt _08056B58
- add r5, sp, 0xC
- lsls r7, r6, 24
- mov r9, r7
-_08056A88:
- ldr r0, [sp, 0x10]
- cmp r6, r0
- bne _08056AB4
- cmp r4, r8
- bne _08056A9C
- ldr r0, =0x00001022
- b _08056AFE
- .pool
-_08056A9C:
- ldr r2, [sp, 0x1C]
- cmp r4, r2
- bne _08056AAC
- ldr r0, =0x00001024
- b _08056AFE
- .pool
-_08056AAC:
- ldr r0, =0x00001023
- b _08056AFE
- .pool
-_08056AB4:
- ldr r7, [sp, 0x14]
- cmp r6, r7
- bne _08056AE0
- cmp r4, r8
- bne _08056AC8
- ldr r0, =0x00001028
- b _08056AFE
- .pool
-_08056AC8:
- ldr r0, [sp, 0x1C]
- cmp r4, r0
- bne _08056AD8
- ldr r0, =0x0000102a
- b _08056AFE
- .pool
-_08056AD8:
- ldr r0, =0x00001029
- b _08056AFE
- .pool
-_08056AE0:
- cmp r4, r8
- bne _08056AEC
- ldr r0, =0x00001025
- b _08056AFE
- .pool
-_08056AEC:
- ldr r2, [sp, 0x1C]
- cmp r4, r2
- bne _08056AFC
- ldr r0, =0x00001027
- b _08056AFE
- .pool
-_08056AFC:
- ldr r0, =0x00001026
-_08056AFE:
- strh r0, [r5]
- movs r1, 0x1
- mov r0, r10
- ands r0, r1
- cmp r0, 0
- beq _08056B0E
- movs r0, 0
- strh r0, [r5]
-_08056B0E:
- movs r0, 0x80
- mov r7, r10
- ands r0, r7
- cmp r0, 0
- beq _08056B38
- lsls r2, r4, 24
- lsrs r2, 24
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- add r1, sp, 0xC
- mov r7, r9
- lsrs r3, r7, 24
- bl CopyToBgTilemapBufferRect_ChangePalette
- b _08056B50
- .pool
-_08056B38:
- lsls r2, r4, 24
- lsrs r2, 24
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- add r1, sp, 0xC
- mov r7, r9
- lsrs r3, r7, 24
- bl CopyToBgTilemapBufferRect_ChangePalette
-_08056B50:
- adds r4, 0x1
- ldr r0, [sp, 0x1C]
- cmp r4, r0
- ble _08056A88
-_08056B58:
- ldr r6, [sp, 0x18]
- ldr r2, [sp, 0x14]
- cmp r6, r2
- bgt _08056B62
- b _08056A76
-_08056B62:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8056A3C
-
- thumb_func_start sub_8056B74
-sub_8056B74: @ 8056B74
- push {lr}
- sub sp, 0x10
- adds r3, r0, 0
- add r0, sp, 0xC
- movs r2, 0x1
- strh r2, [r0]
- movs r1, 0x2
- strh r1, [r0, 0x2]
- lsls r3, 25
- movs r0, 0x90
- lsls r0, 20
- adds r3, r0
- lsrs r3, 24
- str r2, [sp]
- str r1, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- add r1, sp, 0xC
- movs r2, 0x19
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0x10
- pop {r0}
- bx r0
- thumb_func_end sub_8056B74
-
- thumb_func_start sub_8056BAC
-sub_8056BAC: @ 8056BAC
- push {lr}
- sub sp, 0x10
- adds r3, r0, 0
- add r0, sp, 0xC
- ldr r1, =0x00001016
- strh r1, [r0]
- strh r1, [r0, 0x2]
- lsls r3, 25
- movs r0, 0x90
- lsls r0, 20
- adds r3, r0
- lsrs r3, 24
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0
- add r1, sp, 0xC
- movs r2, 0x19
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0x10
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8056BAC
-
- thumb_func_start atkF3_nickname_caught_poke
-atkF3_nickname_caught_poke: @ 8056BEC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, =gBattleCommunication
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x4
- bls _08056C04
- b _08056E62
-_08056C04:
- lsls r0, r1, 2
- ldr r1, =_08056C18
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08056C18:
- .4byte _08056C2C
- .4byte _08056C60
- .4byte _08056CFC
- .4byte _08056DD4
- .4byte _08056E2C
-_08056C2C:
- movs r4, 0
- str r4, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_8056A3C
- ldr r0, =gText_BattleYesNoChoice
- movs r1, 0xC
- bl battle_show_message_maybe
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- strb r4, [r1, 0x1]
- movs r0, 0
- bl sub_8056B74
- b _08056E62
- .pool
-_08056C60:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08056C86
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08056C86
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x1]
- bl sub_8056BAC
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_8056B74
-_08056C86:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08056CAE
- ldr r4, =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08056CAE
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0x1]
- bl sub_8056BAC
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_8056B74
-_08056CAE:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08056CE0
- movs r0, 0x5
- bl PlaySE
- ldr r1, =gBattleCommunication
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _08056CF2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x3
- bl BeginFastPaletteFade
- b _08056E62
- .pool
-_08056CE0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08056CEA
- b _08056E62
-_08056CEA:
- movs r0, 0x5
- bl PlaySE
- ldr r1, =gBattleCommunication
-_08056CF2:
- movs r0, 0x4
- strb r0, [r1]
- b _08056E62
- .pool
-_08056CFC:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08056D0A
- b _08056E62
-_08056D0A:
- ldr r7, =gBattlePartyID
- ldr r0, =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 r2, r9
- muls r2, r0
- adds r0, r2, 0
- ldr r1, =gEnemyParty
- mov r8, r1
- add r0, r8
- ldr r1, =gBattleStruct
- ldr r2, [r1]
- adds r2, 0x6D
- movs r1, 0x2
- bl GetMonData
- bl FreeAllWindowBuffers
- mov r2, r10
- ldrb r0, [r2]
- 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 r2, r10
- ldrb r0, [r2]
- 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 r2, r10
- ldrb r0, [r2]
- 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
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- adds r1, 0x6D
- str r0, [sp]
- ldr r0, =sub_8038420
- str r0, [sp, 0x4]
- movs r0, 0x2
- adds r2, r6, 0
- adds r3, r5, 0
- bl DoNamingScreen
- ldr r1, =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08056E62
- .pool
-_08056DD4:
- ldr r0, =gMain
- ldr r1, [r0, 0x4]
- ldr r0, =sub_8038420
- cmp r1, r0
- bne _08056E62
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08056E62
- ldr r2, =gBattlePartyID
- ldr r0, =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, =gEnemyParty
- adds r0, r1
- ldr r1, =gBattleStruct
- ldr r2, [r1]
- adds r2, 0x6D
- movs r1, 0x2
- bl SetMonData
- b _08056E48
- .pool
-_08056E2C:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _08056E48
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08056E62
- .pool
-_08056E48:
- ldr r3, =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]
-_08056E62:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end atkF3_nickname_caught_poke
-
- thumb_func_start atkF4_802BEF0
-atkF4_802BEF0: @ 8056E78
- ldr r2, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- ldr r0, =gBattleMoveDamage
- ldr r2, [r0]
- ldrh r0, [r1, 0x28]
- subs r0, r2
- strh r0, [r1, 0x28]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end atkF4_802BEF0
-
- thumb_func_start atkF5_removeattackerstatus1
-atkF5_removeattackerstatus1: @ 8056EA8
- ldr r1, =gBattleMons
- ldr r0, =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- ldr r1, =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end atkF5_removeattackerstatus1
-
- thumb_func_start atkF6_802BF48
-atkF6_802BF48: @ 8056ED0
- ldr r1, =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end atkF6_802BF48
-
- thumb_func_start atkF7_802BF54
-atkF7_802BF54: @ 8056EDC
- ldr r1, =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- ldr r1, =gUnknown_02024082
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end atkF7_802BF54
-
- thumb_func_start sub_8056EF8
-sub_8056EF8: @ 8056EF8
- push {r4,r5,lr}
- ldr r5, =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl GetBankByPlayerAI
- ldr r4, =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl dp01_build_cmdbuf_x09_9_9_9
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8056EF8
-
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_5.s b/asm/battle_5.s
index 3db603531..f2d6797f9 100644
--- a/asm/battle_5.s
+++ b/asm/battle_5.s
@@ -6,8 +6,8 @@
.text
- thumb_func_start sub_8056F28
-sub_8056F28: @ 8056F28
+ thumb_func_start AllocateBattleResrouces
+AllocateBattleResrouces: @ 8056F28
push {r4-r6,lr}
ldr r5, =gBattleResources
ldr r6, =gBattleTypeFlags
@@ -59,13 +59,13 @@ _08056F3E:
bl AllocZeroed
ldr r1, [r5]
str r0, [r1, 0x1C]
- ldr r4, =gUnknown_020244A0
+ ldr r4, =gLinkBattleSendBuffer
movs r5, 0x80
lsls r5, 5
adds r0, r5, 0
bl AllocZeroed
str r0, [r4]
- ldr r4, =gUnknown_020244A4
+ ldr r4, =gLinkBattleRecvBuffer
adds r0, r5, 0
bl AllocZeroed
str r0, [r4]
@@ -102,10 +102,10 @@ _08056FFA:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8056F28
+ thumb_func_end AllocateBattleResrouces
- thumb_func_start sub_8057028
-sub_8057028: @ 8057028
+ thumb_func_start FreeBattleResources
+FreeBattleResources: @ 8057028
push {r4-r6,lr}
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
@@ -160,11 +160,11 @@ _0805703C:
str r5, [r0, 0x1C]
bl Free
str r5, [r6]
- ldr r4, =gUnknown_020244A0
+ ldr r4, =gLinkBattleSendBuffer
ldr r0, [r4]
bl Free
str r5, [r4]
- ldr r4, =gUnknown_020244A4
+ ldr r4, =gLinkBattleRecvBuffer
ldr r0, [r4]
bl Free
str r5, [r4]
@@ -181,10 +181,10 @@ _080570D0:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8057028
+ thumb_func_end FreeBattleResources
- thumb_func_start sub_80570F4
-sub_80570F4: @ 80570F4
+ thumb_func_start AdjustFriendshipOnBattleFaint
+AdjustFriendshipOnBattleFaint: @ 80570F4
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -195,11 +195,11 @@ sub_80570F4: @ 80570F4
cmp r0, 0
beq _08057140
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x3
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r3, r0, 24
ldr r2, =gBattleMons
@@ -220,7 +220,7 @@ sub_80570F4: @ 80570F4
.pool
_08057140:
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
_0805714A:
@@ -285,7 +285,7 @@ _080571CE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80570F4
+ thumb_func_end AdjustFriendshipOnBattleFaint
thumb_func_start sub_80571DC
sub_80571DC: @ 80571DC
@@ -414,7 +414,7 @@ _0805729A:
ldr r1, =0xf7ffffff
ands r0, r1
str r0, [r2]
- bl b_movescr_stack_push_cursor
+ bl BattleScriptPushCursor
movs r0, 0x1
mov r2, r10
strb r0, [r2, 0x5]
@@ -474,7 +474,7 @@ _08057354:
ldr r1, =0xf7ffffff
ands r0, r1
str r0, [r2]
- bl b_movescr_stack_push_cursor
+ bl BattleScriptPushCursor
ldr r0, =gBattleCommunication
strb r4, [r0, 0x5]
ldr r1, =gBattlescriptCurrInstr
@@ -523,7 +523,7 @@ _080573D4:
negs r1, r1
ands r0, r1
str r0, [r4]
- bl b_movescr_stack_push_cursor
+ bl BattleScriptPushCursor
ldr r1, =gBattlescriptCurrInstr
ldr r0, =BattleScript_MoveUsedUnfroze
str r0, [r1]
@@ -562,7 +562,7 @@ _08057406:
movs r1, 0x28
movs r2, 0
movs r3, 0x4
- bl EmitSetAttributes
+ bl EmitSetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
_08057430:
diff --git a/asm/battle_7.s b/asm/battle_7.s
index fd8c3b4a5..ea6fc40b3 100644
--- a/asm/battle_7.s
+++ b/asm/battle_7.s
@@ -5,10 +5,10 @@
.text
- thumb_func_start dp11_init
-dp11_init: @ 805D118
+ thumb_func_start AllocateBattleSpritesData
+AllocateBattleSpritesData: @ 805D118
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
movs r0, 0x10
bl AllocZeroed
str r0, [r4]
@@ -32,12 +32,12 @@ dp11_init: @ 805D118
pop {r0}
bx r0
.pool
- thumb_func_end dp11_init
+ thumb_func_end AllocateBattleSpritesData
- thumb_func_start dp11_free
-dp11_free: @ 805D158
+ thumb_func_start FreeBattleSpritesData
+FreeBattleSpritesData: @ 805D158
push {r4,r5,lr}
- ldr r5, =gUnknown_020244D0
+ ldr r5, =gBattleSpritesDataPtr
ldr r0, [r5]
cmp r0, 0
beq _0805D192
@@ -65,7 +65,7 @@ _0805D192:
pop {r0}
bx r0
.pool
- thumb_func_end dp11_free
+ thumb_func_end FreeBattleSpritesData
thumb_func_start sub_805D19C
sub_805D19C: @ 805D19C
@@ -428,7 +428,7 @@ _0805D470:
movs r0, 0x1
ands r0, r1
eors r0, r2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 16
_0805D48A:
@@ -579,7 +579,7 @@ sub_805D5F4: @ 805D5F4
cmp r0, 0
bne _0805D630
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
mov r8, r0
@@ -588,13 +588,13 @@ sub_805D5F4: @ 805D5F4
.pool
_0805D630:
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
mov r8, r0
movs r0, 0x2
_0805D63E:
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r7, r0, 24
ldr r1, =gBattleMons
@@ -839,7 +839,7 @@ move_anim_start_t2_for_situation: @ 805D808
push {r4-r6,lr}
adds r4, r1, 0
lsls r0, 24
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r1, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -1001,7 +1001,7 @@ move_anim_start_t3: @ 805D908
b _0805DA1E
.pool
_0805D950:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
mov r9, r0
ldr r0, [r0]
ldr r0, [r0]
@@ -1056,21 +1056,21 @@ _0805D980:
b _0805DA1E
.pool
_0805D9CC:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
mov r2, r10
strb r2, [r0]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
mov r1, sp
ldrb r1, [r1]
strb r1, [r0]
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r0, [r0, 0x8]
strh r7, [r0]
ldr r0, =gUnknown_082C9320
adds r1, r5, 0
movs r2, 0
- bl move_something
+ bl DoBattleAnim
ldr r0, =task0A_0803415C
movs r1, 0xA
bl CreateTask
@@ -1119,7 +1119,7 @@ task0A_0803415C: @ 805DA48
ldrb r0, [r0]
cmp r0, 0
bne _0805DA8A
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r1, =gTasks
lsls r0, r4, 2
@@ -1180,14 +1180,14 @@ move_anim_start_t4: @ 805DAC4
lsrs r4, 24
lsls r3, 24
lsrs r3, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
strb r1, [r0]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
strb r2, [r0]
ldr r0, =gUnknown_082C937C
adds r1, r3, 0
movs r2, 0
- bl move_something
+ bl DoBattleAnim
ldr r0, =task0A_08034248
movs r1, 0xA
bl CreateTask
@@ -1199,7 +1199,7 @@ move_anim_start_t4: @ 805DAC4
lsls r1, 3
adds r1, r2
strh r4, [r1, 0x8]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
movs r2, 0x8
ldrsh r1, [r1, r2]
@@ -1230,7 +1230,7 @@ task0A_08034248: @ 805DB34
ldrb r0, [r0]
cmp r0, 0
bne _0805DB76
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r1, =gTasks
lsls r0, r4, 2
@@ -1274,7 +1274,7 @@ mplay_80342A4: @ 805DB90
lsls r0, 24
cmp r0, 0
beq _0805DBD8
- ldr r2, =gUnknown_020244D0
+ ldr r2, =gBattleSpritesDataPtr
ldr r0, [r2]
ldr r1, [r0, 0x4]
lsls r0, r4, 1
@@ -1307,7 +1307,7 @@ _0805DBDC:
b _0805DC02
.pool
_0805DBF0:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r4, 1
@@ -1323,8 +1323,8 @@ _0805DC02:
.pool
thumb_func_end mplay_80342A4
- thumb_func_start sub_805DC0C
-sub_805DC0C: @ 805DC0C
+ thumb_func_start BattleLoadOpponentMonSpriteGfx
+BattleLoadOpponentMonSpriteGfx: @ 805DC0C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -1338,7 +1338,7 @@ sub_805DC0C: @ 805DC0C
movs r1, 0
bl GetMonData
str r0, [sp]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
mov r2, r8
@@ -1371,7 +1371,7 @@ _0805DC58:
lsls r2, r5, 3
ldr r1, =gMonFrontPicTable
adds r2, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
lsrs r0, 22
adds r1, 0x4
@@ -1386,7 +1386,7 @@ _0805DC58:
movs r0, 0x80
lsls r0, 1
adds r7, r2, r0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
lsls r1, r3, 2
@@ -1444,7 +1444,7 @@ _0805DCC6:
movs r2, 0x20
bl LoadPalette
_0805DD1A:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
ldr r1, [sp, 0x4]
@@ -1474,10 +1474,10 @@ _0805DD46:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805DC0C
+ thumb_func_end BattleLoadOpponentMonSpriteGfx
- thumb_func_start sub_805DD7C
-sub_805DD7C: @ 805DD7C
+ thumb_func_start BattleLoadPlayerMonSpriteGfx
+BattleLoadPlayerMonSpriteGfx: @ 805DD7C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -1491,7 +1491,7 @@ sub_805DD7C: @ 805DD7C
movs r1, 0
bl GetMonData
str r0, [sp]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
mov r2, r8
@@ -1532,7 +1532,7 @@ _0805DDC8:
mov r10, r1
cmp r0, 0x1
beq _0805DE00
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
add r0, r10
@@ -1543,7 +1543,7 @@ _0805DE00:
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
lsls r2, r7, 2
adds r1, 0x4
@@ -1558,7 +1558,7 @@ _0805DE2C:
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
lsls r2, r7, 2
adds r1, 0x4
@@ -1573,7 +1573,7 @@ _0805DE46:
movs r0, 0x80
lsls r0, 1
adds r7, r1, r0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
add r0, r10
@@ -1629,7 +1629,7 @@ _0805DE7E:
movs r2, 0x20
bl LoadPalette
_0805DED2:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
add r0, r10
@@ -1658,7 +1658,7 @@ _0805DEFC:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805DD7C
+ thumb_func_end BattleLoadPlayerMonSpriteGfx
thumb_func_start nullsub_23
nullsub_23: @ 805DF30
@@ -1684,7 +1684,7 @@ sub_805DF38: @ 805DF38
lsls r4, 3
ldr r2, =gTrainerFrontPicTable
adds r2, r4, r2
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
lsrs r0, 22
adds r1, 0x4
@@ -1703,8 +1703,8 @@ sub_805DF38: @ 805DF38
.pool
thumb_func_end sub_805DF38
- thumb_func_start sub_805DF84
-sub_805DF84: @ 805DF84
+ thumb_func_start LoadBackTrainerBankSpriteGfx
+LoadBackTrainerBankSpriteGfx: @ 805DF84
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
@@ -1718,7 +1718,7 @@ sub_805DF84: @ 805DF84
lsls r5, 3
ldr r2, =gTrainerBackPicTable
adds r2, r5, r2
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
lsrs r0, 22
adds r1, 0x4
@@ -1742,7 +1742,7 @@ sub_805DF84: @ 805DF84
pop {r0}
bx r0
.pool
- thumb_func_end sub_805DF84
+ thumb_func_end LoadBackTrainerBankSpriteGfx
thumb_func_start nullsub_25
nullsub_25: @ 805DFE0
@@ -1772,7 +1772,7 @@ sub_805DFFC: @ 805DFFC
adds r4, 0x8
adds r0, r4, 0
bl LoadSpritePalette
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0805E034
@@ -1801,7 +1801,7 @@ _0805E056:
movs r4, 0
cmp r4, r5
bcs _0805E076
- ldr r7, =gBanksBySide
+ ldr r7, =gBanksByIdentity
ldr r6, =gUnknown_0832C108
_0805E060:
adds r0, r4, r7
@@ -1821,8 +1821,8 @@ _0805E076:
.pool
thumb_func_end sub_805DFFC
- thumb_func_start sub_805E08C
-sub_805E08C: @ 805E08C
+ thumb_func_start BattleLoadAllHealthBoxesGfx
+BattleLoadAllHealthBoxesGfx: @ 805E08C
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -1843,7 +1843,7 @@ _0805E09C:
b _0805E1AE
.pool
_0805E0B8:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0805E120
@@ -1874,14 +1874,14 @@ _0805E0F0:
_0805E100:
cmp r4, 0x4
bne _0805E110
- ldr r0, =gBanksBySide
+ ldr r0, =gBanksByIdentity
ldrb r0, [r0]
b _0805E198
.pool
_0805E110:
cmp r4, 0x5
bne _0805E1AC
- ldr r0, =gBanksBySide
+ ldr r0, =gBanksByIdentity
ldrb r0, [r0, 0x1]
b _0805E198
.pool
@@ -1916,28 +1916,28 @@ _0805E150:
_0805E160:
cmp r4, 0x6
bne _0805E170
- ldr r0, =gBanksBySide
+ ldr r0, =gBanksByIdentity
ldrb r0, [r0]
b _0805E198
.pool
_0805E170:
cmp r4, 0x7
bne _0805E180
- ldr r0, =gBanksBySide
+ ldr r0, =gBanksByIdentity
ldrb r0, [r0, 0x1]
b _0805E198
.pool
_0805E180:
cmp r4, 0x8
bne _0805E190
- ldr r0, =gBanksBySide
+ ldr r0, =gBanksByIdentity
ldrb r0, [r0, 0x2]
b _0805E198
.pool
_0805E190:
cmp r5, 0x9
bne _0805E1AC
- ldr r0, =gBanksBySide
+ ldr r0, =gBanksByIdentity
ldrb r0, [r0, 0x3]
_0805E198:
lsls r0, 3
@@ -1953,13 +1953,13 @@ _0805E1AE:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_805E08C
+ thumb_func_end BattleLoadAllHealthBoxesGfx
- thumb_func_start load_gfxc_health_bar
-load_gfxc_health_bar: @ 805E1B8
+ thumb_func_start LoadBattleBarGfx
+LoadBattleBarGfx: @ 805E1B8
push {lr}
ldr r0, =gUnknown_08C093F0
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
movs r2, 0xBA
lsls r2, 1
@@ -1969,10 +1969,10 @@ load_gfxc_health_bar: @ 805E1B8
pop {r0}
bx r0
.pool
- thumb_func_end load_gfxc_health_bar
+ thumb_func_end LoadBattleBarGfx
- thumb_func_start battle_load_something
-battle_load_something: @ 805E1D8
+ thumb_func_start BattleInitAllSprites
+BattleInitAllSprites: @ 805E1D8
push {r4-r6,lr}
adds r5, r0, 0
adds r4, r1, 0
@@ -2002,7 +2002,7 @@ _0805E214:
b _0805E324
_0805E21A:
ldrb r0, [r4]
- bl sub_805E08C
+ bl BattleLoadAllHealthBoxesGfx
lsls r0, 24
cmp r0, 0
beq _0805E228
@@ -2022,12 +2022,12 @@ _0805E230:
ldrb r0, [r4]
cmp r0, 0
bne _0805E24C
- bl battle_make_oam_safari_battle
+ bl CreateSafariPlayerHealthboxSprites
b _0805E252
.pool
_0805E24C:
ldrb r0, [r4]
- bl battle_make_oam_normal_battle
+ bl CreateBankHealthboxSprites
_0805E252:
ldr r2, =gHealthBoxesIds
ldrb r1, [r4]
@@ -2037,8 +2037,8 @@ _0805E252:
.pool
_0805E260:
ldrb r0, [r4]
- bl sub_8072B18
- ldr r0, =gBanksBySide
+ bl SetBankHealthboxSpritePos
+ ldr r0, =gBanksByIdentity
ldrb r1, [r4]
adds r0, r1, r0
ldrb r0, [r0]
@@ -2048,7 +2048,7 @@ _0805E260:
adds r0, r1, r0
ldrb r0, [r0]
movs r1, 0
- bl nullsub_30
+ bl DummyBattleInterfaceFunc
b _0805E30E
.pool
_0805E288:
@@ -2056,7 +2056,7 @@ _0805E288:
adds r0, r1, r0
ldrb r0, [r0]
movs r1, 0x1
- bl nullsub_30
+ bl DummyBattleInterfaceFunc
b _0805E30E
.pool
_0805E29C:
@@ -2084,7 +2084,7 @@ _0805E29C:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
b _0805E302
.pool
_0805E2E4:
@@ -2101,13 +2101,13 @@ _0805E2E4:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
_0805E302:
ldr r1, =gHealthBoxesIds
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
_0805E30E:
ldrb r0, [r4]
adds r0, 0x1
@@ -2128,7 +2128,7 @@ _0805E324:
b _0805E346
.pool
_0805E33C:
- bl sub_805EC84
+ bl LoadAndCreateEnemyShadowSprites
bl sub_81B8C68
movs r6, 0x1
_0805E346:
@@ -2136,12 +2136,12 @@ _0805E346:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end battle_load_something
+ thumb_func_end BattleInitAllSprites
thumb_func_start sub_805E350
sub_805E350: @ 805E350
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r0, [r0, 0x4]
movs r1, 0
@@ -2162,7 +2162,7 @@ sub_805E350: @ 805E350
sub_805E378: @ 805E378
push {lr}
bl sub_805E350
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
movs r1, 0
@@ -2191,7 +2191,7 @@ sub_805E394: @ 805E394
movs r0, 0x2
negs r0, r0
mov r8, r0
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r6, =gBankSpriteIds
_0805E3B8:
ldr r0, [r7]
@@ -2233,7 +2233,7 @@ _0805E3EA:
sub_805E408: @ 805E408
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
ldr r1, [r1]
ldr r1, [r1]
lsls r3, r0, 2
@@ -2285,7 +2285,7 @@ sub_805E448: @ 805E448
ldr r1, =gSprites
mov r8, r1
add r0, r8
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r1, [r4]
ldr r1, [r1, 0x8]
ldrb r1, [r1]
@@ -2353,7 +2353,7 @@ _0805E51C:
beq _0805E558
movs r0, 0
mov r10, r0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0x18]
ldrh r1, [r2, 0x2]
@@ -2364,7 +2364,7 @@ _0805E51C:
lsls r0, r1, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x4]
ldr r3, [r2, 0x10]
@@ -2434,7 +2434,7 @@ _0805E59C:
lsls r0, r1, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
mov r3, r10
lsls r2, r3, 2
@@ -2472,7 +2472,7 @@ _0805E618:
lsls r0, r1, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
mov r3, r10
lsls r2, r3, 2
@@ -2486,7 +2486,7 @@ _0805E618:
mov r2, r8
bl HandleLoadSpecialPokePic_DontHandleDeoxys
_0805E662:
- ldr r0, =gBattleSpritesGfx
+ ldr r0, =gMonSpritesGfxPtr
ldr r0, [r0]
mov r2, r10
lsls r1, r2, 2
@@ -2541,7 +2541,7 @@ _0805E662:
ldr r1, =gSprites
adds r1, 0x8
adds r0, r1
- ldr r1, =gUnknown_08309AAC
+ ldr r1, =gMonAnimationsSpriteAnimsPtrTable
mov r3, r8
lsls r2, r3, 2
adds r1, r2
@@ -2582,7 +2582,7 @@ _0805E70A:
lsls r0, 24
cmp r0, 0
bne _0805E74A
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r7, 2
@@ -2630,8 +2630,8 @@ _0805E77A:
.pool
thumb_func_end sub_805E448
- thumb_func_start sub_805E7DC
-sub_805E7DC: @ 805E7DC
+ thumb_func_start BattleLoadSubstituteSpriteGfx
+BattleLoadSubstituteSpriteGfx: @ 805E7DC
push {r4-r7,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -2666,7 +2666,7 @@ _0805E814:
beq _0805E83C
ldr r0, =gUnknown_08C2CEE0
_0805E822:
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
lsls r4, 2
adds r1, 0x4
@@ -2677,7 +2677,7 @@ _0805E822:
.pool
_0805E83C:
ldr r0, =gUnknown_08C2D120
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
lsls r4, 2
adds r1, 0x4
@@ -2688,7 +2688,7 @@ _0805E84E:
movs r3, 0x1
lsls r6, r5, 4
ldr r7, =gUnknown_08C2CEBC
- ldr r0, =gBattleSpritesGfx
+ ldr r0, =gMonSpritesGfxPtr
ldr r0, [r0]
adds r0, 0x4
adds r4, r0, r4
@@ -2732,7 +2732,7 @@ _0805E898:
ldr r1, =gEnemyParty
adds r0, r1
adds r1, r4, 0
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
b _0805E8E6
.pool
_0805E8D0:
@@ -2745,13 +2745,13 @@ _0805E8D0:
ldr r1, =gPlayerParty
adds r0, r1
adds r1, r5, 0
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
_0805E8E6:
pop {r4-r7}
pop {r0}
bx r0
.pool
- thumb_func_end sub_805E7DC
+ thumb_func_end BattleLoadSubstituteSpriteGfx
thumb_func_start refresh_graphics_maybe
refresh_graphics_maybe: @ 805E8F4
@@ -2766,7 +2766,7 @@ refresh_graphics_maybe: @ 805E8F4
lsrs r4, 24
adds r0, r6, 0
adds r1, r5, 0
- bl sub_805E7DC
+ bl BattleLoadSubstituteSpriteGfx
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
@@ -2804,7 +2804,7 @@ sub_805E94C: @ 805E94C
lsrs r1, 16
cmp r1, 0xA4
bne _0805E96C
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
lsls r1, r2, 2
@@ -2822,7 +2822,7 @@ _0805E96C:
thumb_func_start sub_805E974
sub_805E974: @ 805E974
lsls r0, 24
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
ldr r1, [r1]
ldr r1, [r1]
lsrs r0, 22
@@ -2857,12 +2857,12 @@ sub_805E990: @ 805E990
lsls r1, 16
asrs r1, 16
adds r0, r4, 0
- bl sub_8075060
+ bl GetHPBarLevel
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0805EA08
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r0, [r7]
ldr r2, [r0]
lsls r4, r6, 2
@@ -2895,7 +2895,7 @@ _0805E9F6:
b _0805EA5A
.pool
_0805EA08:
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r0, [r0]
lsls r1, r6, 2
@@ -2905,7 +2905,7 @@ _0805EA08:
negs r0, r0
ands r0, r2
strb r0, [r1]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0805EA34
@@ -2914,7 +2914,7 @@ _0805EA08:
b _0805EA5A
.pool
_0805EA34:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805EA5A
@@ -2937,14 +2937,14 @@ _0805EA5A:
bx r0
thumb_func_end sub_805E990
- thumb_func_start sub_805EA60
-sub_805EA60: @ 805EA60
+ thumb_func_start BattleMusicStop
+BattleMusicStop: @ 805EA60
push {r4-r6,lr}
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
- ldr r5, =gUnknown_020244D0
+ ldr r5, =gBattleSpritesDataPtr
ldr r0, [r5]
ldr r0, [r0]
lsls r1, r4, 2
@@ -2955,7 +2955,7 @@ sub_805EA60: @ 805EA60
adds r0, r6, 0
ands r0, r2
strb r0, [r1]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805EAA2
@@ -2977,7 +2977,7 @@ _0805EAA2:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805EA60
+ thumb_func_end BattleMusicStop
thumb_func_start sub_805EAB4
sub_805EAB4: @ 805EAB4
@@ -2997,7 +2997,7 @@ sub_805EAB4: @ 805EAB4
lsls r1, 16
asrs r1, 16
adds r0, r4, 0
- bl sub_8075060
+ bl GetHPBarLevel
lsls r0, 24
lsrs r0, 24
pop {r4,r5}
@@ -3020,12 +3020,12 @@ sub_805EAE8: @ 805EAE8
cmp r0, 0
beq _0805EB7E
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
mov r8, r0
movs r0, 0x2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
mov r9, r0
@@ -3059,7 +3059,7 @@ sub_805EAE8: @ 805EAE8
mov r1, r8
bl sub_805E990
_0805EB5A:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805EB7E
@@ -3111,7 +3111,7 @@ sub_805EB9C: @ 805EB9C
_0805EBC8:
lsls r0, r5, 24
lsrs r0, 24
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _0805EC60
@@ -3134,7 +3134,7 @@ _0805EBC8:
mov r7, r8
cmp r7, 0
bne _0805EC3C
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r2, [r0, 0x4]
adds r2, r6, r2
@@ -3164,7 +3164,7 @@ _0805EC3C:
adds r2, r0
lsls r2, 2
adds r2, r4
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
adds r0, r6, r0
@@ -3195,15 +3195,15 @@ _0805EC6C:
.pool
thumb_func_end sub_805EB9C
- thumb_func_start sub_805EC84
-sub_805EC84: @ 805EC84
+ thumb_func_start LoadAndCreateEnemyShadowSprites
+LoadAndCreateEnemyShadowSprites: @ 805EC84
push {r4-r7,lr}
mov r7, r8
push {r7}
ldr r0, =gUnknown_0831C6A0
bl LoadCompressedObjectPic
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
@@ -3229,7 +3229,7 @@ sub_805EC84: @ 805EC84
adds r1, r4, 0
movs r3, 0xC8
bl CreateSprite
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r1, [r6]
ldr r2, [r1, 0x4]
lsls r1, r5, 1
@@ -3247,12 +3247,12 @@ sub_805EC84: @ 805EC84
lsls r0, 2
adds r0, r7
strh r5, [r0, 0x2E]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805ED56
movs r0, 0x3
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
@@ -3299,7 +3299,7 @@ _0805ED56:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805EC84
+ thumb_func_end LoadAndCreateEnemyShadowSprites
thumb_func_start sub_805ED70
@ int sub_805ED70(obj *a1)
@@ -3329,7 +3329,7 @@ sub_805ED70: @ 805ED70
cmp r0, 0
beq _0805EDAC
adds r0, r4, 0
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
bne _0805EDC0
@@ -3351,12 +3351,12 @@ _0805EDC0:
_0805EDD2:
movs r0, 0x1
mov r8, r0
- ldr r2, =gUnknown_020244D0
+ ldr r2, =gBattleSpritesDataPtr
lsls r4, 2
b _0805EE06
.pool
_0805EDE4:
- ldr r2, =gUnknown_020244D0
+ ldr r2, =gBattleSpritesDataPtr
ldr r0, [r2]
ldr r0, [r0]
lsls r1, r4, 2
@@ -3365,7 +3365,7 @@ _0805EDE4:
adds r4, r1, 0
cmp r0, 0
beq _0805EE06
- ldr r0, =gUnknown_08305DCC
+ ldr r0, =gEnemyMonElevation
ldrh r1, [r3, 0x2]
adds r1, r0
ldrb r0, [r1]
@@ -3418,8 +3418,8 @@ sub_805EE48: @ 805EE48
bx lr
thumb_func_end sub_805EE48
- thumb_func_start sub_805EE54
-sub_805EE54: @ 805EE54
+ thumb_func_start SetBankEnemyShadowSpriteCallback
+SetBankEnemyShadowSpriteCallback: @ 805EE54
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -3431,7 +3431,7 @@ sub_805EE54: @ 805EE54
lsls r0, 24
cmp r0, 0
beq _0805EED0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r3, [r0]
ldr r1, [r3]
lsls r0, r4, 2
@@ -3441,7 +3441,7 @@ sub_805EE54: @ 805EE54
beq _0805EE7E
adds r5, r0, 0
_0805EE7E:
- ldr r0, =gUnknown_08305DCC
+ ldr r0, =gEnemyMonElevation
adds r0, r5, r0
ldrb r0, [r0]
cmp r0, 0
@@ -3482,14 +3482,14 @@ _0805EED0:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805EE54
+ thumb_func_end SetBankEnemyShadowSpriteCallback
thumb_func_start sub_805EEE0
sub_805EEE0: @ 805EEE0
lsls r0, 24
lsrs r0, 24
ldr r2, =gSprites
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
ldr r1, [r1]
ldr r3, [r1, 0x4]
lsls r1, r0, 1
@@ -3578,7 +3578,7 @@ sub_805EF84: @ 805EF84
lsls r0, 24
lsrs r4, r0, 24
lsls r1, 24
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r2, [r0]
lsls r0, r4, 2
@@ -3600,15 +3600,15 @@ _0805EFAC:
.pool
thumb_func_end sub_805EF84
- thumb_func_start init_uns_table_pokemon_copy
-init_uns_table_pokemon_copy: @ 805EFBC
+ thumb_func_start AllocateMonSpritesGfx
+AllocateMonSpritesGfx: @ 805EFBC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
mov r5, r8
push {r5-r7}
movs r6, 0
- ldr r4, =gBattleSpritesGfx
+ ldr r4, =gMonSpritesGfxPtr
str r6, [r4]
movs r0, 0xC0
lsls r0, 1
@@ -3620,7 +3620,7 @@ init_uns_table_pokemon_copy: @ 805EFBC
ldr r1, [r4]
str r0, [r1]
_0805EFE2:
- ldr r0, =gBattleSpritesGfx
+ ldr r0, =gMonSpritesGfxPtr
ldr r1, [r0]
lsls r4, r6, 2
adds r2, r1, 0x4
@@ -3649,7 +3649,7 @@ _0805EFE2:
mov r12, r8
adds r7, r4, 0
_0805F01A:
- ldr r2, =gBattleSpritesGfx
+ ldr r2, =gMonSpritesGfxPtr
ldr r1, [r2]
lsls r4, r5, 3
add r4, r12
@@ -3672,7 +3672,7 @@ _0805F01A:
lsrs r5, r0, 24
cmp r5, 0x3
bls _0805F01A
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r2, [r1]
mov r5, r9
adds r0, r5, r6
@@ -3692,7 +3692,7 @@ _0805F01A:
movs r0, 0x80
lsls r0, 5
bl AllocZeroed
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
movs r2, 0xBA
lsls r2, 1
@@ -3706,12 +3706,12 @@ _0805F01A:
pop {r0}
bx r0
.pool
- thumb_func_end init_uns_table_pokemon_copy
+ thumb_func_end AllocateMonSpritesGfx
- thumb_func_start sub_805F094
-sub_805F094: @ 805F094
+ thumb_func_start FreeMonSpritesGfx
+FreeMonSpritesGfx: @ 805F094
push {r4-r6,lr}
- ldr r6, =gBattleSpritesGfx
+ ldr r6, =gMonSpritesGfxPtr
ldr r0, [r6]
cmp r0, 0
beq _0805F106
@@ -3769,7 +3769,7 @@ _0805F106:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805F094
+ thumb_func_end FreeMonSpritesGfx
thumb_func_start sub_805F110
sub_805F110: @ 805F110
@@ -3796,7 +3796,7 @@ sub_805F110: @ 805F110
lsls r1, 16
asrs r1, 16
adds r0, r4, 0
- bl sub_8075060
+ bl GetHPBarLevel
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
diff --git a/asm/battle_9.s b/asm/battle_9.s
deleted file mode 100644
index f1811e1af..000000000
--- a/asm/battle_9.s
+++ /dev/null
@@ -1,2847 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ai_switch_perish_song
-ai_switch_perish_song: @ 8062BF8
- push {lr}
- ldr r1, =gStatuses3
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08062C50
- ldr r0, =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xF]
- lsls r0, 28
- cmp r0, 0
- bne _08062C50
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, r2, r0
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _08062C52
- .pool
-_08062C50:
- movs r0, 0
-_08062C52:
- pop {r1}
- bx r1
- thumb_func_end ai_switch_perish_song
-
- thumb_func_start sub_8062C58
-sub_8062C58: @ 8062C58
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08062C72
- b _08062E2C
-_08062C72:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r4, =gBattleMons
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x58
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x19
- beq _08062C9E
- b _08062E2C
-_08062C9E:
- mov r0, r10
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r2, r0, 24
- movs r6, 0
- mov r8, r4
- movs r7, 0x58
- adds r0, r2, 0
- muls r0, r7
- adds r4, r0, r4
- movs r0, 0x20
- adds r0, r4
- mov r9, r0
-_08062CBA:
- lsls r1, r6, 1
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- muls r0, r7
- adds r1, r0
- mov r0, r8
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _08062CE8
- ldrh r1, [r4]
- mov r3, r9
- ldrb r2, [r3]
- bl ai_rate_move
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08062CE8
- b _08062E2C
-_08062CE8:
- adds r6, 0x1
- cmp r6, 0x3
- ble _08062CBA
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08062D50
- ldrb r1, [r5]
- movs r0, 0x2
- ands r0, r1
- adds r1, r5, 0
- cmp r0, 0
- bne _08062D20
- movs r4, 0
- movs r0, 0x3
- str r0, [sp]
- b _08062D58
- .pool
-_08062D20:
- movs r4, 0x3
- movs r3, 0x6
- str r3, [sp]
- b _08062D58
-_08062D28:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- strb r6, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _08062E2E
- .pool
-_08062D50:
- movs r4, 0
- movs r3, 0x6
- str r3, [sp]
- adds r1, r5, 0
-_08062D58:
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r9, r1
- cmp r0, 0
- bne _08062D6C
- ldr r3, =gPlayerParty
- mov r9, r3
-_08062D6C:
- adds r6, r4, 0
- ldr r0, [sp]
- cmp r6, r0
- bge _08062E2C
-_08062D74:
- movs r0, 0x64
- adds r5, r6, 0
- muls r5, r0
- mov r1, r9
- adds r4, r1, r5
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08062E24
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08062E24
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08062E24
- ldr r1, =gBattlePartyID
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _08062E24
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- mov r0, r10
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r2, r0, 24
- movs r4, 0
- mov r8, r5
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r5, r0, r1
- adds r7, r5, 0
- adds r7, 0x20
-_08062DE0:
- adds r1, r4, 0
- adds r1, 0xD
- mov r0, r9
- add r0, r8
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _08062E1E
- ldrh r1, [r5]
- ldrb r2, [r7]
- bl ai_rate_move
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08062E1E
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _08062D28
-_08062E1E:
- adds r4, 0x1
- cmp r4, 0x3
- ble _08062DE0
-_08062E24:
- adds r6, 0x1
- ldr r3, [sp]
- cmp r6, r3
- blt _08062D74
-_08062E2C:
- movs r0, 0
-_08062E2E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8062C58
-
- thumb_func_start sub_8062E54
-sub_8062E54: @ 8062E54
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0x1
- bl ai_has_super_effective_move_on_field
- lsls r0, 24
- cmp r0, 0
- beq _08062E82
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _08062E82
- b _080630AC
-_08062E82:
- ldr r1, =gUnknown_02024250
- ldr r5, =gActiveBank
- ldrb r3, [r5]
- lsls r0, r3, 1
- adds r4, r0, r1
- ldrh r1, [r4]
- cmp r1, 0
- bne _08062E94
- b _080630AC
-_08062E94:
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08062E9C
- b _080630AC
-_08062E9C:
- ldr r2, =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08062EB0
- b _080630AC
-_08062EB0:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08062F1A
- mov r8, r3
- mov r0, r8
- bl GetBankIdentity
- movs r4, 0x2
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08062F04
- ldrb r7, [r5]
- b _08062F1E
- .pool
-_08062F04:
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- b _08062F1E
-_08062F1A:
- adds r7, r3, 0
- mov r8, r7
-_08062F1E:
- ldr r3, =gBattleMoves
- ldr r1, =gUnknown_02024250
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x2]
- cmp r0, 0xA
- bne _08062F4C
- movs r0, 0x12
- b _08062F5E
- .pool
-_08062F4C:
- cmp r0, 0xB
- bne _08062F56
- movs r1, 0xB
- str r1, [sp]
- b _08062F60
-_08062F56:
- cmp r0, 0xD
- beq _08062F5C
- b _080630AC
-_08062F5C:
- movs r0, 0xA
-_08062F5E:
- str r0, [sp]
-_08062F60:
- ldr r1, =gBattleMons
- ldrb r3, [r2]
- movs r0, 0x58
- muls r0, r3
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- ldr r1, [sp]
- cmp r0, r1
- bne _08062F76
- b _080630AC
-_08062F76:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08062FCC
- movs r0, 0x2
- ands r3, r0
- cmp r3, 0
- bne _08062F9C
- movs r4, 0
- movs r0, 0x3
- b _08062FD0
- .pool
-_08062F9C:
- movs r4, 0x3
- movs r1, 0x6
- mov r10, r1
- b _08062FD2
-_08062FA4:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r2, 0xA5
- lsls r2, 2
- adds r0, r2
- strb r5, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _080630AE
- .pool
-_08062FCC:
- movs r4, 0
- movs r0, 0x6
-_08062FD0:
- mov r10, r0
-_08062FD2:
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- str r1, [sp, 0x4]
- cmp r0, 0
- bne _08062FE6
- ldr r2, =gPlayerParty
- str r2, [sp, 0x4]
-_08062FE6:
- adds r5, r4, 0
- cmp r5, r10
- bge _080630AC
- ldr r0, =gBaseStats
- mov r9, r0
-_08062FF0:
- movs r0, 0x64
- muls r0, r5
- ldr r1, [sp, 0x4]
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080630A6
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _080630A6
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080630A6
- ldr r1, =gBattlePartyID
- mov r2, r8
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080630A6
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080630A6
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080630A6
- adds r0, r7, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080630A6
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r6, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _08063088
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x17]
- b _08063092
- .pool
-_08063088:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x16]
-_08063092:
- ldr r1, [sp]
- cmp r1, r0
- bne _080630A6
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080630A6
- b _08062FA4
-_080630A6:
- adds r5, 0x1
- cmp r5, r10
- blt _08062FF0
-_080630AC:
- movs r0, 0
-_080630AE:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8062E54
-
- thumb_func_start ai_switchout_natural_cure
-ai_switchout_natural_cure: @ 80630C0
- push {r4,r5,lr}
- ldr r3, =gBattleMons
- ldr r5, =gActiveBank
- ldrb r4, [r5]
- movs r0, 0x58
- adds r2, r4, 0
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08063188
- adds r1, r2, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1E
- bne _08063188
- ldrh r0, [r1, 0x2C]
- ldrh r1, [r1, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bcc _08063188
- ldr r1, =gUnknown_02024250
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- cmp r1, 0
- beq _08063106
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08063128
-_08063106:
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08063128
- ldrb r0, [r5]
- b _08063190
- .pool
-_08063128:
- ldr r2, =gBattleMoves
- ldr r1, =gUnknown_02024250
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08063160
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08063160
- ldrb r0, [r4]
- b _08063190
- .pool
-_08063160:
- movs r0, 0x8
- movs r1, 0x1
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- bne _080631AA
- movs r0, 0x4
- movs r1, 0x1
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- bne _080631AA
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _0806318C
-_08063188:
- movs r0, 0
- b _080631AC
-_0806318C:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
-_08063190:
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_080631AA:
- movs r0, 0x1
-_080631AC:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_switchout_natural_cure
-
- thumb_func_start ai_has_super_effective_move_on_field
-ai_has_super_effective_move_on_field: @ 80631BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08063256
- movs r4, 0
- ldr r6, =gBattleMons
- movs r7, 0x58
- adds r0, r3, 0
- muls r0, r7
- adds r5, r0, r6
- movs r0, 0x20
- adds r0, r5
- mov r8, r0
-_0806320A:
- lsls r1, r4, 1
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- muls r0, r7
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _08063250
- ldrh r1, [r5]
- mov r3, r8
- ldrb r2, [r3]
- bl ai_rate_move
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08063250
- mov r0, r9
- cmp r0, 0
- bne _08063278
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08063278
-_08063250:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0806320A
-_08063256:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0806327C
- b _080632FA
- .pool
-_08063278:
- movs r0, 0x1
- b _080632FC
-_0806327C:
- movs r1, 0x2
- mov r0, r10
- eors r0, r1
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080632FA
- movs r4, 0
- ldr r6, =gBattleMons
- movs r7, 0x58
- adds r0, r3, 0
- muls r0, r7
- adds r5, r0, r6
- movs r3, 0x20
- adds r3, r5
- mov r8, r3
-_080632AE:
- lsls r1, r4, 1
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- muls r0, r7
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _080632F4
- ldrh r1, [r5]
- mov r3, r8
- ldrb r2, [r3]
- bl ai_rate_move
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _080632F4
- mov r0, r9
- cmp r0, 0
- bne _08063278
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08063278
-_080632F4:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080632AE
-_080632FA:
- movs r0, 0
-_080632FC:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_has_super_effective_move_on_field
-
- thumb_func_start ai_is_too_invested_in_stat_buffs
-ai_is_too_invested_in_stat_buffs: @ 806331C
- push {r4,lr}
- movs r4, 0
- ldr r1, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x18
- adds r2, r0, r1
- movs r3, 0x7
-_08063330:
- ldrb r1, [r2]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0x6
- ble _08063346
- subs r1, 0x6
- lsls r0, r4, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
-_08063346:
- adds r2, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _08063330
- movs r0, 0
- cmp r4, 0x3
- bls _08063356
- movs r0, 0x1
-_08063356:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_is_too_invested_in_stat_buffs
-
- thumb_func_start ai_switchout_something
-ai_switchout_something: @ 8063364
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x4]
- ldr r2, =gUnknown_02024250
- ldr r1, =gActiveBank
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r4, r0, r2
- ldrh r2, [r4]
- adds r5, r1, 0
- cmp r2, 0
- bne _08063390
- b _080635EE
-_08063390:
- ldr r0, =0x0000ffff
- cmp r2, r0
- bne _08063398
- b _080635EE
-_08063398:
- ldr r0, =gUnknown_02024270
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080633A4
- b _080635EE
-_080633A4:
- ldr r2, =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _080633B8
- b _080635EE
-_080633B8:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806342C
- mov r9, r3
- mov r0, r9
- bl GetBankIdentity
- movs r4, 0x2
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063414
- ldrb r5, [r5]
- mov r10, r5
- b _08063430
- .pool
-_08063414:
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- b _08063430
-_0806342C:
- mov r9, r3
- mov r10, r9
-_08063430:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063490
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- adds r5, r2, 0
- cmp r0, 0
- bne _08063460
- movs r4, 0
- movs r0, 0x3
- str r0, [sp, 0x8]
- b _08063498
- .pool
-_08063460:
- movs r4, 0x3
- movs r1, 0x6
- str r1, [sp, 0x8]
- b _08063498
-_08063468:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r2, 0xA5
- lsls r2, 2
- adds r0, r2
- strb r6, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _080635F0
- .pool
-_08063490:
- movs r4, 0
- movs r0, 0x6
- str r0, [sp, 0x8]
- ldr r5, =gActiveBank
-_08063498:
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- str r1, [sp, 0xC]
- cmp r0, 0
- bne _080634AC
- ldr r2, =gPlayerParty
- str r2, [sp, 0xC]
-_080634AC:
- adds r6, r4, 0
- b _080635E6
- .pool
-_080634BC:
- movs r0, 0x64
- muls r0, r6
- ldr r1, [sp, 0xC]
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080634D2
- b _080635E4
-_080634D2:
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- bne _080634E0
- b _080635E4
-_080634E0:
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080635E4
- ldr r1, =gBattlePartyID
- mov r2, r9
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _080635E4
- mov r2, r10
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _080635E4
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- mov r2, r9
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r6, r0
- beq _080635E4
- mov r2, r10
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r6, r0
- beq _080635E4
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _08063558
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r1, =gBaseStats
- adds r0, r1
- ldrb r2, [r0, 0x17]
- b _08063564
- .pool
-_08063558:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r2, =gBaseStats
- adds r0, r2
- ldrb r2, [r0, 0x16]
-_08063564:
- ldr r1, =gUnknown_02024250
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- adds r1, r4, 0
- bl ai_rate_move
- ldr r1, [sp]
- ands r1, r0
- cmp r1, 0
- beq _080635E4
- ldr r1, =gUnknown_02024270
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- mov r9, r0
- movs r4, 0
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- mov r8, r1
- ldr r1, =gBattleMons
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r5, r0, r1
- adds r7, r5, 0
- adds r7, 0x20
-_080635A2:
- adds r1, r4, 0
- adds r1, 0xD
- ldr r0, [sp, 0xC]
- add r0, r8
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080635DE
- ldrh r1, [r5]
- ldrb r2, [r7]
- bl ai_rate_move
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _080635DE
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp, 0x4]
- bl __modsi3
- cmp r0, 0
- bne _080635DE
- b _08063468
-_080635DE:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080635A2
-_080635E4:
- adds r6, 0x1
-_080635E6:
- ldr r0, [sp, 0x8]
- cmp r6, r0
- bge _080635EE
- b _080634BC
-_080635EE:
- movs r0, 0
-_080635F0:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_switchout_something
-
- thumb_func_start sub_8063614
-sub_8063614: @ 8063614
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r6, =gBattleMons
- ldr r4, =gActiveBank
- ldrb r2, [r4]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r6, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x0400e000
- ands r0, r1
- cmp r0, 0
- beq _0806363E
- b _0806386C
-_0806363E:
- ldr r0, =gStatuses3
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x80
- lsls r0, 3
- ands r1, r0
- cmp r1, 0
- beq _08063652
- b _0806386C
-_08063652:
- str r1, [sp]
- movs r0, 0xC
- adds r1, r2, 0
- movs r2, 0x17
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0806366A
- b _0806386C
-_0806366A:
- ldrb r1, [r4]
- str r0, [sp]
- movs r0, 0xC
- movs r2, 0x47
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08063682
- b _0806386C
-_08063682:
- str r0, [sp]
- movs r0, 0xE
- movs r1, 0
- movs r2, 0x2A
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080636B4
- ldrb r0, [r4]
- muls r0, r5
- adds r1, r0, r6
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080636A8
- b _0806386C
-_080636A8:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080636B4
- b _0806386C
-_080636B4:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- beq _080636C4
- b _0806386C
-_080636C4:
- movs r0, 0
- mov r10, r0
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0806372E
- ldrb r7, [r4]
- adds r0, r7, 0
- bl GetBankIdentity
- movs r5, 0x2
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063718
- ldrb r6, [r4]
- b _08063732
- .pool
-_08063718:
- ldrb r0, [r4]
- bl GetBankIdentity
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- b _08063732
-_0806372E:
- ldrb r6, [r4]
- adds r7, r6, 0
-_08063732:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063768
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08063760
- movs r4, 0
- movs r1, 0x3
- mov r8, r1
- b _08063770
- .pool
-_08063760:
- movs r4, 0x3
- movs r0, 0x6
- mov r8, r0
- b _08063770
-_08063768:
- movs r4, 0
- movs r1, 0x6
- mov r8, r1
- ldr r2, =gActiveBank
-_08063770:
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r9, r1
- cmp r0, 0
- bne _08063784
- ldr r0, =gPlayerParty
- mov r9, r0
-_08063784:
- adds r5, r4, 0
- cmp r5, r8
- bge _080637F2
-_0806378A:
- movs r0, 0x64
- muls r0, r5
- mov r1, r9
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080637EC
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _080637EC
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080637EC
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080637EC
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080637EC
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r7, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080637EC
- adds r0, r6, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080637EC
- movs r0, 0x1
- add r10, r0
-_080637EC:
- adds r5, 0x1
- cmp r5, r8
- blt _0806378A
-_080637F2:
- mov r1, r10
- cmp r1, 0
- beq _0806386C
- bl ai_switch_perish_song
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- bl sub_8062C58
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- bl sub_8062E54
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- bl ai_switchout_natural_cure
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- movs r0, 0
- bl ai_has_super_effective_move_on_field
- lsls r0, 24
- cmp r0, 0
- bne _0806386C
- bl ai_is_too_invested_in_stat_buffs
- lsls r0, 24
- cmp r0, 0
- bne _0806386C
- movs r0, 0x8
- movs r1, 0x2
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- movs r0, 0x4
- movs r1, 0x3
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- beq _0806386C
-_08063852:
- movs r0, 0x1
- b _0806386E
- .pool
-_0806386C:
- movs r0, 0
-_0806386E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8063614
-
- thumb_func_start sub_8063880
-sub_8063880: @ 8063880
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r6, r0, 24
- adds r5, r6, 0
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r8, r1
- cmp r0, 0
- bne _080638A8
- ldr r2, =gPlayerParty
- mov r8, r2
-_080638A8:
- ldr r7, =gBattleTypeFlags
- ldr r0, [r7]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- bne _080638B6
- b _080639E6
-_080638B6:
- bl sub_8063614
- lsls r0, 24
- cmp r0, 0
- bne _080638C2
- b _080639DC
-_080638C2:
- ldrb r0, [r4]
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _080639B8
- bl sub_8063A90
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bne _080639A6
- ldr r0, [r7]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08063910
- adds r0, r6, 0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- b _08063928
- .pool
-_08063910:
- adds r0, r5, 0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0x2
- eors r5, r0
- adds r0, r5, 0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r5, r0, 24
-_08063928:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063958
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08063954
- movs r0, 0
- movs r7, 0x3
- b _0806395C
- .pool
-_08063954:
- movs r0, 0x3
- b _0806395A
-_08063958:
- movs r0, 0
-_0806395A:
- movs r7, 0x6
-_0806395C:
- adds r4, r0, 0
- cmp r4, r7
- bge _080639A6
-_08063962:
- movs r0, 0x64
- muls r0, r4
- add r0, r8
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080639A0
- ldr r1, =gBattlePartyID
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- beq _080639A0
- lsls r0, r5, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- beq _080639A0
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r6, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r4, r0
- beq _080639A0
- adds r0, r5, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r4, r0
- bne _080639A6
-_080639A0:
- adds r4, 0x1
- cmp r4, r7
- blt _08063962
-_080639A6:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- strb r4, [r0]
-_080639B8:
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- ldr r0, [r2]
- adds r0, r1, r0
- adds r1, r0, 0
- adds r1, 0x5C
- movs r2, 0xA5
- lsls r2, 2
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- b _080639F8
- .pool
-_080639DC:
- bl sub_8063EE0
- lsls r0, 24
- cmp r0, 0
- bne _080639F8
-_080639E6:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- movs r2, 0x1
- eors r2, r0
- lsls r2, 8
- movs r0, 0x1
- movs r1, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_080639F8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8063880
-
- thumb_func_start sub_8063A08
-sub_8063A08: @ 8063A08
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r6, r3, 0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- movs r7, 0
- ldr r0, =gUnknown_0831ACE8
- mov r10, r0
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08063A7A
- mov r5, r10
-_08063A36:
- ldrb r0, [r5]
- cmp r0, 0xFE
- beq _08063A6C
- ldr r1, [sp]
- cmp r0, r1
- bne _08063A6C
- ldrb r4, [r5, 0x1]
- cmp r4, r9
- bne _08063A56
- ldrb r1, [r6]
- ldrb r0, [r5, 0x2]
- muls r0, r1
- movs r1, 0xA
- bl __divsi3
- strb r0, [r6]
-_08063A56:
- cmp r4, r8
- bne _08063A6C
- cmp r9, r8
- beq _08063A6C
- ldrb r1, [r6]
- ldrb r0, [r5, 0x2]
- muls r0, r1
- movs r1, 0xA
- bl __divsi3
- strb r0, [r6]
-_08063A6C:
- adds r5, 0x3
- adds r7, 0x3
- mov r1, r10
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08063A36
-_08063A7A:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8063A08
-
- thumb_func_start sub_8063A90
-sub_8063A90: @ 8063A90
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- ldr r4, =gActiveBank
- ldrb r2, [r4]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, r2, r0
- adds r1, r0, 0
- adds r1, 0x5C
- ldrb r0, [r1]
- cmp r0, 0x6
- beq _08063AB2
- b _08063E50
-_08063AB2:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- beq _08063AE0
- ldr r1, =gBattlePartyID
- lsls r0, r2, 1
- adds r0, r1
- ldrb r0, [r0]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- b _08063E50
- .pool
-_08063AE0:
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08063B6C
- str r2, [sp, 0x10]
- adds r0, r2, 0
- bl GetBankIdentity
- movs r5, 0x2
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063B20
- ldrb r4, [r4]
- str r4, [sp, 0x14]
- b _08063B36
- .pool
-_08063B20:
- ldrb r0, [r4]
- bl GetBankIdentity
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
-_08063B36:
- bl Random
- movs r3, 0x2
- ands r0, r3
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- ldr r4, [sp, 0x4]
- lsls r0, r4, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063B8A
- eors r4, r3
- lsls r0, r4, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- b _08063B8A
- .pool
-_08063B6C:
- adds r0, r2, 0
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldrb r4, [r4]
- str r4, [sp, 0x14]
- str r4, [sp, 0x10]
-_08063B8A:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063BC2
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08063BB8
- movs r0, 0
- str r0, [sp, 0x18]
- movs r1, 0x3
- str r1, [sp, 0x1C]
- b _08063BCC
- .pool
-_08063BB8:
- movs r4, 0x3
- str r4, [sp, 0x18]
- movs r0, 0x6
- str r0, [sp, 0x1C]
- b _08063BCC
-_08063BC2:
- movs r1, 0
- str r1, [sp, 0x18]
- movs r2, 0x6
- str r2, [sp, 0x1C]
- ldr r2, =gActiveBank
-_08063BCC:
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- ldr r4, =gEnemyParty
- str r4, [sp, 0x20]
- cmp r0, 0
- bne _08063BE0
- ldr r0, =gPlayerParty
- str r0, [sp, 0x20]
-_08063BE0:
- movs r1, 0
- mov r9, r1
-_08063BE4:
- movs r2, 0
- str r2, [sp, 0x8]
- movs r4, 0x6
- str r4, [sp, 0xC]
- ldr r7, [sp, 0x18]
- ldr r0, [sp, 0x1C]
- cmp r7, r0
- blt _08063BF6
- b _08063CF2
-_08063BF6:
- lsls r0, r7, 2
- ldr r1, =gBitTable
- adds r0, r1
- mov r8, r0
- mov r10, sp
-_08063C00:
- movs r0, 0x64
- muls r0, r7
- ldr r2, [sp, 0x20]
- adds r4, r2, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _08063CD8
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08063CD8
- mov r4, r8
- ldr r0, [r4]
- mov r1, r9
- ands r0, r1
- cmp r0, 0
- bne _08063CD8
- ldr r1, =gBattlePartyID
- ldr r2, [sp, 0x10]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08063CD8
- ldr r4, [sp, 0x14]
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08063CD8
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08063CD8
- adds r0, r4, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08063CD8
- ldr r1, =gBaseStats
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x6]
- ldrb r6, [r0, 0x7]
- movs r0, 0xA
- mov r1, r10
- strb r0, [r1]
- movs r0, 0x58
- ldr r2, [sp, 0x4]
- adds r4, r2, 0
- muls r4, r0
- ldr r0, =gBattleMons
- adds r4, r0
- adds r0, r4, 0
- adds r0, 0x21
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r2, r6, 0
- mov r3, sp
- bl sub_8063A08
- adds r4, 0x22
- ldrb r0, [r4]
- adds r1, r5, 0
- adds r2, r6, 0
- mov r3, sp
- bl sub_8063A08
- ldr r2, [sp, 0x8]
- mov r1, r10
- ldrb r1, [r1]
- cmp r2, r1
- bcs _08063CE6
- mov r2, r10
- ldrb r2, [r2]
- str r2, [sp, 0x8]
- lsls r0, r7, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- b _08063CE6
- .pool
-_08063CD8:
- mov r4, r8
- ldr r0, [r4]
- mov r1, r9
- orrs r1, r0
- lsls r0, r1, 24
- lsrs r0, 24
- mov r9, r0
-_08063CE6:
- movs r2, 0x4
- add r8, r2
- adds r7, 0x1
- ldr r4, [sp, 0x1C]
- cmp r7, r4
- blt _08063C00
-_08063CF2:
- ldr r0, [sp, 0xC]
- cmp r0, 0x6
- beq _08063D54
- movs r7, 0
- movs r0, 0x64
- ldr r1, [sp, 0xC]
- adds r5, r1, 0
- muls r5, r0
-_08063D02:
- adds r1, r7, 0
- adds r1, 0xD
- ldr r2, [sp, 0x20]
- adds r0, r2, r5
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _08063D2A
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r0, r4, 0
- ldr r2, [sp, 0x4]
- bl TypeCalc
- movs r1, 0x2
- ands r1, r0
- cmp r1, 0
- bne _08063D30
-_08063D2A:
- adds r7, 0x1
- cmp r7, 0x3
- ble _08063D02
-_08063D30:
- cmp r7, 0x4
- beq _08063D36
- b _08063E4E
-_08063D36:
- ldr r4, [sp, 0xC]
- lsls r0, r4, 2
- ldr r1, =gBitTable
- adds r0, r1
- ldr r0, [r0]
- mov r2, r9
- orrs r2, r0
- lsls r0, r2, 24
- lsrs r0, 24
- mov r9, r0
- b _08063D58
- .pool
-_08063D54:
- movs r4, 0x3F
- mov r9, r4
-_08063D58:
- mov r0, r9
- cmp r0, 0x3F
- beq _08063D60
- b _08063BE4
-_08063D60:
- ldr r0, =gDynamicBasePower
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- strb r1, [r0, 0x13]
- ldr r0, =gBattleScripting
- movs r2, 0x1
- strb r2, [r0, 0xE]
- ldr r0, =gBattleMoveFlags
- strb r1, [r0]
- ldr r0, =gCritMultiplier
- strb r2, [r0]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r2, 0x6
- str r2, [sp, 0xC]
- ldr r7, [sp, 0x18]
- ldr r4, [sp, 0x1C]
- cmp r7, r4
- bge _08063E4E
-_08063D8A:
- movs r0, 0x64
- adds r6, r7, 0
- muls r6, r0
- ldr r0, [sp, 0x20]
- adds r4, r0, r6
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- adds r1, r7, 0x1
- mov r10, r1
- cmp r0, 0
- beq _08063E46
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08063E46
- ldr r1, =gBattlePartyID
- ldr r2, [sp, 0x10]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08063E46
- ldr r4, [sp, 0x14]
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08063E46
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08063E46
- adds r0, r4, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08063E46
- movs r5, 0
- mov r9, r6
- ldr r0, =gBattleMoveDamage
- mov r8, r0
- ldr r6, =gActiveBank
-_08063DEE:
- adds r1, r5, 0
- adds r1, 0xD
- ldr r0, [sp, 0x20]
- add r0, r9
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0
- mov r1, r8
- str r0, [r1]
- cmp r4, 0
- beq _08063E2A
- ldr r0, =gBattleMoves
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0x1
- beq _08063E2A
- ldrb r0, [r6]
- ldr r1, [sp, 0x4]
- bl AI_CalcDmg
- ldrb r1, [r6]
- adds r0, r4, 0
- ldr r2, [sp, 0x4]
- bl TypeCalc
-_08063E2A:
- mov r2, r8
- ldr r0, [r2]
- ldr r4, [sp, 0x8]
- cmp r4, r0
- bge _08063E40
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- lsls r0, r7, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
-_08063E40:
- adds r5, 0x1
- cmp r5, 0x3
- ble _08063DEE
-_08063E46:
- mov r7, r10
- ldr r0, [sp, 0x1C]
- cmp r7, r0
- blt _08063D8A
-_08063E4E:
- ldr r0, [sp, 0xC]
-_08063E50:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8063A90
-
- thumb_func_start ai_identify_item_effect
-ai_identify_item_effect: @ 8063E84
- push {r4,lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bne _08063E94
- movs r0, 0x1
- b _08063EDA
-_08063E94:
- ldrb r1, [r2, 0x4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08063EA2
- movs r0, 0x2
- b _08063EDA
-_08063EA2:
- ldrb r4, [r2, 0x3]
- movs r3, 0x3F
- adds r0, r3, 0
- ands r0, r4
- cmp r0, 0
- beq _08063EB2
- movs r0, 0x3
- b _08063EDA
-_08063EB2:
- ldrb r1, [r2]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _08063EC8
- ldrb r0, [r2, 0x1]
- cmp r0, 0
- bne _08063EC8
- ldrb r0, [r2, 0x2]
- cmp r0, 0
- beq _08063ECC
-_08063EC8:
- movs r0, 0x4
- b _08063EDA
-_08063ECC:
- movs r0, 0x80
- ands r0, r4
- cmp r0, 0
- bne _08063ED8
- movs r0, 0x6
- b _08063EDA
-_08063ED8:
- movs r0, 0x5
-_08063EDA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ai_identify_item_effect
-
- thumb_func_start sub_8063EE0
-sub_8063EE0: @ 8063EE0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- mov r10, r0
- movs r7, 0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _08063F12
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08063F12
- b _0806437C
-_08063F12:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r5, =gEnemyParty
- cmp r0, 0
- bne _08063F24
- ldr r5, =gPlayerParty
-_08063F24:
- movs r1, 0
- mov r8, r1
-_08063F28:
- movs r0, 0x64
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r4, r5, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08063F64
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08063F64
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08063F64
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_08063F64:
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x5
- ble _08063F28
- movs r2, 0
- mov r8, r2
-_08063F72:
- ldr r1, =gBattleResources
- mov r0, r8
- cmp r0, 0
- beq _08063F8E
- ldr r0, [r1]
- ldr r0, [r0, 0x18]
- adds r0, 0x50
- ldrb r0, [r0]
- mov r2, r8
- subs r0, r2
- adds r0, 0x1
- cmp r10, r0
- ble _08063F8E
- b _08064370
-_08063F8E:
- ldr r0, [r1]
- ldr r0, [r0, 0x18]
- mov r2, r8
- lsls r1, r2, 1
- adds r0, 0x48
- adds r0, r1
- ldrh r0, [r0]
- mov r9, r0
- str r1, [sp]
- cmp r0, 0
- bne _08063FA6
- b _08064370
-_08063FA6:
- ldr r1, =gItemEffectTable
- subs r0, 0xD
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- cmp r1, 0
- bne _08063FB6
- b _08064370
-_08063FB6:
- mov r0, r9
- cmp r0, 0xAF
- bne _08063FE8
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003214
- adds r5, r0, r1
- b _08063FEA
- .pool
-_08063FE8:
- adds r5, r1, 0
-_08063FEA:
- mov r2, r9
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r5, 0
- bl ai_identify_item_effect
- ldr r4, =gActiveBank
- ldrb r1, [r4]
- lsrs r1, 1
- ldr r3, =gBattleStruct
- ldr r2, [r3]
- adds r1, r2
- adds r1, 0xC4
- strb r0, [r1]
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC4
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0x5
- bls _0806401A
- b _08064324
-_0806401A:
- lsls r0, 2
- ldr r1, =_08064030
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08064030:
- .4byte _08064048
- .4byte _08064074
- .4byte _080640BC
- .4byte _08064214
- .4byte _080642F4
- .4byte _0806437C
-_08064048:
- ldr r2, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0, 0x2C]
- ldrh r0, [r0, 0x28]
- lsrs r1, 2
- cmp r0, r1
- bcc _08064060
- b _08064324
-_08064060:
- cmp r0, 0
- bne _08064066
- b _08064324
-_08064066:
- movs r7, 0x1
- b _08064328
- .pool
-_08064074:
- mov r0, r9
- movs r1, 0x4
- movs r2, 0x4
- bl GetItemEffectParamOffset
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08064088
- b _08064324
-_08064088:
- ldr r2, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- ldrh r2, [r1, 0x28]
- cmp r2, 0
- bne _0806409C
- b _08064324
-_0806409C:
- ldrh r3, [r1, 0x2C]
- lsrs r0, r3, 2
- cmp r2, r0
- bcc _08064066
- adds r0, r2, 0
- subs r0, r3, r0
- adds r1, r5, r4
- ldrb r1, [r1]
- cmp r0, r1
- bgt _080640B2
- b _08064324
-_080640B2:
- b _08064066
- .pool
-_080640BC:
- ldr r3, =gActiveBank
- ldrb r0, [r3]
- lsrs r0, 1
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- adds r0, r1
- adds r0, 0xC6
- movs r1, 0
- strb r1, [r0]
- ldrb r1, [r5, 0x3]
- movs r6, 0x20
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08064100
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08064100
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_08064100:
- ldrb r1, [r5, 0x3]
- movs r6, 0x10
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0806413A
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0806412A
- movs r0, 0x80
- ands r1, r0
- cmp r1, 0
- beq _0806413A
-_0806412A:
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0806413A:
- ldrb r1, [r5, 0x3]
- movs r6, 0x8
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0806416C
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0806416C
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0806416C:
- ldrb r1, [r5, 0x3]
- movs r6, 0x4
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0806419E
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0806419E
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0806419E:
- ldrb r1, [r5, 0x3]
- movs r6, 0x2
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080641D0
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080641D0
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_080641D0:
- ldrb r1, [r5, 0x3]
- movs r4, 0x1
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080641DE
- b _08064324
-_080641DE:
- ldr r1, =gBattleMons
- ldrb r3, [r3]
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _080641F6
- b _08064324
-_080641F6:
- lsrs r1, r3, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- b _08064066
- .pool
-_08064214:
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r3, =gBattleStruct
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gDisableStructs
- ldrb r2, [r4]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x16]
- cmp r0, 0
- beq _08064324
- ldrb r1, [r5]
- movs r6, 0xF
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _08064254
- lsrs r2, 1
- ldr r0, [r3]
- adds r2, r0
- adds r2, 0xC6
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_08064254:
- ldrb r1, [r5, 0x1]
- movs r7, 0xF0
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _08064272
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
-_08064272:
- ldrb r1, [r5, 0x1]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0806428E
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_0806428E:
- ldrb r1, [r5, 0x2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _080642AA
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
-_080642AA:
- ldrb r1, [r5, 0x2]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080642C6
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
-_080642C6:
- ldrb r1, [r5]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- bne _080642D2
- b _08064066
-_080642D2:
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- b _08064066
- .pool
-_080642F4:
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, =gDisableStructs
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x16]
- cmp r0, 0
- beq _08064324
- ldr r0, =gSideTimers
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- bne _08064324
- b _08064066
-_08064324:
- cmp r7, 0
- beq _08064370
-_08064328:
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsrs r0, 1
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC0
- mov r1, r9
- strb r1, [r0]
- ldr r0, =gBattleResources
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- adds r0, 0x48
- ldr r2, [sp]
- adds r0, r2
- movs r1, 0
- strh r1, [r0]
- adds r0, r7, 0
- b _0806437E
- .pool
-_08064370:
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x3
- bgt _0806437C
- b _08063F72
-_0806437C:
- movs r0, 0
-_0806437E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8063EE0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
deleted file mode 100644
index 639be6b7d..000000000
--- a/asm/battle_anim.s
+++ /dev/null
@@ -1,4205 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80A3934
-sub_80A3934: @ 80A3934
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, =gAnimFramesToWait
- movs r1, 0
- strb r1, [r0]
- ldr r0, =gAnimScriptActive
- strb r1, [r0]
- ldr r0, =gAnimVisualTaskCount
- strb r1, [r0]
- ldr r0, =gAnimSoundTaskCount
- strb r1, [r0]
- ldr r0, =gDisableStructMoveAnim
- movs r1, 0
- str r1, [r0]
- ldr r0, =gMoveDmgMoveAnim
- str r1, [r0]
- ldr r0, =gMovePowerMoveAnim
- movs r2, 0
- strh r1, [r0]
- ldr r0, =gHappinessMoveAnim
- strb r2, [r0]
- ldr r4, =gUnknown_02038430
- ldr r5, =gUnknown_02038432
- ldr r6, =gUnknown_02038433
- ldr r7, =gAnimMoveIndex
- ldr r0, =gAnimationBankAttacker
- mov r12, r0
- ldr r1, =gAnimationBankTarget
- mov r8, r1
- ldr r0, =gUnknown_02038440
- mov r9, r0
- ldr r1, =0x0000ffff
- adds r3, r1, 0
- ldr r1, =gAnimSpriteIndexArray
- movs r2, 0x7
-_080A397E:
- ldrh r0, [r1]
- orrs r0, r3
- strh r0, [r1]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _080A397E
- ldr r1, =gBattleAnimArgs
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0xE
-_080A3994:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _080A3994
- movs r1, 0
- movs r0, 0xFF
- strb r0, [r4]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r4, 0x1]
- strb r1, [r5]
- strb r1, [r6]
- movs r0, 0
- strh r1, [r7]
- mov r1, r12
- strb r0, [r1]
- mov r1, r8
- strb r0, [r1]
- mov r1, r9
- strb r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A3934
-
- thumb_func_start move_anim_start_t1
-move_anim_start_t1: @ 80A3A10
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, =gAnimationBankAttacker
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r2, =gAnimationBankTarget
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r0, =gUnknown_082C8D6C
- movs r2, 0x1
- bl move_something
- pop {r0}
- bx r0
- .pool
- thumb_func_end move_anim_start_t1
-
- thumb_func_start move_something
-move_something: @ 80A3A48
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- str r0, [sp]
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A3AE8
- bl sub_80A8278
- movs r0, 0
- bl sub_8072A88
- movs r4, 0
- mov r0, r8
- lsls r0, 2
- mov r10, r0
- ldr r6, =gBattlePartyID
- movs r7, 0x64
- ldr r5, =gUnknown_02038438
-_080A3A84:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080A3AA8
- ldrh r0, [r6]
- muls r0, r7
- ldr r1, =gEnemyParty
- b _080A3AAE
- .pool
-_080A3AA8:
- ldrh r0, [r6]
- muls r0, r7
- ldr r1, =gPlayerParty
-_080A3AAE:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- strh r0, [r5]
- adds r6, 0x2
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _080A3A84
- ldr r3, =gAnimMoveIndex
- ldr r5, =gUnknown_02038430
- ldr r1, =gAnimScriptActive
- mov r12, r1
- ldr r7, =gAnimScriptCallback
- ldr r6, =move_anim_execute
- b _080A3B10
- .pool
-_080A3AE8:
- ldr r3, =gAnimMoveIndex
- ldr r5, =gUnknown_02038430
- mov r0, r8
- lsls r0, 2
- mov r10, r0
- ldr r1, =gAnimScriptActive
- mov r12, r1
- ldr r7, =gAnimScriptCallback
- ldr r6, =move_anim_execute
- ldr r2, =gUnknown_02039F34
- ldr r1, =gUnknown_02038438
- movs r4, 0x3
-_080A3B00:
- ldr r0, [r2]
- ldr r0, [r0, 0x18]
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080A3B00
-_080A3B10:
- mov r0, r9
- cmp r0, 0
- bne _080A3B38
- strh r0, [r3]
- b _080A3B3C
- .pool
-_080A3B38:
- mov r1, r8
- strh r1, [r3]
-_080A3B3C:
- ldr r1, =gBattleAnimArgs
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0xE
-_080A3B44:
- strh r2, [r0]
- subs r0, 0x2
- cmp r0, r1
- bge _080A3B44
- movs r0, 0xFF
- strb r0, [r5]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r5, 0x1]
- ldr r0, [sp]
- add r0, r10
- ldr r0, [r0]
- ldr r1, =gBattleAnimScriptPtr
- str r0, [r1]
- movs r0, 0x1
- mov r1, r12
- strb r0, [r1]
- movs r0, 0
- ldr r1, =gAnimFramesToWait
- strb r0, [r1]
- str r6, [r7]
- ldr r0, =0x0000ffff
- adds r2, r0, 0
- ldr r1, =gAnimSpriteIndexArray
- movs r4, 0x7
-_080A3B76:
- ldrh r0, [r1]
- orrs r0, r2
- strh r0, [r1]
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080A3B76
- mov r1, r9
- cmp r1, 0
- beq _080A3BC2
- movs r4, 0
- ldr r2, =gUnknown_082C8D64
- b _080A3BAA
- .pool
-_080A3BA8:
- adds r4, 0x1
-_080A3BAA:
- lsls r0, r4, 1
- adds r0, r2
- ldrh r0, [r0]
- ldr r1, =0x0000ffff
- cmp r0, r1
- beq _080A3BC2
- cmp r8, r0
- bne _080A3BA8
- ldr r0, =gMPlay_BGM
- movs r2, 0x80
- bl m4aMPlayVolumeControl
-_080A3BC2:
- ldr r0, =gUnknown_02022E24
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02022E26
- strh r1, [r0]
- ldr r0, =gUnknown_02022E28
- strh r1, [r0]
- ldr r0, =gUnknown_02022E2A
- strh r1, [r0]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end move_something
-
- thumb_func_start move_anim_8072740
-move_anim_8072740: @ 80A3BFC
- push {r4,lr}
- adds r4, r0, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end move_anim_8072740
-
- thumb_func_start move_anim_task_del
-move_anim_task_del: @ 80A3C1C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end move_anim_task_del
-
- thumb_func_start move_anim_related_task_del
-move_anim_related_task_del: @ 80A3C38
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end move_anim_related_task_del
-
- thumb_func_start sub_80A3C54
-sub_80A3C54: @ 80A3C54
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r4, =0x0000ffff
- ldr r1, =gAnimSpriteIndexArray
-_080A3C60:
- ldrh r0, [r1]
- cmp r0, r4
- bne _080A3C74
- strh r3, [r1]
- b _080A3C7C
- .pool
-_080A3C74:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x7
- ble _080A3C60
-_080A3C7C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A3C54
-
- thumb_func_start sub_80A3C84
-sub_80A3C84: @ 80A3C84
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r0, =0x0000ffff
- adds r4, r0, 0
- ldr r1, =gAnimSpriteIndexArray
-_080A3C92:
- ldrh r0, [r1]
- cmp r0, r3
- bne _080A3CA8
- orrs r0, r4
- strh r0, [r1]
- b _080A3CB0
- .pool
-_080A3CA8:
- adds r1, 0x2
- adds r2, 0x1
- cmp r2, 0x7
- ble _080A3C92
-_080A3CB0:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A3C84
-
- thumb_func_start move_anim_waiter
-move_anim_waiter: @ 80A3CB8
- push {lr}
- ldr r2, =gAnimFramesToWait
- ldrb r1, [r2]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0
- bgt _080A3CDC
- ldr r0, =gAnimScriptCallback
- ldr r1, =move_anim_execute
- str r1, [r0]
- movs r0, 0
- b _080A3CDE
- .pool
-_080A3CDC:
- subs r0, r1, 0x1
-_080A3CDE:
- strb r0, [r2]
- pop {r0}
- bx r0
- thumb_func_end move_anim_waiter
-
- thumb_func_start move_anim_execute
-move_anim_execute: @ 80A3CE4
- push {r4,lr}
- ldr r4, =gUnknown_08525E98
-_080A3CE8:
- ldr r0, =gBattleAnimScriptPtr
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, =gAnimFramesToWait
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- bne _080A3D0C
- ldr r0, =gAnimScriptActive
- ldrb r0, [r0]
- cmp r0, 0
- bne _080A3CE8
-_080A3D0C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end move_anim_execute
-
- thumb_func_start ma00_load_graphics
-ma00_load_graphics: @ 80A3D24
- push {r4-r6,lr}
- ldr r6, =gBattleAnimScriptPtr
- ldr r0, [r6]
- adds r1, r0, 0x1
- str r1, [r6]
- ldrb r4, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r4, r0
- lsls r5, r4, 3
- ldr r0, =gUnknown_085112C4
- adds r0, r5, r0
- bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_08511BCC
- adds r5, r0
- adds r0, r5, 0
- bl LoadCompressedObjectPaletteUsingHeap
- ldr r0, [r6]
- adds r0, 0x2
- str r0, [r6]
- ldr r0, =0xffffd8f0
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- bl sub_80A3C54
- ldr r1, =gAnimFramesToWait
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, =gAnimScriptCallback
- ldr r0, =move_anim_waiter
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma00_load_graphics
-
- thumb_func_start ma01_080728D0
-@ void ma01_080728D0()
-ma01_080728D0: @ 80A3D8C
- push {r4-r6,lr}
- ldr r6, =gBattleAnimScriptPtr
- ldr r0, [r6]
- adds r1, r0, 0x1
- str r1, [r6]
- ldrb r4, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r4, r0
- ldr r1, =gUnknown_08524B44
- ldr r0, =0xffffd8f0
- adds r4, r0
- lsls r0, r4, 3
- adds r0, r1
- ldrh r5, [r0, 0x6]
- adds r0, r5, 0
- bl FreeSpriteTilesByTag
- adds r0, r5, 0
- bl FreeSpritePaletteByTag
- ldr r0, [r6]
- adds r0, 0x2
- str r0, [r6]
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- bl sub_80A3C84
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma01_080728D0
-
- thumb_func_start ma02_instanciate_template
-ma02_instanciate_template: @ 80A3DD8
- push {r4-r7,lr}
- ldr r5, =gBattleAnimScriptPtr
- ldr r1, [r5]
- adds r3, r1, 0x1
- str r3, [r5]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r7, r2, r0
- adds r0, r1, 0x5
- str r0, [r5]
- ldrb r4, [r1, 0x5]
- adds r0, r1, 0x6
- str r0, [r5]
- ldrb r0, [r1, 0x6]
- adds r1, 0x7
- str r1, [r5]
- cmp r0, 0
- beq _080A3E28
- adds r6, r5, 0
- ldr r5, =gBattleAnimArgs
- adds r3, r0, 0
-_080A3E10:
- ldr r2, [r6]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- strh r1, [r5]
- adds r2, 0x2
- str r2, [r6]
- adds r5, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _080A3E10
-_080A3E28:
- movs r0, 0x80
- ands r0, r4
- cmp r0, 0
- beq _080A3E58
- movs r0, 0x80
- eors r4, r0
- cmp r4, 0x3F
- bls _080A3E48
- adds r0, r4, 0
- subs r0, 0x40
- b _080A3E4A
- .pool
-_080A3E48:
- negs r0, r4
-_080A3E4A:
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gAnimationBankTarget
- b _080A3E6A
- .pool
-_080A3E58:
- cmp r4, 0x3F
- bls _080A3E62
- adds r0, r4, 0
- subs r0, 0x40
- b _080A3E64
-_080A3E62:
- negs r0, r4
-_080A3E64:
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gAnimationBankAttacker
-_080A3E6A:
- ldrb r0, [r0]
- bl sub_80A82E4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 24
- asrs r1, 24
- adds r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r0, r6, 16
- asrs r0, 16
- cmp r0, 0x2
- bgt _080A3E88
- movs r6, 0x3
-_080A3E88:
- ldr r5, =gAnimationBankTarget
- ldrb r0, [r5]
- movs r1, 0x2
- bl sub_80A5C6C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5]
- movs r1, 0x3
- bl sub_80A5C6C
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r3, r6, 24
- lsrs r3, 24
- adds r0, r7, 0
- adds r1, r4, 0
- bl CreateSpriteAndAnimate
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma02_instanciate_template
-
- thumb_func_start sub_80A3ECC
-sub_80A3ECC: @ 80A3ECC
- push {r4-r7,lr}
- ldr r4, =gBattleAnimScriptPtr
- ldr r1, [r4]
- adds r3, r1, 0x1
- str r3, [r4]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r6, r2, r0
- adds r0, r1, 0x5
- str r0, [r4]
- ldrb r7, [r1, 0x5]
- adds r0, r1, 0x6
- str r0, [r4]
- ldrb r0, [r1, 0x6]
- adds r1, 0x7
- str r1, [r4]
- cmp r0, 0
- beq _080A3F1C
- adds r5, r4, 0
- ldr r4, =gBattleAnimArgs
- adds r3, r0, 0
-_080A3F04:
- ldr r2, [r5]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- strh r1, [r4]
- adds r2, 0x2
- str r2, [r5]
- adds r4, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _080A3F04
-_080A3F1C:
- adds r0, r6, 0
- adds r1, r7, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r6
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A3ECC
-
- thumb_func_start ma04_wait_countdown
-ma04_wait_countdown: @ 80A3F48
- push {r4,lr}
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r2, r0, 0x1
- str r2, [r1]
- ldr r3, =gAnimFramesToWait
- ldrb r0, [r0, 0x1]
- strb r0, [r3]
- lsls r0, 24
- cmp r0, 0
- bne _080A3F66
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- strb r0, [r3]
-_080A3F66:
- adds r0, r2, 0x1
- str r0, [r1]
- ldr r1, =gAnimScriptCallback
- ldr r0, =move_anim_waiter
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma04_wait_countdown
-
- thumb_func_start sub_80A3F88
-sub_80A3F88: @ 80A3F88
- push {lr}
- ldr r0, =gAnimVisualTaskCount
- ldrb r2, [r0]
- cmp r2, 0
- bne _080A3FAC
- ldr r0, =gBattleAnimScriptPtr
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- ldr r0, =gAnimFramesToWait
- strb r2, [r0]
- b _080A3FB2
- .pool
-_080A3FAC:
- ldr r1, =gAnimFramesToWait
- movs r0, 0x1
- strb r0, [r1]
-_080A3FB2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A3F88
-
- thumb_func_start nullsub_6
-nullsub_6: @ 80A3FBC
- bx lr
- thumb_func_end nullsub_6
-
- thumb_func_start nullsub_7
-nullsub_7: @ 80A3FC0
- bx lr
- thumb_func_end nullsub_7
-
- thumb_func_start sub_80A3FC4
-sub_80A3FC4: @ 80A3FC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r0, 0
- mov r8, r0
- ldr r0, =gAnimVisualTaskCount
- ldrb r0, [r0]
- cmp r0, 0
- bne _080A3FEC
- ldr r0, =gAnimSoundTaskCount
- ldrb r0, [r0]
- cmp r0, 0
- bne _080A3FEC
- ldr r1, =gUnknown_02038430
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _080A3FEC
- ldrb r0, [r1, 0x1]
- cmp r0, 0xFF
- beq _080A4004
-_080A3FEC:
- ldr r1, =gSoundAnimFramesToWait
- movs r0, 0
- strh r0, [r1]
- b _080A401E
- .pool
-_080A4004:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _080A403C
- ldr r1, =gSoundAnimFramesToWait
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5A
- bhi _080A4030
-_080A401E:
- ldr r1, =gAnimFramesToWait
- movs r0, 0x1
- strb r0, [r1]
- b _080A40A2
- .pool
-_080A4030:
- ldr r0, =gMPlay_SE1
- bl m4aMPlayStop
- ldr r0, =gMPlay_SE2
- bl m4aMPlayStop
-_080A403C:
- ldr r1, =gSoundAnimFramesToWait
- movs r0, 0
- strh r0, [r1]
- movs r5, 0
- ldr r7, =0x0000ffff
- ldr r6, =gUnknown_08524B44
- ldr r4, =gAnimSpriteIndexArray
-_080A404A:
- ldrh r0, [r4]
- cmp r0, r7
- beq _080A406E
- lsls r0, 3
- adds r0, r6
- ldrh r0, [r0, 0x6]
- bl FreeSpriteTilesByTag
- ldrh r0, [r4]
- lsls r0, 3
- adds r0, r6
- ldrh r0, [r0, 0x6]
- bl FreeSpritePaletteByTag
- ldrh r1, [r4]
- adds r0, r7, 0
- orrs r0, r1
- strh r0, [r4]
-_080A406E:
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x7
- ble _080A404A
- mov r1, r8
- cmp r1, 0
- bne _080A40A2
- ldr r0, =gMPlay_BGM
- ldr r1, =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A409C
- bl sub_80A8278
- movs r0, 0x1
- bl sub_8072A88
-_080A409C:
- ldr r0, =gAnimScriptActive
- mov r1, r8
- strb r1, [r0]
-_080A40A2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A3FC4
-
- thumb_func_start ma09_play_sound
-ma09_play_sound: @ 80A40CC
- push {r4,lr}
- ldr r4, =gBattleAnimScriptPtr
- ldr r0, [r4]
- adds r1, r0, 0x1
- str r1, [r4]
- ldrb r0, [r0, 0x1]
- ldrb r1, [r1, 0x1]
- lsls r1, 8
- orrs r0, r1
- bl PlaySE
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma09_play_sound
-
- thumb_func_start sub_80A40F4
-sub_80A40F4: @ 80A40F4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- mov r8, r1
- adds r6, r0, r1
- ldr r1, =gBankSpriteIds
- movs r2, 0
- ldrsh r0, [r6, r2]
- adds r0, r1
- ldrb r5, [r0]
- ldr r1, =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r4, r0, r1
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r3, 0x4
- ldrsh r0, [r6, r3]
- cmp r0, 0
- bne _080A4148
- adds r0, r7, 0
- bl move_anim_task_del
- b _080A41BE
- .pool
-_080A4148:
- ldr r0, =task_pA_ma0A_obj_to_bg_pal
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- mov r1, r8
- subs r1, 0x8
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- strh r5, [r1, 0x8]
- ldrh r0, [r4, 0x24]
- ldrh r3, [r4, 0x20]
- adds r0, r3
- strh r0, [r1, 0xA]
- ldrh r0, [r4, 0x26]
- ldrh r4, [r4, 0x22]
- adds r0, r4
- strh r0, [r1, 0xC]
- movs r3, 0x2
- ldrsh r0, [r6, r3]
- cmp r0, 0
- bne _080A4190
- ldr r0, =gUnknown_02022E18
- ldrh r0, [r0]
- strh r0, [r1, 0xE]
- ldr r0, =gUnknown_02022E1A
- b _080A4198
- .pool
-_080A4190:
- ldr r0, =gUnknown_02022E1C
- ldrh r0, [r0]
- strh r0, [r1, 0xE]
- ldr r0, =gUnknown_02022E1E
-_080A4198:
- ldrh r0, [r0]
- strh r0, [r1, 0x10]
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r6, 0x2]
- strh r1, [r0, 0x12]
- ldrh r1, [r6]
- strh r1, [r0, 0x14]
- ldr r1, =gUnknown_02038430
- movs r3, 0x6
- ldrsh r0, [r6, r3]
- adds r0, r1
- strb r2, [r0]
- adds r0, r7, 0
- bl move_anim_task_del
-_080A41BE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A40F4
-
- thumb_func_start sub_80A41D8
-sub_80A41D8: @ 80A41D8
- push {r4,r5,lr}
- ldr r1, =gBattleAnimScriptPtr
- ldr r2, [r1]
- adds r0, r2, 0x1
- str r0, [r1]
- ldrb r0, [r2, 0x1]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A41F8
- ldr r0, =gAnimationBankTarget
- b _080A41FA
- .pool
-_080A41F8:
- ldr r0, =gAnimationBankAttacker
-_080A41FA:
- ldrb r4, [r0]
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080A4266
- adds r0, r4, 0
- bl GetBankIdentity
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _080A4226
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A4230
-_080A4226:
- movs r5, 0
- b _080A4232
- .pool
-_080A4230:
- movs r5, 0x1
-_080A4232:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl sub_80A438C
- ldr r0, =sub_80A40F4
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- strh r4, [r0, 0x8]
- strh r5, [r0, 0xA]
- movs r1, 0x1
- strh r1, [r0, 0xC]
- strh r2, [r0, 0xE]
-_080A4266:
- movs r0, 0x2
- eors r4, r0
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080A42D8
- adds r0, r4, 0
- bl GetBankIdentity
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _080A4294
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A42A4
-_080A4294:
- movs r5, 0
- b _080A42A6
- .pool
-_080A42A4:
- movs r5, 0x1
-_080A42A6:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl sub_80A438C
- ldr r0, =sub_80A40F4
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gAnimVisualTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- strh r5, [r0, 0xA]
- movs r1, 0x1
- strh r1, [r0, 0xC]
- strh r1, [r0, 0xE]
-_080A42D8:
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r1, =gAnimFramesToWait
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, =gAnimScriptCallback
- ldr r0, =move_anim_waiter
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A41D8
-
- thumb_func_start b_side_obj__get_some_boolean
-b_side_obj__get_some_boolean: @ 80A4310
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A4330
- ldr r0, =gAnimationBankAttacker
- ldrb r0, [r0]
- cmp r4, r0
- beq _080A4374
- b _080A4384
- .pool
-_080A4330:
- adds r0, r4, 0
- bl sub_80A6A90
- lsls r0, 24
- cmp r0, 0
- beq _080A4384
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A4374
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r5, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A4374
- ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
- adds r0, r5, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _080A4384
-_080A4374:
- movs r0, 0x1
- b _080A4386
- .pool
-_080A4384:
- movs r0, 0
-_080A4386:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end b_side_obj__get_some_boolean
-
- thumb_func_start sub_80A438C
-sub_80A438C: @ 80A438C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- cmp r1, 0
- beq _080A43AA
- b _080A455E
-_080A43AA:
- bl IsContest
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A43DC
- ldr r1, =0x06008000
- movs r2, 0x80
- lsls r2, 6
- movs r0, 0
- movs r3, 0x1
- bl RequestDma3Fill
- ldr r1, =0x0600f000
- movs r2, 0x80
- lsls r2, 5
- movs r0, 0xFF
- movs r3, 0
- bl RequestDma3Fill
- b _080A43F8
- .pool
-_080A43DC:
- ldr r1, =0x06004000
- movs r2, 0x80
- lsls r2, 6
- movs r0, 0
- movs r3, 0x1
- bl RequestDma3Fill
- ldr r1, =0x0600e000
- movs r2, 0x80
- lsls r2, 5
- movs r0, 0xFF
- movs r3, 0
- bl RequestDma3Fill
-_080A43F8:
- add r0, sp, 0x10
- bl sub_80A6B30
- add r0, sp, 0x20
- movs r1, 0
- strh r1, [r0]
- ldr r1, [sp, 0x10]
- ldr r2, =0x01000800
- bl CpuSet
- mov r0, sp
- adds r0, 0x22
- movs r1, 0xFF
- strh r1, [r0]
- ldr r1, [sp, 0x14]
- ldr r2, =0x01000400
- bl CpuSet
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x2
- bl lcd_bg_operations
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x1
- bl lcd_bg_operations
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl lcd_bg_operations
- ldr r0, =gBankSpriteIds
- adds r0, r6, r0
- ldrb r4, [r0]
- ldr r5, =gUnknown_02022E18
- ldr r0, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x24]
- ldrh r1, [r1, 0x20]
- adds r0, r1
- negs r0, r0
- adds r0, 0x20
- strh r0, [r5]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A447A
- ldr r0, =gUnknown_02039F34
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- ldrh r0, [r0]
- bl sub_80DB2A8
- lsls r0, 24
- cmp r0, 0
- beq _080A447A
- ldrh r0, [r5]
- subs r0, 0x1
- strh r0, [r5]
-_080A447A:
- ldr r5, =gUnknown_02022E1A
- ldr r2, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x26]
- ldrh r1, [r1, 0x22]
- adds r0, r1
- negs r0, r0
- adds r0, 0x20
- strh r0, [r5]
- mov r0, r9
- cmp r0, 0
- beq _080A44B0
- ldr r0, =gBankSpriteIds
- adds r0, r6, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080A44B0:
- ldr r0, =gUnknown_02022E18
- ldrh r1, [r0]
- movs r0, 0x14
- bl SetGpuReg
- ldrh r1, [r5]
- movs r0, 0x16
- bl SetGpuReg
- lsls r4, r6, 5
- ldr r0, =gPlttBufferUnfaded + 0x200
- adds r4, r0
- add r0, sp, 0x10
- ldrb r1, [r0, 0x8]
- lsls r1, 4
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
- add r0, sp, 0x10
- ldrb r1, [r0, 0x8]
- lsls r1, 5
- movs r0, 0xA0
- lsls r0, 19
- adds r1, r0
- ldr r2, =0x04000008
- adds r0, r4, 0
- bl CpuSet
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A4524
- movs r3, 0
- b _080A452E
- .pool
-_080A4524:
- adds r0, r6, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r3, r0, 24
-_080A452E:
- add r0, sp, 0x10
- ldrb r0, [r0, 0x8]
- str r0, [sp]
- ldr r0, [sp, 0x10]
- str r0, [sp, 0x4]
- ldr r0, [sp, 0x14]
- str r0, [sp, 0x8]
- add r0, sp, 0x10
- ldrh r0, [r0, 0xA]
- str r0, [sp, 0xC]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl sub_8118FBC
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A4558
- b _080A4666
-_080A4558:
- bl sub_80A46A0
- b _080A4666
-_080A455E:
- ldr r1, =0x06006000
- movs r2, 0x80
- lsls r2, 6
- movs r0, 0
- movs r3, 0x1
- bl RequestDma3Fill
- ldr r1, =0x0600f000
- movs r7, 0x80
- lsls r7, 5
- movs r0, 0
- adds r2, r7, 0
- movs r3, 0x1
- bl RequestDma3Fill
- add r0, sp, 0x10
- movs r1, 0x2
- bl sub_80A6B90
- add r0, sp, 0x24
- movs r4, 0
- strh r4, [r0]
- ldr r1, [sp, 0x10]
- adds r1, r7
- ldr r2, =0x01000800
- bl CpuSet
- mov r0, sp
- adds r0, 0x26
- strh r4, [r0]
- ldr r1, [sp, 0x14]
- movs r2, 0x80
- lsls r2, 4
- mov r8, r2
- add r1, r8
- ldr r2, =0x01000400
- bl CpuSet
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x2
- bl lcd_bg_operations
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x1
- bl lcd_bg_operations
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl lcd_bg_operations
- ldr r0, =gBankSpriteIds
- adds r2, r5, r0
- ldrb r4, [r2]
- ldr r5, =gUnknown_02022E1C
- ldr r3, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r3
- ldrh r0, [r1, 0x24]
- ldrh r4, [r1, 0x20]
- adds r0, r4
- negs r0, r0
- adds r0, 0x20
- strh r0, [r5]
- ldr r4, =gUnknown_02022E1E
- ldrh r0, [r1, 0x26]
- ldrh r1, [r1, 0x22]
- adds r0, r1
- negs r0, r0
- adds r0, 0x20
- strh r0, [r4]
- mov r0, r9
- cmp r0, 0
- beq _080A460E
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080A460E:
- ldrh r1, [r5]
- movs r0, 0x18
- bl SetGpuReg
- ldrh r1, [r4]
- movs r0, 0x1A
- bl SetGpuReg
- lsls r4, r6, 5
- ldr r0, =gPlttBufferUnfaded + 0x200
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x90
- movs r2, 0x20
- bl LoadPalette
- ldr r1, =0x05000120
- ldr r2, =0x04000008
- adds r0, r4, 0
- bl CpuSet
- adds r0, r6, 0
- bl GetBankIdentity
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- add r0, sp, 0x10
- ldrb r0, [r0, 0x8]
- str r0, [sp]
- ldr r0, [sp, 0x10]
- adds r0, r7
- str r0, [sp, 0x4]
- ldr r0, [sp, 0x14]
- add r0, r8
- str r0, [sp, 0x8]
- add r0, sp, 0x10
- ldrh r0, [r0, 0xA]
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl sub_8118FBC
-_080A4666:
- add sp, 0x28
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A438C
-
- thumb_func_start sub_80A46A0
-sub_80A46A0: @ 80A46A0
- push {r4-r7,lr}
- sub sp, 0x10
- ldr r0, =gUnknown_02039F34
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- ldrh r0, [r0]
- bl sub_80DB2A8
- lsls r0, 24
- cmp r0, 0
- beq _080A4712
- mov r0, sp
- bl sub_80A6B30
- ldr r6, [sp, 0x4]
- movs r5, 0
- movs r0, 0x7
- mov r12, r0
- movs r7, 0
-_080A46C6:
- movs r4, 0
- adds r3, r7, r6
- mov r1, r12
- lsls r0, r1, 1
- adds r2, r0, r6
-_080A46D0:
- ldrh r1, [r3]
- ldrh r0, [r2]
- strh r0, [r3]
- strh r1, [r2]
- adds r3, 0x2
- subs r2, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _080A46D0
- movs r0, 0x20
- add r12, r0
- adds r7, 0x40
- adds r5, 0x1
- cmp r5, 0x7
- ble _080A46C6
- movs r5, 0
- movs r1, 0x80
- lsls r1, 3
- adds r3, r1, 0
-_080A46F6:
- adds r2, r5, 0x1
- lsls r0, r5, 6
- adds r1, r0, r6
- movs r4, 0x7
-_080A46FE:
- ldrh r0, [r1]
- eors r0, r3
- strh r0, [r1]
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080A46FE
- adds r5, r2, 0
- cmp r5, 0x7
- ble _080A46F6
-_080A4712:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A46A0
-
- thumb_func_start sub_80A4720
-sub_80A4720: @ 80A4720
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- adds r6, r2, 0
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r3, 24
- movs r0, 0x40
- mov r12, r0
- cmp r3, 0
- bne _080A473C
- movs r1, 0x20
- mov r12, r1
-_080A473C:
- lsls r0, r5, 28
- lsrs r5, r0, 16
- movs r0, 0
- cmp r0, r12
- bge _080A476C
- ldr r7, =0x00000fff
-_080A4748:
- adds r4, r0, 0x1
- lsls r0, 6
- mov r1, r8
- adds r3, r0, r1
- movs r2, 0x1F
-_080A4752:
- ldrh r1, [r3]
- adds r0, r7, 0
- ands r0, r1
- orrs r0, r5
- adds r0, r6
- strh r0, [r3]
- adds r3, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _080A4752
- adds r0, r4, 0
- cmp r0, r12
- blt _080A4748
-_080A476C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A4720
-
- thumb_func_start sub_80A477C
-sub_80A477C: @ 80A477C
- push {r4,lr}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r0, sp
- bl sub_80A6B30
- cmp r4, 0
- beq _080A479C
- bl IsContest
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080A47B8
-_080A479C:
- movs r0, 0x1
- bl sub_80A6C68
- ldr r0, =gUnknown_02022E18
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
- strh r1, [r0]
- b _080A47C6
- .pool
-_080A47B8:
- movs r0, 0x2
- bl sub_80A6C68
- ldr r0, =gUnknown_02022E1C
- strh r4, [r0]
- ldr r0, =gUnknown_02022E1E
- strh r4, [r0]
-_080A47C6:
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A477C
-
- thumb_func_start task_pA_ma0A_obj_to_bg_pal
-@ void task_pA_ma0A_obj_to_bg_pal(int task_id)
-task_pA_ma0A_obj_to_bg_pal: @ 80A47D8
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r5, r1, r2
- ldrb r4, [r5, 0x8]
- ldrb r6, [r5, 0x14]
- mov r0, sp
- bl sub_80A6B30
- ldr r0, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r2, [r1, 0x24]
- ldrh r0, [r1, 0x20]
- adds r2, r0
- ldrh r0, [r5, 0xA]
- subs r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r2, [r1, 0x26]
- ldrh r1, [r1, 0x22]
- adds r2, r1
- ldrh r0, [r5, 0xC]
- subs r0, r2
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0x12
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080A4870
- ldr r1, =gUnknown_02022E18
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r3, [r5, 0xE]
- adds r0, r3
- strh r0, [r1]
- ldr r1, =gUnknown_02022E1A
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r5, [r5, 0x10]
- adds r0, r5
- strh r0, [r1]
- lsls r0, r6, 5
- ldr r2, =gPlttBufferFaded + 0x200
- adds r0, r2
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 5
- ldr r3, =0xfffffe00
- adds r2, r3
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- b _080A4896
- .pool
-_080A4870:
- ldr r1, =gUnknown_02022E1C
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r3, [r5, 0xE]
- adds r0, r3
- strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
- lsls r0, r2, 16
- asrs r0, 16
- ldrh r5, [r5, 0x10]
- adds r0, r5
- strh r0, [r1]
- lsls r0, r6, 5
- ldr r1, =gPlttBufferFaded + 0x200
- adds r0, r1
- subs r1, 0xE0
- ldr r2, =0x04000008
- bl CpuSet
-_080A4896:
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_pA_ma0A_obj_to_bg_pal
-
- thumb_func_start ma0B_0807324C
-ma0B_0807324C: @ 80A48B0
- push {r4,r5,lr}
- ldr r0, =gBattleAnimScriptPtr
- ldr r2, [r0]
- adds r1, r2, 0x1
- str r1, [r0]
- ldrb r4, [r2, 0x1]
- cmp r4, 0
- bne _080A48C8
- movs r4, 0x2
- b _080A48D2
- .pool
-_080A48C8:
- cmp r4, 0x1
- bne _080A48CE
- movs r4, 0x3
-_080A48CE:
- cmp r4, 0
- beq _080A48D6
-_080A48D2:
- cmp r4, 0x2
- bne _080A48E0
-_080A48D6:
- ldr r0, =gAnimationBankAttacker
- b _080A48E2
- .pool
-_080A48E0:
- ldr r0, =gAnimationBankTarget
-_080A48E2:
- ldrb r5, [r0]
- ldr r3, =gUnknown_02038430
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _080A4908
- ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
- adds r0, r5, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_080A4908:
- cmp r4, 0x1
- bls _080A4948
- ldrb r0, [r3, 0x1]
- cmp r0, 0xFF
- beq _080A4948
- ldr r3, =gSprites
- ldr r2, =gBankSpriteIds
- movs r1, 0x2
- adds r0, r5, 0
- eors r0, r1
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- b _080A494A
- .pool
-_080A4948:
- movs r4, 0
-_080A494A:
- ldr r0, =sub_80A4980
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- strh r5, [r1, 0xC]
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma0B_0807324C
-
- thumb_func_start sub_80A4980
-sub_80A4980: @ 80A4980
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- beq _080A4A0A
- ldrb r0, [r1, 0xC]
- bl GetBankIdentity
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _080A49BC
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A49C4
-_080A49BC:
- movs r4, 0
- b _080A49C6
- .pool
-_080A49C4:
- movs r4, 0x1
-_080A49C6:
- ldr r6, =gUnknown_02038430
- ldrb r0, [r6]
- cmp r0, 0xFF
- beq _080A49DE
- adds r0, r4, 0
- bl sub_80A477C
- ldrb r0, [r6]
- bl DestroyTask
- movs r0, 0xFF
- strb r0, [r6]
-_080A49DE:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- ble _080A4A04
- movs r0, 0x1
- eors r4, r0
- adds r0, r4, 0
- bl sub_80A477C
- ldrb r0, [r6, 0x1]
- bl DestroyTask
- movs r0, 0xFF
- strb r0, [r6, 0x1]
-_080A4A04:
- adds r0, r5, 0
- bl DestroyTask
-_080A4A0A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A4980
-
- thumb_func_start sub_80A4A18
-sub_80A4A18: @ 80A4A18
- push {r4,r5,lr}
- ldr r0, =gBattleAnimScriptPtr
- ldr r2, [r0]
- adds r1, r2, 0x1
- str r1, [r0]
- ldrb r5, [r2, 0x1]
- cmp r5, 0
- bne _080A4A30
- movs r5, 0x2
- b _080A4A3A
- .pool
-_080A4A30:
- cmp r5, 0x1
- bne _080A4A36
- movs r5, 0x3
-_080A4A36:
- cmp r5, 0
- beq _080A4A3E
-_080A4A3A:
- cmp r5, 0x2
- bne _080A4A48
-_080A4A3E:
- ldr r0, =gAnimationBankAttacker
- b _080A4A4A
- .pool
-_080A4A48:
- ldr r0, =gAnimationBankTarget
-_080A4A4A:
- ldrb r4, [r0]
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080A4A8A
- adds r0, r4, 0
- bl GetBankIdentity
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _080A4A76
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A4A80
-_080A4A76:
- movs r1, 0
- b _080A4A82
- .pool
-_080A4A80:
- movs r1, 0x1
-_080A4A82:
- adds r0, r4, 0
- movs r2, 0
- bl sub_80A438C
-_080A4A8A:
- movs r0, 0x2
- eors r4, r0
- cmp r5, 0x1
- bls _080A4ACA
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080A4ACA
- adds r0, r4, 0
- bl GetBankIdentity
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _080A4ABC
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A4AC0
-_080A4ABC:
- movs r1, 0
- b _080A4AC2
-_080A4AC0:
- movs r1, 0x1
-_080A4AC2:
- adds r0, r4, 0
- movs r2, 0
- bl sub_80A438C
-_080A4ACA:
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A4A18
-
- thumb_func_start ma23_8073484
-ma23_8073484: @ 80A4ADC
- push {r4-r6,lr}
- ldr r0, =gBattleAnimScriptPtr
- ldr r2, [r0]
- adds r1, r2, 0x1
- str r1, [r0]
- ldrb r5, [r2, 0x1]
- cmp r5, 0
- bne _080A4AF4
- movs r5, 0x2
- b _080A4AFE
- .pool
-_080A4AF4:
- cmp r5, 0x1
- bne _080A4AFA
- movs r5, 0x3
-_080A4AFA:
- cmp r5, 0
- beq _080A4B02
-_080A4AFE:
- cmp r5, 0x2
- bne _080A4B0C
-_080A4B02:
- ldr r0, =gAnimationBankAttacker
- b _080A4B0E
- .pool
-_080A4B0C:
- ldr r0, =gAnimationBankTarget
-_080A4B0E:
- ldrb r6, [r0]
- adds r0, r6, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080A4B38
- ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
- adds r0, r6, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_080A4B38:
- cmp r5, 0x1
- bls _080A4B78
- movs r0, 0x2
- adds r4, r6, 0
- eors r4, r0
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080A4B78
- ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
- adds r0, r4, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- b _080A4B7A
- .pool
-_080A4B78:
- movs r5, 0
-_080A4B7A:
- ldr r0, =sub_80A4BB0
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- strh r6, [r1, 0xC]
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma23_8073484
-
- thumb_func_start sub_80A4BB0
-sub_80A4BB0: @ 80A4BB0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- beq _080A4C3E
- ldrb r4, [r1, 0xC]
- adds r0, r4, 0
- bl GetBankIdentity
- lsls r0, 24
- movs r1, 0xFF
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _080A4BEE
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A4BF8
-_080A4BEE:
- movs r5, 0
- b _080A4BFA
- .pool
-_080A4BF8:
- movs r5, 0x1
-_080A4BFA:
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080A4C0C
- adds r0, r5, 0
- bl sub_80A477C
-_080A4C0C:
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- ble _080A4C38
- movs r0, 0x2
- eors r4, r0
- adds r0, r4, 0
- bl b_side_obj__get_some_boolean
- lsls r0, 24
- cmp r0, 0
- beq _080A4C38
- movs r0, 0x1
- eors r5, r0
- adds r0, r5, 0
- bl sub_80A477C
-_080A4C38:
- adds r0, r6, 0
- bl DestroyTask
-_080A4C3E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A4BB0
-
- thumb_func_start ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument
-ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument: @ 80A4C48
- push {r4,r5,lr}
- ldr r2, =gBattleAnimScriptPtr
- ldr r0, [r2]
- adds r1, r0, 0x1
- str r1, [r2]
- ldrb r5, [r0, 0x1]
- adds r0, r1, 0x1
- str r0, [r2]
- ldrb r4, [r1, 0x1]
- lsls r4, 8
- adds r0, 0x1
- str r0, [r2]
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- orrs r5, r4
- movs r0, 0x52
- adds r1, r5, 0
- bl SetGpuReg
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument
-
- thumb_func_start ma1E_set_BLDCNT
-ma1E_set_BLDCNT: @ 80A4C80
- push {lr}
- ldr r3, =gBattleAnimScriptPtr
- ldr r0, [r3]
- adds r2, r0, 0x1
- str r2, [r3]
- ldrb r1, [r0, 0x1]
- adds r0, r2, 0x1
- str r0, [r3]
- ldrb r2, [r2, 0x1]
- lsls r2, 8
- adds r0, 0x1
- str r0, [r3]
- orrs r1, r2
- movs r0, 0x50
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma1E_set_BLDCNT
-
- thumb_func_start ma0D_reset_BLDCNT_and_BLDALPHA
-ma0D_reset_BLDCNT_and_BLDALPHA: @ 80A4CA8
- push {lr}
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma0D_reset_BLDCNT_and_BLDALPHA
-
- thumb_func_start ma0E_call
-ma0E_call: @ 80A4CCC
- push {r4,lr}
- ldr r4, =gBattleAnimScriptPtr
- ldr r1, [r4]
- adds r3, r1, 0x1
- str r3, [r4]
- ldr r2, =gBattleAnimScriptRetAddr
- adds r0, r1, 0x5
- str r0, [r2]
- ldrb r1, [r1, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma0E_call
-
- thumb_func_start sub_80A4D00
-sub_80A4D00: @ 80A4D00
- ldr r0, =gBattleAnimScriptPtr
- ldr r1, =gBattleAnimScriptRetAddr
- ldr r1, [r1]
- str r1, [r0]
- bx lr
- .pool
- thumb_func_end sub_80A4D00
-
- thumb_func_start ma10_080736AC
-ma10_080736AC: @ 80A4D14
- push {r4,r5,lr}
- ldr r5, =gBattleAnimScriptPtr
- ldr r1, [r5]
- adds r0, r1, 0x1
- str r0, [r5]
- ldrb r2, [r1, 0x1]
- adds r3, r0, 0x1
- str r3, [r5]
- ldrb r4, [r0, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- orrs r4, r0
- adds r1, 0x4
- str r1, [r5]
- ldr r0, =gBattleAnimArgs
- lsls r2, 1
- adds r2, r0
- strh r4, [r2]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma10_080736AC
-
- thumb_func_start ma11_if_else
-ma11_if_else: @ 80A4D48
- push {lr}
- ldr r3, =gBattleAnimScriptPtr
- ldr r2, [r3]
- adds r0, r2, 0x1
- str r0, [r3]
- ldr r0, =gUnknown_02038432
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080A4D62
- adds r0, r2, 0x5
- str r0, [r3]
-_080A4D62:
- ldr r2, [r3]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma11_if_else
-
- thumb_func_start ma12_cond_if
-ma12_cond_if: @ 80A4D88
- push {r4,r5,lr}
- ldr r5, =gBattleAnimScriptPtr
- ldr r4, [r5]
- adds r2, r4, 0x1
- str r2, [r5]
- ldrb r1, [r4, 0x1]
- adds r3, r2, 0x1
- str r3, [r5]
- ldr r0, =gUnknown_02038432
- ldrb r0, [r0]
- cmp r1, r0
- bne _080A4DC0
- ldrb r1, [r2, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r5]
- b _080A4DC4
- .pool
-_080A4DC0:
- adds r0, r4, 0x6
- str r0, [r5]
-_080A4DC4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end ma12_cond_if
-
- thumb_func_start ma13_goto
-ma13_goto: @ 80A4DCC
- ldr r3, =gBattleAnimScriptPtr
- ldr r0, [r3]
- adds r2, r0, 0x1
- str r2, [r3]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
- bx lr
- .pool
- thumb_func_end ma13_goto
-
- thumb_func_start IsContest
-IsContest: @ 80A4DF0
- push {lr}
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080A4E10
- movs r0, 0
- b _080A4E12
- .pool
-_080A4E10:
- movs r0, 0x1
-_080A4E12:
- pop {r1}
- bx r1
- thumb_func_end IsContest
-
- thumb_func_start ma14_load_background
-ma14_load_background: @ 80A4E18
- push {r4,lr}
- ldr r1, =gBattleAnimScriptPtr
- ldr r2, [r1]
- adds r0, r2, 0x1
- str r0, [r1]
- ldrb r4, [r2, 0x1]
- adds r0, 0x1
- str r0, [r1]
- ldr r0, =task_p5_load_battle_screen_elements
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- ldr r1, =gUnknown_02038433
- movs r0, 0x1
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma14_load_background
-
- thumb_func_start sub_80A4E5C
-sub_80A4E5C: @ 80A4E5C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r2, =gBattleAnimScriptPtr
- ldr r1, [r2]
- adds r0, r1, 0x1
- str r0, [r2]
- ldrb r3, [r1, 0x1]
- mov r8, r3
- ldrb r7, [r0, 0x1]
- ldrb r6, [r0, 0x2]
- adds r1, 0x4
- str r1, [r2]
- ldr r0, =task_p5_load_battle_screen_elements
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A4EA8
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r6, [r0, 0x8]
- b _080A4EDA
- .pool
-_080A4EA8:
- ldr r0, =gAnimationBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080A4ECC
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r7, [r0, 0x8]
- b _080A4EDA
- .pool
-_080A4ECC:
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- mov r1, r8
- strh r1, [r0, 0x8]
-_080A4EDA:
- ldr r1, =gUnknown_02038433
- movs r0, 0x1
- strb r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A4E5C
-
- thumb_func_start task_p5_load_battle_screen_elements
-task_p5_load_battle_screen_elements: @ 80A4EF4
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r6, [r4, 0x1C]
- movs r0, 0x1C
- ldrsh r3, [r4, r0]
- adds r7, r1, 0
- cmp r3, 0
- bne _080A4F2C
- str r3, [sp]
- movs r0, 0xE8
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginHardwarePaletteFade
- ldrh r0, [r4, 0x1C]
- adds r0, 0x1
- strh r0, [r4, 0x1C]
- b _080A4FBC
- .pool
-_080A4F2C:
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A4FBC
- cmp r3, 0x1
- bne _080A4F50
- adds r0, r6, 0x1
- strh r0, [r4, 0x1C]
- ldr r1, =gUnknown_02038433
- movs r0, 0x2
- strb r0, [r1]
- b _080A4F94
- .pool
-_080A4F50:
- cmp r3, 0x2
- bne _080A4F94
- ldrh r0, [r4, 0x8]
- lsls r2, r0, 16
- asrs r1, r2, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080A4F68
- bl dp01t_11_3_message_for_player_only
- b _080A4F6E
-_080A4F68:
- lsrs r0, r2, 16
- bl sub_80A4FC8
-_080A4F6E:
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xE8
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x1C]
- adds r1, 0x1
- strh r1, [r0, 0x1C]
- b _080A4FBC
- .pool
-_080A4F94:
- ldrb r1, [r2, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080A4FBC
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r7
- movs r1, 0x1C
- ldrsh r0, [r0, r1]
- cmp r0, 0x3
- bne _080A4FBC
- adds r0, r5, 0
- bl DestroyTask
- ldr r0, =gUnknown_02038433
- strb r4, [r0]
-_080A4FBC:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_p5_load_battle_screen_elements
-
- thumb_func_start sub_80A4FC8
-sub_80A4FC8: @ 80A4FC8
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r7, r0, 16
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A5050
- ldr r6, =gUnknown_08525D54
- lsls r4, r7, 1
- adds r4, r7
- lsls r4, 2
- adds r0, r6, 0
- adds r0, 0x8
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r5, =0x0201c000
- adds r1, r5, 0
- bl LZDecompressWram
- bl sub_80A6D94
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- adds r1, r5, 0
- movs r3, 0
- bl sub_80A4720
- ldr r1, =0x0600d000
- ldr r0, =0x040000d4
- str r5, [r0]
- str r1, [r0, 0x4]
- ldr r1, =0x84000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- adds r0, r4, r6
- ldr r0, [r0]
- ldr r1, =0x06002000
- bl LZDecompressVram
- adds r6, 0x4
- adds r4, r6
- ldr r4, [r4]
- bl sub_80A6D94
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 20
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- b _080A507E
- .pool
-_080A5050:
- ldr r5, =gUnknown_08525D54
- lsls r4, r7, 1
- adds r4, r7
- lsls r4, 2
- adds r0, r5, 0
- adds r0, 0x8
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, =0x0600d000
- bl LZDecompressVram
- adds r0, r4, r5
- ldr r0, [r0]
- ldr r1, =0x06008000
- bl LZDecompressVram
- adds r5, 0x4
- adds r4, r5
- ldr r0, [r4]
- movs r1, 0x20
- movs r2, 0x20
- bl LoadCompressedPalette
-_080A507E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A4FC8
-
- thumb_func_start dp01t_11_3_message_for_player_only
-dp01t_11_3_message_for_player_only: @ 80A5090
- push {lr}
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A50A2
- bl sub_80D7724
- b _080A50A6
-_080A50A2:
- bl load_battle_oval_graphics
-_080A50A6:
- pop {r0}
- bx r0
- thumb_func_end dp01t_11_3_message_for_player_only
-
- thumb_func_start ma15_load_battle_screen_elements
-ma15_load_battle_screen_elements: @ 80A50AC
- push {lr}
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r0, =task_p5_load_battle_screen_elements
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, =0x0000ffff
- strh r0, [r1, 0x8]
- ldr r1, =gUnknown_02038433
- movs r0, 0x1
- strb r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma15_load_battle_screen_elements
-
- thumb_func_start ma16_wait_for_battle_screen_elements_s2
-ma16_wait_for_battle_screen_elements_s2: @ 80A50F0
- push {lr}
- ldr r0, =gUnknown_02038433
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080A5114
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r1, =gAnimFramesToWait
- movs r0, 0
- b _080A5118
- .pool
-_080A5114:
- ldr r1, =gAnimFramesToWait
- movs r0, 0x1
-_080A5118:
- strb r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma16_wait_for_battle_screen_elements_s2
-
- thumb_func_start sub_80A5124
-sub_80A5124: @ 80A5124
- push {lr}
- ldr r0, =gUnknown_02038433
- ldrb r2, [r0]
- cmp r2, 0
- bne _080A5148
- ldr r0, =gBattleAnimScriptPtr
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- ldr r0, =gAnimFramesToWait
- strb r2, [r0]
- b _080A514E
- .pool
-_080A5148:
- ldr r1, =gAnimFramesToWait
- movs r0, 0x1
- strb r0, [r1]
-_080A514E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A5124
-
- thumb_func_start ma18_load_background_probably
-ma18_load_background_probably: @ 80A5158
- push {r4,lr}
- ldr r4, =gBattleAnimScriptPtr
- ldr r1, [r4]
- adds r0, r1, 0x1
- str r0, [r4]
- ldrb r0, [r1, 0x1]
- bl sub_80A4FC8
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma18_load_background_probably
-
- thumb_func_start BattleAnimGetPanControl
-BattleAnimGetPanControl: @ 80A5178
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A51C0
- ldr r0, =gUnknown_020244D0
- ldr r1, [r0]
- ldr r0, =gAnimationBankAttacker
- ldrb r2, [r0]
- ldr r1, [r1, 0x4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A51C0
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- movs r4, 0xC0
- cmp r0, 0
- beq _080A5252
- movs r4, 0x3F
- b _080A5252
- .pool
-_080A51C0:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A51E8
- ldr r0, =gAnimationBankAttacker
- ldr r1, =gAnimationBankTarget
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bne _080A524C
- cmp r0, 0x2
- bne _080A524C
- cmp r4, 0x3F
- beq _080A525E
- b _080A524C
- .pool
-_080A51E8:
- ldr r0, =gAnimationBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080A5226
- ldr r0, =gAnimationBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080A5252
- lsls r0, r4, 24
- asrs r1, r0, 24
- cmp r1, 0x3F
- bne _080A5218
- movs r4, 0xC0
- b _080A5252
- .pool
-_080A5218:
- movs r0, 0x40
- negs r0, r0
- cmp r1, r0
- beq _080A5252
- negs r0, r1
- lsls r0, 24
- b _080A5250
-_080A5226:
- ldr r0, =gAnimationBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080A524C
- lsls r0, r4, 24
- asrs r0, 24
- movs r1, 0x40
- negs r1, r1
- cmp r0, r1
- bne _080A5252
- movs r4, 0x3F
- b _080A5252
- .pool
-_080A524C:
- lsls r0, r4, 24
- negs r0, r0
-_080A5250:
- lsrs r4, r0, 24
-_080A5252:
- lsls r0, r4, 24
- asrs r0, 24
- cmp r0, 0x3F
- ble _080A525E
- movs r4, 0x3F
- b _080A526C
-_080A525E:
- lsls r0, r4, 24
- asrs r0, 24
- movs r1, 0x40
- negs r1, r1
- cmp r0, r1
- bge _080A526C
- movs r4, 0xC0
-_080A526C:
- lsls r0, r4, 24
- asrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end BattleAnimGetPanControl
-
- thumb_func_start sub_80A5278
-sub_80A5278: @ 80A5278
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A52C0
- ldr r0, =gUnknown_020244D0
- ldr r1, [r0]
- ldr r0, =gAnimationBankAttacker
- ldrb r2, [r0]
- ldr r1, [r1, 0x4]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080A52C0
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- movs r4, 0xC0
- cmp r0, 0
- beq _080A52DE
- movs r4, 0x3F
- b _080A52DE
- .pool
-_080A52C0:
- ldr r0, =gAnimationBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080A52D8
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A52DE
-_080A52D8:
- lsls r0, r4, 24
- negs r0, r0
- lsrs r4, r0, 24
-_080A52DE:
- lsls r0, r4, 24
- asrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80A5278
-
- thumb_func_start sub_80A52EC
-sub_80A52EC: @ 80A52EC
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r2, r0, 16
- cmp r2, 0x3F
- ble _080A52FC
- movs r1, 0x3F
- b _080A5306
-_080A52FC:
- movs r0, 0x40
- negs r0, r0
- cmp r2, r0
- bge _080A5306
- ldr r1, =0x0000ffc0
-_080A5306:
- lsls r0, r1, 16
- asrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80A52EC
-
- thumb_func_start sub_80A5314
-sub_80A5314: @ 80A5314
- push {lr}
- lsls r2, 16
- lsrs r2, 16
- adds r3, r2, 0
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- bge _080A5332
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0
- bge _080A5342
- b _080A5340
-_080A5332:
- cmp r0, r1
- ble _080A5348
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0
- bge _080A5340
- negs r0, r0
-_080A5340:
- negs r0, r0
-_080A5342:
- lsls r0, 16
- lsrs r0, 16
- b _080A534A
-_080A5348:
- movs r0, 0
-_080A534A:
- lsls r0, 16
- asrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_80A5314
-
- thumb_func_start ma19_08073BC8
-ma19_08073BC8: @ 80A5354
- push {r4,r5,lr}
- ldr r5, =gBattleAnimScriptPtr
- ldr r0, [r5]
- adds r1, r0, 0x1
- str r1, [r5]
- ldrb r4, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r4, r0
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl BattleAnimGetPanControl
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- adds r0, r4, 0
- bl PlaySE12WithPanning
- ldr r0, [r5]
- adds r0, 0x3
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma19_08073BC8
-
- thumb_func_start ma1A_8073C00
-ma1A_8073C00: @ 80A538C
- push {r4,lr}
- ldr r4, =gBattleAnimScriptPtr
- ldr r1, [r4]
- adds r0, r1, 0x1
- str r0, [r4]
- movs r0, 0x1
- ldrsb r0, [r1, r0]
- bl BattleAnimGetPanControl
- lsls r0, 24
- asrs r0, 24
- bl SE12PanpotControl
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma1A_8073C00
-
- thumb_func_start ma1B_8073C2C
-ma1B_8073C2C: @ 80A53B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gBattleAnimScriptPtr
- mov r10, r0
- ldr r0, [r0]
- adds r1, r0, 0x1
- mov r2, r10
- str r1, [r2]
- ldrb r0, [r0, 0x1]
- mov r9, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- mov r2, r9
- orrs r2, r0
- mov r9, r2
- ldrb r4, [r1, 0x3]
- ldrb r6, [r1, 0x4]
- ldrb r7, [r1, 0x5]
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl BattleAnimGetPanControl
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- asrs r4, 24
- adds r0, r4, 0
- bl BattleAnimGetPanControl
- mov r8, r0
- lsls r5, 24
- asrs r5, 24
- mov r0, r8
- lsls r0, 24
- asrs r0, 24
- mov r8, r0
- lsls r6, 24
- asrs r6, 24
- adds r0, r5, 0
- mov r1, r8
- adds r2, r6, 0
- bl sub_80A5314
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =c3_08073CEC
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- mov r2, r8
- strh r2, [r1, 0xA]
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0xC]
- strh r7, [r1, 0xE]
- strh r5, [r1, 0x10]
- mov r0, r9
- adds r1, r5, 0
- bl PlaySE12WithPanning
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r1, r10
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma1B_8073C2C
-
- thumb_func_start c3_08073CEC
-c3_08073CEC: @ 80A5478
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r7, 0
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x18]
- adds r1, r0, 0x1
- strh r1, [r2, 0x18]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0xE
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _080A54FC
- strh r7, [r2, 0x18]
- ldrh r6, [r2, 0x8]
- ldrh r3, [r2, 0xA]
- movs r4, 0x10
- ldrsh r0, [r2, r4]
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- adds r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- strh r4, [r2, 0x10]
- cmp r1, 0
- bne _080A54C0
- lsls r2, r3, 16
- b _080A54E4
- .pool
-_080A54C0:
- lsls r1, r6, 16
- lsls r0, r3, 16
- asrs r3, r0, 16
- adds r2, r0, 0
- cmp r1, r2
- bge _080A54D6
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r3
- blt _080A54E0
- b _080A54E4
-_080A54D6:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r3
- bgt _080A54E0
- movs r7, 0x1
-_080A54E0:
- cmp r7, 0
- beq _080A54F4
-_080A54E4:
- lsrs r4, r2, 16
- adds r0, r5, 0
- bl DestroyTask
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080A54F4:
- lsls r0, r4, 24
- asrs r0, 24
- bl SE12PanpotControl
-_080A54FC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c3_08073CEC
-
- thumb_func_start sub_80A5508
-sub_80A5508: @ 80A5508
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- ldr r0, =gBattleAnimScriptPtr
- mov r9, r0
- ldr r0, [r0]
- adds r1, r0, 0x1
- mov r2, r9
- str r1, [r2]
- ldrb r0, [r0, 0x1]
- mov r8, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- mov r2, r8
- orrs r2, r0
- mov r8, r2
- ldrb r4, [r1, 0x2]
- ldrb r5, [r1, 0x3]
- ldrb r6, [r1, 0x4]
- ldrb r1, [r1, 0x5]
- mov r10, r1
- ldr r0, =c3_08073CEC
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0x8]
- lsls r5, 24
- asrs r5, 24
- strh r5, [r1, 0xA]
- lsls r6, 24
- asrs r6, 24
- strh r6, [r1, 0xC]
- mov r0, r10
- strh r0, [r1, 0xE]
- strh r4, [r1, 0x10]
- mov r0, r8
- adds r1, r4, 0
- bl PlaySE12WithPanning
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r1, r9
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A5508
-
- thumb_func_start sub_80A559C
-sub_80A559C: @ 80A559C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gBattleAnimScriptPtr
- mov r10, r0
- ldr r0, [r0]
- adds r1, r0, 0x1
- mov r2, r10
- str r1, [r2]
- ldrb r0, [r0, 0x1]
- mov r9, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- mov r2, r9
- orrs r2, r0
- mov r9, r2
- ldrb r4, [r1, 0x3]
- ldrb r0, [r1, 0x4]
- mov r8, r0
- ldrb r7, [r1, 0x5]
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl sub_80A5278
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- asrs r4, 24
- adds r0, r4, 0
- bl sub_80A5278
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- mov r0, r8
- bl sub_80A5278
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =c3_08073CEC
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- lsls r6, 24
- asrs r6, 24
- strh r6, [r1, 0x8]
- lsls r5, 24
- asrs r5, 24
- strh r5, [r1, 0xA]
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0xC]
- strh r7, [r1, 0xE]
- strh r6, [r1, 0x10]
- mov r0, r9
- adds r1, r6, 0
- bl PlaySE12WithPanning
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r2, r10
- ldr r0, [r2]
- adds r0, 0x6
- str r0, [r2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A559C
-
- thumb_func_start ma1C_8073ED0
-ma1C_8073ED0: @ 80A565C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- ldr r6, =gBattleAnimScriptPtr
- ldr r0, [r6]
- adds r1, r0, 0x1
- str r1, [r6]
- ldrb r5, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r5, r0
- ldrb r0, [r1, 0x3]
- mov r8, r0
- ldrb r2, [r1, 0x4]
- mov r9, r2
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl BattleAnimGetPanControl
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =sub_80A56E4
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0xA]
- mov r2, r8
- strh r2, [r1, 0xC]
- mov r2, r9
- strh r2, [r1, 0xE]
- mov r2, r8
- strh r2, [r1, 0x18]
- ldr r1, [r1]
- bl _call_via_r1
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x5
- str r0, [r6]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma1C_8073ED0
-
- thumb_func_start sub_80A56E4
-sub_80A56E4: @ 80A56E4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x18]
- adds r1, r0, 0x1
- strh r1, [r2, 0x18]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0xC
- ldrsh r1, [r2, r3]
- cmp r0, r1
- blt _080A5732
- movs r0, 0
- strh r0, [r2, 0x18]
- ldrh r0, [r2, 0x8]
- ldrb r1, [r2, 0xA]
- ldrh r4, [r2, 0xE]
- subs r4, 0x1
- strh r4, [r2, 0xE]
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- asrs r1, 24
- bl PlaySE12WithPanning
- cmp r4, 0
- bne _080A5732
- adds r0, r5, 0
- bl DestroyTask
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080A5732:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A56E4
-
- thumb_func_start ma1D_08073FB4
-ma1D_08073FB4: @ 80A5740
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r6, =gBattleAnimScriptPtr
- ldr r0, [r6]
- adds r1, r0, 0x1
- str r1, [r6]
- ldrb r5, [r0, 0x1]
- ldrb r0, [r1, 0x1]
- lsls r0, 8
- orrs r5, r0
- ldrb r0, [r1, 0x3]
- mov r8, r0
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- bl BattleAnimGetPanControl
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =sub_80A57B4
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r5, [r1, 0x8]
- lsls r4, 24
- asrs r4, 24
- strh r4, [r1, 0xA]
- mov r0, r8
- strh r0, [r1, 0xC]
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x4
- str r0, [r6]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma1D_08073FB4
-
- thumb_func_start sub_80A57B4
-sub_80A57B4: @ 80A57B4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0xC]
- subs r1, r0, 0x1
- strh r1, [r2, 0xC]
- lsls r0, 16
- cmp r0, 0
- bgt _080A57E8
- ldrh r0, [r2, 0x8]
- movs r1, 0xA
- ldrsb r1, [r2, r1]
- bl PlaySE12WithPanning
- adds r0, r4, 0
- bl DestroyTask
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
-_080A57E8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A57B4
-
- thumb_func_start sub_80A57F8
-sub_80A57F8: @ 80A57F8
- push {r4-r6,lr}
- ldr r4, =gBattleAnimScriptPtr
- ldr r1, [r4]
- adds r3, r1, 0x1
- str r3, [r4]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r3, 0x1]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r3, 0x2]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 24
- adds r6, r2, r0
- adds r0, r1, 0x5
- str r0, [r4]
- ldrb r0, [r1, 0x5]
- adds r1, 0x6
- str r1, [r4]
- cmp r0, 0
- beq _080A5842
- adds r5, r4, 0
- ldr r4, =gBattleAnimArgs
- adds r3, r0, 0
-_080A582A:
- ldr r2, [r5]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- orrs r1, r0
- strh r1, [r4]
- adds r2, 0x2
- str r2, [r5]
- adds r4, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _080A582A
-_080A5842:
- adds r0, r6, 0
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r6
- ldr r1, =gAnimSoundTaskCount
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A57F8
-
- thumb_func_start ma20_wait_for_something
-ma20_wait_for_something: @ 80A586C
- push {r4,r5,lr}
- ldr r0, =gAnimSoundTaskCount
- ldrb r5, [r0]
- cmp r5, 0
- bne _080A58B4
- bl IsSEPlaying
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080A58CC
- ldr r4, =gSoundAnimFramesToWait
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x5A
- bls _080A58BA
- ldr r0, =gMPlay_SE1
- bl m4aMPlayStop
- ldr r0, =gMPlay_SE2
- bl m4aMPlayStop
- strh r5, [r4]
- b _080A58DE
- .pool
-_080A58B4:
- ldr r1, =gSoundAnimFramesToWait
- movs r0, 0
- strh r0, [r1]
-_080A58BA:
- ldr r1, =gAnimFramesToWait
- movs r0, 0x1
- strb r0, [r1]
- b _080A58DE
- .pool
-_080A58CC:
- ldr r0, =gSoundAnimFramesToWait
- movs r2, 0
- strh r1, [r0]
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r0, =gAnimFramesToWait
- strb r2, [r0]
-_080A58DE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma20_wait_for_something
-
- thumb_func_start ma21_08074164
-ma21_08074164: @ 80A58F0
- push {r4-r6,lr}
- ldr r5, =gBattleAnimScriptPtr
- ldr r4, [r5]
- adds r3, r4, 0x1
- str r3, [r5]
- ldrb r2, [r4, 0x1]
- ldrb r1, [r3, 0x1]
- ldrb r0, [r3, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r0, =gBattleAnimArgs
- lsls r2, 1
- adds r2, r0
- lsls r1, 16
- asrs r1, 16
- movs r6, 0
- ldrsh r0, [r2, r6]
- cmp r1, r0
- bne _080A5938
- ldrb r1, [r3, 0x3]
- ldrb r0, [r3, 0x4]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 24
- adds r1, r0
- str r1, [r5]
- b _080A593E
- .pool
-_080A5938:
- adds r0, r4, 0
- adds r0, 0x8
- str r0, [r5]
-_080A593E:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end ma21_08074164
-
- thumb_func_start sub_80A5944
-sub_80A5944: @ 80A5944
- push {r4,lr}
- ldr r4, =gBattleAnimScriptPtr
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080A5978
- ldr r2, [r4]
- ldrb r1, [r2]
- ldrb r0, [r2, 0x1]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x2]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 24
- adds r1, r0
- str r1, [r4]
- b _080A597E
- .pool
-_080A5978:
- ldr r0, [r4]
- adds r0, 0x4
- str r0, [r4]
-_080A597E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A5944
-
- thumb_func_start sub_80A5984
-sub_80A5984: @ 80A5984
- push {r4,lr}
- ldr r0, =gBattleAnimScriptPtr
- ldr r1, [r0]
- ldrb r2, [r1, 0x1]
- adds r1, 0x2
- str r1, [r0]
- cmp r2, 0
- beq _080A59A0
- ldr r0, =gAnimationBankTarget
- b _080A59A2
- .pool
-_080A59A0:
- ldr r0, =gAnimationBankAttacker
-_080A59A2:
- ldrb r0, [r0]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A59D2
- cmp r4, 0
- beq _080A59BE
- cmp r4, 0x3
- bne _080A59D2
-_080A59BE:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl lcd_bg_operations
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x2
- bl lcd_bg_operations
-_080A59D2:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A5984
-
- thumb_func_start sub_80A59DC
-sub_80A59DC: @ 80A59DC
- push {lr}
- ldr r0, =gBattleAnimScriptPtr
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A5A04
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl lcd_bg_operations
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x2
- bl lcd_bg_operations
-_080A5A04:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A59DC
-
- thumb_func_start sub_80A5A0C
-sub_80A5A0C: @ 80A5A0C
- push {r4-r7,lr}
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- ldrb r6, [r0, 0x1]
- adds r0, 0x2
- str r0, [r1]
- ldr r7, =gAnimationBankAttacker
- ldrb r0, [r7]
- bl GetBankSide
- adds r4, r0, 0
- ldr r5, =gAnimationBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _080A5A78
- cmp r6, 0
- beq _080A5A48
- ldrb r0, [r5]
- b _080A5A4A
- .pool
-_080A5A48:
- ldrb r0, [r7]
-_080A5A4A:
- bl GetBankIdentity
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A5A78
- cmp r4, 0
- beq _080A5A64
- cmp r4, 0x3
- bne _080A5A78
-_080A5A64:
- movs r0, 0x1
- movs r1, 0x4
- movs r2, 0x1
- bl lcd_bg_operations
- movs r0, 0x2
- movs r1, 0x4
- movs r2, 0x2
- bl lcd_bg_operations
-_080A5A78:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A5A0C
-
- thumb_func_start ma2B_make_side_invisible
-ma2B_make_side_invisible: @ 80A5A80
- push {r4,lr}
- ldr r4, =gBattleAnimScriptPtr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080A5AA8
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080A5AA8:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma2B_make_side_invisible
-
- thumb_func_start ma2C_make_side_visible
-ma2C_make_side_visible: @ 80A5ABC
- push {r4,lr}
- ldr r4, =gBattleAnimScriptPtr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080A5AE6
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_080A5AE6:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma2C_make_side_visible
-
- thumb_func_start sub_80A5AFC
-sub_80A5AFC: @ 80A5AFC
- push {r4-r7,lr}
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- ldrb r7, [r0, 0x1]
- adds r0, 0x2
- str r0, [r1]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A5BA6
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- beq _080A5BA6
- ldr r6, =gAnimationBankAttacker
- ldrb r0, [r6]
- bl GetBankSide
- adds r4, r0, 0
- ldr r5, =gAnimationBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080A5BA6
- cmp r7, 0
- bne _080A5B54
- ldrb r0, [r6]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- b _080A5B60
- .pool
-_080A5B54:
- ldrb r0, [r5]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
-_080A5B60:
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080A5BA6
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r2, r0, r1
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- cmp r4, 0x2
- bne _080A5B90
- ldrb r0, [r2, 0x5]
- movs r1, 0xC
- orrs r0, r1
- strb r0, [r2, 0x5]
-_080A5B90:
- cmp r4, 0x1
- bne _080A5BA0
- movs r0, 0
- bl sub_80A477C
- b _080A5BA6
- .pool
-_080A5BA0:
- movs r0, 0x1
- bl sub_80A477C
-_080A5BA6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80A5AFC
-
- thumb_func_start sub_80A5BAC
-sub_80A5BAC: @ 80A5BAC
- push {r4-r7,lr}
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- ldrb r7, [r0, 0x1]
- adds r0, 0x2
- str r0, [r1]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080A5C38
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- beq _080A5C38
- ldr r6, =gAnimationBankAttacker
- ldrb r0, [r6]
- bl GetBankSide
- adds r4, r0, 0
- ldr r5, =gAnimationBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080A5C38
- cmp r7, 0
- bne _080A5C04
- ldrb r0, [r6]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- b _080A5C10
- .pool
-_080A5C04:
- ldrb r0, [r5]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
-_080A5C10:
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080A5C38
- cmp r4, 0x2
- bne _080A5C38
- ldr r1, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0, 0x5]
-_080A5C38:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A5BAC
-
- thumb_func_start ma2F_stop_music
-ma2F_stop_music: @ 80A5C44
- push {lr}
- ldr r0, =gMPlay_SE1
- bl m4aMPlayStop
- ldr r0, =gMPlay_SE2
- bl m4aMPlayStop
- ldr r1, =gBattleAnimScriptPtr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end ma2F_stop_music
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_80A9C70.s b/asm/battle_anim_80A9C70.s
index 16366988e..9b2939673 100644
--- a/asm/battle_anim_80A9C70.s
+++ b/asm/battle_anim_80A9C70.s
@@ -26,9 +26,9 @@ sub_80A9C70: @ 80A9C70
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r0, =gUnknown_08524F84
+ ldr r0, =gBattleAnimPicTable + 0x440
bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_0852588C
+ ldr r0, =gBattleAnimPaletteTable + 0x440
bl LoadCompressedObjectPaletteUsingHeap
ldr r1, =gTasks
mov r2, r8
@@ -331,7 +331,7 @@ sub_80A9EF4: @ 80A9EF4
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -616,7 +616,7 @@ _080AA16C:
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080AA186:
pop {r4}
pop {r0}
@@ -629,7 +629,7 @@ sub_80AA18C: @ 80AA18C
lsls r0, 24
lsrs r4, r0, 24
movs r3, 0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrh r0, [r0]
@@ -829,7 +829,7 @@ _080AA322:
b _080AA330
_080AA328:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080AA352
_080AA330:
ldr r0, =gBattleAnimArgs
@@ -863,13 +863,13 @@ move_anim_start_t2: @ 80AA364
lsrs r4, 24
lsls r1, 24
lsrs r1, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
strb r4, [r0]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
strb r4, [r0]
ldr r0, =gUnknown_082C92FC
movs r2, 0
- bl move_something
+ bl DoBattleAnim
ldr r0, =task0A_80788BC
movs r1, 0xA
bl CreateTask
@@ -899,7 +899,7 @@ task0A_80788BC: @ 80AA3B4
ldrb r0, [r0]
cmp r0, 0
bne _080AA3F6
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r1, =gTasks
lsls r0, r4, 2
diff --git a/asm/battle_anim_80D51AC.s b/asm/battle_anim_80D51AC.s
index c2ea27485..3ee1786ad 100755
--- a/asm/battle_anim_80D51AC.s
+++ b/asm/battle_anim_80D51AC.s
@@ -18,7 +18,7 @@ sub_80D51AC: @ 80D51AC
cmp r2, 0xFF
bne _080D51D0
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080D520C
.pool
_080D51D0:
@@ -140,7 +140,7 @@ _080D5288:
adds r0, r6
strh r3, [r0, 0x26]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080D52CA
_080D52C6:
subs r0, 0x1
@@ -200,11 +200,11 @@ _080D5320:
_080D5324:
movs r0, 0x3
_080D5326:
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _080D533C
@@ -216,7 +216,7 @@ _080D533C:
.pool
_080D5348:
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
_080D5350:
@@ -226,7 +226,7 @@ _080D5352:
beq _080D5368
_080D5356:
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080D53A6
.pool
_080D5368:
@@ -359,7 +359,7 @@ _080D5436:
adds r0, r7
strh r2, [r0, 0x26]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080D5478
_080D5474:
subs r0, r2, 0x1
@@ -385,7 +385,7 @@ sub_80D5484: @ 80D5484
cmp r3, 0xFF
bne _080D54A8
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080D54F6
.pool
_080D54A8:
@@ -584,7 +584,7 @@ _080D55F8:
strh r0, [r2, 0x26]
_080D5630:
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080D563C
_080D5638:
subs r0, r2, 0x1
@@ -705,7 +705,7 @@ _080D56F6:
cmp r0, 0
bne _080D5728
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080D5728:
pop {r4-r7}
pop {r0}
@@ -829,7 +829,7 @@ _080D5810:
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080D5822:
pop {r4-r6}
pop {r0}
@@ -842,7 +842,7 @@ sub_80D5830: @ 80D5830
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -871,7 +871,7 @@ sub_80D5860: @ 80D5860
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -892,7 +892,7 @@ _080D5894:
strh r2, [r4, 0x2E]
strh r0, [r4, 0x32]
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -919,7 +919,7 @@ sub_80D58D4: @ 80D58D4
strh r1, [r0, 0x30]
ldr r1, =sub_80A6630
str r1, [r0, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
@@ -970,7 +970,7 @@ sub_80D5944: @ 80D5944
strh r1, [r0, 0x32]
ldr r1, =sub_80A6630
str r1, [r0, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
@@ -988,12 +988,12 @@ sub_80D5968: @ 80D5968
cmp r0, 0
bne _080D598C
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _080D5990
.pool
_080D598C:
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_080D5990:
ldrb r0, [r0]
adds r0, r1
@@ -1093,7 +1093,7 @@ _080D5A56:
strh r1, [r3, 0x26]
_080D5A58:
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _080D5A8E
.pool
_080D5A64:
@@ -1133,11 +1133,11 @@ sub_80D5A94: @ 80D5A94
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D5AB0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _080D5AB2
.pool
_080D5AB0:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_080D5AB2:
ldrb r2, [r0]
ldr r0, =gBankSpriteIds
@@ -1192,7 +1192,7 @@ _080D5ADC:
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A6680
@@ -1218,11 +1218,11 @@ sub_80D5B48: @ 80D5B48
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D5B70
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _080D5B72
.pool
_080D5B70:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_080D5B72:
ldrb r1, [r0]
ldr r0, =gBankSpriteIds
@@ -1281,7 +1281,7 @@ _080D5B9C:
lsls r0, 16
cmp r0, 0
bne _080D5C04
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r6, 0
bl StoreSpriteCallbackInData6
b _080D5C0C
@@ -1318,7 +1318,7 @@ sub_80D5C20: @ 80D5C20
lsls r1, 2
adds r1, r4
strh r3, [r1, 0x26]
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
@@ -1338,7 +1338,7 @@ sub_80D5C50: @ 80D5C50
bl __divsi3
lsls r0, 16
lsrs r7, r0, 16
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1485,7 +1485,7 @@ _080D5D70:
cmp r0, 0
bne _080D5DA4
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080D5DA4:
pop {r4,r5}
pop {r0}
@@ -1518,16 +1518,16 @@ _080D5DD8:
beq _080D5DE8
b _080D5E10
_080D5DDE:
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
b _080D5DEA
.pool
_080D5DE8:
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
_080D5DEA:
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080D5E10
@@ -1540,7 +1540,7 @@ _080D5DEA:
.pool
_080D5E10:
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080D5E58
_080D5E18:
ldr r1, =gTasks
@@ -1549,7 +1549,7 @@ _080D5E18:
lsls r0, 3
adds r5, r0, r1
strh r2, [r5, 0x8]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1609,7 +1609,7 @@ sub_80D5E6C: @ 80D5E6C
cmp r1, r0
bls _080D5EAA
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080D5EAA:
pop {r4}
pop {r0}
@@ -1622,7 +1622,7 @@ sub_80D5EB8: @ 80D5EB8
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
bl GetBankSide
lsls r0, 24
@@ -1660,7 +1660,7 @@ _080D5ED4:
b _080D5F18
.pool
_080D5F14:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
_080D5F18:
strh r0, [r2, 0x12]
@@ -1817,7 +1817,7 @@ _080D601E:
strh r3, [r0, 0x24]
strh r3, [r0, 0x26]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080D6050:
pop {r3,r4}
mov r8, r3
@@ -1923,7 +1923,7 @@ _080D6120:
adds r0, r6, 0
bl sub_80A7344
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080D612C:
pop {r4-r6}
pop {r0}
@@ -1995,11 +1995,11 @@ _080D61B8:
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080D61C8
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _080D61CA
.pool
_080D61C8:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_080D61CA:
ldrb r0, [r0]
bl GetBankSide
@@ -2076,11 +2076,11 @@ sub_80D622C: @ 80D622C
ldrsh r0, [r4, r1]
cmp r0, 0
bne _080D6274
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _080D6276
.pool
_080D6274:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_080D6276:
ldrb r0, [r0]
bl GetBankSide
@@ -2201,7 +2201,7 @@ _080D6364:
bl sub_80A7344
_080D636A:
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080D6382
_080D6372:
movs r0, 0
@@ -2236,7 +2236,7 @@ sub_80D6388: @ 80D6388
adds r0, r5, r7
lsls r0, 3
adds r6, r0, r4
- ldr r0, =gMovePowerMoveAnim
+ ldr r0, =gAnimMovePower
ldrh r0, [r0]
movs r1, 0xC
bl __udivsi3
@@ -2248,7 +2248,7 @@ _080D63C0:
adds r0, r5, r7
lsls r0, 3
adds r6, r0, r4
- ldr r0, =gMoveDmgMoveAnim
+ ldr r0, =gAnimMoveDmg
ldr r0, [r0]
movs r1, 0xC
bl __divsi3
@@ -2435,7 +2435,7 @@ _080D6518:
adds r0, r2
strh r4, [r0, 0x26]
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080D654A:
pop {r4,r5}
pop {r0}
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s
index f35b2f7da..dc927cacc 100644
--- a/asm/battle_anim_80FE840.s
+++ b/asm/battle_anim_80FE840.s
@@ -22,7 +22,7 @@ sub_80FE840: @ 80FE840
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x30]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -80,7 +80,7 @@ sub_80FE898: @ 80FE898
b _080FE8DA
_080FE8D4:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FE8DA:
pop {r4}
pop {r0}
@@ -96,7 +96,7 @@ sub_80FE8E0: @ 80FE8E0
ldr r0, =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -132,7 +132,7 @@ sub_80FE930: @ 80FE930
bl StartSpriteAnim
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -147,7 +147,7 @@ sub_80FE930: @ 80FE930
strh r0, [r4, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -167,7 +167,7 @@ sub_80FE988: @ 80FE988
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -212,14 +212,14 @@ _080FE9FA:
ldrsh r0, [r4, r1]
cmp r0, 0x7F
ble _080FEA14
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A82E4
adds r0, 0x1
b _080FEA1E
.pool
_080FEA14:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A82E4
adds r0, 0x6
@@ -287,7 +287,7 @@ sub_80FEA58: @ 80FEA58
strh r0, [r1, 0x4]
strh r2, [r1, 0x6]
ldr r4, =gUnknown_08592210
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A82E4
adds r3, r0, 0
@@ -304,7 +304,7 @@ _080FEAB2:
cmp r0, 0xF
bne _080FEAC0
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080FEAC0:
pop {r4-r6}
pop {r0}
@@ -321,7 +321,7 @@ sub_80FEAD8: @ 80FEAD8
ldr r6, =gBattleAnimArgs
ldrh r0, [r6, 0x6]
strh r0, [r4, 0x2E]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -355,7 +355,7 @@ sub_80FEB28: @ 80FEB28
cmp r0, 0
beq _080FEB3C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FEB3C:
pop {r4}
pop {r0}
@@ -374,7 +374,7 @@ sub_80FEB44: @ 80FEB44
ands r1, r0
adds r0, r5, 0
bl StartSpriteAnim
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -410,7 +410,7 @@ _080FEB94:
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -454,7 +454,7 @@ sub_80FEBFC: @ 80FEBFC
cmp r0, 0
beq _080FEC12
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _080FEC42
_080FEC12:
movs r1, 0x38
@@ -494,7 +494,7 @@ sub_80FEC48: @ 80FEC48
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -508,7 +508,7 @@ _080FEC68:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0
bl sub_80A5C6C
@@ -583,7 +583,7 @@ sub_80FECF0: @ 80FECF0
strh r0, [r4, 0x2E]
ldr r0, =sub_80A64B0
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
@@ -655,7 +655,7 @@ sub_80FED74: @ 80FED74
lsrs r0, 16
cmp r0, 0x7F
bhi _080FEDC8
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -669,7 +669,7 @@ sub_80FED74: @ 80FED74
b _080FEDEC
.pool
_080FEDC8:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A8328
adds r0, 0x1
@@ -704,7 +704,7 @@ _080FEDEC:
cmp r0, r1
bne _080FEE10
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FEE10:
pop {r4}
pop {r0}
@@ -721,18 +721,18 @@ sub_80FEE1C: @ 80FEE1C
lsls r0, 24
cmp r0, 0
bne _080FEE36
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _080FEE3E
_080FEE36:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080FEE70
_080FEE3E:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -740,17 +740,17 @@ _080FEE3E:
movs r0, 0x2
movs r1, 0x4
movs r2, 0x3
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
b _080FEE6A
.pool
_080FEE60:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_080FEE6A:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080FEE70:
pop {r4}
pop {r0}
@@ -771,7 +771,7 @@ sub_80FEE78: @ 80FEE78
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
bl sub_80A5C6C
@@ -823,14 +823,14 @@ sub_80FEECC: @ 80FEECC
lsrs r0, 16
cmp r0, 0x7F
bhi _080FEF18
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
b _080FEF22
.pool
_080FEF18:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A82E4
adds r0, 0x1
@@ -847,7 +847,7 @@ _080FEF22:
.pool
_080FEF38:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FEF3E:
pop {r4}
pop {r0}
@@ -868,7 +868,7 @@ sub_80FEF44: @ 80FEF44
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
bl sub_80A5C6C
@@ -939,7 +939,7 @@ _080FEFE4:
b _080FEFF6
_080FEFF0:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FEFF6:
pop {r4}
pop {r0}
@@ -950,7 +950,7 @@ _080FEFF6:
sub_80FEFFC: @ 80FEFFC
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -1026,7 +1026,7 @@ _080FF08C:
sub_80FF090: @ 80FF090
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1067,7 +1067,7 @@ _080FF0DE:
cmp r0, 0x50
ble _080FF0EC
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FF0EC:
pop {r4}
pop {r0}
@@ -1080,7 +1080,7 @@ sub_80FF0F4: @ 80FF0F4
adds r5, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1098,7 +1098,7 @@ _080FF114:
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080FF154
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -1117,7 +1117,7 @@ _080FF114:
b _080FF174
.pool
_080FF154:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -1139,11 +1139,11 @@ _080FF174:
strh r0, [r5, 0x38]
adds r0, r5, 0
bl sub_80A68D4
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
adds r4, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
@@ -1249,7 +1249,7 @@ _080FF256:
cmp r7, 0
beq _080FF260
adds r0, r6, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FF260:
pop {r4-r7}
pop {r0}
@@ -1260,12 +1260,12 @@ _080FF260:
sub_80FF268: @ 80FF268
push {r4,lr}
adds r4, r0, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _080FF28A
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -1350,7 +1350,7 @@ _080FF2F8:
ldrsh r0, [r4, r1]
cmp r0, 0x7F
bgt _080FF338
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A8328
lsls r0, 24
@@ -1359,7 +1359,7 @@ _080FF2F8:
b _080FF346
.pool
_080FF338:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A8328
lsls r0, 24
@@ -1382,7 +1382,7 @@ _080FF346:
cmp r0, 0
bne _080FF36A
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FF36A:
pop {r4,r5}
pop {r0}
@@ -1500,7 +1500,7 @@ _080FF424:
b _080FF452
_080FF44C:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FF452:
pop {r4}
pop {r0}
@@ -1534,7 +1534,7 @@ sub_80FF458: @ 80FF458
cmp r0, 0
bge _080FF498
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080FF51C
.pool
_080FF498:
@@ -1550,7 +1550,7 @@ _080FF498:
lsls r0, 28
lsrs r0, 30
strh r0, [r6, 0x24]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
mov r9, r0
ldrb r0, [r0]
bl sub_80A8328
@@ -1639,7 +1639,7 @@ sub_80FF53C: @ 80FF53C
lsls r1, 16
asrs r1, 24
strh r1, [r5, 0x24]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1765,7 +1765,7 @@ _080FF674:
cmp r0, 0x3
bne _080FF68E
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080FF68E:
pop {r4-r7}
pop {r0}
@@ -1785,7 +1785,7 @@ sub_80FF698: @ 80FF698
beq _080FF704
b _080FF756
_080FF6AA:
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
bl GetBankSide
lsls r0, 24
@@ -1845,7 +1845,7 @@ _080FF704:
bl ChangeSpriteAffineAnim
movs r0, 0x19
strh r0, [r5, 0x2E]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -1860,7 +1860,7 @@ _080FF704:
strh r0, [r5, 0x36]
ldr r0, =sub_80A70C0
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
_080FF756:
@@ -1878,7 +1878,7 @@ sub_80FF768: @ 80FF768
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080FF7D4
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -1941,7 +1941,7 @@ sub_80FF7EC: @ 80FF7EC
push {r4-r6}
sub sp, 0x4
mov r9, r0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -1956,7 +1956,7 @@ sub_80FF7EC: @ 80FF7EC
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_80A5C6C
@@ -2081,7 +2081,7 @@ _080FF91C:
cmp r1, r0
ble _080FF92E
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FF92E:
pop {r0}
bx r0
@@ -2095,7 +2095,7 @@ sub_80FF934: @ 80FF934
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080FF974
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -2144,7 +2144,7 @@ _080FF974:
cmp r1, r0
ble _080FF9AA
adds r0, r6, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FF9AA:
pop {r4-r6}
pop {r0}
@@ -2284,7 +2284,7 @@ _080FFA98:
cmp r0, 0x32
ble _080FFAAC
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FFAAC:
pop {r4}
pop {r0}
@@ -2349,7 +2349,7 @@ sub_80FFB18: @ 80FFB18
adds r5, r0, 0
movs r1, 0
bl sub_80A69CC
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -2360,7 +2360,7 @@ sub_80FFB18: @ 80FFB18
bl sub_80A5C6C
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -2442,7 +2442,7 @@ _080FFBBA:
strh r5, [r4, 0x26]
strh r5, [r4, 0x2E]
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FFBEC:
pop {r4,r5}
pop {r0}
@@ -2453,7 +2453,7 @@ _080FFBEC:
sub_80FFBF4: @ 80FFBF4
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x1
bl sub_80A5C6C
@@ -2537,7 +2537,7 @@ _080FFC8A:
cmp r0, 0
beq _080FFCAA
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FFCAA:
pop {r4}
pop {r0}
@@ -2551,7 +2551,7 @@ sub_80FFCB4: @ 80FFCB4
adds r5, r0, 0
movs r1, 0
bl sub_80A6980
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -2562,7 +2562,7 @@ sub_80FFCB4: @ 80FFCB4
bl sub_80A5C6C
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -2640,7 +2640,7 @@ _080FFD56:
cmp r0, 0
bne _080FFD8A
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -2658,7 +2658,7 @@ _080FFD8A:
str r0, [r4, 0x1C]
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -2915,7 +2915,7 @@ sub_80FFF7C: @ 80FFF7C
cmp r0, 0x14
ble _080FFF8E
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080FFF8E:
movs r0, 0x2E
ldrsh r1, [r4, r0]
@@ -2954,7 +2954,7 @@ sub_80FFFC0: @ 80FFFC0
lsls r0, 3
ldr r1, =gTasks
adds r5, r0, r1
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
bl sub_80A82E4
lsls r0, 24
@@ -3017,7 +3017,7 @@ _08100028:
cmp r0, 0x40
bne _08100060
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08100060:
ldr r4, =gSprites
movs r0, 0xC
@@ -3581,7 +3581,7 @@ _081004D6:
cmp r0, 0
bne _081004FC
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _081004FC
_081004E6:
ldrh r0, [r6, 0xA]
@@ -3772,11 +3772,11 @@ sub_8100640: @ 8100640
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810065C
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0810065E
.pool
_0810065C:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0810065E:
ldrb r6, [r0]
adds r0, r6, 0
@@ -3857,7 +3857,7 @@ _081006E4:
strb r0, [r4, 0x5]
b _08100738
_08100700:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x3
bl sub_80A5C6C
@@ -4047,7 +4047,7 @@ _08100876:
cmp r1, r0
bne _0810088A
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810088A:
pop {r4-r7}
pop {r0}
@@ -4066,7 +4066,7 @@ sub_8100898: @ 8100898
cmp r0, 0
bne _081008B4
adds r0, r6, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _0810098E
.pool
_081008B4:
@@ -4074,11 +4074,11 @@ _081008B4:
ldrsh r0, [r1, r3]
cmp r0, 0
bne _081008C4
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _081008C6
.pool
_081008C4:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_081008C6:
ldrb r0, [r4]
movs r1, 0x2
@@ -4227,7 +4227,7 @@ sub_81009DC: @ 81009DC
cmp r0, 0
beq _081009F2
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081009F2:
pop {r0}
bx r0
@@ -4237,7 +4237,7 @@ _081009F2:
sub_81009F8: @ 81009F8
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4264,7 +4264,7 @@ _08100A2C:
strh r0, [r4, 0x22]
ldr r0, =sub_80A67D8
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
@@ -4277,7 +4277,7 @@ _08100A2C:
sub_8100A50: @ 8100A50
push {r4,r5,lr}
adds r5, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4343,7 +4343,7 @@ sub_8100A94: @ 8100A94
sub_8100AE0: @ 8100AE0
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -4439,7 +4439,7 @@ sub_8100B88: @ 8100B88
b _08100C24
.pool
_08100BA8:
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
@@ -4453,7 +4453,7 @@ _08100BA8:
b _08100C34
.pool
_08100BC8:
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0
bl sub_80A5C6C
@@ -4469,7 +4469,7 @@ _08100BC8:
mov r8, r2
mov r1, r8
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08100C3E
@@ -4494,7 +4494,7 @@ _08100BC8:
b _08100C3E
.pool
_08100C24:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -4509,7 +4509,7 @@ _08100C34:
_08100C3E:
strh r7, [r6, 0x20]
strh r4, [r6, 0x22]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4619,7 +4619,7 @@ _08100CF2:
asrs r0, 16
cmp r0, 0x14
bne _08100D28
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
movs r0, 0x3
@@ -4739,7 +4739,7 @@ _08100DE0:
adds r0, r4
bl DestroySprite
adds r0, r5, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08100E10:
pop {r4,r5}
pop {r0}
@@ -4754,7 +4754,7 @@ sub_8100E1C: @ 8100E1C
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2E]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4846,7 +4846,7 @@ _08100EB2:
cmp r0, r1
bne _08100EE8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08100EE8:
pop {r4}
pop {r0}
@@ -4866,7 +4866,7 @@ sub_8100EF0: @ 8100EF0
adds r0, 0x8
strh r0, [r1, 0x2]
_08100F06:
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
movs r1, 0
bl sub_80A60AC
@@ -5090,7 +5090,7 @@ _081010C2:
sub_81010CC: @ 81010CC
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_80A5C6C
@@ -5309,7 +5309,7 @@ _0810127A:
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08101290:
pop {r4}
pop {r0}
@@ -5406,7 +5406,7 @@ _08101320:
strh r0, [r4, 0x30]
ldrh r0, [r5, 0x8]
strh r0, [r4, 0x32]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A656C
@@ -5426,21 +5426,21 @@ sub_810135C: @ 810135C
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08101378
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0810137A
.pool
_08101378:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0810137A:
ldrb r6, [r0]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081013C4
movs r1, 0x2
adds r0, r6, 0
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _081013C4
@@ -5507,7 +5507,7 @@ _08101414:
strh r0, [r5, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r5, 0x32]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A656C
@@ -5523,7 +5523,7 @@ sub_8101440: @ 8101440
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -5599,7 +5599,7 @@ _081014D8:
cmp r0, 0
beq _081014EC
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081014EC:
pop {r4}
pop {r0}
@@ -5611,7 +5611,7 @@ sub_81014F4: @ 81014F4
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -5778,7 +5778,7 @@ _08101604:
adds r0, r1
strh r0, [r5, 0x38]
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -5885,7 +5885,7 @@ _08101718:
strh r1, [r5, 0x24]
movs r0, 0x6
strh r0, [r5, 0x2E]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -5975,7 +5975,7 @@ _081017A4:
movs r2, 0x4
bl LoadPalette
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -6052,7 +6052,7 @@ _0810187C:
cmp r0, 0x8
bne _08101890
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08101890:
pop {r4}
pop {r0}
@@ -6199,7 +6199,7 @@ sub_8101998: @ 8101998
adds r4, r0, 0
movs r0, 0x6
strh r0, [r4, 0x2E]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -6238,7 +6238,7 @@ sub_81019E8: @ 81019E8
cmp r6, 0
bne _08101A24
ldr r1, =gBankSpriteIds
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
@@ -6301,7 +6301,7 @@ sub_8101A74: @ 8101A74
adds r4, r0, 0
movs r0, 0x4
strh r0, [r4, 0x2E]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -6361,7 +6361,7 @@ sub_8101AE8: @ 8101AE8
cmp r0, 0
bne _08101B38
ldr r1, =gBankSpriteIds
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
@@ -6431,7 +6431,7 @@ _08101B78:
thumb_func_start sub_8101B84
sub_8101B84: @ 8101B84
push {lr}
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r0}
bx r0
thumb_func_end sub_8101B84
@@ -6466,7 +6466,7 @@ _08101BB6:
_08101BBC:
strh r5, [r4, 0x30]
ldr r1, =gBankSpriteIds
- ldr r2, =gAnimationBankAttacker
+ ldr r2, =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
@@ -6558,7 +6558,7 @@ _08101C4C:
lsrs r0, 24
bl sub_80A7344
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08101C8E:
pop {r4,r5}
pop {r0}
@@ -6576,7 +6576,7 @@ sub_8101C94: @ 8101C94
lsls r0, 3
adds r5, r0, r1
ldr r1, =gBankSpriteIds
- ldr r2, =gAnimationBankAttacker
+ ldr r2, =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
@@ -6596,7 +6596,7 @@ sub_8101C94: @ 8101C94
cmp r1, 0x1
beq _08101D04
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08101D22
.pool
_08101CE8:
@@ -6864,7 +6864,7 @@ _08101ED4:
.pool
_08101EE0:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08101EE6:
pop {r4}
pop {r0}
@@ -6906,7 +6906,7 @@ _08101F2C:
ldrb r0, [r4, 0x8]
bl sub_80A7344
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08101F38:
pop {r4,r5}
pop {r0}
@@ -6922,11 +6922,11 @@ sub_8101F40: @ 8101F40
ldrsh r0, [r6, r1]
cmp r0, 0
bne _08101F5C
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _08101F5E
.pool
_08101F5C:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_08101F5E:
ldrb r0, [r4]
movs r1, 0x2
@@ -6962,7 +6962,7 @@ _08101F5E:
sub_8101FA8: @ 8101FA8
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -6992,7 +6992,7 @@ sub_8101FA8: @ 8101FA8
sub_8101FF0: @ 8101FF0
push {r4-r6,lr}
adds r4, r0, 0
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -7100,7 +7100,7 @@ sub_810208C: @ 810208C
cmp r0, 0x8
ble _081020D4
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081020D4:
pop {r0}
bx r0
@@ -7115,11 +7115,11 @@ sub_81020D8: @ 81020D8
ldrsh r0, [r6, r1]
cmp r0, 0
bne _081020F4
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _081020F6
.pool
_081020F4:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_081020F6:
ldrb r0, [r4]
movs r1, 0
@@ -7181,7 +7181,7 @@ _0810215C:
cmp r0, 0
beq _08102178
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08102178:
pop {r0}
bx r0
@@ -7191,7 +7191,7 @@ _08102178:
sub_810217C: @ 810217C
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x2
bl sub_80A5C6C
@@ -7213,7 +7213,7 @@ sub_810217C: @ 810217C
strh r5, [r4, 0x34]
strh r5, [r4, 0x36]
subs r0, 0x42
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r4, 0x38]
@@ -7301,7 +7301,7 @@ _08102238:
cmp r0, 0
beq _08102262
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08102262:
pop {r4}
pop {r0}
@@ -7316,7 +7316,7 @@ sub_8102268: @ 8102268
ldrsh r0, [r6, r1]
cmp r0, 0
bne _081022B2
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -7352,7 +7352,7 @@ _081022B2:
cmp r1, r0
bne _081022C2
adds r0, r6, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081022C2:
pop {r4-r6}
pop {r0}
@@ -7383,7 +7383,7 @@ _08102300:
cmp r0, 0x2
bne _0810230C
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08102344
_0810230C:
ldrh r0, [r4, 0x8]
@@ -7465,7 +7465,7 @@ _08102390:
strb r0, [r2]
movs r0, 0x1E
strh r0, [r5, 0x2E]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -7480,7 +7480,7 @@ _08102390:
strh r0, [r5, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
_081023CC:
@@ -7525,7 +7525,7 @@ sub_81023E0: @ 81023E0
cmp r0, 0x10
bne _08102428
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08102428:
pop {r4,r5}
pop {r0}
@@ -7557,7 +7557,7 @@ _08102448:
bne _08102464
adds r0, r4, r5
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
_08102464:
movs r1, 0x2
ldrsh r0, [r6, r1]
@@ -7571,7 +7571,7 @@ _08102464:
bne _08102482
adds r0, r4, r5
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
_08102482:
adds r0, r4, 0x1
lsls r0, 24
@@ -7582,7 +7582,7 @@ _08102482:
bcc _08102448
_08102490:
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4-r7}
pop {r0}
bx r0
@@ -7600,7 +7600,7 @@ _081024B2:
ldr r0, =gHealthBoxesIds
adds r0, r4, r0
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
@@ -7610,7 +7610,7 @@ _081024C2:
cmp r4, r0
bcc _081024B2
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
@@ -7663,7 +7663,7 @@ sub_8102528: @ 8102528
cmp r0, 0
beq _0810253A
adds r0, r1, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810253A:
pop {r0}
bx r0
@@ -7673,7 +7673,7 @@ _0810253A:
sub_8102540: @ 8102540
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x2
bl sub_80A5C6C
@@ -7729,7 +7729,7 @@ _081025AE:
cmp r0, 0
beq _081025BC
adds r0, r1, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081025BC:
pop {r0}
bx r0
@@ -8034,7 +8034,7 @@ _08102820:
cmp r0, 0
bne _08102832
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08102832:
add sp, 0x4
pop {r3}
@@ -8068,7 +8068,7 @@ _08102862:
strh r0, [r5, 0x2E]
ldrh r0, [r6, 0x4]
strh r0, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -8113,7 +8113,7 @@ _08102862:
b _081028FA
.pool
_081028D4:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -8216,7 +8216,7 @@ _081029A2:
cmp r0, 0
bne _081029B0
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081029B0:
pop {r0}
bx r0
@@ -8333,9 +8333,9 @@ _08102A88:
_08102A9A:
ldr r0, =sub_8102AE0
str r0, [r6]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -8374,9 +8374,9 @@ sub_8102AE0: @ 8102AE0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08102B32
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -8396,7 +8396,7 @@ _08102B26:
ldr r0, =0x00002771
bl FreeSpritePaletteByTag
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08102B32:
pop {r4}
pop {r0}
@@ -8481,7 +8481,7 @@ _08102BC2:
sub_8102BCC: @ 8102BCC
push {r4,lr}
adds r4, r0, 0
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A67D8
str r0, [r4, 0x1C]
@@ -8575,7 +8575,7 @@ _08102C7A:
cmp r4, 0x3
bls _08102C32
mov r0, r9
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r3,r4}
mov r8, r3
mov r9, r4
@@ -8605,7 +8605,7 @@ _08102CAA:
cmp r4, 0x3
bls _08102CAA
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
@@ -8657,7 +8657,7 @@ _08102D10:
b _08102D4E
.pool
_08102D34:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -8855,7 +8855,7 @@ _08102EA6:
sub_8102EB0: @ 8102EB0
push {r4-r7,lr}
adds r6, r0, 0
- ldr r7, =gAnimationBankAttacker
+ ldr r7, =gAnimBankAttacker
ldrb r0, [r7]
bl GetBankSide
lsls r0, 24
@@ -9002,7 +9002,7 @@ sub_8102FB8: @ 8102FB8
_08102FDC:
ldr r6, =0x0000fff0
_08102FDE:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -9021,7 +9021,7 @@ _08102FDE:
strh r0, [r5, 0x2E]
ldr r0, =sub_80A64B0
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4-r6}
@@ -9135,7 +9135,7 @@ _081030DC:
b _08103106
_08103100:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08103106:
pop {r4}
pop {r0}
@@ -9197,11 +9197,11 @@ sub_8103164: @ 8103164
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08103180
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08103182
.pool
_08103180:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08103182:
ldrb r4, [r0]
adds r0, r4, 0
@@ -9242,7 +9242,7 @@ sub_81031D0: @ 81031D0
lsls r0, 16
cmp r0, 0
bne _081031F8
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldrh r1, [r4, 0x30]
@@ -9268,11 +9268,11 @@ sub_8103208: @ 8103208
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08103224
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08103226
.pool
_08103224:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08103226:
ldrb r0, [r0]
adds r1, r4, 0
@@ -9325,11 +9325,11 @@ sub_8103284: @ 8103284
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081032A0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _081032A2
.pool
_081032A0:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_081032A2:
ldrb r5, [r0]
adds r0, r5, 0
@@ -9463,11 +9463,11 @@ sub_8103390: @ 8103390
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081033AC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _081033AE
.pool
_081033AC:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_081033AE:
ldrb r4, [r0]
adds r0, r4, 0
@@ -9541,7 +9541,7 @@ sub_810342C: @ 810342C
cmp r0, 0x5
ble _08103444
adds r0, r1, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08103444:
pop {r0}
bx r0
@@ -9591,11 +9591,11 @@ sub_8103498: @ 8103498
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081034B4
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _081034B6
.pool
_081034B4:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_081034B6:
ldrb r0, [r0]
adds r1, r4, 0
@@ -9664,7 +9664,7 @@ _08103524:
cmp r0, 0x40
bne _08103538
adds r0, r1, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08103538:
pop {r0}
bx r0
@@ -9716,7 +9716,7 @@ _0810357A:
sub_810358C: @ 810358C
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -9730,7 +9730,7 @@ sub_810358C: @ 810358C
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r6, [r0]
@@ -9830,7 +9830,7 @@ sub_8103680: @ 8103680
cmp r0, 0
bne _08103696
adds r0, r1, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _0810369A
_08103696:
subs r0, r2, 0x1
@@ -9847,7 +9847,7 @@ sub_81036A0: @ 81036A0
lsls r4, 24
lsrs r4, 24
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -9872,7 +9872,7 @@ sub_81036DC: @ 81036DC
lsls r0, 24
lsrs r5, r0, 24
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r1, r0, r1
ldrb r4, [r1]
@@ -9974,7 +9974,7 @@ _081037AA:
adds r0, r4, 0
bl sub_80A7344
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _081037D0
.pool
_081037CC:
@@ -9992,7 +9992,7 @@ sub_81037D8: @ 81037D8
push {r4,r5,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -10018,7 +10018,7 @@ _08103810:
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -10054,7 +10054,7 @@ _0810384C:
_08103860:
ldr r0, =sub_80A67D8
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -10092,7 +10092,7 @@ sub_81038A0: @ 81038A0
strh r1, [r0, 0x36]
ldr r1, =sub_80A6EEC
str r1, [r0, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
@@ -10117,7 +10117,7 @@ sub_81038C8: @ 81038C8
b _0810390E
.pool
_081038EC:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -10137,7 +10137,7 @@ _0810390E:
adds r0, r5, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -10201,7 +10201,7 @@ _08103980:
strh r7, [r5, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
add sp, 0x4
@@ -10507,7 +10507,7 @@ sub_8103BE4: @ 8103BE4
cmp r0, 0
bne _08103C02
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08103C02:
pop {r0}
bx r0
@@ -10604,7 +10604,7 @@ _08103C90:
strh r0, [r4, 0xA]
movs r0, 0x3F
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10676,8 +10676,8 @@ _08103D54:
strh r0, [r3, 0x4]
b _08103DB6
_08103D5C:
- ldr r1, =gBanksBySide
- ldr r0, =gAnimationBankTarget
+ ldr r1, =gBanksByIdentity
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -10716,7 +10716,7 @@ _08103DB0:
_08103DB4:
strh r0, [r2, 0x4]
_08103DB6:
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_80A5C6C
@@ -10742,11 +10742,11 @@ _08103DB6:
ands r0, r1
cmp r0, 0
beq _08103E20
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08103E20
@@ -10759,7 +10759,7 @@ _08103DB6:
.pool
_08103E20:
mov r5, sp
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -10897,7 +10897,7 @@ _08103F28:
asrs r0, 16
cmp r0, 0x3F
ble _08103FA0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -10914,7 +10914,7 @@ _08103F78:
asrs r0, 16
cmp r0, 0x3F
ble _08103FA0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -10927,7 +10927,7 @@ _08103F78:
b _08103FB0
.pool
_08103FA0:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -11035,7 +11035,7 @@ _08104050:
cmp r0, 0x18
bne _0810407C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810407C:
pop {r4-r7}
pop {r0}
@@ -11050,7 +11050,7 @@ sub_8104088: @ 8104088
adds r5, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -11066,7 +11066,7 @@ sub_8104088: @ 8104088
adds r0, r1
lsls r0, 16
lsrs r7, r0, 16
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11112,7 +11112,7 @@ _081040CC:
strh r7, [r5, 0x36]
ldr r0, =sub_80A7000
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
add sp, 0x4
@@ -11145,7 +11145,7 @@ sub_8104154: @ 8104154
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11184,7 +11184,7 @@ _08104178:
cmp r0, 0x2
bne _081041B8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081041B8:
pop {r4}
pop {r0}
@@ -11200,7 +11200,7 @@ sub_81041C4: @ 81041C4
bl sub_80A69CC
movs r0, 0x14
strh r0, [r4, 0x2E]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -11235,7 +11235,7 @@ sub_810421C: @ 810421C
push {r4,lr}
adds r4, r0, 0
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -11339,7 +11339,7 @@ _081042BE:
cmp r0, 0x1
bne _081042FE
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081042FE:
pop {r4}
pop {r0}
@@ -11352,7 +11352,7 @@ sub_8104304: @ 8104304
adds r4, r0, 0
movs r1, 0
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11375,7 +11375,7 @@ _08104322:
strh r0, [r4, 0x36]
ldr r0, =sub_80A62EC
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r1, [r4, 0x1C]
@@ -11423,7 +11423,7 @@ _08104390:
strh r0, [r5, 0x22]
movs r0, 0x6
strh r0, [r5, 0x2E]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -11462,7 +11462,7 @@ sub_81043F8: @ 81043F8
cmp r0, 0
beq _0810440E
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810440E:
pop {r0}
bx r0
@@ -11510,7 +11510,7 @@ _08104448:
movs r0, 0x6
strh r0, [r5, 0x2E]
strh r1, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -11664,7 +11664,7 @@ sub_8104594: @ 8104594
cmp r0, 0
beq _081045A8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081045A8:
pop {r4}
pop {r0}
@@ -11752,7 +11752,7 @@ sub_8104614: @ 8104614
movs r1, 0x1
bl sub_80A750C
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08104664:
pop {r4,r5}
pop {r0}
@@ -11786,7 +11786,7 @@ sub_8104674: @ 8104674
strh r0, [r4, 0x10]
strh r5, [r4, 0x12]
strh r5, [r4, 0x14]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -11946,7 +11946,7 @@ _081047D8:
movs r1, 0
strh r1, [r0, 0x26]
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081047F6:
pop {r4,r5}
pop {r0}
@@ -12124,7 +12124,7 @@ sub_8104938: @ 8104938
cmp r0, 0
bne _08104964
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _0810498A
.pool
_08104964:
@@ -12276,7 +12276,7 @@ _08104A64:
adds r0, r2
strh r5, [r0, 0x26]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08104AA8
.pool
_08104A9C:
@@ -12333,7 +12333,7 @@ sub_8104AF0: @ 8104AF0
cmp r0, 0
bne _08104B10
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08104B10:
pop {r4}
pop {r0}
@@ -12345,7 +12345,7 @@ _08104B10:
sub_8104B1C: @ 8104B1C
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -12378,7 +12378,7 @@ _08104B50:
ldr r0, =0x0000ffc0
_08104B6A:
strh r0, [r4, 0x30]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
bl sub_80A5C6C
@@ -12391,7 +12391,7 @@ _08104B6A:
strh r1, [r4, 0x32]
strh r1, [r4, 0x34]
strh r1, [r4, 0x36]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A656C
@@ -12411,11 +12411,11 @@ sub_8104BAC: @ 8104BAC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08104BC8
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08104BCA
.pool
_08104BC8:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08104BCA:
ldrb r5, [r0]
adds r0, r5, 0
@@ -12509,7 +12509,7 @@ sub_8104C78: @ 8104C78
cmp r0, 0
bne _08104C98
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08104C98:
pop {r4}
pop {r0}
@@ -12559,7 +12559,7 @@ sub_8104CA4: @ 8104CA4
strh r2, [r4, 0x18]
movs r0, 0x2
strh r0, [r4, 0x1A]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -12741,7 +12741,7 @@ _08104E48:
strh r1, [r0, 0x22]
_08104E66:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08104E6C:
pop {r4,r5}
pop {r0}
@@ -12759,7 +12759,7 @@ sub_8104E74: @ 8104E74
lsls r1, 3
ldr r0, =gTasks
adds r5, r1, r0
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
bl sub_80A6190
lsls r0, 24
@@ -12777,19 +12777,19 @@ sub_8104E74: @ 8104E74
bl sub_80A861C
strh r0, [r5, 0x26]
ldrb r0, [r4]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08104ED4
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r5, 0x14]
ldr r0, =0x04000014
b _08104EDC
.pool
_08104ED4:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r5, 0x14]
ldr r0, =0x04000018
@@ -12947,7 +12947,7 @@ _08104FF0:
movs r0, 0x3
strb r0, [r1, 0x15]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810500E:
pop {r4}
pop {r0}
@@ -12959,7 +12959,7 @@ _0810500E:
sub_810501C: @ 810501C
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0
bl sub_80A5C6C
@@ -12986,7 +12986,7 @@ sub_810501C: @ 810501C
adds r0, 0x2
strh r0, [r4, 0x38]
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r4, 0x3A]
@@ -13169,7 +13169,7 @@ _0810519A:
ands r0, r1
strb r0, [r2]
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081051BC:
pop {r4}
pop {r0}
@@ -13194,25 +13194,25 @@ sub_81051C4: @ 81051C4
adds r1, r0, 0
cmp r2, 0
bne _081051F0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _081051F2
.pool
_081051F0:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_081051F2:
ldrb r5, [r0]
ldrb r1, [r1, 0x6]
movs r0, 0x1
adds r4, r0, 0
eors r4, r1
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0810526A
movs r1, 0x2
adds r0, r5, 0
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810526A
@@ -13278,7 +13278,7 @@ sub_8105284: @ 8105284
adds r0, r4, 0
bl FreeSpriteOamMatrix
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810529E:
pop {r4}
pop {r0}
@@ -13305,15 +13305,15 @@ sub_81052A4: @ 81052A4
ldrsh r0, [r0, r2]
cmp r0, 0
bne _081052DC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r7, [r0]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
b _081052E2
.pool
_081052DC:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r7, [r0]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
_081052E2:
ldrb r0, [r0]
mov r8, r0
@@ -13354,7 +13354,7 @@ _08105310:
mov r4, r8
eors r4, r0
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810535C
@@ -13389,7 +13389,7 @@ _0810536C:
adds r4, r7, 0
eors r4, r0
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _081053E4
@@ -13457,7 +13457,7 @@ _081053FA:
movs r1, 0x2
mov r0, r8
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810544C
@@ -13581,7 +13581,7 @@ sub_8105538: @ 8105538
adds r4, r0, 0
movs r1, 0
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -13622,7 +13622,7 @@ sub_810557C: @ 810557C
strh r0, [r4, 0x24]
subs r2, 0x20
strh r2, [r4, 0x2E]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -13836,7 +13836,7 @@ sub_810571C: @ 810571C
b _08105752
.pool
_08105750:
- ldr r0, =move_anim_8072740
+ ldr r0, =DestroyAnimSprite
_08105752:
str r0, [r3, 0x1C]
_08105754:
@@ -13856,7 +13856,7 @@ sub_810575C: @ 810575C
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
@@ -13925,7 +13925,7 @@ sub_81057B8: @ 81057B8
orrs r1, r2
strb r1, [r0]
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08105802:
pop {r4,r5}
pop {r0}
@@ -13950,7 +13950,7 @@ sub_8105810: @ 8105810
strh r0, [r4, 0xE]
movs r0, 0x3
strh r0, [r4, 0x20]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -14124,7 +14124,7 @@ _08105962:
cmp r0, 0
bne _08105992
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08105992:
pop {r4,r5}
pop {r0}
@@ -14263,7 +14263,7 @@ _08105A88:
ands r1, r2
strb r1, [r0]
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08105AA6:
pop {r4-r6}
pop {r0}
@@ -14292,7 +14292,7 @@ sub_8105AAC: @ 8105AAC
strh r0, [r4, 0x16]
strh r0, [r4, 0x18]
strh r0, [r4, 0x22]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_80A5C6C
@@ -14469,7 +14469,7 @@ _08105C34:
cmp r0, 0
bne _08105C42
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08105C42:
pop {r4-r6}
pop {r0}
@@ -14561,7 +14561,7 @@ _08105CCC:
lsls r0, 6
bl AllocZeroed
adds r1, r0, 0
- ldr r0, =gBattleSpritesGfx
+ ldr r0, =gMonSpritesGfxPtr
ldr r0, [r0]
movs r2, 0xBE
lsls r2, 1
@@ -14571,7 +14571,7 @@ _08105CCC:
bl LZDecompressWram
movs r4, 0
_08105D00:
- ldr r5, =gBattleSpritesGfx
+ ldr r5, =gMonSpritesGfxPtr
ldr r0, [r5]
movs r1, 0xBE
lsls r1, 1
@@ -14603,7 +14603,7 @@ _08105D00:
movs r1, 0
str r1, [r0]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
add sp, 0x4
pop {r4-r6}
pop {r0}
@@ -14626,7 +14626,7 @@ _08105D6A:
cmp r4, 0
bge _08105D6A
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
@@ -14684,7 +14684,7 @@ sub_8105DE8: @ 8105DE8
adds r5, r0, 0
movs r1, 0
bl sub_80A69CC
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
bl GetBankSide
lsls r0, 24
@@ -14716,7 +14716,7 @@ _08105E08:
strh r0, [r5, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldrb r1, [r4, 0xA]
@@ -14765,7 +14765,7 @@ _08105E7A:
cmp r0, 0x3C
bne _08105EAA
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08105EAA:
pop {r4}
pop {r0}
@@ -14785,9 +14785,9 @@ sub_8105EB0: @ 8105EB0
movs r6, 0x98
_08105EC4:
movs r5, 0
- ldr r1, =gUnknown_02022E24
+ ldr r1, =gBattle_WIN0H
strh r6, [r1]
- ldr r4, =gUnknown_02022E26
+ ldr r4, =gBattle_WIN0V
movs r0, 0xA0
strh r0, [r4]
ldrh r1, [r1]
@@ -14845,7 +14845,7 @@ sub_8105F30: @ 8105F30
lsls r0, r2, 16
cmp r1, r0
blt _08105F70
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
ldr r0, =sub_8105F84
@@ -14853,7 +14853,7 @@ sub_8105F30: @ 8105F30
b _08105F78
.pool
_08105F70:
- ldr r1, =gUnknown_02022E24
+ ldr r1, =gBattle_WIN0H
lsls r0, r4, 8
orrs r2, r0
strh r2, [r1]
@@ -14905,9 +14905,9 @@ sub_8105F84: @ 8105F84
_08105FD8:
cmp r0, 0x4
ble _0810600C
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
strh r4, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r4, [r0]
ldr r4, =0x00003f3f
movs r0, 0x48
@@ -14923,7 +14923,7 @@ _08105FD8:
movs r1, 0
bl SetGpuReg
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810600C:
add sp, 0xC
pop {r4,r5}
@@ -14989,7 +14989,7 @@ _0810607C:
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081060A4:
pop {r4-r6}
pop {r0}
@@ -15054,7 +15054,7 @@ _0810610C:
strh r0, [r4, 0x24]
strh r0, [r4, 0x26]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08106134:
pop {r4-r6}
pop {r0}
@@ -15072,7 +15072,7 @@ sub_8106140: @ 8106140
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -15120,7 +15120,7 @@ sub_810618C: @ 810618C
b _081061BC
_081061B6:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081061BC:
pop {r4}
pop {r0}
@@ -15190,7 +15190,7 @@ _08106236:
cmp r0, 0x78
ble _08106244
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106244:
pop {r4}
pop {r0}
@@ -15268,7 +15268,7 @@ sub_810627C: @ 810627C
cmp r5, 0x40
bgt _081062E2
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081062E2:
pop {r4,r5}
pop {r0}
@@ -15291,11 +15291,11 @@ sub_81062E8: @ 81062E8
movs r0, 0x1
movs r1, 0x4
movs r2, 0x3
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -15303,12 +15303,12 @@ sub_81062E8: @ 81062E8
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0810632A:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r4, =gUnknown_02022E1A
+ ldr r4, =gBattle_BG1_Y
strh r1, [r4]
movs r0, 0x14
movs r1, 0
@@ -15489,7 +15489,7 @@ _081064BC:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_081064D0:
movs r0, 0x50
movs r1, 0
@@ -15500,9 +15500,9 @@ _081064D0:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081064F0:
add sp, 0x10
pop {r4,r5}
@@ -15526,11 +15526,11 @@ sub_81064F8: @ 81064F8
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -15538,12 +15538,12 @@ sub_81064F8: @ 81064F8
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0810653A:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r4, =gUnknown_02022E1A
+ ldr r4, =gBattle_BG1_Y
strh r1, [r4]
movs r0, 0x14
movs r1, 0
@@ -15561,7 +15561,7 @@ _0810653A:
b _0810658A
.pool
_08106578:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -15747,7 +15747,7 @@ _081066FC:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_08106710:
movs r0, 0x50
movs r1, 0
@@ -15758,9 +15758,9 @@ _08106710:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08106730:
add sp, 0x10
pop {r4,r5}
@@ -15773,7 +15773,7 @@ _08106730:
sub_810673C: @ 810673C
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -15912,7 +15912,7 @@ _08106858:
cmp r1, r0
bne _08106868
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106868:
pop {r4}
pop {r0}
@@ -15924,7 +15924,7 @@ _08106868:
sub_8106878: @ 8106878
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -15991,7 +15991,7 @@ sub_81068CC: @ 81068CC
bge _08106910
_0810690A:
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106910:
pop {r0}
bx r0
@@ -16019,7 +16019,7 @@ sub_8106914: @ 8106914
cmp r0, r1
blt _08106940
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106940:
pop {r0}
bx r0
@@ -16029,7 +16029,7 @@ _08106940:
sub_8106944: @ 8106944
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -16074,7 +16074,7 @@ sub_810699C: @ 810699C
cmp r0, 0
beq _081069B2
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081069B2:
pop {r0}
bx r0
@@ -16164,7 +16164,7 @@ _08106A50:
cmp r2, 0x64
ble _08106A5A
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106A5A:
pop {r4,r5}
pop {r0}
@@ -16222,7 +16222,7 @@ _08106ABA:
cmp r0, 0x1E
ble _08106AC8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106AC8:
pop {r4}
pop {r0}
@@ -16314,7 +16314,7 @@ sub_8106B54: @ 8106B54
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
@@ -16439,7 +16439,7 @@ _08106C6A:
cmp r0, 0x5A
ble _08106C78
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106C78:
pop {r4}
pop {r0}
@@ -16480,7 +16480,7 @@ _08106CB4:
cmp r0, 0
beq _08106CC8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106CC8:
pop {r4}
pop {r0}
@@ -16497,7 +16497,7 @@ sub_8106CD0: @ 8106CD0
cmp r0, 0
bne _08106CEC
adds r0, r5, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _08106D50
.pool
_08106CEC:
@@ -16505,11 +16505,11 @@ _08106CEC:
ldrsh r0, [r1, r2]
cmp r0, 0
bne _08106CFC
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _08106CFE
.pool
_08106CFC:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_08106CFE:
ldrb r0, [r4]
movs r1, 0x2
@@ -16579,7 +16579,7 @@ sub_8106D5C: @ 8106D5C
b _08106D8C
_08106D86:
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106D8C:
pop {r0}
bx r0
@@ -16628,7 +16628,7 @@ sub_8106DD4: @ 8106DD4
cmp r0, 0
bne _08106DF4
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08106DF4:
pop {r4}
pop {r0}
@@ -16645,11 +16645,11 @@ sub_8106E00: @ 8106E00
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08106E1C
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08106E1E
.pool
_08106E1C:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08106E1E:
ldrb r6, [r0]
adds r0, r6, 0
@@ -16754,7 +16754,7 @@ sub_8106EC8: @ 8106EC8
cmp r0, 0x10
ble _08106EFC
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106EFC:
pop {r0}
bx r0
@@ -16803,7 +16803,7 @@ _08106F40:
cmp r1, r0
bne _08106F54
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08106F54:
pop {r4}
pop {r0}
@@ -16968,14 +16968,14 @@ _08107066:
orrs r0, r1
strb r0, [r3]
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08107098:
movs r1, 0x36
ldrsh r0, [r4, r1]
cmp r0, 0x4
bne _081070A6
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081070A6:
pop {r4}
pop {r0}
@@ -16992,11 +16992,11 @@ sub_81070AC: @ 81070AC
ands r0, r1
cmp r0, 0
beq _081070F8
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _081070F8
@@ -17016,7 +17016,7 @@ sub_81070AC: @ 81070AC
b _08107118
.pool
_081070F8:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -17040,7 +17040,7 @@ _08107118:
strh r0, [r5, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -17055,13 +17055,13 @@ sub_8107144: @ 8107144
lsls r0, 24
lsrs r0, 24
ldr r3, =gBattleAnimArgs
- ldr r1, =gDisableStructMoveAnim
+ ldr r1, =gAnimDisableStructPtr
ldr r1, [r1]
ldrb r2, [r1, 0x10]
movs r1, 0x1
ands r1, r2
strh r1, [r3, 0xE]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -17073,11 +17073,11 @@ update_fury_cutter_counter_copy: @ 8107168
lsls r0, 24
lsrs r0, 24
ldr r2, =gBattleAnimArgs
- ldr r1, =gDisableStructMoveAnim
+ ldr r1, =gAnimDisableStructPtr
ldr r1, [r1]
ldrb r1, [r1, 0x10]
strh r1, [r2, 0xE]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -17144,7 +17144,7 @@ _081071F8:
cmp r1, r0
bne _0810720A
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810720A:
pop {r4-r6}
pop {r0}
@@ -17196,7 +17196,7 @@ _0810725A:
sub_8107260: @ 8107260
push {r4-r6,lr}
adds r6, r0, 0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -17237,7 +17237,7 @@ _081072A2:
movs r1, 0x40
orrs r0, r1
strb r0, [r2]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -17253,7 +17253,7 @@ _081072D8:
strh r0, [r6, 0x2E]
ldrh r0, [r6, 0x20]
strh r0, [r6, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -17422,7 +17422,7 @@ sub_810744C: @ 810744C
adds r5, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -17445,7 +17445,7 @@ _08107482:
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -17507,7 +17507,7 @@ _08107506:
cmp r0, 0
beq _08107518
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08107518:
pop {r4}
pop {r0}
@@ -17603,7 +17603,7 @@ _081075BE:
cmp r1, r0
bne _081075DE
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081075DE:
pop {r4-r7}
pop {r0}
@@ -17621,7 +17621,7 @@ sub_81075EC: @ 81075EC
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -17683,7 +17683,7 @@ sub_8107674: @ 8107674
cmp r0, 0
beq _08107688
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08107688:
ldrh r0, [r4, 0x3A]
lsls r0, 16
@@ -17762,7 +17762,7 @@ sub_81076F4: @ 81076F4
cmp r1, 0
bne _08107722
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08107722:
pop {r0}
bx r0
@@ -17773,7 +17773,7 @@ _08107722:
sub_8107730: @ 8107730
push {r4-r7,lr}
adds r4, r0, 0
- ldr r7, =gAnimationBankAttacker
+ ldr r7, =gAnimBankAttacker
ldrb r0, [r7]
movs r1, 0
bl sub_80A5C6C
@@ -17836,7 +17836,7 @@ sub_81077A4: @ 81077A4
cmp r0, 0
beq _081077BA
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081077BA:
pop {r0}
bx r0
@@ -17846,11 +17846,11 @@ _081077BA:
sub_81077C0: @ 81077C0
push {r4-r7,lr}
adds r6, r0, 0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
adds r4, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
@@ -17898,7 +17898,7 @@ _0810781E:
_08107828:
adds r0, r6, 0
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -17910,7 +17910,7 @@ _08107828:
_08107842:
ldrh r0, [r5, 0x8]
strh r0, [r6, 0x2E]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -17929,7 +17929,7 @@ _08107842:
strh r0, [r6, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r6, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r6, 0
bl StoreSpriteCallbackInData6
pop {r4-r7}
@@ -17956,7 +17956,7 @@ sub_8107894: @ 8107894
strh r1, [r4, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
@@ -18026,7 +18026,7 @@ sub_810790C: @ 810790C
cmp r0, r1
bne _0810794C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810794C:
pop {r4}
pop {r0}
@@ -18054,11 +18054,11 @@ sub_8107954: @ 8107954
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
mov r0, sp
bl sub_80A6B30
bl IsContest
@@ -18068,8 +18068,8 @@ sub_8107954: @ 8107954
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
- ldr r0, =gAnimationBankAttacker
+ bl SetAnimBgAttribute
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -18159,11 +18159,11 @@ _08107A32:
beq _08107AB4
ldr r1, =0x0000ffb0
adds r0, r1, 0
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
strh r0, [r2]
adds r1, 0x20
adds r0, r1, 0
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
strh r0, [r2]
movs r0, 0x2
strh r0, [r6, 0x8]
@@ -18174,7 +18174,7 @@ _08107A32:
b _08107B0E
.pool
_08107AB4:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -18183,12 +18183,12 @@ _08107AB4:
bne _08107AF8
ldr r2, =0x0000ff20
adds r0, r2, 0
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
strh r0, [r2]
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
strh r0, [r2]
movs r0, 0x2
strh r0, [r6, 0x8]
@@ -18198,11 +18198,11 @@ _08107AB4:
b _08107B0E
.pool
_08107AF8:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r4, [r0]
ldr r1, =0x0000ffd0
adds r0, r1, 0
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
strh r0, [r2]
ldr r0, =0x0000fffe
strh r0, [r6, 0x8]
@@ -18210,11 +18210,11 @@ _08107AF8:
strh r0, [r6, 0xA]
strh r4, [r7, 0xE]
_08107B0E:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
ldrh r1, [r2]
movs r0, 0x16
bl SetGpuReg
@@ -18264,8 +18264,8 @@ sub_8107B84: @ 8107B84
sub sp, 0x10
lsls r0, 24
lsrs r5, r0, 24
- ldr r1, =gUnknown_02022E18
- ldr r2, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_X
+ ldr r2, =gBattle_BG1_Y
ldr r0, =gTasks
lsls r4, r5, 2
adds r4, r5
@@ -18425,8 +18425,8 @@ sub_8107CC4: @ 8107CC4
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
- ldr r7, =gUnknown_02022E18
- ldr r0, =gUnknown_02022E1A
+ ldr r7, =gBattle_BG1_X
+ ldr r0, =gBattle_BG1_Y
mov r8, r0
ldr r6, =gTasks
lsls r0, r5, 2
@@ -18454,7 +18454,7 @@ _08107D08:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_08107D1C:
movs r0, 0
strh r0, [r7]
@@ -18475,7 +18475,7 @@ _08107D1C:
ldr r1, =0x0000ffff
strh r1, [r0, 0x26]
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08107D4A:
pop {r3}
mov r8, r3
@@ -18945,7 +18945,7 @@ _081080C0:
cmp r0, 0x15
bne _081080DE
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081080DE:
pop {r4}
pop {r0}
@@ -19267,7 +19267,7 @@ _0810836C:
cmp r0, 0
bne _0810837A
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810837A:
add sp, 0xC
pop {r4-r6}
@@ -19278,7 +19278,7 @@ _0810837A:
thumb_func_start sub_8108384
sub_8108384: @ 8108384
push {r4,r5,lr}
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -19350,7 +19350,7 @@ sub_8108408: @ 8108408
lsls r1, 24
lsrs r1, 24
str r1, [sp]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -19576,7 +19576,7 @@ sub_81085C8: @ 81085C8
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xA]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -19721,7 +19721,7 @@ _08108704:
cmp r0, 0
bne _08108712
adds r0, r1, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08108712:
pop {r3}
mov r8, r3
@@ -19956,7 +19956,7 @@ sub_81088E4: @ 81088E4
lsls r1, 3
ldr r0, =gTasks
adds r5, r1, r0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -20171,7 +20171,7 @@ _08108AAA:
b _08108AB8
_08108AB2:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08108AB8:
pop {r4}
pop {r0}
@@ -20371,7 +20371,7 @@ sub_8108C08: @ 8108C08
cmp r0, 0
bne _08108C4C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08108C4C:
pop {r4}
pop {r0}
@@ -20418,7 +20418,7 @@ sub_8108C94: @ 8108C94
adds r4, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -20495,7 +20495,7 @@ _08108D34:
cmp r1, r0
bne _08108D46
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08108D46:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
@@ -20593,7 +20593,7 @@ _08108DE2:
strh r0, [r4, 0x2E]
mov r0, r9
strh r0, [r4, 0x30]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
@@ -20648,7 +20648,7 @@ _08108E58:
strh r0, [r4, 0x2E]
mov r0, r9
strh r0, [r4, 0x30]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
@@ -20698,7 +20698,7 @@ sub_8108EC8: @ 8108EC8
movs r0, 0xFE
lsls r0, 8
strh r0, [r4, 0x36]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r1, =sub_80A634C
@@ -20732,7 +20732,7 @@ sub_8108F08: @ 8108F08
strh r0, [r4, 0x32]
ldr r0, =sub_80A656C
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -20746,7 +20746,7 @@ sub_8108F4C: @ 8108F4C
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -20798,7 +20798,7 @@ _08108F9E:
sub_8108FBC: @ 8108FBC
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -20886,7 +20886,7 @@ sub_8109064: @ 8109064
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -21026,7 +21026,7 @@ sub_810916C: @ 810916C
strh r1, [r0, 0x36]
ldr r1, =sub_80A6EEC
str r1, [r0, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
@@ -21037,11 +21037,11 @@ sub_810916C: @ 810916C
sub_8109198: @ 8109198
push {r4-r6,lr}
adds r6, r0, 0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
adds r4, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
@@ -21049,14 +21049,14 @@ sub_8109198: @ 8109198
cmp r4, r0
bne _081091DE
movs r0, 0x2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldrb r1, [r5]
lsls r0, 24
lsrs r0, 24
cmp r1, r0
beq _081091D6
movs r0, 0x3
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldrb r1, [r5]
lsls r0, 24
lsrs r0, 24
@@ -21128,7 +21128,7 @@ sub_8109244: @ 8109244
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -21164,7 +21164,7 @@ sub_810929C: @ 810929C
beq _081092E4
movs r4, 0
strh r4, [r6, 0x2E]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -21224,7 +21224,7 @@ sub_8109314: @ 8109314
cmp r0, 0x1F
bne _08109330
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08109330:
pop {r4}
pop {r0}
@@ -21274,7 +21274,7 @@ sub_8109364: @ 8109364
strh r0, [r4, 0x30]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x32]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A653C
@@ -21371,7 +21371,7 @@ sub_810940C: @ 810940C
cmp r0, r1
bne _08109458
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08109458:
pop {r4}
pop {r0}
@@ -21407,7 +21407,7 @@ sub_8109460: @ 8109460
adds r0, r2
ldrh r0, [r0, 0x22]
strh r0, [r4, 0x10]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -21785,7 +21785,7 @@ _0810979C:
cmp r0, 0
bne _081097AA
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081097AA:
add sp, 0xC
pop {r4,r5}
@@ -21820,7 +21820,7 @@ sub_81097B4: @ 81097B4
lsls r0, 2
adds r0, r1
ldrh r4, [r0, 0x20]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -21902,7 +21902,7 @@ _0810987E:
muls r1, r3
lsls r1, 16
asrs r1, 16
- ldr r0, =gUnknown_085955CE
+ ldr r0, =gUnknown_085955CC+2
adds r2, r0
movs r3, 0
ldrsh r2, [r2, r3]
@@ -21992,7 +21992,7 @@ sub_8109930: @ 8109930
adds r0, r2
lsls r0, 16
lsrs r4, r0, 16
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -22214,7 +22214,7 @@ _08109AE0:
cmp r0, 0x10
ble _08109AF4
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08109AF4:
pop {r4}
pop {r0}
@@ -22248,7 +22248,7 @@ _08109B18:
bl StartSpriteAnim
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x3C]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -22261,7 +22261,7 @@ _08109B48:
ldr r0, =0x0000fffc
_08109B4A:
strh r0, [r5, 0x36]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -22279,7 +22279,7 @@ _08109B70:
ldrh r0, [r5, 0x30]
adds r0, 0xC0
strh r0, [r5, 0x30]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -22356,7 +22356,7 @@ _08109BCE:
lsls r0, 1
strh r0, [r5, 0x2E]
strh r1, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -22426,7 +22426,7 @@ _08109C82:
.pool
_08109CA4:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08109CAA:
pop {r4}
pop {r0}
@@ -22485,7 +22485,7 @@ _08109CC8:
lsrs r0, 16
cmp r0, 0x83
bls _08109D3C
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -22500,7 +22500,7 @@ _08109CC8:
b _08109D80
.pool
_08109D3C:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A8328
lsls r0, 24
@@ -22561,7 +22561,7 @@ _08109DA8:
cmp r0, 0x1E
bne _08109DB6
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08109DB6:
pop {r4}
pop {r0}
@@ -22578,7 +22578,7 @@ sub_8109DBC: @ 8109DBC
lsls r1, 3
ldr r0, =gTasks
adds r4, r1, r0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -22590,11 +22590,11 @@ sub_8109DBC: @ 8109DBC
movs r1, 0x1
_08109DE2:
strh r1, [r4, 0x20]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
@@ -22906,7 +22906,7 @@ _0810A024:
blt _0810A024
_0810A04E:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810A054:
pop {r4-r7}
pop {r0}
@@ -22932,7 +22932,7 @@ sub_810A060: @ 810A060
movs r1, 0x10
bl BlendPalette
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
add sp, 0x10
pop {r4}
pop {r0}
@@ -22974,7 +22974,7 @@ _0810A0CA:
adds r0, 0x1
strh r0, [r2, 0x8]
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r6, [r0]
@@ -23059,7 +23059,7 @@ _0810A16E:
strh r1, [r0, 0x24]
strh r1, [r0, 0x26]
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810A194:
pop {r3-r5}
mov r8, r3
@@ -23075,7 +23075,7 @@ _0810A194:
sub_810A1A8: @ 810A1A8
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -23119,7 +23119,7 @@ sub_810A1F8: @ 810A1F8
cmp r0, 0
beq _0810A20E
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810A20E:
pop {r0}
bx r0
@@ -23129,7 +23129,7 @@ _0810A20E:
sub_810A214: @ 810A214
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -23178,7 +23178,7 @@ _0810A26E:
sub_810A274: @ 810A274
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -23191,7 +23191,7 @@ sub_810A274: @ 810A274
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -23261,15 +23261,15 @@ _0810A324:
beq _0810A35C
b _0810A380
_0810A32E:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0810A382
.pool
_0810A338:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r6, 0x2
eors r0, r6
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _0810A354
@@ -23282,21 +23282,21 @@ _0810A354:
eors r4, r0
b _0810A384
_0810A35C:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r4, 0x2
eors r0, r4
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810A380
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
eors r4, r0
b _0810A384
.pool
_0810A380:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0810A382:
ldrb r4, [r0]
_0810A384:
@@ -23417,7 +23417,7 @@ sub_810A46C: @ 810A46C
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_80A5C6C
@@ -23517,7 +23517,7 @@ sub_810A4F4: @ 810A4F4
b _0810A564
_0810A55E:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810A564:
pop {r4}
pop {r0}
@@ -23562,7 +23562,7 @@ _0810A5A4:
cmp r0, 0
bgt _0810A5B6
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810A5B6:
pop {r0}
bx r0
@@ -23576,7 +23576,7 @@ sub_810A5BC: @ 810A5BC
lsls r0, 24
cmp r0, 0
bne _0810A5D8
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -23588,7 +23588,7 @@ _0810A5D8:
negs r0, r0
strh r0, [r1, 0x2]
_0810A5E0:
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -23633,11 +23633,11 @@ sub_810A628: @ 810A628
ands r0, r1
cmp r0, 0
beq _0810A64C
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
b _0810A64E
.pool
_0810A64C:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
_0810A64E:
ldrb r6, [r0]
bl IsContest
@@ -23756,7 +23756,7 @@ _0810A742:
cmp r0, 0
bgt _0810A754
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810A754:
pop {r4}
pop {r0}
@@ -23812,7 +23812,7 @@ _0810A7B6:
strh r0, [r4, 0x2E]
ldr r0, =sub_80A64B0
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -23827,7 +23827,7 @@ sub_810A7DC: @ 810A7DC
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0
bl sub_80A5C6C
@@ -24012,7 +24012,7 @@ _0810A952:
.pool
_0810A970:
mov r0, r9
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _0810A9BC
_0810A978:
cmp r7, 0
@@ -24199,7 +24199,7 @@ _0810AAE4:
cmp r0, 0x33
bne _0810AAF8
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810AAF8:
pop {r0}
bx r0
@@ -24220,11 +24220,11 @@ sub_810AAFC: @ 810AAFC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810AB28
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _0810AB2A
.pool
_0810AB28:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_0810AB2A:
ldrb r0, [r4]
movs r1, 0x2
@@ -24383,7 +24383,7 @@ _0810AC78:
cmp r0, 0
bne _0810AC86
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810AC86:
pop {r4-r7}
pop {r0}
@@ -24440,11 +24440,11 @@ sub_810ACD8: @ 810ACD8
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810ACF4
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _0810ACF6
.pool
_0810ACF4:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_0810ACF6:
ldrb r0, [r4]
movs r1, 0x2
@@ -24478,11 +24478,11 @@ sub_810AD30: @ 810AD30
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810AD4C
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _0810AD4E
.pool
_0810AD4C:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_0810AD4E:
ldrb r0, [r4]
movs r1, 0x2
@@ -24501,7 +24501,7 @@ _0810AD4E:
strh r0, [r5, 0x24]
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x26]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A67D8
@@ -24518,7 +24518,7 @@ sub_810AD98: @ 810AD98
adds r5, r0, 0
movs r1, 0x1
bl StartSpriteAffineAnim
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -24646,7 +24646,7 @@ _0810AE90:
lsrs r0, 24
movs r6, 0
strh r0, [r5, 0x26]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -24783,7 +24783,7 @@ _0810AFA0:
ands r1, r2
strb r1, [r0]
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810AFC0:
pop {r4-r6}
pop {r0}
@@ -24820,7 +24820,7 @@ _0810AFF4:
_0810AFFA:
b _0810B14E
_0810AFFC:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -24878,7 +24878,7 @@ _0810B070:
movs r0, 0x78
subs r0, r1
strh r0, [r5, 0xE]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x3
bl sub_80A5C6C
@@ -24981,7 +24981,7 @@ _0810B140:
cmp r0, 0
bne _0810B14E
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810B14E:
pop {r4-r6}
pop {r0}
@@ -25124,7 +25124,7 @@ sub_810B23C: @ 810B23C
beq _0810B280
b _0810B294
_0810B24E:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -25191,7 +25191,7 @@ _0810B2C8:
.4byte _0810B404
.4byte _0810B414
_0810B2DC:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -25206,7 +25206,7 @@ _0810B2DC:
strh r0, [r5, 0x16]
movs r0, 0x4
strh r0, [r5, 0x18]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x2
bl sub_80A5C6C
@@ -25228,12 +25228,12 @@ _0810B2DC:
movs r0, 0xC
strh r0, [r5, 0x1E]
subs r0, 0x4C
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0x20]
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0x22]
@@ -25338,7 +25338,7 @@ _0810B404:
cmp r0, 0
bne _0810B428
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _0810B428
_0810B414:
ldrh r1, [r5, 0x1E]
@@ -25539,7 +25539,7 @@ _0810B584:
beq _0810B600
b _0810B60E
_0810B58A:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
bl sub_80A5C6C
@@ -25561,7 +25561,7 @@ _0810B5A4:
bgt _0810B5A4
strh r1, [r5, 0x24]
_0810B5B4:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -25603,7 +25603,7 @@ _0810B600:
cmp r0, 0
bne _0810B60E
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810B60E:
pop {r4,r5}
pop {r0}
@@ -25721,7 +25721,7 @@ sub_810B6C4: @ 810B6C4
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -25734,7 +25734,7 @@ sub_810B6C4: @ 810B6C4
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -25934,7 +25934,7 @@ sub_810B848: @ 810B848
b _0810B8A6
_0810B8A0:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810B8A6:
pop {r4}
pop {r0}
@@ -25957,7 +25957,7 @@ sub_810B8AC: @ 810B8AC
movs r0, 0xFE
lsls r0, 8
strh r0, [r4, 0x36]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r1, =sub_80A634C
@@ -25976,14 +25976,14 @@ sub_810B8EC: @ 810B8EC
adds r4, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x2
bl sub_80A5C6C
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -26003,7 +26003,7 @@ _0810B92C:
adds r0, r1
strh r0, [r4, 0x32]
_0810B936:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x3
bl sub_80A5C6C
@@ -26015,7 +26015,7 @@ _0810B936:
strh r0, [r4, 0x36]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x2E]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A6EEC
@@ -26041,7 +26041,7 @@ sub_810B974: @ 810B974
b _0810B9C6
.pool
_0810B990:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -26049,7 +26049,7 @@ _0810B990:
adds r3, 0x22
movs r1, 0x1
bl sub_80A8924
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -26130,7 +26130,7 @@ sub_810BA24: @ 810BA24
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0810BA74
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -26148,7 +26148,7 @@ sub_810BA24: @ 810BA24
b _0810BA86
.pool
_0810BA74:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -26157,7 +26157,7 @@ _0810BA74:
movs r1, 0x1
bl sub_80A8924
_0810BA86:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -26277,7 +26277,7 @@ sub_810BB60: @ 810BB60
strh r5, [r4, 0x24]
movs r0, 0x80
strh r0, [r4, 0x2E]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -26312,7 +26312,7 @@ _0810BB90:
sub_810BBC8: @ 810BBC8
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -26406,7 +26406,7 @@ sub_810BC4C: @ 810BC4C
bge _0810BC8E
_0810BC88:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810BC8E:
pop {r4}
pop {r0}
@@ -26431,7 +26431,7 @@ sub_810BC94: @ 810BC94
ldrsh r0, [r1, r2]
cmp r0, 0
bne _0810BCE0
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -26447,7 +26447,7 @@ sub_810BC94: @ 810BC94
b _0810BCF2
.pool
_0810BCE0:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -26456,7 +26456,7 @@ _0810BCE0:
movs r1, 0x1
bl sub_80A8924
_0810BCF2:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -26619,7 +26619,7 @@ _0810BDEC:
bge _0810BE42
_0810BE3C:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810BE42:
pop {r4}
pop {r0}
@@ -26645,7 +26645,7 @@ sub_810BE48: @ 810BE48
b _0810BEA2
.pool
_0810BE6C:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -26653,7 +26653,7 @@ _0810BE6C:
adds r3, 0x22
movs r1, 0
bl sub_80A8924
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -26686,7 +26686,7 @@ _0810BEB4:
cmp r0, 0
beq _0810BEC8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810BEC8:
pop {r4,r5}
pop {r0}
@@ -26712,7 +26712,7 @@ sub_810BED0: @ 810BED0
b _0810BF32
.pool
_0810BEF4:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
adds r2, r5, 0
adds r2, 0x20
@@ -26742,7 +26742,7 @@ _0810BF26:
adds r0, r1
strh r0, [r5, 0x22]
_0810BF32:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0810BF90
.pool
_0810BF40:
@@ -26755,7 +26755,7 @@ _0810BF40:
bl sub_80A6980
b _0810BF8E
_0810BF52:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
adds r2, r5, 0
adds r2, 0x20
@@ -26785,7 +26785,7 @@ _0810BF82:
adds r0, r1
strh r0, [r5, 0x22]
_0810BF8E:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0810BF90:
ldrb r0, [r0]
strh r0, [r5, 0x3C]
@@ -26794,7 +26794,7 @@ _0810BF90:
ldrsh r0, [r0, r1]
cmp r0, 0
beq _0810BFA8
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0810BFB4
@@ -26806,7 +26806,7 @@ _0810BFB4:
movs r0, 0x40
_0810BFB6:
strh r0, [r5, 0x3A]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -26911,7 +26911,7 @@ _0810C086:
b _0810C098
_0810C092:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810C098:
pop {r4}
pop {r0}
@@ -26934,11 +26934,11 @@ sub_810C0A0: @ 810C0A0
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -26946,12 +26946,12 @@ sub_810C0A0: @ 810C0A0
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0810C0E2:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r4, =gUnknown_02022E1A
+ ldr r4, =gBattle_BG1_Y
strh r1, [r4]
movs r0, 0x14
movs r1, 0
@@ -26999,7 +26999,7 @@ sub_810C164: @ 810C164
sub sp, 0x10
lsls r0, 24
lsrs r4, r0, 24
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r2, =0x0000ffff
adds r0, r2, 0
ldrh r2, [r1]
@@ -27148,12 +27148,12 @@ _0810C29C:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0810C2B0:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -27164,9 +27164,9 @@ _0810C2B0:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810C2DA:
add sp, 0x10
pop {r4,r5}
@@ -27179,7 +27179,7 @@ _0810C2DA:
sub_810C2F0: @ 810C2F0
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -27216,11 +27216,11 @@ sub_810C324: @ 810C324
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -27228,12 +27228,12 @@ sub_810C324: @ 810C324
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0810C366:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r4, =gUnknown_02022E1A
+ ldr r4, =gBattle_BG1_Y
strh r1, [r4]
movs r0, 0x14
movs r1, 0
@@ -27283,7 +27283,7 @@ sub_810C3F0: @ 810C3F0
sub sp, 0x10
lsls r0, 24
lsrs r4, r0, 24
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
ldr r3, =gTasks
lsls r1, r4, 2
adds r1, r4
@@ -27420,12 +27420,12 @@ _0810C50C:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0810C520:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -27436,9 +27436,9 @@ _0810C520:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810C54A:
add sp, 0x10
pop {r4,r5}
@@ -27456,13 +27456,13 @@ sub_810C560: @ 810C560
ldr r6, =gBattleAnimArgs
ldrh r0, [r6]
strh r0, [r5, 0x2E]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
bl sub_80A5C6C
adds r4, r0, 0
- ldr r7, =gAnimationBankTarget
+ ldr r7, =gAnimBankTarget
ldrb r0, [r7]
movs r1, 0x2
bl sub_80A5C6C
@@ -27474,7 +27474,7 @@ sub_810C560: @ 810C560
lsls r0, 8
strh r0, [r5, 0x3C]
_0810C594:
- ldr r3, =gBanksBySide
+ ldr r3, =gBanksByIdentity
ldrb r0, [r7]
adds r0, r3
ldrb r1, [r0]
@@ -27523,7 +27523,7 @@ _0810C5F0:
movs r0, 0x1
strh r0, [r5, 0x3A]
_0810C5F4:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -27545,7 +27545,7 @@ _0810C5F4:
ldrh r1, [r5, 0x20]
adds r0, r1
strh r0, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -27567,7 +27567,7 @@ _0810C65C:
ldrh r1, [r5, 0x20]
adds r0, r1
strh r0, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -27676,7 +27676,7 @@ _0810C728:
_0810C736:
movs r5, 0x50
strh r5, [r4, 0x2E]
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0
bl sub_80A5C6C
@@ -27699,7 +27699,7 @@ _0810C736:
lsls r0, 24
cmp r0, 0
bne _0810C78C
- ldr r1, =gBanksBySide
+ ldr r1, =gBanksByIdentity
ldrb r0, [r6]
adds r0, r1
ldrb r1, [r0]
@@ -27843,8 +27843,8 @@ _0810C85A:
lsls r0, 24
cmp r0, 0
bne _0810C8B4
- ldr r1, =gBanksBySide
- ldr r0, =gAnimationBankTarget
+ ldr r1, =gBanksByIdentity
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -28011,7 +28011,7 @@ _0810C9CE:
cmp r0, 0
bne _0810C9DC
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810C9DC:
pop {r4,r5}
pop {r0}
@@ -28050,11 +28050,11 @@ sub_810C9E4: @ 810C9E4
ldrh r0, [r4, 0x2]
lsls r0, 20
lsrs r0, 24
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r5, r0, 24
adds r0, r5, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810CAD0
@@ -28349,7 +28349,7 @@ _0810CC7C:
unc_080B06FC: @ 810CC88
push {r4-r6,lr}
adds r5, r0, 0
- ldr r0, =gDisableStructMoveAnim
+ ldr r0, =gAnimDisableStructPtr
ldr r0, [r0]
ldrb r1, [r0, 0x11]
lsrs r0, r1, 4
@@ -28371,7 +28371,7 @@ _0810CCA6:
ldr r6, =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -28381,7 +28381,7 @@ _0810CCA6:
negs r0, r0
strh r0, [r6, 0x4]
_0810CCCE:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -28423,7 +28423,7 @@ sub_810CD1C: @ 810CD1C
bl StartSpriteAnim
ldr r0, =sub_80A67D8
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
_0810CD3E:
@@ -28515,7 +28515,7 @@ _0810CDD8:
cmp r0, 0x15
bne _0810CDF6
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810CDF6:
pop {r4}
pop {r0}
@@ -28531,7 +28531,7 @@ sub_810CDFC: @ 810CDFC
ldrb r3, [r1]
lsls r3, 1
adds r3, r1
- ldr r1, =gDisableStructMoveAnim
+ ldr r1, =gAnimDisableStructPtr
ldr r1, [r1]
ldrb r1, [r1, 0x11]
lsrs r2, r1, 4
@@ -28540,7 +28540,7 @@ sub_810CDFC: @ 810CDFC
subs r2, r1
subs r2, 0x1
strh r2, [r3]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -28563,7 +28563,7 @@ unc_080B08A0: @ 810CE2C
strh r0, [r4, 0x2E]
ldr r0, =sub_80A64B0
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -28581,7 +28581,7 @@ sub_810CE68: @ 810CE68
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _0810CE90
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -28658,7 +28658,7 @@ _0810CF0C:
strh r0, [r5, 0x2E]
ldr r0, =sub_80A64B0
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -28680,11 +28680,11 @@ sub_810CF30: @ 810CF30
mov r9, r0
cmp r1, 0
bne _0810CF54
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0810CF56
.pool
_0810CF54:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0810CF56:
ldrb r0, [r0]
mov r8, r0
@@ -28771,7 +28771,7 @@ _0810D000:
negs r0, r0
lsrs r4, r0, 16
_0810D012:
- ldr r0, =gBanksBySide
+ ldr r0, =gBanksByIdentity
add r0, r8
ldrb r1, [r0]
adds r0, r7, 0
@@ -28875,7 +28875,7 @@ sub_810D0B8: @ 810D0B8
bl DestroySprite
_0810D0F4:
adds r0, r5, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _0810D104
.pool
_0810D100:
@@ -28960,7 +28960,7 @@ sub_810D164: @ 810D164
strh r6, [r5, 0x24]
ldr r0, =sub_80A6EEC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
_0810D1A4:
@@ -28974,10 +28974,10 @@ _0810D1A4:
sub_810D1B4: @ 810D1B4
push {r4-r6,lr}
adds r6, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r1, [r0]
movs r0, 0x2
- ldr r2, =gAnimationBankTarget
+ ldr r2, =gAnimBankTarget
eors r0, r1
ldrb r1, [r2]
cmp r0, r1
@@ -28997,7 +28997,7 @@ _0810D1E0:
adds r0, r6, 0
movs r1, 0x1
bl sub_80A6980
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -29059,7 +29059,7 @@ sub_810D240: @ 810D240
b _0810D272
_0810D26C:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810D272:
pop {r4}
pop {r0}
@@ -29105,7 +29105,7 @@ sub_810D2B0: @ 810D2B0
strh r0, [r4, 0x2E]
ldr r0, =sub_80A64B0
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
@@ -29146,7 +29146,7 @@ sub_810D308: @ 810D308
bne _0810D34C
movs r0, 0x6
strh r0, [r5, 0x2E]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -29178,7 +29178,7 @@ sub_810D360: @ 810D360
strh r1, [r0, 0x2E]
ldr r1, =sub_80A64B0
str r1, [r0, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
bl StoreSpriteCallbackInData6
pop {r0}
bx r0
@@ -29251,7 +29251,7 @@ _0810D3F6:
cmp r0, 0x78
ble _0810D404
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810D404:
pop {r4}
pop {r0}
@@ -29267,11 +29267,11 @@ sub_810D40C: @ 810D40C
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0810D428
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _0810D42A
.pool
_0810D428:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_0810D42A:
ldrb r0, [r4]
movs r1, 0
@@ -29332,7 +29332,7 @@ _0810D48E:
cmp r0, 0
bne _0810D4AA
adds r0, r1, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _0810D4EC
_0810D4AA:
ldrh r0, [r1, 0x2E]
@@ -29370,7 +29370,7 @@ _0810D4DA:
cmp r0, 0
bne _0810D4EC
adds r0, r1, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810D4EC:
pop {r0}
bx r0
@@ -29386,7 +29386,7 @@ sub_810D4F4: @ 810D4F4
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0810D520
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -29397,7 +29397,7 @@ sub_810D4F4: @ 810D4F4
b _0810D532
.pool
_0810D520:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -29473,7 +29473,7 @@ _0810D5C0:
b _0810D5CE
_0810D5C6:
adds r0, r5, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _0810D5D2
_0810D5CE:
ldr r0, =sub_810D5DC
@@ -29505,7 +29505,7 @@ sub_810D5DC: @ 810D5DC
cmp r0, 0x28
ble _0810D604
adds r0, r1, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810D604:
pop {r0}
bx r0
@@ -29533,7 +29533,7 @@ sub_810D608: @ 810D608
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -29545,11 +29545,11 @@ sub_810D608: @ 810D608
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
b _0810D680
.pool
_0810D664:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -29561,7 +29561,7 @@ _0810D664:
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
_0810D680:
ldrb r0, [r0]
strh r0, [r5, 0x3C]
@@ -29704,7 +29704,7 @@ sub_810D770: @ 810D770
cmp r4, r0
bge _0810D7BA
adds r0, r7, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _0810D818
_0810D7BA:
ldrh r0, [r7, 0x2E]
@@ -29712,7 +29712,7 @@ _0810D7BA:
strh r0, [r7, 0x2E]
b _0810D818
_0810D7C2:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -29725,7 +29725,7 @@ _0810D7C2:
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r2, =gAnimationBankTarget
+ ldr r2, =gAnimBankTarget
mov r8, r2
ldrb r0, [r2]
movs r1, 0x2
@@ -29793,7 +29793,7 @@ sub_810D830: @ 810D830
ble _0810D870
_0810D86A:
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810D870:
pop {r0}
bx r0
@@ -29821,15 +29821,15 @@ sub_810D874: @ 810D874
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r4, [r0]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0810D8BE
.pool
_0810D8B8:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r4, [r0]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0810D8BE:
ldrb r0, [r0]
bl sub_80A8328
@@ -29893,7 +29893,7 @@ _0810D918:
strh r0, [r5, 0x36]
adds r0, r5, 0
bl obj_translate_based_on_private_1_2_3_4
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A6F98
@@ -29915,7 +29915,7 @@ sub_810D960: @ 810D960
cmp r1, r0
bne _0810D976
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810D976:
ldrh r0, [r4, 0x2E]
adds r0, 0x1
@@ -29929,7 +29929,7 @@ _0810D976:
sub_810D984: @ 810D984
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -29951,7 +29951,7 @@ sub_810D984: @ 810D984
strh r0, [r5, 0x34]
ldrh r0, [r1, 0x4]
strh r0, [r5, 0x36]
- ldr r0, =gUnknown_02038432
+ ldr r0, =gAnimMoveTurn
ldrb r6, [r0]
ldrb r0, [r4]
bl GetBankSide
@@ -30018,7 +30018,7 @@ _0810DA34:
bl StartSpriteAnim
b _0810DA5E
_0810DA48:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -30030,7 +30030,7 @@ _0810DA48:
_0810DA5E:
ldr r0, =sub_80A67D8
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
@@ -30067,7 +30067,7 @@ sub_810DA7C: @ 810DA7C
cmp r0, 0x28
ble _0810DAB6
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810DAB6:
pop {r4}
pop {r0}
@@ -30128,13 +30128,13 @@ _0810DB1A:
ldrh r1, [r4, 0x1C]
adds r0, r1
strh r0, [r4, 0x1C]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
cmp r0, 0
bne _0810DB50
- ldr r1, =gUnknown_02022E20
+ ldr r1, =gBattle_BG3_X
ldrh r0, [r4, 0x1A]
lsls r0, 16
asrs r0, 24
@@ -30145,7 +30145,7 @@ _0810DB1A:
b _0810DB60
.pool
_0810DB50:
- ldr r2, =gUnknown_02022E20
+ ldr r2, =gBattle_BG3_X
ldrh r1, [r4, 0x1A]
lsls r1, 16
asrs r1, 24
@@ -30154,7 +30154,7 @@ _0810DB50:
strh r0, [r2]
adds r7, r2, 0
_0810DB60:
- ldr r3, =gUnknown_02022E22
+ ldr r3, =gBattle_BG3_Y
ldrh r2, [r4, 0x1C]
lsls r0, r2, 16
asrs r0, 24
@@ -30179,7 +30179,7 @@ _0810DB60:
movs r0, 0x1
bl sub_80A6DAC
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810DB98:
pop {r4-r7}
pop {r0}
@@ -30205,7 +30205,7 @@ _0810DBC2:
bl sub_80A69CC
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2E]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -30239,7 +30239,7 @@ sub_810DC10: @ 810DC10
cmp r0, 0
beq _0810DC24
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810DC24:
pop {r4}
pop {r0}
@@ -30263,7 +30263,7 @@ _0810DC44:
adds r0, r4, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
mov r6, sp
adds r6, 0x2
@@ -30271,7 +30271,7 @@ _0810DC44:
mov r2, sp
adds r3, r6, 0
bl sub_80A8924
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -30314,7 +30314,7 @@ sub_810DCB4: @ 810DCB4
cmp r0, 0
beq _0810DCC8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810DCC8:
pop {r4}
pop {r0}
@@ -30378,7 +30378,7 @@ sub_810DD24: @ 810DD24
cmp r0, 0
bne _0810DD4A
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810DD4A:
pop {r4}
pop {r0}
@@ -30389,7 +30389,7 @@ _0810DD4A:
sub_810DD50: @ 810DD50
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -30397,7 +30397,7 @@ sub_810DD50: @ 810DD50
adds r3, 0x22
movs r1, 0x1
bl sub_80A8924
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -30426,7 +30426,7 @@ _0810DD7C:
strh r1, [r4, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
@@ -30450,7 +30450,7 @@ sub_810DDC4: @ 810DDC4
b _0810DE16
.pool
_0810DDE0:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -30458,7 +30458,7 @@ _0810DDE0:
adds r3, 0x22
movs r1, 0x1
bl sub_80A8924
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -30514,7 +30514,7 @@ sub_810DE2C: @ 810DE2C
cmp r0, 0
beq _0810DE68
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810DE68:
pop {r4}
pop {r0}
@@ -30569,7 +30569,7 @@ sub_810DE98: @ 810DE98
cmp r0, 0x47
bne _0810DED2
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810DED2:
pop {r4}
pop {r0}
@@ -30666,7 +30666,7 @@ _0810DF76:
cmp r1, 0
bne _0810DF90
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810DF90:
pop {r4-r7}
pop {r0}
@@ -30680,7 +30680,7 @@ sub_810DFA8: @ 810DFA8
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -30696,7 +30696,7 @@ _0810DFC8:
strh r0, [r6, 0x2E]
ldrh r0, [r6, 0x20]
strh r0, [r6, 0x30]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -30737,7 +30737,7 @@ sub_810E028: @ 810E028
cmp r0, 0
beq _0810E03C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810E03C:
pop {r4}
pop {r0}
@@ -30748,7 +30748,7 @@ _0810E03C:
sub_810E044: @ 810E044
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -30805,7 +30805,7 @@ _0810E088:
ldrsh r0, [r2, r3]
cmp r0, 0
bne _0810E0EC
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -30821,7 +30821,7 @@ _0810E088:
b _0810E0FE
.pool
_0810E0EC:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -30841,7 +30841,7 @@ _0810E0FE:
strh r0, [r5, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldrb r1, [r4, 0xA]
@@ -30919,7 +30919,7 @@ _0810E1AA:
cmp r0, r1
bge _0810E1C2
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810E1C2:
pop {r0}
bx r0
@@ -30929,7 +30929,7 @@ _0810E1C2:
sub_810E1C8: @ 810E1C8
push {r4,r5,lr}
adds r5, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -30955,7 +30955,7 @@ _0810E1FE:
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -31036,7 +31036,7 @@ _0810E296:
ands r0, r2
strb r0, [r1]
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810E2BC:
pop {r4}
pop {r0}
@@ -31099,11 +31099,11 @@ sub_810E314: @ 810E314
ands r0, r1
cmp r0, 0
beq _0810E33C
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0810E33E
.pool
_0810E33C:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0810E33E:
ldrb r6, [r0]
adds r0, r6, 0
@@ -32049,7 +32049,7 @@ _0810EA36:
sub_810EA4C: @ 810EA4C
push {r4,r5,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A8328
movs r1, 0x3
@@ -32061,7 +32061,7 @@ sub_810EA4C: @ 810EA4C
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x5]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -32106,7 +32106,7 @@ _0810EAC4:
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0810EADC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -32117,7 +32117,7 @@ _0810EADC:
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _0810EAF8
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -32189,7 +32189,7 @@ _0810EB6A:
cmp r0, r1
bne _0810EB82
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810EB82:
pop {r4}
pop {r0}
@@ -32237,7 +32237,7 @@ sub_810EB88: @ 810EB88
strh r0, [r4, 0x6]
ldr r0, =gUnknown_085973E8
mov r8, r0
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -32263,7 +32263,7 @@ _0810EC02:
cmp r0, 0xFF
ble _0810EC16
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810EC16:
pop {r3}
mov r8, r3
@@ -32316,7 +32316,7 @@ _0810EC78:
cmp r0, 0
beq _0810EC8C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810EC8C:
pop {r4}
pop {r0}
@@ -32341,7 +32341,7 @@ _0810ECAA:
beq _0810ECE0
b _0810ED1E
_0810ECB0:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
bl sub_80A5C6C
@@ -32394,7 +32394,7 @@ _0810ECE0:
ands r0, r2
strb r0, [r1]
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810ED1E:
pop {r4}
pop {r0}
@@ -32521,7 +32521,7 @@ _0810EE00:
cmp r0, 0
ble _0810EE0E
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810EE0E:
pop {r0}
bx r0
@@ -32545,11 +32545,11 @@ _0810EE28:
ldrsh r0, [r0, r2]
cmp r0, 0
bne _0810EE40
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _0810EE42
.pool
_0810EE40:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_0810EE42:
ldrb r0, [r4]
movs r1, 0
@@ -32631,7 +32631,7 @@ _0810EECC:
adds r0, r5, 0
bl sub_80A749C
adds r0, r5, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810EEEC:
add sp, 0x4
pop {r4,r5}
@@ -32700,11 +32700,11 @@ _0810EF60:
ldrsh r0, [r2, r1]
cmp r0, 0
bne _0810EF74
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _0810EF76
.pool
_0810EF74:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_0810EF76:
ldrb r0, [r4]
movs r1, 0
@@ -32773,7 +32773,7 @@ _0810EFEA:
cmp r0, 0x1F
bne _0810EFFE
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810EFFE:
pop {r4}
pop {r0}
@@ -32845,7 +32845,7 @@ _0810F02A:
b _0810F07E
_0810F078:
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810F07E:
pop {r0}
bx r0
@@ -32861,7 +32861,7 @@ sub_810F084: @ 810F084
mov r8, r0
ldrh r4, [r0, 0x20]
ldrh r5, [r0, 0x22]
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x2
bl sub_80A5C6C
@@ -33021,7 +33021,7 @@ _0810F1BC:
_0810F1DA:
strb r0, [r1]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -33038,7 +33038,7 @@ sub_810F1EC: @ 810F1EC
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -33064,12 +33064,12 @@ _0810F212:
bne _0810F2B8
_0810F22E:
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
adds r7, r4, 0
adds r0, r4, 0
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -33078,7 +33078,7 @@ _0810F22E:
orrs r1, r0
lsrs r6, r1, 31
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F264
@@ -33091,7 +33091,7 @@ _0810F264:
adds r4, r0, 0
eors r4, r7
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F284
@@ -33105,11 +33105,11 @@ _0810F284:
mov r0, r8
cmp r0, 0
bne _0810F2B8
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0810F2B8
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -33126,7 +33126,7 @@ _0810F2B0:
movs r0, 0x28
b _0810F2F2
_0810F2B8:
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
bl GetBankSide
lsls r0, 24
@@ -33193,7 +33193,7 @@ sub_810F340: @ 810F340
push {r4,r5,lr}
adds r5, r0, 0
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
movs r1, 0x3C
@@ -33205,7 +33205,7 @@ sub_810F340: @ 810F340
b _0810F3B6
_0810F35C:
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F382
@@ -33226,7 +33226,7 @@ _0810F382:
movs r0, 0x2
eors r4, r0
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F3AC
@@ -33370,12 +33370,12 @@ sub_810F46C: @ 810F46C
cmp r0, 0
bne _0810F502
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
adds r6, r4, 0
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F4D4
@@ -33398,7 +33398,7 @@ _0810F4D4:
adds r4, r0, 0
eors r4, r6
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F502
@@ -33441,11 +33441,11 @@ sub_810F524: @ 810F524
cmp r0, 0
bne _0810F57C
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -33454,7 +33454,7 @@ sub_810F524: @ 810F524
orrs r1, r0
lsrs r5, r1, 31
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F562
@@ -33464,7 +33464,7 @@ _0810F562:
movs r0, 0x2
eors r4, r0
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0810F57C
@@ -33473,7 +33473,7 @@ _0810F562:
adds r0, r5, 0
bl sub_80A477C
_0810F57C:
- ldr r0, =move_anim_8072740
+ ldr r0, =DestroyAnimSprite
str r0, [r6, 0x1C]
pop {r4-r6}
pop {r0}
@@ -33501,11 +33501,11 @@ _0810F5A6:
lsls r0, 24
cmp r0, 0
bne _0810F5EE
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0810F5EE
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -33568,7 +33568,7 @@ _0810F62C:
sub_810F634: @ 810F634
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -33608,7 +33608,7 @@ _0810F684:
movs r0, 0x1
_0810F692:
strh r0, [r5, 0x30]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A67D8
@@ -33623,7 +33623,7 @@ _0810F692:
sub_810F6B0: @ 810F6B0
push {r4-r7,lr}
adds r5, r0, 0
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x1
bl sub_80A861C
@@ -33756,7 +33756,7 @@ _0810F7B4:
cmp r0, r1
bne _0810F7CC
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810F7CC:
pop {r4}
pop {r0}
@@ -33805,7 +33805,7 @@ sub_810F810: @ 810F810
cmp r0, 0
bne _0810F830
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810F830:
pop {r4}
pop {r0}
@@ -33831,7 +33831,7 @@ sub_810F83C: @ 810F83C
strh r0, [r4, 0x8]
strh r1, [r4, 0xA]
strh r1, [r4, 0xC]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -33930,7 +33930,7 @@ _0810F900:
ldrb r0, [r4, 0x8]
bl sub_80A7344
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810F936:
pop {r4,r5}
pop {r0}
@@ -33952,7 +33952,7 @@ sub_810F940: @ 810F940
movs r0, 0x10
strh r0, [r5, 0xE]
strh r1, [r5, 0x10]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -34203,7 +34203,7 @@ _0810FB44:
movs r1, 0
bl SetGpuReg
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810FB5A:
pop {r4-r6}
pop {r0}
@@ -34241,7 +34241,7 @@ _0810FB8A:
cmp r1, r0
bne _0810FB9C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0810FB9C:
ldrh r0, [r4, 0x30]
adds r0, 0x1
@@ -34260,7 +34260,7 @@ sub_810FBA8: @ 810FBA8
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0810FBD4
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -34305,7 +34305,7 @@ sub_810FBF0: @ 810FBF0
bne _0810FC60
ldr r0, =0x0000fff6
strh r0, [r5, 0x1C]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x5
bl sub_80A861C
@@ -34316,7 +34316,7 @@ sub_810FBF0: @ 810FBF0
bl sub_80A861C
adds r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x5
bl sub_80A861C
@@ -34331,7 +34331,7 @@ sub_810FBF0: @ 810FBF0
_0810FC60:
movs r0, 0xA
strh r0, [r5, 0x1C]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x4
bl sub_80A861C
@@ -34342,7 +34342,7 @@ _0810FC60:
bl sub_80A861C
subs r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x4
bl sub_80A861C
@@ -34357,7 +34357,7 @@ _0810FC94:
bne _0810FCE8
ldr r0, =0x0000fff6
strh r0, [r5, 0x1C]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x4
bl sub_80A861C
@@ -34368,7 +34368,7 @@ _0810FC94:
bl sub_80A861C
adds r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x4
bl sub_80A861C
@@ -34383,7 +34383,7 @@ _0810FC94:
_0810FCE8:
movs r0, 0xA
strh r0, [r5, 0x1C]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x5
bl sub_80A861C
@@ -34394,7 +34394,7 @@ _0810FCE8:
bl sub_80A861C
subs r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x5
bl sub_80A861C
@@ -34497,7 +34497,7 @@ _0810FDD4:
cmp r0, 0x11
ble _0810FDE8
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0810FDE8:
pop {r4,r5}
pop {r0}
@@ -34535,7 +34535,7 @@ sub_810FE14: @ 810FE14
lsls r1, 3
ldr r0, =gTasks
adds r4, r1, r0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl sub_80A6190
lsls r0, 24
@@ -34590,21 +34590,21 @@ _0810FE86:
movs r0, 0
strh r0, [r4, 0x24]
_0810FE92:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0810FEB8
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r4, 0x1C]
ldr r0, =0x04000014
b _0810FEC0
.pool
_0810FEB8:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r4, 0x1C]
ldr r0, =0x04000018
@@ -34786,7 +34786,7 @@ _08110014:
.pool
_08110020:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08110026:
pop {r3,r4}
mov r8, r3
@@ -34819,7 +34819,7 @@ sub_8110034: @ 8110034
cmp r6, 0xFF
bne _0811006C
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08110116
.pool
_0811006C:
@@ -34835,7 +34835,7 @@ _0811006C:
adds r0, r5, 0
bl FreeOamMatrix
mov r0, r8
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08110116
.pool
_08110094:
@@ -35035,7 +35035,7 @@ _08110228:
lsrs r0, 24
bl FreeOamMatrix
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08110238:
pop {r4,r5}
pop {r0}
@@ -35062,7 +35062,7 @@ _08110256:
beq _0811034A
b _08110360
_08110260:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -35110,7 +35110,7 @@ _081102B8:
beq _08110360
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -35181,7 +35181,7 @@ _0811034A:
movs r1, 0
bl SetGpuReg
adds r0, r5, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08110360:
pop {r4,r5}
pop {r0}
@@ -35209,7 +35209,7 @@ sub_8110368: @ 8110368
b _081103C4
.pool
_08110394:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -35232,7 +35232,7 @@ _08110394:
negs r0, r0
strh r0, [r1]
_081103C4:
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A60AC
@@ -35270,7 +35270,7 @@ _081103C4:
strh r0, [r6, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r6, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r6, 0
bl StoreSpriteCallbackInData6
pop {r4-r6}
@@ -35297,7 +35297,7 @@ sub_8110438: @ 8110438
b _08110478
.pool
_0811045C:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -35311,7 +35311,7 @@ _0811045C:
negs r1, r1
strh r1, [r0]
_08110478:
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A60AC
@@ -35345,7 +35345,7 @@ _08110478:
strh r0, [r6, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r6, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r6, 0
bl StoreSpriteCallbackInData6
pop {r4-r6}
@@ -35384,7 +35384,7 @@ _08110500:
ldrsh r0, [r1, r2]
cmp r0, 0
bne _08110548
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -35400,7 +35400,7 @@ _08110500:
b _0811055A
.pool
_08110548:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -35431,7 +35431,7 @@ sub_811057C: @ 811057C
cmp r0, 0
beq _08110592
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _081105AE
_08110592:
movs r1, 0x3A
@@ -35457,7 +35457,7 @@ _081105AE:
sub_81105B4: @ 81105B4
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -35465,7 +35465,7 @@ sub_81105B4: @ 81105B4
adds r3, 0x22
movs r1, 0
bl sub_80A8924
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -35490,7 +35490,7 @@ _081105FC:
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -35545,7 +35545,7 @@ _08110664:
cmp r0, 0x33
bne _08110678
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08110678:
pop {r0}
bx r0
@@ -35633,7 +35633,7 @@ sub_8110700: @ 8110700
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
@@ -35655,7 +35655,7 @@ sub_8110720: @ 8110720
b _08110762
.pool
_08110740:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -35676,11 +35676,11 @@ _08110762:
lsls r0, 24
cmp r0, 0
bne _081107B2
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
adds r4, r0, 0
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
bl GetBankSide
lsls r4, 24
@@ -35712,7 +35712,7 @@ _081107B2:
adds r0, r7, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -35764,7 +35764,7 @@ _081107B2:
strh r5, [r7, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r7, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r7, 0
bl StoreSpriteCallbackInData6
add sp, 0x4
@@ -35780,7 +35780,7 @@ sub_8110850: @ 8110850
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -35794,7 +35794,7 @@ _08110870:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -35849,7 +35849,7 @@ sub_81108CC: @ 81108CC
cmp r0, 0
beq _081108F8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _08110988
_081108F8:
movs r0, 0x2E
@@ -35941,11 +35941,11 @@ sub_8110994: @ 8110994
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081109B0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _081109B2
.pool
_081109B0:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_081109B2:
ldrb r0, [r4]
movs r1, 0x2
@@ -35980,7 +35980,7 @@ sub_81109F0: @ 81109F0
ldrsh r0, [r6, r1]
cmp r0, 0
beq _08110A10
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x20
@@ -36064,7 +36064,7 @@ sub_8110AB4: @ 8110AB4
bl StartSpriteAnim
adds r0, r5, 0
bl AnimateSprite
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -36183,7 +36183,7 @@ sub_8110B80: @ 8110B80
cmp r0, r1
bne _08110BC6
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08110BC6:
pop {r4}
pop {r0}
@@ -36207,11 +36207,11 @@ sub_8110BCC: @ 8110BCC
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -36219,11 +36219,11 @@ sub_8110BCC: @ 8110BCC
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_08110C10:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r5, [r0]
- ldr r4, =gUnknown_02022E1A
+ ldr r4, =gBattle_BG1_Y
strh r5, [r4]
movs r0, 0x14
movs r1, 0
@@ -36254,7 +36254,7 @@ _08110C10:
ldrsh r0, [r0, r1]
cmp r0, 0
beq _08110C6E
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -36293,7 +36293,7 @@ sub_8110CB0: @ 8110CB0
adds r2, r1, 0
cmp r0, 0
bne _08110CE4
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r3, =0x0000fffa
adds r0, r3, 0
ldrh r3, [r1]
@@ -36301,12 +36301,12 @@ sub_8110CB0: @ 8110CB0
b _08110CEA
.pool
_08110CE4:
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x6
_08110CEA:
strh r0, [r1]
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
ldr r3, =0x0000ffff
adds r0, r3, 0
ldrh r3, [r1]
@@ -36440,12 +36440,12 @@ _08110DFC:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_08110E10:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -36456,9 +36456,9 @@ _08110E10:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08110E3A:
add sp, 0x10
pop {r4,r5}
@@ -36480,7 +36480,7 @@ sub_8110E4C: @ 8110E4C
ldrsh r0, [r4, r2]
cmp r0, 0
beq _08110E98
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -36568,7 +36568,7 @@ _08110F0E:
cmp r0, r1
bge _08110F24
_08110F20:
- ldr r0, =move_anim_8072740
+ ldr r0, =DestroyAnimSprite
str r0, [r5, 0x1C]
_08110F24:
pop {r4,r5}
@@ -36597,7 +36597,7 @@ sub_8110F30: @ 8110F30
strh r0, [r4, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -36620,7 +36620,7 @@ sub_8110F74: @ 8110F74
lsls r1, 3
ldr r0, =gTasks
adds r6, r1, r0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -36636,7 +36636,7 @@ sub_8110F74: @ 8110F74
lsls r1, 13
adds r0, r1
lsrs r7, r0, 16
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -36713,13 +36713,13 @@ _0811101E:
strh r4, [r6, 0x16]
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r4, r0, 0
lsls r4, 24
asrs r4, 8
lsrs r4, 16
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
lsls r0, 24
strh r4, [r6, 0x22]
asrs r0, 24
@@ -36926,7 +36926,7 @@ _081111FE:
cmp r0, 0
bne _0811120C
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0811120C:
pop {r4}
pop {r0}
@@ -37090,7 +37090,7 @@ _0811134E:
thumb_func_start sub_811135C
sub_811135C: @ 811135C
push {lr}
- ldr r0, =gDisableStructMoveAnim
+ ldr r0, =gAnimDisableStructPtr
ldr r0, [r0]
ldrb r1, [r0, 0x11]
lsrs r0, r1, 4
@@ -37183,7 +37183,7 @@ _08111400:
cmp r0, 0
bne _08111412
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08111412:
pop {r0}
bx r0
@@ -37193,7 +37193,7 @@ _08111412:
sub_8111418: @ 8111418
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -37216,7 +37216,7 @@ _08111434:
sub_8111444: @ 8111444
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0
bl sub_80A5C6C
@@ -37286,7 +37286,7 @@ sub_811149C: @ 811149C
cmp r0, 0x8C
ble _081114E6
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081114E6:
pop {r4}
pop {r0}
@@ -37298,7 +37298,7 @@ sub_81114EC: @ 81114EC
push {lr}
lsls r0, 24
lsrs r3, r0, 24
- ldr r2, =gMoveDmgMoveAnim
+ ldr r2, =gAnimMoveDmg
ldr r0, [r2]
cmp r0, 0x20
bgt _08111500
@@ -37322,7 +37322,7 @@ _08111510:
strh r0, [r1, 0xE]
_0811151A:
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -37347,7 +37347,7 @@ sub_811152C: @ 811152C
movs r0, 0xC8
strh r0, [r5, 0xA]
_0811154E:
- ldr r4, =gUnknown_02022E22
+ ldr r4, =gBattle_BG3_Y
movs r1, 0xA
ldrsh r0, [r5, r1]
movs r1, 0xA
@@ -37365,7 +37365,7 @@ _0811154E:
movs r0, 0x1
bl sub_80A6DAC
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0811157A:
ldrh r0, [r5, 0x8]
adds r0, 0x1
@@ -37396,7 +37396,7 @@ sub_8111590: @ 8111590
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
ldrh r0, [r0]
strh r0, [r4, 0xC]
_081115BC:
@@ -37405,7 +37405,7 @@ _081115BC:
movs r1, 0xFF
ands r0, r1
strh r0, [r4, 0xA]
- ldr r6, =gUnknown_02022E22
+ ldr r6, =gBattle_BG3_Y
movs r2, 0xA
ldrsh r1, [r4, r2]
movs r0, 0x4
@@ -37424,7 +37424,7 @@ _081115BC:
movs r0, 0x1
bl sub_80A6DAC
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081115F4:
pop {r4-r6}
pop {r0}
@@ -37443,7 +37443,7 @@ sub_811160C: @ 811160C
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -37748,7 +37748,7 @@ _08111852:
cmp r0, 0x3D
bne _08111884
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08111884:
pop {r4}
pop {r0}
@@ -37902,7 +37902,7 @@ _081119BC:
adds r0, r1, 0
bl sub_80A7344
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
movs r0, 0x50
movs r1, 0
bl SetGpuReg
@@ -37925,7 +37925,7 @@ sub_81119E0: @ 81119E0
adds r4, r0, 0
ldrh r5, [r4, 0x20]
ldrh r6, [r4, 0x22]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
@@ -38042,7 +38042,7 @@ _08111AD2:
lsls r0, 16
cmp r0, 0
bgt _08111B96
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -38104,7 +38104,7 @@ _08111B3C:
lsls r0, 16
cmp r0, 0
bgt _08111B96
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -38223,7 +38223,7 @@ _08111C38:
cmp r6, 0
beq _08111C44
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _08111C4A
_08111C44:
ldrh r0, [r3, 0x30]
@@ -38254,7 +38254,7 @@ sub_8111C50: @ 8111C50
cmp r0, 0
bge _08111C80
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08111D5C
.pool
_08111C80:
@@ -38285,7 +38285,7 @@ _08111C80:
adds r0, r4
movs r1, 0x50
strh r1, [r0, 0x2E]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -38470,7 +38470,7 @@ _08111E1C:
b _08111E48
_08111E42:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08111E48:
pop {r4}
pop {r0}
@@ -38510,9 +38510,9 @@ sub_8111E78: @ 8111E78
lsls r0, 3
ldr r1, =gTasks
adds r5, r0, r1
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r6, r0, 24
movs r1, 0x26
@@ -38557,7 +38557,7 @@ _08111ED0:
bl FreeSpritePaletteByTag
_08111EFE:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _081120CC
.pool
_08111F0C:
@@ -38602,9 +38602,9 @@ _08111F0C:
adds r2, r0
lsls r2, 2
adds r2, r4
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
@@ -38864,9 +38864,9 @@ sub_8112170: @ 8112170
lsls r0, 3
ldr r1, =gTasks
adds r4, r0, r1
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r6, r0, 24
movs r1, 0x26
@@ -38956,7 +38956,7 @@ _08112248:
bl SetGpuRegBits
_08112252:
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08112258:
ldrh r0, [r4, 0x26]
adds r0, 0x1
@@ -38979,7 +38979,7 @@ sub_8112264: @ 8112264
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081122AC
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -38994,11 +38994,11 @@ sub_8112264: @ 8112264
lsls r2, 13
adds r0, r2
lsrs r5, r0, 16
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
b _081122D0
.pool
_081122AC:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -39013,7 +39013,7 @@ _081122AC:
lsls r2, 13
adds r0, r2
lsrs r5, r0, 16
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
_081122D0:
ldrb r0, [r4]
movs r1, 0
@@ -39166,7 +39166,7 @@ sub_81123C4: @ 81123C4
ldr r2, =gBattleAnimArgs
ldrh r0, [r2]
strh r0, [r1, 0x1C]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -39189,7 +39189,7 @@ _08112434:
_08112436:
lsls r1, r4, 16
asrs r3, r1, 16
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r2, [r0]
str r1, [sp, 0x10]
cmp r3, r2
@@ -39201,7 +39201,7 @@ _08112436:
lsls r0, r4, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08112502
@@ -39565,7 +39565,7 @@ _0811273C:
movs r1, 0
bl SetGpuReg
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08112752:
pop {r4,r5}
pop {r0}
@@ -39577,10 +39577,10 @@ sub_8112758: @ 8112758
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
ldr r1, =0x00003f3f
movs r0, 0x48
@@ -39594,7 +39594,7 @@ sub_8112758: @ 8112758
movs r0, 0x54
movs r1, 0x10
bl SetGpuReg
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -39611,13 +39611,13 @@ _081127A0:
_081127B8:
movs r6, 0xC8
_081127BA:
- ldr r1, =gUnknown_02022E24
+ ldr r1, =gBattle_WIN0H
lsls r3, r6, 16
asrs r2, r3, 16
lsls r0, r2, 8
orrs r0, r2
strh r0, [r1]
- ldr r1, =gUnknown_02022E26
+ ldr r1, =gBattle_WIN0V
movs r5, 0x28
ldr r0, =0x00002828
strh r0, [r1]
@@ -39798,12 +39798,12 @@ _08112938:
ldr r0, _08112988 @=sub_8112994
str r0, [r4]
_08112966:
- ldr r1, _0811298C @=gUnknown_02022E24
+ ldr r1, _0811298C @=gBattle_WIN0H
mov r2, r9
lsls r0, r2, 8
orrs r7, r0
strh r7, [r1]
- ldr r1, _08112990 @=gUnknown_02022E26
+ ldr r1, _08112990 @=gBattle_WIN0V
lsls r0, r6, 8
orrs r5, r0
strh r5, [r1]
@@ -39819,9 +39819,9 @@ _08112966:
_08112988:
.4byte sub_8112994
_0811298C:
- .4byte gUnknown_02022E24
+ .4byte gBattle_WIN0H
_08112990:
- .4byte gUnknown_02022E26
+ .4byte gBattle_WIN0V
thumb_func_end sub_811280C
thumb_func_start sub_8112994
@@ -39837,9 +39837,9 @@ sub_8112994: @ 8112994
lsrs r1, r0, 24
cmp r1, 0
bne _081129DA
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
ldr r4, =0x00003f3f
movs r0, 0x48
@@ -39855,7 +39855,7 @@ sub_8112994: @ 8112994
movs r1, 0
bl SetGpuReg
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081129DA:
pop {r4,r5}
pop {r0}
@@ -39869,7 +39869,7 @@ sub_81129F0: @ 81129F0
adds r4, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -40042,13 +40042,13 @@ sub_8112B44: @ 8112B44
movs r0, 0x52
movs r1, 0
bl SetGpuReg
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
@@ -40064,7 +40064,7 @@ sub_8112B78: @ 8112B78
movs r1, 0xC
bl Sin
strh r0, [r5, 0x24]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -40171,7 +40171,7 @@ sub_8112C4C: @ 8112C4C
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
@@ -40195,7 +40195,7 @@ sub_8112C6C: @ 8112C6C
mov r8, r0
mov r0, r8
strh r0, [r4, 0xA]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -40301,7 +40301,7 @@ _08112D56:
lsls r0, 2
adds r5, r0, r1
strh r7, [r5, 0x2E]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
movs r1, 0
@@ -40445,7 +40445,7 @@ _08112E80:
movs r1, 0
bl SetGpuReg
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08112E96:
pop {r4-r7}
pop {r0}
@@ -40562,7 +40562,7 @@ sub_8112F60: @ 8112F60
orrs r1, r2
strb r1, [r3]
ldr r2, =gBankSpriteIds
- ldr r1, =gAnimationBankAttacker
+ ldr r1, =gAnimBankAttacker
ldrb r1, [r1]
adds r1, r2
ldrb r1, [r1]
@@ -40679,7 +40679,7 @@ _08113054:
sub_8113064: @ 8113064
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -40752,7 +40752,7 @@ sub_8113100: @ 8113100
push {r4,r5,lr}
adds r5, r0, 0
bl sub_80A6838
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -40765,7 +40765,7 @@ sub_8113100: @ 8113100
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -40834,11 +40834,11 @@ sub_81131B4: @ 81131B4
ldrsh r0, [r0, r1]
cmp r0, 0
bne _081131D0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _081131D2
.pool
_081131D0:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_081131D2:
ldrb r0, [r4]
movs r1, 0
@@ -40876,7 +40876,7 @@ _081131D2:
sub_8113224: @ 8113224
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -40898,7 +40898,7 @@ _0811323E:
sub_8113250: @ 8113250
push {r4-r7,lr}
adds r6, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -41088,7 +41088,7 @@ _081133CE:
cmp r0, 0x14
ble _081133E2
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081133E2:
pop {r4,r5}
pop {r0}
@@ -41106,22 +41106,22 @@ sub_81133E8: @ 81133E8
lsls r1, 3
ldr r0, =gTasks
adds r4, r1, r0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08113424
ldr r0, =0x04000014
str r0, [sp]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
b _0811342A
.pool
_08113424:
ldr r0, =0x04000018
str r0, [sp]
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
_0811342A:
ldrh r0, [r0]
strh r0, [r4, 0xC]
@@ -41133,7 +41133,7 @@ _0811342A:
strb r0, [r1, 0x8]
mov r0, sp
strb r5, [r0, 0x9]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A6190
lsls r0, 24
@@ -41274,7 +41274,7 @@ _08113556:
.pool
_08113568:
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0811356E:
pop {r0}
bx r0
@@ -41354,7 +41354,7 @@ sub_81135EC: @ 81135EC
movs r1, 0x5
bl __divsi3
adds r6, r0, 0
- ldr r1, =gAnimationBankAttacker
+ ldr r1, =gAnimBankAttacker
mov r8, r1
ldrb r0, [r1]
movs r1, 0x2
@@ -41453,7 +41453,7 @@ sub_811369C: @ 811369C
cmp r0, r1
ble _081136E0
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081136E0:
pop {r4}
pop {r0}
@@ -41473,14 +41473,14 @@ sub_81136E8: @ 81136E8
ldr r1, =gBattleAnimArgs
ldrh r1, [r1]
strh r1, [r0, 0x8]
- ldr r1, =gAnimationBankAttacker
+ ldr r1, =gAnimBankAttacker
ldrb r4, [r1]
movs r1, 0x10
strh r1, [r0, 0xA]
movs r0, 0x52
bl SetGpuReg
adds r0, r4, 0
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -41545,7 +41545,7 @@ sub_811375C: @ 811375C
bne _081137DE
ldr r2, =gSprites
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -41559,7 +41559,7 @@ sub_811375C: @ 811375C
orrs r1, r2
strb r1, [r0]
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _081137DE
.pool
_081137D8:
@@ -41639,7 +41639,7 @@ sub_811381C: @ 811381C
movs r1, 0
bl SetGpuReg
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08113882
.pool
_0811387C:
@@ -41661,9 +41661,9 @@ sub_8113888: @ 8113888
lsls r1, 5
movs r0, 0x52
bl SetGpuReg
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -41679,7 +41679,7 @@ _081138BC:
bl SetGpuReg
_081138C4:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -41690,14 +41690,14 @@ _081138C4:
sub_81138D4: @ 81138D4
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_80A5C6C
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x30]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -41805,7 +41805,7 @@ _081139C2:
cmp r0, 0
bne _081139D4
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081139D4:
pop {r4-r6}
pop {r0}
@@ -41918,11 +41918,11 @@ sub_8113A90: @ 8113A90
adds r3, r0, 0
cmp r1, 0
bne _08113AAC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08113AAE
.pool
_08113AAC:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08113AAE:
ldrb r5, [r0]
movs r6, 0x14
@@ -42054,7 +42054,7 @@ sub_8113BAC: @ 8113BAC
lsls r1, 3
ldr r0, =gTasks
adds r5, r1, r0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x1
bl sub_80A5C6C
@@ -42096,9 +42096,9 @@ _08113C1C:
ldr r0, =0x0000ffc0
_08113C1E:
strh r0, [r5, 0x18]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xE]
@@ -42107,7 +42107,7 @@ _08113C1E:
add r4, sp, 0xC
adds r0, r4, 0
bl sub_80A6B30
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
ldr r1, =0x00003f42
@@ -42125,11 +42125,11 @@ _08113C1E:
lsls r0, 24
cmp r0, 0
bne _08113CB0
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
b _08113CAA
.pool
_08113C80:
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
ldr r1, =0x00003f44
@@ -42146,7 +42146,7 @@ _08113C80:
lsls r0, 24
cmp r0, 0
bne _08113CB0
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
_08113CAA:
ldrh r0, [r1]
adds r0, 0xF0
@@ -42202,13 +42202,13 @@ _08113CDC:
ldr r1, =0x00003f3f
movs r0, 0x48
bl SetGpuReg
- ldr r2, =gUnknown_02022E24
+ ldr r2, =gBattle_WIN0H
ldrh r0, [r5, 0x24]
lsls r0, 8
ldrh r1, [r5, 0x26]
orrs r0, r1
strh r0, [r2]
- ldr r1, =gUnknown_02022E26
+ ldr r1, =gBattle_WIN0V
movs r0, 0xA0
strh r0, [r1]
ldr r0, =sub_8113D60
@@ -42331,7 +42331,7 @@ _08113E1C:
blt _08113E3E
strh r2, [r4, 0x24]
_08113E3E:
- ldr r3, =gUnknown_02022E24
+ ldr r3, =gBattle_WIN0H
ldrh r2, [r4, 0x24]
lsls r0, r2, 8
ldrh r1, [r4, 0x26]
@@ -42355,7 +42355,7 @@ _08113E5E:
.pool
_08113E6C:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08113E72:
pop {r4}
pop {r0}
@@ -42398,10 +42398,10 @@ _08113EBC:
lsrs r0, 24
cmp r0, 0x1
bne _08113EF8
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
ldr r4, =0x00003f3f
movs r0, 0x48
@@ -42411,13 +42411,13 @@ _08113EBC:
adds r1, r4, 0
bl SetGpuReg
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _081140A6
.pool
_08113EF8:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xE]
@@ -42426,14 +42426,14 @@ _08113EF8:
ldr r1, =0x00003f42
movs r0, 0x50
bl SetGpuReg
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
b _08113F2E
.pool
_08113F24:
ldr r1, =0x00003f44
movs r0, 0x50
bl SetGpuReg
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
_08113F2E:
ldrh r0, [r1]
adds r0, 0xF0
@@ -42447,7 +42447,7 @@ _08113F40:
bne _08113F68
mov r0, sp
bl sub_80A6B30
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
mov r0, sp
@@ -42459,7 +42459,7 @@ _08113F40:
b _08113F78
.pool
_08113F68:
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
ldrh r0, [r0]
strh r0, [r5, 0x1C]
movs r0, 0
@@ -42472,7 +42472,7 @@ _08113F78:
b _08114044
.pool
_08113F84:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x1
bl sub_80A5C6C
@@ -42588,13 +42588,13 @@ _08114078:
ldr r1, =0x00003f3f
movs r0, 0x48
bl SetGpuReg
- ldr r2, =gUnknown_02022E24
+ ldr r2, =gBattle_WIN0H
ldrh r0, [r5, 0x24]
lsls r0, 8
ldrh r1, [r5, 0x26]
orrs r0, r1
strh r0, [r2]
- ldr r1, =gUnknown_02022E26
+ ldr r1, =gBattle_WIN0V
movs r0, 0xA0
strh r0, [r1]
movs r0, 0
@@ -42686,7 +42686,7 @@ _08114150:
movs r0, 0x1
strh r0, [r4, 0xA]
_08114154:
- ldr r2, =gUnknown_02022E24
+ ldr r2, =gBattle_WIN0H
ldrh r0, [r4, 0x24]
lsls r0, 8
ldrh r1, [r4, 0x26]
@@ -42782,10 +42782,10 @@ _08114204:
b _08114232
.pool
_08114210:
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
ldr r4, =0x00003f3f
movs r0, 0x48
@@ -42795,7 +42795,7 @@ _08114210:
adds r1, r4, 0
bl SetGpuReg
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08114232:
pop {r4,r5}
pop {r0}
@@ -43014,9 +43014,9 @@ sub_81143C0: @ 81143C0
lsls r0, 24
lsrs r0, 24
mov r10, r0
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -43049,7 +43049,7 @@ sub_81143C0: @ 81143C0
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0811444E
@@ -43075,7 +43075,7 @@ sub_81143C0: @ 81143C0
strb r1, [r0]
_0811444E:
mov r0, r10
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r3-r5}
mov r8, r3
mov r9, r4
@@ -43091,9 +43091,9 @@ sub_8114470: @ 8114470
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -43106,7 +43106,7 @@ sub_8114470: @ 8114470
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _081144AC
@@ -43116,7 +43116,7 @@ sub_8114470: @ 8114470
bl sub_80A477C
_081144AC:
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
@@ -43141,7 +43141,7 @@ sub_81144BC: @ 81144BC
bl StartSpriteAnim
ldr r0, =sub_80A67D8
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
@@ -43157,9 +43157,9 @@ sub_81144F8: @ 81144F8
lsls r0, 24
lsrs r7, r0, 24
movs r6, 0
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
strh r6, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r6, [r0]
ldr r1, =0x00003f3f
movs r0, 0x48
@@ -43180,11 +43180,11 @@ sub_81144F8: @ 81144F8
movs r0, 0x1
movs r1, 0x4
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -43192,9 +43192,9 @@ sub_81144F8: @ 81144F8
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0811455C:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081145D6
@@ -43202,7 +43202,7 @@ _0811455C:
lsls r0, 24
cmp r0, 0
bne _081145D6
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
bl GetBankIdentity
lsls r0, 24
@@ -43218,7 +43218,7 @@ _0811458C:
ldrb r0, [r4]
movs r5, 0x2
eors r0, r5
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -43248,21 +43248,21 @@ _0811458C:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r6, 0x1
_081145D6:
bl IsContest
lsls r0, 24
cmp r0, 0
beq _08114614
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldrh r5, [r0]
b _0811465C
.pool
_08114614:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -43299,7 +43299,7 @@ _0811465C:
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r1, r4, 0
adds r2, r5, 0
@@ -43324,7 +43324,7 @@ _0811465C:
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
ldr r0, =gSprites
lsls r1, r4, 4
adds r1, r4
@@ -43334,7 +43334,7 @@ _0811465C:
negs r0, r0
adds r0, 0x60
strh r0, [r2]
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
ldrh r0, [r1, 0x22]
negs r0, r0
adds r0, 0x20
@@ -43399,7 +43399,7 @@ sub_8114748: @ 8114748
adds r0, 0x4
movs r5, 0
strh r0, [r4, 0x1C]
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
ldrh r3, [r2]
subs r1, r3, 0x4
strh r1, [r2]
@@ -43458,7 +43458,7 @@ _081147B8:
cmp r0, 0x1
bne _08114886
ldr r2, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -43485,9 +43485,9 @@ _081147B8:
_08114824:
cmp r0, 0x3
bne _08114886
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
strh r5, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r5, [r0]
ldr r4, =0x00003f3f
movs r0, 0x48
@@ -43503,7 +43503,7 @@ _08114824:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_08114856:
movs r0, 0
bl GetGpuReg
@@ -43523,7 +43523,7 @@ _08114856:
movs r1, 0
bl SetGpuReg
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08114886:
add sp, 0x10
pop {r4-r6}
@@ -43586,11 +43586,11 @@ _08114902:
beq _0811492E
_08114908:
adds r0, r4, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0811492C
@@ -43617,7 +43617,7 @@ _0811492E:
bl sub_80A750C
_0811494A:
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
@@ -43629,7 +43629,7 @@ sub_8114960: @ 8114960
push {lr}
lsls r0, 24
lsrs r3, r0, 24
- ldr r2, =gUnknown_02038432
+ ldr r2, =gAnimMoveTurn
ldrb r0, [r2]
cmp r0, 0x1
bhi _08114974
@@ -43645,7 +43645,7 @@ _08114974:
strh r0, [r1, 0xE]
_08114980:
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -43655,7 +43655,7 @@ _08114980:
sub_8114994: @ 8114994
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -43670,7 +43670,7 @@ sub_8114994: @ 8114994
strh r0, [r4, 0x22]
movs r0, 0x14
strh r0, [r4, 0x2E]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -43716,7 +43716,7 @@ sub_81149FC: @ 81149FC
strh r1, [r5, 0x24]
movs r0, 0x14
strh r0, [r5, 0x2E]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -43751,7 +43751,7 @@ sub_8114A60: @ 8114A60
cmp r0, 0
beq _08114A74
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08114A74:
pop {r4}
pop {r0}
@@ -43764,7 +43764,7 @@ sub_8114A7C: @ 8114A7C
adds r6, r0, 0
movs r1, 0x1
bl sub_80A6980
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -43778,7 +43778,7 @@ _08114A9C:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -43797,7 +43797,7 @@ _08114A9C:
strh r0, [r6, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r6, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r6, 0
bl StoreSpriteCallbackInData6
pop {r4-r6}
@@ -43814,7 +43814,7 @@ sub_8114AF0: @ 8114AF0
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A60AC
@@ -43890,7 +43890,7 @@ sub_8114B80: @ 8114B80
ldrsh r0, [r6, r1]
cmp r0, 0
bne _08114BF4
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -43964,7 +43964,7 @@ _08114C2E:
cmp r0, r1
bge _08114C46
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08114C46:
pop {r0}
bx r0
@@ -44025,7 +44025,7 @@ _08114C74:
cmp r0, 0xA
bne _08114CB6
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08114CB6:
pop {r0}
bx r0
@@ -44096,29 +44096,29 @@ _08114D3C:
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1E]
cmp r0, 0x1
bne _08114D70
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r4, 0x20]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
b _08114D78
.pool
_08114D70:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r0, [r0]
strh r0, [r4, 0x20]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
_08114D78:
ldrh r0, [r0]
strh r0, [r4, 0x22]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A6190
lsls r0, 24
@@ -44189,11 +44189,11 @@ _08114DF6:
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _08114E20
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
b _08114E22
.pool
_08114E20:
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
_08114E22:
ldrh r0, [r4, 0x22]
subs r0, r2
@@ -44210,11 +44210,11 @@ _08114E22:
ldrsh r0, [r4, r3]
cmp r0, 0x1
bne _08114E4C
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
b _08114E4E
.pool
_08114E4C:
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
_08114E4E:
ldrh r0, [r4, 0x22]
subs r0, r2
@@ -44246,7 +44246,7 @@ _08114E7E:
.pool
_08114E8C:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
ldr r2, =gSprites
movs r0, 0x1C
ldrsh r1, [r4, r0]
@@ -44289,22 +44289,22 @@ sub_8114EB4: @ 8114EB4
movs r4, 0
strh r4, [r1, 0x24]
strh r4, [r1, 0x26]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08114F00
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
b _08114F02
.pool
_08114F00:
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
_08114F02:
strh r4, [r0]
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
@@ -44402,7 +44402,7 @@ _08114F78:
.pool
_08114FCC:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08114FD2:
pop {r4,r5}
pop {r0}
@@ -44442,23 +44442,23 @@ _08115018:
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1E]
cmp r0, 0x1
bne _08115044
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
b _08115046
.pool
_08115044:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
_08115046:
ldrh r0, [r0]
strh r0, [r4, 0x20]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A6190
lsls r0, 24
@@ -44521,7 +44521,7 @@ _081150C2:
.pool
_081150D4:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081150DA:
pop {r4}
pop {r0}
@@ -44540,13 +44540,13 @@ sub_81150E0: @ 81150E0
lsrs r4, r2, 16
cmp r0, 0x1
bne _08115104
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r3, [r0]
ldr r0, =0x04000014
b _0811510A
.pool
_08115104:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r3, [r0]
ldr r0, =0x04000018
_0811510A:
@@ -44634,11 +44634,11 @@ sub_81151A0: @ 81151A0
adds r7, r0, 0
cmp r1, 0
bne _081151BC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _081151BE
.pool
_081151BC:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_081151BE:
ldrb r4, [r0]
movs r6, 0x18
@@ -44698,7 +44698,7 @@ sub_8115228: @ 8115228
cmp r0, 0
beq _0811523C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0811523C:
pop {r4}
pop {r0}
@@ -44714,11 +44714,11 @@ sub_8115244: @ 8115244
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08115260
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08115262
.pool
_08115260:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08115262:
ldrb r5, [r0]
adds r0, r5, 0
@@ -44754,7 +44754,7 @@ _08115262:
ands r0, r2
orrs r0, r1
strh r0, [r6, 0x4]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r6, 0
bl StoreSpriteCallbackInData6
ldrh r0, [r4, 0x4]
@@ -44788,7 +44788,7 @@ sub_81152DC: @ 81152DC
b _08115314
.pool
_08115308:
- ldr r0, =gMovePowerMoveAnim
+ ldr r0, =gAnimMovePower
ldrh r0, [r0]
movs r1, 0xA
bl __udivsi3
@@ -44805,7 +44805,7 @@ _08115314:
beq _08115340
cmp r0, 0x5
bne _08115380
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
ldrh r0, [r0]
strh r0, [r4, 0x22]
ldr r0, =sub_81153AC
@@ -44818,7 +44818,7 @@ _08115340:
_08115346:
lsls r0, r5, 24
lsrs r0, 24
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08115370
@@ -44853,7 +44853,7 @@ _08115380:
cmp r0, 0xFF
bne _08115398
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _081153A0
_08115398:
movs r0, 0x1
@@ -44907,7 +44907,7 @@ _081153DA:
ands r0, r1
cmp r0, 0
bne _08115404
- ldr r1, =gUnknown_02022E20
+ ldr r1, =gBattle_BG3_X
ldrh r0, [r3, 0x26]
ldrh r2, [r3, 0x22]
adds r0, r2
@@ -44915,7 +44915,7 @@ _081153DA:
b _0811540E
.pool
_08115404:
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x26]
subs r1, r2
@@ -44951,7 +44951,7 @@ _08115430:
ands r1, r0
cmp r1, 0
bne _0811545C
- ldr r1, =gUnknown_02022E20
+ ldr r1, =gBattle_BG3_X
ldrh r0, [r3, 0x24]
ldrh r2, [r3, 0x22]
adds r0, r2
@@ -44959,7 +44959,7 @@ _08115430:
b _08115466
.pool
_0811545C:
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
ldrh r1, [r3, 0x22]
ldrh r2, [r3, 0x24]
subs r1, r2
@@ -44987,11 +44987,11 @@ _08115484:
b _0811549C
.pool
_08115490:
- ldr r1, =gUnknown_02022E20
+ ldr r1, =gBattle_BG3_X
ldrh r0, [r3, 0x22]
strh r0, [r1]
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0811549C:
pop {r0}
bx r0
@@ -45110,7 +45110,7 @@ _08115554:
blt _08115554
_08115578:
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0811557E:
pop {r4-r7}
pop {r0}
@@ -45191,7 +45191,7 @@ sub_8115600: @ 8115600
lsrs r1, r0, 24
ldr r3, =gBattleAnimArgs
movs r2, 0
- ldr r0, =gMovePowerMoveAnim
+ ldr r0, =gAnimMovePower
ldrh r0, [r0]
cmp r0, 0x63
bls _08115614
@@ -45199,7 +45199,7 @@ sub_8115600: @ 8115600
_08115614:
strh r2, [r3, 0x1E]
adds r0, r1, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -45217,11 +45217,11 @@ sub_8115628: @ 8115628
adds r6, r2, 0
cmp r0, 0
beq _08115648
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
b _0811564A
.pool
_08115648:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
_0811564A:
ldrb r0, [r0]
adds r5, r0, 0
@@ -45263,15 +45263,15 @@ _0811565A:
movs r0, 0xFF
ands r1, r0
strh r1, [r4, 0xC]
- ldr r2, =gUnknown_02022E20
+ ldr r2, =gBattle_BG3_X
ldrh r0, [r4, 0xA]
strh r0, [r2]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
strh r1, [r0]
ldrh r0, [r6, 0x4]
strh r0, [r4, 0xE]
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4-r7}
pop {r0}
bx r0
@@ -45295,20 +45295,20 @@ sub_81156D0: @ 81156D0
ldrsh r0, [r2, r4]
cmp r1, r0
bne _08115710
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
strh r1, [r0]
adds r0, r3, 0
bl DestroyTask
b _0811571C
.pool
_08115710:
- ldr r1, =gUnknown_02022E20
+ ldr r1, =gBattle_BG3_X
ldrh r0, [r2, 0xA]
strh r0, [r1]
- ldr r1, =gUnknown_02022E22
+ ldr r1, =gBattle_BG3_Y
ldrh r0, [r2, 0xC]
strh r0, [r1]
_0811571C:
@@ -45333,7 +45333,7 @@ sub_811572C: @ 811572C
strh r0, [r4, 0x22]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -45415,7 +45415,7 @@ _081157D2:
cmp r0, r1
bne _081157F6
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081157F6:
pop {r4}
pop {r0}
@@ -45503,7 +45503,7 @@ sub_8115884: @ 8115884
cmp r0, 0
bne _0811589A
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0811589A:
pop {r0}
bx r0
@@ -45638,7 +45638,7 @@ sub_8115984: @ 8115984
movs r2, 0
bl BlendPalettes
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081159AA:
pop {r4}
pop {r0}
@@ -45810,7 +45810,7 @@ _08115AF8:
b _08115B06
_08115B00:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08115B06:
pop {r4-r6}
pop {r0}
@@ -45852,9 +45852,9 @@ sub_8115B0C: @ 8115B0C
mov r8, r2
cmp r5, r1
bge _08115B74
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r3, [r0]
- ldr r7, =gAnimationBankTarget
+ ldr r7, =gAnimBankTarget
movs r0, 0x1
mov r12, r0
adds r2, r1, 0
@@ -45996,7 +45996,7 @@ _08115C6C:
b _08115C7A
_08115C74:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08115C7A:
pop {r4-r6}
pop {r0}
@@ -46135,7 +46135,7 @@ _08115D80:
b _08115D8E
_08115D88:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08115D8E:
pop {r4-r6}
pop {r0}
@@ -46317,7 +46317,7 @@ sub_8115EB8: @ 8115EB8
movs r3, 0
bl BeginNormalPaletteFade
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08115EFE:
add sp, 0x4
pop {r4,r5}
@@ -46336,9 +46336,9 @@ sub_8115F10: @ 8115F10
lsrs r0, 24
mov r8, r0
movs r2, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r6, [r0]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r7, [r0]
ldr r4, =gBattleAnimArgs
ldrh r1, [r4]
@@ -46380,7 +46380,7 @@ _08115F6E:
adds r0, r2, 0
bl InvertPlttBuffer
mov r0, r8
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
add sp, 0xC
pop {r3}
mov r8, r3
@@ -46429,10 +46429,10 @@ _08115FD6:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
mov r9, r0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
mov r10, r0
ldrh r1, [r4, 0xC]
@@ -46507,7 +46507,7 @@ _08116050:
adds r0, r5, 0
bl UnfadePlttBuffer
mov r0, r8
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0811607A:
pop {r3-r5}
mov r8, r3
@@ -46553,11 +46553,11 @@ _081160DC:
beq _081160F4
b _08116104
_081160E2:
- ldr r1, =gUnknown_02022E20
+ ldr r1, =gBattle_BG3_X
b _081160F6
.pool
_081160EC:
- ldr r1, =gUnknown_02022E22
+ ldr r1, =gBattle_BG3_Y
b _081160F6
.pool
_081160F4:
@@ -46679,7 +46679,7 @@ _081161BA:
bcc _081161BA
_081161DC:
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_081161E2:
pop {r4-r7}
pop {r0}
@@ -46692,7 +46692,7 @@ sub_81161F4: @ 81161F4
push {r4-r6,lr}
ldr r6, =gSprites
ldr r4, =gBankSpriteIds
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
@@ -46707,7 +46707,7 @@ sub_81161F4: @ 81161F4
adds r0, r2, 0
ands r0, r3
strb r0, [r1]
- ldr r3, =gAnimationBankTarget
+ ldr r3, =gAnimBankTarget
ldrb r0, [r3]
adds r0, r4
ldrb r1, [r0]
@@ -46793,10 +46793,10 @@ sub_81162A4: @ 81162A4
strh r1, [r2, 0xE]
ldrh r1, [r3, 0x6]
strh r1, [r2, 0x18]
- ldr r4, =gUnknown_02022E20
+ ldr r4, =gBattle_BG3_X
ldrh r1, [r3]
strh r1, [r4]
- ldr r4, =gUnknown_02022E22
+ ldr r4, =gBattle_BG3_Y
ldrh r1, [r3, 0x2]
strh r1, [r4]
ldr r1, =sub_81162F8
@@ -46824,7 +46824,7 @@ sub_81162F8: @ 81162F8
mov r12, r1
cmp r0, 0
bne _0811637E
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
ldrh r2, [r0]
movs r7, 0x8
ldrsh r1, [r3, r7]
@@ -46839,7 +46839,7 @@ _08116330:
ldrh r0, [r3, 0x8]
_08116332:
strh r0, [r6]
- ldr r2, =gUnknown_02022E22
+ ldr r2, =gBattle_BG3_Y
ldrh r3, [r2]
lsls r1, r5, 2
adds r0, r1, r5
@@ -46873,7 +46873,7 @@ _08116358:
strh r1, [r6]
strh r1, [r2]
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08116382
_0811637E:
subs r0, r2, 0x1
@@ -46907,7 +46907,7 @@ _081163AC:
_081163B4:
ldr r0, =sub_80A67BC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -46955,7 +46955,7 @@ _081163FC:
sub_8116420: @ 8116420
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -47113,7 +47113,7 @@ _08116584:
ldr r0, =gBattleAnimArgs
ldrh r0, [r0, 0x6]
strh r0, [r4, 0x2E]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A64B0
@@ -47180,7 +47180,7 @@ sub_81165E4: @ 81165E4
cmp r0, 0xC
ble _0811661A
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0811661A:
pop {r0}
bx r0
@@ -47256,14 +47256,14 @@ _081166B8:
movs r5, 0
_081166BA:
mov r0, sp
- ldr r1, =gAnimationBankAttacker
+ ldr r1, =gAnimBankAttacker
b _081166CA
.pool
_081166C4:
movs r5, 0
_081166C6:
mov r0, sp
- ldr r1, =gAnimationBankTarget
+ ldr r1, =gAnimBankTarget
_081166CA:
ldrb r1, [r1]
strb r1, [r0]
@@ -47271,10 +47271,10 @@ _081166CA:
.pool
_081166D4:
mov r1, sp
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
strb r0, [r1]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
strb r0, [r1, 0x1]
b _0811670E
@@ -47287,13 +47287,13 @@ _081166EC:
_081166F4:
movs r5, 0
mov r2, sp
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08116706
.pool
_08116700:
movs r5, 0
mov r2, sp
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08116706:
ldrb r0, [r0]
movs r1, 0x2
@@ -47310,7 +47310,7 @@ _08116712:
cmp r4, r0
beq _0811673C
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0811673C
@@ -47348,7 +47348,7 @@ sub_811675C: @ 811675C
ldrsh r0, [r0, r1]
bl sub_811583C
adds r2, r0, 0
- ldr r0, =gUnknown_02022FF0
+ ldr r0, =gBattleTerrain
ldrb r0, [r0]
cmp r0, 0x9
bhi _08116832
@@ -47558,7 +47558,7 @@ _0811693C:
b _08116954
_08116946:
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08116954
_0811694E:
mov r0, r8
@@ -47614,7 +47614,7 @@ sub_81169A0: @ 81169A0
cmp r0, 0
bne _081169B8
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081169B8:
pop {r0}
bx r0
@@ -47750,7 +47750,7 @@ _08116ABC:
cmp r0, 0
bne _08116ACA
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08116ACA:
pop {r4-r6}
pop {r0}
@@ -47805,9 +47805,9 @@ sub_8116B14: @ 8116B14
lsrs r0, 24
mov r9, r0
movs r7, 0
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
strh r7, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r7, [r0]
ldr r1, =0x00003f3f
movs r0, 0x48
@@ -47859,7 +47859,7 @@ sub_8116B14: @ 8116B14
movs r0, 0xA
bl SetGpuReg
_08116BA2:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08116C26
@@ -47867,7 +47867,7 @@ _08116BA2:
lsls r0, 24
cmp r0, 0
bne _08116C26
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
bl GetBankIdentity
lsls r0, 24
@@ -47883,7 +47883,7 @@ _08116BD2:
ldrb r0, [r5]
movs r6, 0x2
eors r0, r6
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -47925,14 +47925,14 @@ _08116C26:
lsls r0, 24
cmp r0, 0
beq _08116C64
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldrh r5, [r0]
b _08116CAC
.pool
_08116C64:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -47969,7 +47969,7 @@ _08116CAC:
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r1, r4, 0
adds r2, r5, 0
@@ -47996,7 +47996,7 @@ _08116CAC:
adds r1, 0x1
movs r2, 0x2
bl LoadPalette
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
ldr r0, =gSprites
lsls r1, r4, 4
adds r1, r4
@@ -48006,7 +48006,7 @@ _08116CAC:
negs r0, r0
adds r0, 0x20
strh r0, [r2]
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
ldrh r0, [r1, 0x22]
negs r0, r0
adds r0, 0x20
@@ -48050,7 +48050,7 @@ sub_8116D64: @ 8116D64
movs r1, 0
mov r8, r1
strh r0, [r5, 0x1C]
- ldr r7, =gUnknown_02022E1A
+ ldr r7, =gBattle_BG1_Y
ldrh r2, [r7]
subs r1, r2, 0x4
strh r1, [r7]
@@ -48072,10 +48072,10 @@ sub_8116D64: @ 8116D64
bne _08116E86
movs r0, 0
bl sub_80A477C
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
mov r1, r8
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
ldr r4, =0x00003f3f
movs r0, 0x48
@@ -48138,7 +48138,7 @@ _08116DF6:
cmp r0, 0x1
bne _08116E7C
ldr r2, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -48164,7 +48164,7 @@ _08116E7C:
mov r2, r8
strh r2, [r7]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08116E86:
add sp, 0x14
pop {r3}
@@ -48223,11 +48223,11 @@ sub_8116F04: @ 8116F04
ldrsh r0, [r1, r2]
cmp r0, 0
bne _08116F24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08116F26
.pool
_08116F24:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08116F26:
ldrb r0, [r0]
strb r0, [r1]
@@ -48247,7 +48247,7 @@ _08116F26:
cmp r0, 0
beq _08116F5C
ldrb r0, [r1, 0x1]
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _08116F5C
@@ -48256,10 +48256,10 @@ _08116F56:
movs r0, 0
strh r0, [r1, 0xA]
_08116F5C:
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
ldr r1, =0x00003f3f
movs r0, 0x48
@@ -48281,11 +48281,11 @@ _08116F5C:
movs r0, 0x1
movs r1, 0x4
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -48293,9 +48293,9 @@ _08116F5C:
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_08116FBA:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08117036
@@ -48320,7 +48320,7 @@ _08116FBA:
_08116FEC:
ldr r0, [r4]
ldrb r0, [r0, 0x1]
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0x1
@@ -48350,7 +48350,7 @@ _08116FEC:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
ldr r0, [r4]
strb r5, [r0, 0x2]
_08117036:
@@ -48360,7 +48360,7 @@ _08117036:
beq _08117078
ldr r0, =gUnknown_0203A110
ldr r1, [r0]
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldrh r0, [r0]
@@ -48537,10 +48537,10 @@ _081171F8:
movs r2, 0x20
bl LoadCompressedPalette
_08117206:
- ldr r3, =gUnknown_02022E18
+ ldr r3, =gBattle_BG1_X
movs r2, 0
strh r2, [r3]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r2, [r0]
ldr r1, =gUnknown_0203A110
ldr r0, [r1]
@@ -48614,7 +48614,7 @@ _08117280:
bne _081172CC
movs r0, 0x40
negs r0, r0
- bl sub_80A5278
+ bl BattleAnimAdjustPanning2
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -48625,7 +48625,7 @@ _08117280:
_081172CC:
movs r0, 0x40
negs r0, r0
- bl sub_80A5278
+ bl BattleAnimAdjustPanning2
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -48645,7 +48645,7 @@ sub_81172EC: @ 81172EC
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
ldr r1, =gTasks
lsls r0, r6, 2
adds r0, r6
@@ -48746,10 +48746,10 @@ _081173AE:
strh r0, [r5, 0x26]
b _08117478
_081173B6:
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
ldr r4, =0x00003f3f
movs r0, 0x48
@@ -48765,7 +48765,7 @@ _081173B6:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_081173E6:
movs r0, 0
bl GetGpuReg
@@ -48833,7 +48833,7 @@ _08117466:
movs r0, 0
str r0, [r4]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08117478:
pop {r4-r6}
pop {r0}
@@ -48987,7 +48987,7 @@ _081175AC:
.pool
_081175B8:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081175BE:
pop {r4-r6}
pop {r0}
@@ -49044,7 +49044,7 @@ sub_8117610: @ 8117610
lsrs r6, r0, 24
movs r4, 0
movs r2, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r3, [r0]
movs r5, 0x1
_08117620:
@@ -49096,7 +49096,7 @@ sub_8117660: @ 8117660
ldrsh r0, [r4, r1]
cmp r0, 0
beq _0811769C
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -49125,7 +49125,7 @@ _0811769C:
adds r0, 0x1
strh r0, [r1, 0x8]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
@@ -49152,13 +49152,13 @@ sub_81176D8: @ 81176D8
ldrh r7, [r1, 0x1E]
adds r2, r7
strh r2, [r1, 0x1E]
- ldr r6, =gUnknown_02022E20
+ ldr r6, =gBattle_BG3_X
lsls r0, r3, 16
asrs r0, 24
ldrh r4, [r6]
adds r0, r4
strh r0, [r6]
- ldr r4, =gUnknown_02022E22
+ ldr r4, =gBattle_BG3_Y
lsls r0, r2, 16
asrs r0, 24
ldrh r7, [r4]
@@ -49196,7 +49196,7 @@ sub_8117754: @ 8117754
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
ldr r1, =gBattleAnimArgs
@@ -49204,7 +49204,7 @@ sub_8117754: @ 8117754
lsrs r0, 24
strh r0, [r1, 0xE]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -49217,7 +49217,7 @@ sub_8117780: @ 8117780
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
ldr r1, =gBattleAnimArgs
@@ -49225,7 +49225,7 @@ sub_8117780: @ 8117780
lsrs r0, 24
strh r0, [r1, 0xE]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -49239,10 +49239,10 @@ sub_81177AC: @ 81177AC
lsrs r3, r0, 24
ldr r5, =gBattleAnimArgs
movs r4, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r2, [r0]
movs r0, 0x2
- ldr r1, =gAnimationBankTarget
+ ldr r1, =gAnimBankTarget
eors r0, r2
ldrb r1, [r1]
cmp r0, r1
@@ -49251,7 +49251,7 @@ sub_81177AC: @ 81177AC
_081177C8:
strh r4, [r5, 0xE]
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
@@ -49266,13 +49266,13 @@ sub_81177E4: @ 81177E4
movs r4, 0
ldr r6, =gSprites
_081177EE:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
cmp r4, r0
beq _0811782C
lsls r0, r4, 24
lsrs r0, 24
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _0811782C
@@ -49303,7 +49303,7 @@ _0811782C:
cmp r4, 0x3
bls _081177EE
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4-r7}
pop {r0}
bx r0
@@ -49355,7 +49355,7 @@ sub_8117854: @ 8117854
cmp r1, 0
beq _081178BA
adds r0, r6, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _081178BA
@@ -49363,10 +49363,10 @@ _081178B6:
movs r2, 0
mov r8, r2
_081178BA:
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
ldr r1, =0x00003f3f
movs r0, 0x48
@@ -49423,7 +49423,7 @@ _08117930:
lsls r0, 24
cmp r0, 0
beq _08117964
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldrh r4, [r0]
@@ -49497,10 +49497,10 @@ _081179CC:
ldr r0, [sp, 0x5C]
movs r2, 0x20
bl LoadCompressedPalette
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
ldr r1, =gTasks
mov r2, r9
@@ -49563,7 +49563,7 @@ _08117A7E:
ldrsh r0, [r3, r1]
cmp r0, 0
bge _08117AA4
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
lsls r1, r4, 16
asrs r1, 24
ldrh r0, [r2]
@@ -49572,7 +49572,7 @@ _08117A7E:
b _08117AB0
.pool
_08117AA4:
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
lsls r0, r4, 16
asrs r0, 24
ldrh r2, [r1]
@@ -49676,9 +49676,9 @@ _08117B34:
bne _08117C0C
movs r0, 0
bl sub_80A477C
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
strh r4, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r4, [r0]
ldr r4, =0x00003f3f
movs r0, 0x48
@@ -49744,7 +49744,7 @@ _08117BB2:
bl DestroySprite
_08117C06:
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08117C0C:
add sp, 0x4
pop {r4-r6}
@@ -49759,10 +49759,10 @@ sub_8117C24: @ 8117C24
lsls r0, 24
lsrs r0, 24
ldr r2, =gBattleAnimArgs
- ldr r1, =gUnknown_02022FF0
+ ldr r1, =gBattleTerrain
ldrb r1, [r1]
strh r1, [r2]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -49777,14 +49777,14 @@ sub_8117C44: @ 8117C44
movs r0, 0x80
lsls r0, 6
bl AllocZeroed
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
adds r1, r2
str r0, [r1]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -49797,7 +49797,7 @@ sub_8117C70: @ 8117C70
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r6, =gBattleSpritesGfx
+ ldr r6, =gMonSpritesGfxPtr
ldr r0, [r6]
movs r5, 0xBE
lsls r5, 1
@@ -49809,7 +49809,7 @@ sub_8117C70: @ 8117C70
movs r1, 0
str r1, [r0]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
@@ -49854,19 +49854,19 @@ _08117CD2:
_08117CE4:
cmp r0, 0x1
bne _08117CF0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08117CF6
.pool
_08117CF0:
cmp r0, 0x2
bne _08117CFC
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08117CF6:
ldrb r0, [r0]
adds r4, r0, 0
adds r4, 0x10
_08117CFC:
- ldr r0, =gBattleSpritesGfx
+ ldr r0, =gMonSpritesGfxPtr
ldr r1, [r0]
ldr r0, =gBattleAnimArgs
movs r2, 0x2
@@ -49883,7 +49883,7 @@ _08117CFC:
movs r2, 0x20
bl memcpy
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
add sp, 0xC
pop {r4,r5}
pop {r0}
@@ -49929,13 +49929,13 @@ _08117D6E:
_08117D80:
cmp r0, 0x1
bne _08117D8C
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08117D92
.pool
_08117D8C:
cmp r0, 0x2
bne _08117D98
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08117D92:
ldrb r0, [r0]
adds r4, r0, 0
@@ -49944,7 +49944,7 @@ _08117D98:
lsls r0, r4, 5
ldr r1, =gPlttBufferUnfaded
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r2, [r1]
ldr r1, =gBattleAnimArgs
movs r3, 0x2
@@ -49958,7 +49958,7 @@ _08117D98:
movs r2, 0x20
bl memcpy
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
add sp, 0xC
pop {r4,r5}
pop {r0}
@@ -50004,13 +50004,13 @@ _08117E0A:
_08117E1C:
cmp r0, 0x1
bne _08117E28
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08117E2E
.pool
_08117E28:
cmp r0, 0x2
bne _08117E34
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08117E2E:
ldrb r0, [r0]
adds r4, r0, 0
@@ -50024,7 +50024,7 @@ _08117E34:
movs r2, 0x20
bl memcpy
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
add sp, 0xC
pop {r4,r5}
pop {r0}
@@ -50052,7 +50052,7 @@ _08117E80:
strh r1, [r0, 0xE]
_08117E84:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -50064,15 +50064,15 @@ sub_8117E94: @ 8117E94
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, =gAnimationBankAttacker
+ ldr r2, =gAnimBankAttacker
ldr r1, =gBankTarget
ldrb r1, [r1]
strb r1, [r2]
- ldr r2, =gAnimationBankTarget
+ ldr r2, =gAnimBankTarget
ldr r1, =gEffectBank
ldrb r1, [r1]
strb r1, [r2]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -50083,11 +50083,11 @@ sub_8117EC4: @ 8117EC4
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
adds r4, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
@@ -50104,7 +50104,7 @@ _08117EF8:
_08117EFC:
strh r0, [r1, 0xE]
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
@@ -50116,11 +50116,11 @@ sub_8117F10: @ 8117F10
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, =gAnimationBankTarget
+ ldr r2, =gAnimBankTarget
ldr r1, =gBankTarget
ldrb r1, [r1]
strb r1, [r2]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -50131,15 +50131,15 @@ sub_8117F30: @ 8117F30
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, =gAnimationBankAttacker
+ ldr r2, =gAnimBankAttacker
ldr r1, =gBankAttacker
ldrb r1, [r1]
strb r1, [r2]
- ldr r2, =gAnimationBankTarget
+ ldr r2, =gAnimBankTarget
ldr r1, =gEffectBank
ldrb r1, [r1]
strb r1, [r2]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -50155,7 +50155,7 @@ sub_8117F60: @ 8117F60
cmp r0, 0
beq _08117F78
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08117FB4
_08117F78:
ldr r0, =gTasks
@@ -50163,9 +50163,9 @@ _08117F78:
adds r3, r4
lsls r3, 3
adds r3, r0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r4, [r0]
- ldr r2, =gAnimationBankAttacker
+ ldr r2, =gAnimBankAttacker
ldrb r0, [r2]
ldr r1, [r4]
lsls r0, 2
@@ -50207,9 +50207,9 @@ sub_8117FD0: @ 8117FD0
lsls r0, 5
cmp r1, r0
bne _08118014
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r3, [r0]
ldr r0, [r1]
lsls r3, 2
@@ -50237,8 +50237,8 @@ _08118014:
.pool
thumb_func_end sub_8117FD0
- thumb_func_start lcd_bg_operations
-lcd_bg_operations: @ 811802C
+ thumb_func_start SetAnimBgAttribute
+SetAnimBgAttribute: @ 811802C
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
@@ -50364,7 +50364,7 @@ _08118132:
pop {r0}
bx r0
.pool
- thumb_func_end lcd_bg_operations
+ thumb_func_end SetAnimBgAttribute
thumb_func_start sub_8118140
sub_8118140: @ 8118140
@@ -50529,14 +50529,14 @@ sub_811828C: @ 811828C
lsls r0, 24
lsrs r0, 24
bl DestroyTask
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -50569,7 +50569,7 @@ task_battle_intro_80BC47C: @ 81182EC
sub sp, 0x4
lsls r0, 24
lsrs r4, r0, 24
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x6
strh r0, [r1]
@@ -50646,7 +50646,7 @@ _0811838C:
bl SetGpuReg
b _0811852A
_0811839C:
- ldr r1, =gUnknown_02022E26
+ ldr r1, =gBattle_WIN0V
ldrh r0, [r1]
subs r0, 0xFF
strh r0, [r1]
@@ -50697,7 +50697,7 @@ _08118400:
ldrsh r0, [r2, r1]
cmp r0, 0x1
bne _08118420
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
ldrh r1, [r2]
ldr r0, =0x0000ffb0
cmp r1, r0
@@ -50706,7 +50706,7 @@ _08118400:
b _0811842C
.pool
_08118420:
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
ldrh r1, [r2]
ldr r0, =0x0000ffc8
cmp r1, r0
@@ -50715,7 +50715,7 @@ _08118420:
_0811842C:
strh r0, [r2]
_0811842E:
- ldr r2, =gUnknown_02022E26
+ ldr r2, =gBattle_WIN0V
ldrh r1, [r2]
movs r0, 0xFF
lsls r0, 8
@@ -50861,13 +50861,13 @@ _08118568:
cmp r0, 0x4
bne _08118580
_0811856C:
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x8
b _0811857E
.pool
_08118578:
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x6
_0811857E:
@@ -50882,7 +50882,7 @@ _08118580:
adds r6, r0, 0
cmp r1, 0x4
bne _081185E4
- ldr r7, =gUnknown_02022E1A
+ ldr r7, =gBattle_BG1_Y
ldrh r0, [r4, 0x14]
bl Cos2
lsls r0, 16
@@ -50988,7 +50988,7 @@ _08118662:
b _0811881A
.pool
_08118678:
- ldr r1, =gUnknown_02022E26
+ ldr r1, =gBattle_WIN0V
ldrh r0, [r1]
subs r0, 0xFF
strh r0, [r1]
@@ -51065,7 +51065,7 @@ _08118708:
movs r0, 0x4
strh r0, [r1, 0x12]
_08118728:
- ldr r2, =gUnknown_02022E26
+ ldr r2, =gBattle_WIN0V
ldrh r1, [r2]
movs r0, 0xFF
lsls r0, 8
@@ -51202,7 +51202,7 @@ task_battle_intro_anim: @ 8118844
sub sp, 0x4
lsls r0, 24
lsrs r5, r0, 24
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x8
strh r0, [r1]
@@ -51288,7 +51288,7 @@ _08118908:
b _08118A96
.pool
_0811891C:
- ldr r1, =gUnknown_02022E26
+ ldr r1, =gBattle_WIN0V
ldrh r0, [r1]
subs r0, 0xFF
strh r0, [r1]
@@ -51354,7 +51354,7 @@ _08118986:
movs r0, 0x6
strh r0, [r2, 0x12]
_081189A6:
- ldr r2, =gUnknown_02022E26
+ ldr r2, =gBattle_WIN0V
ldrh r1, [r2]
movs r0, 0xFF
lsls r0, 8
@@ -51505,7 +51505,7 @@ task00_battle_intro_wireless: @ 8118AC0
ldrsh r0, [r7, r2]
cmp r0, 0
bne _08118B36
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
ldrh r1, [r2]
movs r0, 0x80
lsls r0, 8
@@ -51519,7 +51519,7 @@ task00_battle_intro_wireless: @ 8118AC0
_08118AFE:
adds r0, r1, 0x3
strh r0, [r2]
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
ldrh r0, [r1]
subs r0, 0x3
strh r0, [r1]
@@ -51652,7 +51652,7 @@ _08118BA8:
b _08118D5A
.pool
_08118C38:
- ldr r1, =gUnknown_02022E26
+ ldr r1, =gBattle_WIN0V
ldrh r0, [r1]
subs r0, 0xFF
strh r0, [r1]
@@ -51683,7 +51683,7 @@ _08118C50:
b _08118D5A
.pool
_08118C7C:
- ldr r2, =gUnknown_02022E26
+ ldr r2, =gBattle_WIN0V
ldrh r1, [r2]
movs r0, 0xFF
lsls r0, 8
@@ -51874,21 +51874,21 @@ _08118DD4:
ldr r1, =0x00003f3f
movs r0, 0x4A
bl SetGpuReg
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
ldr r2, =0x0000ffd0
adds r0, r2, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
movs r0, 0xF0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
subs r2, 0xC0
adds r0, r2, 0
strh r0, [r1]
b _08118FB2
.pool
_08118E4C:
- ldr r2, =gUnknown_02022E26
+ ldr r2, =gBattle_WIN0V
ldrh r3, [r2]
movs r1, 0x80
lsls r1, 1
@@ -51932,7 +51932,7 @@ _08118E7E:
b _08118FB2
.pool
_08118EA8:
- ldr r3, =gUnknown_02022E26
+ ldr r3, =gBattle_WIN0V
ldrh r2, [r3]
movs r0, 0xFF
lsls r0, 8
@@ -51958,10 +51958,10 @@ _08118EC2:
subs r0, r1, 0x2
strh r0, [r3, 0xC]
_08118ED8:
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldrh r0, [r3, 0xC]
strh r0, [r1]
- ldr r2, =gUnknown_02022E1C
+ ldr r2, =gBattle_BG2_X
negs r1, r0
strh r1, [r2]
lsls r0, 16
@@ -51973,15 +51973,15 @@ _08118ED8:
b _08118FB2
.pool
_08118F00:
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
ldrh r0, [r1]
adds r3, r0, 0x2
strh r3, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
ldrh r0, [r1]
adds r0, 0x2
strh r0, [r1]
- ldr r5, =gUnknown_02022E26
+ ldr r5, =gBattle_WIN0V
ldrh r2, [r5]
movs r0, 0xFF
lsls r0, 8
@@ -52078,10 +52078,10 @@ sub_8118FBC: @ 8118FBC
lsls r5, 16
lsrs r5, 16
adds r0, r4, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r2, [r1]
lsls r4, 2
adds r2, 0x4
@@ -52189,7 +52189,7 @@ sub_8119094: @ 8119094
lsls r0, 24
mov r9, r0
ldr r4, =0x040000d4
- ldr r0, =gBattleSpritesGfx
+ ldr r0, =gMonSpritesGfxPtr
ldr r0, [r0]
lsrs r2, 22
adds r0, 0x4
diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s
index 46b09081d..69835bf4e 100755
--- a/asm/battle_anim_815A0D4.s
+++ b/asm/battle_anim_815A0D4.s
@@ -75,7 +75,7 @@ sub_815A114: @ 815A114
b _0815A15A
_0815A154:
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815A15A:
pop {r0}
bx r0
@@ -87,7 +87,7 @@ sub_815A160: @ 815A160
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_80A5C6C
@@ -112,7 +112,7 @@ sub_815A160: @ 815A160
movs r2, 0
bl sub_807521C
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4-r6}
pop {r0}
bx r0
@@ -196,7 +196,7 @@ sub_815A234: @ 815A234
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
@@ -207,7 +207,7 @@ sub_815A254: @ 815A254
push {r4-r7,lr}
sub sp, 0x4
adds r5, r0, 0
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -261,7 +261,7 @@ _0815A2B2:
strh r6, [r5, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
add sp, 0x4
@@ -537,7 +537,7 @@ _0815A4E0:
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815A4FE:
pop {r4}
pop {r0}
@@ -768,7 +768,7 @@ sub_815A6C4: @ 815A6C4
adds r4, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
mov r5, sp
adds r5, 0x2
@@ -776,7 +776,7 @@ sub_815A6C4: @ 815A6C4
mov r2, sp
adds r3, r5, 0
bl sub_80A8924
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -869,7 +869,7 @@ _0815A798:
cmp r0, 0x10
bne _0815A7AC
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815A7AC:
pop {r0}
bx r0
@@ -891,7 +891,7 @@ sub_815A7B0: @ 815A7B0
strh r0, [r4, 0x22]
ldr r0, =sub_80A67D8
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
@@ -919,7 +919,7 @@ sub_815A7EC: @ 815A7EC
lsls r0, 24
cmp r0, 0
bne _0815A840
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -988,7 +988,7 @@ _0815A84C:
cmp r0, 0xF0
bls _0815A8A4
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815A8A4:
pop {r4,r5}
pop {r0}
@@ -1006,7 +1006,7 @@ sub_815A8AC: @ 815A8AC
cmp r0, 0
beq _0815A8C2
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815A8C2:
pop {r0}
bx r0
@@ -1017,7 +1017,7 @@ sub_815A8C8: @ 815A8C8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1034,7 +1034,7 @@ _0815A8EC:
_0815A8F0:
strh r0, [r1, 0xE]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -1046,7 +1046,7 @@ sub_815A904: @ 815A904
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gMoveDmgMoveAnim
+ ldr r0, =gAnimMoveDmg
ldr r0, [r0]
cmp r0, 0
ble _0815A920
@@ -1060,7 +1060,7 @@ _0815A920:
_0815A924:
strh r0, [r1, 0xE]
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -1077,10 +1077,10 @@ sub_815A934: @ 815A934
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r4, =gUnknown_02022E26
+ ldr r4, =gBattle_WIN0V
strh r1, [r4]
movs r0, 0x40
movs r1, 0
@@ -1235,7 +1235,7 @@ sub_815AA6C: @ 815AA6C
movs r0, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
@@ -1251,7 +1251,7 @@ sub_815AAA4: @ 815AAA4
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815AAD0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -1349,7 +1349,7 @@ sub_815AB5C: @ 815AB5C
bne _0815ABBA
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -1380,7 +1380,7 @@ _0815ABBA:
cmp r0, 0
bne _0815ABC8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815ABC8:
pop {r4}
pop {r0}
@@ -1416,18 +1416,18 @@ sub_815ABEC: @ 815ABEC
ldr r1, =0x00001f3f
movs r0, 0x48
bl SetGpuReg
- ldr r1, =gUnknown_02022E28
+ ldr r1, =gBattle_WIN1H
ldr r2, =0x000098f0
adds r0, r2, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E2A
+ ldr r1, =gBattle_WIN1V
movs r0, 0xA0
strh r0, [r1]
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
ldrh r1, [r0]
movs r0, 0x42
bl SetGpuReg
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
ldrh r1, [r0]
movs r0, 0x46
bl SetGpuReg
@@ -1437,10 +1437,10 @@ _0815AC40:
ldr r1, =0x00001f3f
movs r0, 0x48
bl SetGpuReg
- ldr r1, =gUnknown_02022E28
+ ldr r1, =gBattle_WIN1H
movs r0, 0xF0
strh r0, [r1]
- ldr r4, =gUnknown_02022E2A
+ ldr r4, =gBattle_WIN1V
ldr r1, =0x000078a0
adds r0, r1, 0
strh r0, [r4]
@@ -1456,7 +1456,7 @@ _0815AC40:
bl SetGpuRegBits
_0815AC70:
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
@@ -1471,10 +1471,10 @@ sub_815AC8C: @ 815AC8C
ldr r1, =0x00003f3f
movs r0, 0x48
bl SetGpuReg
- ldr r0, =gUnknown_02022E28
+ ldr r0, =gBattle_WIN1H
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E2A
+ ldr r0, =gBattle_WIN1V
strh r1, [r0]
bl IsContest
lsls r0, 24
@@ -1486,7 +1486,7 @@ sub_815AC8C: @ 815AC8C
bl ClearGpuRegBits
_0815ACB8:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -1502,11 +1502,11 @@ sub_815ACD0: @ 815ACD0
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815ACEC
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _0815ACEE
.pool
_0815ACEC:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_0815ACEE:
ldrb r0, [r4]
movs r1, 0
@@ -1585,7 +1585,7 @@ sub_815AD4C: @ 815AD4C
cmp r0, r1
bge _0815ADAA
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
b _0815ADAA
.pool
_0815AD98:
@@ -1596,7 +1596,7 @@ _0815AD98:
cmp r0, r1
ble _0815ADAA
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815ADAA:
pop {r0}
bx r0
@@ -1618,18 +1618,18 @@ sub_815ADB0: @ 815ADB0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815ADDC
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _0815ADDE
.pool
_0815ADDC:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_0815ADDE:
ldrb r0, [r4]
bl sub_80A6190
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r7, r0, 24
adds r0, r6, 0
@@ -1655,11 +1655,11 @@ _0815AE08:
strh r2, [r5, 0x16]
cmp r7, 0x1
bne _0815AE30
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
b _0815AE32
.pool
_0815AE30:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
_0815AE32:
ldrh r2, [r0]
strh r2, [r5, 0x18]
@@ -1882,7 +1882,7 @@ _0815AFC4:
strb r0, [r1, 0x15]
_0815AFDA:
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815AFE0:
pop {r4-r7}
pop {r0}
@@ -1903,7 +1903,7 @@ sub_815AFF0: @ 815AFF0
movs r5, 0
strh r5, [r4, 0x8]
strh r5, [r4, 0xA]
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x2
bl sub_80A5C6C
@@ -2004,7 +2004,7 @@ _0815B0BC:
lsrs r4, r0, 24
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -2162,7 +2162,7 @@ _0815B220:
cmp r0, 0
bne _0815B22E
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815B22E:
add sp, 0x8
pop {r3}
@@ -2262,7 +2262,7 @@ _0815B2D8:
ldrsh r0, [r5, r1]
cmp r0, 0x3D
bne _0815B324
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
ldrh r0, [r5, 0x24]
@@ -2278,7 +2278,7 @@ _0815B2D8:
strh r1, [r5, 0x26]
movs r0, 0x14
strh r0, [r5, 0x2E]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -2339,7 +2339,7 @@ _0815B37C:
cmp r0, 0
bne _0815B38E
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815B38E:
pop {r4,r5}
pop {r0}
@@ -2370,7 +2370,7 @@ _0815B3B4:
beq _0815B478
b _0815B496
_0815B3BE:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -2471,7 +2471,7 @@ _0815B478:
cmp r0, r1
bge _0815B496
adds r0, r5, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815B496:
pop {r4-r6}
pop {r0}
@@ -2482,7 +2482,7 @@ _0815B496:
sub_815B49C: @ 815B49C
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -2513,7 +2513,7 @@ sub_815B4D4: @ 815B4D4
ldrh r0, [r4, 0x2E]
adds r0, 0x48
strh r0, [r4, 0x2E]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -2578,7 +2578,7 @@ _0815B54C:
cmp r0, r1
bls _0815B566
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815B566:
pop {r4,r5}
pop {r0}
@@ -2747,7 +2747,7 @@ _0815B69C:
cmp r0, 0
bne _0815B6AE
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815B6AE:
pop {r4,r5}
pop {r0}
@@ -2789,7 +2789,7 @@ _0815B6F4:
cmp r0, 0
bne _0815B706
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815B706:
pop {r4,r5}
pop {r0}
@@ -2814,7 +2814,7 @@ _0815B71E:
movs r0, 0x90
lsls r0, 4
strh r0, [r4, 0x30]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
bl sub_80A5C6C
@@ -2845,7 +2845,7 @@ _0815B748:
cmp r0, r1
ble _0815B770
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815B770:
pop {r4}
pop {r0}
@@ -2887,7 +2887,7 @@ _0815B7B8:
cmp r0, 0
bne _0815B7CA
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815B7CA:
pop {r4,r5}
pop {r0}
@@ -2933,9 +2933,9 @@ _0815B81C:
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2943,14 +2943,14 @@ _0815B81C:
movs r0, 0x1
movs r1, 0x2
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
b _0815B84E
.pool
_0815B844:
movs r0, 0x2
movs r1, 0x2
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0815B84E:
ldr r0, =gTasks
mov r6, r8
@@ -2996,9 +2996,9 @@ _0815B886:
_0815B8A6:
b _0815BA7A
_0815B8A8:
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
- ldr r1, =gAnimationBankTarget
+ ldr r1, =gAnimBankTarget
ldrb r1, [r1]
mov r2, r8
lsls r4, r2, 2
@@ -3024,13 +3024,13 @@ _0815B8E0:
lsls r0, 24
lsrs r1, r0, 24
_0815B8EA:
- ldr r0, =gBattleSpritesGfx
+ ldr r0, =gMonSpritesGfxPtr
ldr r2, [r0]
lsls r0, r1, 2
adds r2, 0x4
adds r2, r0
ldr r1, =gBattleMonForms
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -3051,16 +3051,16 @@ _0815B8EA:
lsls r0, 24
cmp r0, 0
beq _0815BA1C
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r0, [r0, 0x18]
ldrh r0, [r0]
- bl sub_80DB2A8
+ bl IsSpeciesNotUnown
adds r4, r0, 0
ldr r0, [r5]
ldr r0, [r0, 0x18]
ldrh r0, [r0, 0x2]
- bl sub_80DB2A8
+ bl IsSpeciesNotUnown
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -3113,17 +3113,17 @@ _0815B988:
cmp r5, 0x7
ble _0815B980
_0815B99C:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldrh r0, [r0, 0x2]
- bl sub_80DB2A8
+ bl IsSpeciesNotUnown
lsls r0, 24
cmp r0, 0
beq _0815B9EC
ldr r3, =gSprites
ldr r4, =gBankSpriteIds
- ldr r2, =gAnimationBankAttacker
+ ldr r2, =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r4
ldrb r1, [r0]
@@ -3139,7 +3139,7 @@ _0815B99C:
_0815B9EC:
ldr r3, =gSprites
ldr r4, =gBankSpriteIds
- ldr r2, =gAnimationBankAttacker
+ ldr r2, =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r4
ldrb r1, [r0]
@@ -3209,9 +3209,9 @@ _0815BA82:
movs r0, 0x4C
movs r1, 0
bl SetGpuReg
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3219,20 +3219,20 @@ _0815BA82:
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
b _0815BAB6
.pool
_0815BAAC:
movs r0, 0x2
movs r1, 0x2
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0815BAB6:
bl IsContest
lsls r0, 24
cmp r0, 0
bne _0815BAF6
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -3250,16 +3250,16 @@ _0815BAB6:
cmp r0, 0
bne _0815BAF6
ldrb r0, [r4]
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
ldr r1, [r1]
ldr r2, [r1]
lsls r1, r0, 2
adds r1, r2
ldrh r1, [r1, 0x2]
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
_0815BAF6:
mov r0, r8
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815BAFC:
add sp, 0x10
pop {r3,r4}
@@ -3279,7 +3279,7 @@ c3_80DFBE4: @ 815BB18
ldr r4, =gBattleAnimArgs
ldr r3, =gSprites
ldr r2, =gBankSpriteIds
- ldr r1, =gAnimationBankAttacker
+ ldr r1, =gAnimBankAttacker
ldrb r1, [r1]
adds r1, r2
ldrb r2, [r1]
@@ -3292,7 +3292,7 @@ c3_80DFBE4: @ 815BB18
lsls r1, 29
lsrs r1, 31
strh r1, [r4, 0xE]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -3305,14 +3305,14 @@ sub_815BB58: @ 815BB58
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- ldr r1, =gAnimationBankTarget
+ ldr r1, =gAnimBankTarget
ldrb r1, [r1]
movs r2, 0x1
bl sub_805E448
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -3361,11 +3361,11 @@ _0815BBC8:
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -3373,7 +3373,7 @@ _0815BBC8:
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0815BC02:
mov r0, sp
bl sub_80A6B30
@@ -3385,30 +3385,30 @@ _0815BC02:
lsls r0, 24
cmp r0, 0
beq _0815BC34
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r3, =0x0000ffc8
b _0815BC5C
.pool
_0815BC34:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
cmp r0, 0
beq _0815BC58
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r2, =0x0000ff79
adds r0, r2, 0
b _0815BC5E
.pool
_0815BC58:
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r3, =0x0000fff6
_0815BC5C:
adds r0, r3, 0
_0815BC5E:
strh r0, [r1]
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
movs r0, 0
strh r0, [r1]
mov r0, sp
@@ -3428,10 +3428,10 @@ _0815BC5E:
adds r1, r4
lsls r1, 3
adds r1, r0
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r1, 0x1C]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r1, 0x1E]
ldrh r0, [r1, 0x8]
@@ -3507,7 +3507,7 @@ _0815BD20:
ldrsh r0, [r4, r2]
cmp r0, 0
bne _0815BDF2
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
ldr r1, =gUnknown_085CE460
movs r3, 0xC
ldrsh r0, [r4, r3]
@@ -3551,7 +3551,7 @@ _0815BD8E:
strh r0, [r1, 0x8]
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -3571,16 +3571,16 @@ _0815BDA6:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0815BDC8:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
- ldr r0, =gUnknown_02022E18
+ bl SetAnimBgAttribute
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -3589,7 +3589,7 @@ _0815BDC8:
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815BDF2:
add sp, 0x10
pop {r4}
@@ -3621,7 +3621,7 @@ sub_815BE04: @ 815BE04
lsls r0, 16
lsrs r5, r0, 16
_0815BE2E:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A5C6C
@@ -3870,7 +3870,7 @@ sub_815BFF4: @ 815BFF4
adds r0, r5
bl DestroySprite
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815C040:
pop {r4-r6}
pop {r0}
@@ -3966,11 +3966,11 @@ _0815C0EC:
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -3978,7 +3978,7 @@ _0815C0EC:
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0815C124:
mov r0, sp
bl sub_80A6B30
@@ -3990,66 +3990,66 @@ _0815C124:
lsls r0, 24
cmp r0, 0
beq _0815C15C
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r3, =0x0000ffc8
adds r0, r3, 0
b _0815C1CA
.pool
_0815C15C:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankIdentity
lsls r0, 24
lsrs r4, r0, 24
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815C1B4
cmp r4, 0x1
bne _0815C180
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r2, =0x0000ff65
adds r0, r2, 0
strh r0, [r1]
_0815C180:
cmp r4, 0x3
bne _0815C18C
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r3, =0x0000ff8d
adds r0, r3, 0
strh r0, [r1]
_0815C18C:
cmp r4, 0
bne _0815C196
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
movs r0, 0xE
strh r0, [r1]
_0815C196:
cmp r4, 0x2
bne _0815C1CC
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r2, =0x0000ffec
b _0815C1C8
.pool
_0815C1B4:
cmp r4, 0x1
bne _0815C1C0
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r3, =0x0000ff79
adds r0, r3, 0
strh r0, [r1]
_0815C1C0:
cmp r4, 0
bne _0815C1CC
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldr r2, =0x0000fff6
_0815C1C8:
adds r0, r2, 0
_0815C1CA:
strh r0, [r1]
_0815C1CC:
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
movs r0, 0
strh r0, [r1]
mov r0, sp
@@ -4069,10 +4069,10 @@ _0815C1CC:
adds r1, r6
lsls r1, 3
adds r1, r0
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r0, [r0]
strh r0, [r1, 0x1C]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r0, [r0]
strh r0, [r1, 0x1E]
b _0815C2A4
@@ -4085,14 +4085,14 @@ _0815C224:
adds r5, r0, r1
movs r0, 0
strh r0, [r5, 0xE]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815C268
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
ldr r1, =gUnknown_085CE4A4
movs r3, 0xC
ldrsh r0, [r5, r3]
@@ -4105,7 +4105,7 @@ _0815C224:
b _0815C27A
.pool
_0815C268:
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
ldr r1, =gUnknown_085CE4A4
movs r3, 0xC
ldrsh r0, [r5, r3]
@@ -4229,16 +4229,16 @@ _0815C34A:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0815C36C:
movs r0, 0x1
movs r1, 0x4
movs r2, 0x1
- bl lcd_bg_operations
- ldr r0, =gUnknown_02022E18
+ bl SetAnimBgAttribute
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x50
movs r1, 0
@@ -4247,7 +4247,7 @@ _0815C36C:
movs r1, 0
bl SetGpuReg
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815C396:
add sp, 0x10
pop {r4-r6}
@@ -4291,7 +4291,7 @@ _0815C3E8:
cmp r0, 0
bne _0815C3FA
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815C3FA:
pop {r4,r5}
pop {r0}
@@ -4325,7 +4325,7 @@ _0815C41E:
ldrh r0, [r4, 0x32]
adds r0, 0x80
strh r0, [r4, 0x32]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4354,7 +4354,7 @@ _0815C456:
cmp r0, 0x40
ble _0815C472
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815C472:
pop {r4}
pop {r0}
@@ -4377,7 +4377,7 @@ sub_815C478: @ 815C478
cmp r0, 0
bne _0815C4A4
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _0815C538
.pool
_0815C4A4:
@@ -4427,11 +4427,11 @@ _0815C4BC:
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0815C508
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0815C50A
.pool
_0815C508:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0815C50A:
ldrb r0, [r0]
bl GetBankSide
@@ -4632,7 +4632,7 @@ _0815C698:
lsrs r0, 24
bl sub_80A7344
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815C6A8:
pop {r4-r6}
pop {r0}
@@ -4643,7 +4643,7 @@ _0815C6A8:
sub_815C6B0: @ 815C6B0
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4683,7 +4683,7 @@ sub_815C700: @ 815C700
ldrh r0, [r4, 0x2E]
adds r0, 0x3
strh r0, [r4, 0x2E]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4700,7 +4700,7 @@ sub_815C700: @ 815C700
cmp r1, 0xF0
ble _0815C732
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815C732:
ldrh r1, [r4, 0x2E]
movs r0, 0xFF
@@ -4720,7 +4720,7 @@ _0815C744:
cmp r1, 0
bge _0815C75C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815C75C:
ldrh r1, [r4, 0x2E]
movs r0, 0xFF
@@ -4909,7 +4909,7 @@ _0815C8C8:
lsrs r0, 24
bl sub_80A7344
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _0815C950
_0815C8DA:
ldrh r0, [r7, 0x26]
@@ -4991,7 +4991,7 @@ sub_815C95C: @ 815C95C
ldrsh r0, [r6, r2]
cmp r0, 0
bne _0815C990
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -5070,7 +5070,7 @@ _0815C9FA:
cmp r0, 0
beq _0815CA1A
adds r0, r5, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815CA1A:
pop {r4-r6}
pop {r0}
@@ -5100,11 +5100,11 @@ sub_815CA20: @ 815CA20
mov r8, r0
cmp r1, 0
bne _0815CA5C
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0815CA5E
.pool
_0815CA5C:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0815CA5E:
ldrb r0, [r0]
strh r0, [r2, 0x1E]
@@ -5239,7 +5239,7 @@ _0815CB50:
strh r4, [r0, 0x24]
strh r4, [r0, 0x26]
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815CB78:
pop {r3}
mov r8, r3
@@ -5379,7 +5379,7 @@ _0815CC7A:
cmp r0, 0x1F
bne _0815CC8E
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815CC8E:
pop {r4}
pop {r0}
@@ -5397,10 +5397,10 @@ sub_815CC94: @ 815CC94
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r4, =gUnknown_02022E26
+ ldr r4, =gBattle_WIN0V
strh r1, [r4]
movs r0, 0x40
movs r1, 0
@@ -5516,7 +5516,7 @@ _0815CD82:
movs r0, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815CDAA:
pop {r4}
pop {r0}
@@ -5528,7 +5528,7 @@ _0815CDAA:
sub_815CDB4: @ 815CDB4
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -5586,14 +5586,14 @@ sub_815CDFC: @ 815CDFC
cmp r0, 0xC3
ble _0815CE48
_0815CE36:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A82E4
subs r0, 0x1
b _0815CE52
.pool
_0815CE48:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A82E4
adds r0, 0x1
@@ -5654,7 +5654,7 @@ _0815CE98:
cmp r0, r1
bne _0815CEC8
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815CEC8:
pop {r4}
pop {r0}
@@ -5681,7 +5681,7 @@ sub_815CED8: @ 815CED8
beq _0815CF18
movs r0, 0x1
str r0, [sp, 0x1C]
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldr r1, [r0, 0x10]
@@ -5693,7 +5693,7 @@ sub_815CED8: @ 815CED8
b _0815D058
.pool
_0815CF18:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -5702,7 +5702,7 @@ _0815CF18:
movs r0, 0
str r0, [sp, 0x1C]
ldr r6, =gBattlePartyID
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
@@ -5723,7 +5723,7 @@ _0815CF18:
movs r1, 0x1
bl GetMonData
mov r8, r0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
@@ -5770,7 +5770,7 @@ _0815CFC4:
movs r2, 0x1
str r2, [sp, 0x1C]
ldr r6, =gBattlePartyID
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
@@ -5791,7 +5791,7 @@ _0815CFC4:
movs r1, 0x1
bl GetMonData
mov r8, r0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
@@ -5834,12 +5834,12 @@ _0815D056:
_0815D058:
mov r10, r3
_0815D05A:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A8328
lsls r0, 24
lsrs r7, r0, 24
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_80A5C6C
@@ -5864,7 +5864,7 @@ _0815D05A:
str r3, [sp, 0x8]
mov r0, r8
str r0, [sp, 0xC]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
str r0, [sp, 0x10]
movs r0, 0x1
@@ -6072,11 +6072,11 @@ sub_815D240: @ 815D240
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815D26C
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0815D26E
.pool
_0815D26C:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0815D26E:
ldrb r5, [r0]
movs r6, 0
@@ -6123,7 +6123,7 @@ _0815D2B4:
lsrs r0, 24
strh r0, [r4, 0x26]
adds r0, r5, 0
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -6133,9 +6133,9 @@ _0815D2B4:
ldr r1, =0x00003f42
movs r0, 0x50
bl SetGpuReg
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r5, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
b _0815D316
.pool
_0815D304:
@@ -6144,9 +6144,9 @@ _0815D304:
ldr r1, =0x00003f44
movs r0, 0x50
bl SetGpuReg
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r5, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
_0815D316:
ldrh r3, [r0]
movs r7, 0
@@ -6218,22 +6218,22 @@ sub_815D398: @ 815D398
ldr r1, =gTasks
adds r6, r0, r1
ldrb r0, [r6, 0x12]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _0815D3D8
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r0, [r0]
str r0, [sp, 0x4]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
b _0815D3E0
.pool
_0815D3D8:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r0, [r0]
str r0, [sp, 0x4]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
_0815D3E0:
ldrh r0, [r0]
str r0, [sp, 0x8]
@@ -6536,7 +6536,7 @@ _0815D62E:
b _0815D63C
_0815D636:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815D63C:
add sp, 0x14
pop {r3-r5}
@@ -6643,7 +6643,7 @@ _0815D708:
cmp r0, 0
bne _0815D720
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815D720:
pop {r4-r6}
pop {r0}
@@ -6827,7 +6827,7 @@ sub_815D870: @ 815D870
ldrb r1, [r6]
adds r0, r5, 0
bl StartSpriteAffineAnim
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -6837,7 +6837,7 @@ sub_815D870: @ 815D870
negs r0, r0
strh r0, [r6, 0x2]
_0815D896:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -7238,7 +7238,7 @@ sub_815DB90: @ 815DB90
mov r1, r8
adds r4, r0, r1
ldr r1, =gBankSpriteIds
- ldr r2, =gAnimationBankAttacker
+ ldr r2, =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
@@ -7361,7 +7361,7 @@ sub_815DCA4: @ 815DCA4
cmp r0, 0
bne _0815DCC4
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815DCC4:
movs r0, 0
strh r0, [r5, 0x8]
@@ -7373,11 +7373,11 @@ _0815DCC4:
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0815DCE8
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0815DCEA
.pool
_0815DCE8:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0815DCEA:
ldrb r4, [r0]
adds r0, r4, 0
@@ -7485,7 +7485,7 @@ _0815DDCC:
cmp r0, 0
bne _0815DDDA
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815DDDA:
pop {r4,r5}
pop {r0}
@@ -7731,7 +7731,7 @@ _0815DFB4:
movs r3, 0
bl BlendPalette
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815DFC6:
pop {r4,r5}
pop {r0}
@@ -7746,7 +7746,7 @@ sub_815DFCC: @ 815DFCC
lsrs r0, 24
movs r2, 0xD0
lsls r2, 1
- ldr r1, =gAnimationBankAttacker
+ ldr r1, =gAnimBankAttacker
ldrb r3, [r1]
ldr r1, =gBattleAnimArgs
ldrb r1, [r1]
@@ -7775,7 +7775,7 @@ sub_815DFCC: @ 815DFCC
sub_815E01C: @ 815E01C
push {r4-r6,lr}
adds r5, r0, 0
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
bl GetBankSide
lsls r0, 24
@@ -7837,7 +7837,7 @@ _0815E09A:
lsls r0, 2
strh r0, [r5, 0x2E]
_0815E0A8:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -7887,7 +7887,7 @@ sub_815E0DC: @ 815E0DC
cmp r0, 0xE
bne _0815E110
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815E110:
pop {r0}
bx r0
@@ -7923,7 +7923,7 @@ _0815E144:
strh r0, [r6, 0x14]
strh r1, [r6, 0x16]
_0815E14E:
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -7968,7 +7968,7 @@ _0815E1A8:
subs r0, r4, r0
_0815E1AC:
strh r0, [r6, 0x1E]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x3
bl sub_80A5C6C
@@ -7987,7 +7987,7 @@ _0815E1D0:
asrs r0, 2
subs r0, r4, r0
strh r0, [r6, 0x20]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -8163,7 +8163,7 @@ _0815E330:
cmp r0, 0
bne _0815E33E
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815E33E:
add sp, 0x14
pop {r3}
@@ -8319,7 +8319,7 @@ sub_815E444: @ 815E444
strh r0, [r4, 0x36]
ldrh r0, [r1, 0x8]
strh r0, [r4, 0x2E]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
ldr r0, =sub_80A70C0
@@ -8345,7 +8345,7 @@ sub_815E47C: @ 815E47C
lsls r0, 3
ldr r1, =gTasks
adds r7, r0, r1
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
mov r10, r0
ldrb r0, [r0]
movs r1, 0x2
@@ -8360,7 +8360,7 @@ sub_815E47C: @ 815E47C
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x20]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
@@ -8471,7 +8471,7 @@ _0815E596:
.pool
_0815E5B8:
mov r0, r9
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815E5BE:
pop {r3-r5}
mov r8, r3
@@ -8609,7 +8609,7 @@ _0815E6BE:
.pool
_0815E6CC:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815E6D2:
pop {r4,r5}
pop {r0}
@@ -8626,11 +8626,11 @@ sub_815E6D8: @ 815E6D8
adds r6, r0, 0
cmp r1, 0
bne _0815E6F4
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0815E6F6
.pool
_0815E6F4:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0815E6F6:
ldrb r5, [r0]
ldrh r2, [r4, 0x4]
@@ -8798,7 +8798,7 @@ _0815E802:
b _0815E83C
_0815E836:
adds r0, r2, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815E83C:
pop {r0}
bx r0
@@ -8815,7 +8815,7 @@ sub_815E840: @ 815E840
cmp r0, 0
bne _0815E85C
adds r0, r1, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _0815E884
.pool
_0815E85C:
@@ -8926,7 +8926,7 @@ _0815E8F2:
.pool
_0815E948:
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815E94E:
pop {r4-r6}
pop {r0}
@@ -8942,11 +8942,11 @@ sub_815E954: @ 815E954
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0815E970
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
b _0815E972
.pool
_0815E970:
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
_0815E972:
ldrb r0, [r4]
movs r1, 0x2
@@ -9023,7 +9023,7 @@ sub_815E9BC: @ 815E9BC
cmp r0, 0
bne _0815EA10
adds r0, r3, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815EA10:
pop {r0}
bx r0
@@ -9308,7 +9308,7 @@ _0815EC1E:
cmp r0, 0x5
bne _0815EC40
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815EC40:
pop {r4}
pop {r0}
@@ -9334,12 +9334,12 @@ sub_815EC48: @ 815EC48
lsls r0, 24
cmp r0, 0
bne _0815ECD0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0x1
bne _0815ECB4
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_80A5C6C
@@ -9363,7 +9363,7 @@ _0815ECAC:
b _0815ECD2
.pool
_0815ECB4:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -9586,7 +9586,7 @@ _0815EE60:
movs r1, 0
strh r1, [r0, 0x24]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815EE78:
pop {r4}
pop {r0}
@@ -9606,11 +9606,11 @@ sub_815EE84: @ 815EE84
adds r0, r4, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _0815EEAA
.pool
_0815EEA8:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_0815EEAA:
ldrb r0, [r0]
strh r0, [r4, 0x3C]
@@ -9915,7 +9915,7 @@ _0815F0F8:
b _0815F106
_0815F100:
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815F106:
pop {r4,r5}
pop {r0}
@@ -9976,7 +9976,7 @@ _0815F16A:
cmp r1, r0
bne _0815F17C
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815F17C:
ldrh r0, [r4, 0x38]
adds r0, 0x1
@@ -9991,7 +9991,7 @@ _0815F17C:
sub_815F18C: @ 815F18C
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -10126,7 +10126,7 @@ _0815F2A0:
b _0815F310
.pool
_0815F2AC:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl refresh_graphics_maybe
@@ -10271,7 +10271,7 @@ _0815F3CE:
bne _0815F482
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10341,14 +10341,14 @@ _0815F460:
bne _0815F482
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x7D
bl PlaySE12WithPanning
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815F482:
pop {r4-r6}
pop {r0}
@@ -10360,7 +10360,7 @@ _0815F482:
sub_815F48C: @ 815F48C
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -10384,7 +10384,7 @@ _0815F4B8:
strb r0, [r1]
ldr r4, =0x0000ffa0
_0815F4C8:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x3
bl sub_80A5C6C
@@ -10431,7 +10431,7 @@ _0815F520:
cmp r0, 0
blt _0815F61A
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10460,7 +10460,7 @@ _0815F544:
cmp r1, 0x7F
ble _0815F61A
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10502,7 +10502,7 @@ _0815F5B4:
cmp r0, 0x8
ble _0815F61A
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
@@ -10543,7 +10543,7 @@ _0815F5E0:
cmp r0, 0x7
bne _0815F61A
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815F61A:
pop {r4,r5}
pop {r0}
@@ -10589,7 +10589,7 @@ sub_815F620: @ 815F620
bl obj_delete_but_dont_free_vram
_0815F66E:
mov r0, r8
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _0815F780
.pool
_0815F67C:
@@ -10637,9 +10637,9 @@ _0815F67C:
adds r0, r2
movs r1, 0x2
strh r1, [r0, 0x8]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
@@ -10742,7 +10742,7 @@ sub_815F79C: @ 815F79C
cmp r0, 0
bne _0815F7BA
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815F7BA:
pop {r0}
bx r0
@@ -10762,9 +10762,9 @@ sub_815F7C4: @ 815F7C4
ble _0815F80E
movs r0, 0
strh r0, [r4, 0x30]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
ldr r1, [r1]
lsls r0, 2
@@ -10869,7 +10869,7 @@ sub_815F8A0: @ 815F8A0
ldr r3, =gBattleAnimArgs
movs r2, 0
strh r2, [r3, 0xE]
- ldr r1, =gHappinessMoveAnim
+ ldr r1, =gAnimFriendship
ldrb r0, [r1]
ldrb r1, [r1]
adds r0, r1, 0
@@ -10899,7 +10899,7 @@ _0815F8D4:
strh r0, [r3, 0xE]
_0815F8E0:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -10958,7 +10958,7 @@ _0815F940:
ldrh r1, [r6, 0xA]
adds r0, r1
strh r0, [r6, 0xA]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11028,7 +11028,7 @@ _0815F9F4:
lsls r0, 24
cmp r0, 0
beq _0815FA28
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldr r2, [r0, 0x8]
@@ -11036,7 +11036,7 @@ _0815F9F4:
ldr r3, [r0, 0xC]
mov r9, r3
ldrh r6, [r0]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_80A82E4
lsls r0, 24
@@ -11045,7 +11045,7 @@ _0815F9F4:
b _0815FB4E
.pool
_0815FA28:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -11072,7 +11072,7 @@ _0815FA28:
movs r1, 0x1
bl GetMonData
mov r9, r0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
@@ -11136,7 +11136,7 @@ _0815FAC8:
movs r1, 0x1
bl GetMonData
mov r9, r0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
@@ -11177,7 +11177,7 @@ _0815FB2E:
_0815FB4E:
ldr r5, =0x0000ffe0
_0815FB50:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
bl sub_80A5C6C
@@ -11191,7 +11191,7 @@ _0815FB50:
str r4, [sp, 0x8]
mov r0, r9
str r0, [sp, 0xC]
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
str r0, [sp, 0x10]
movs r0, 0
@@ -11202,7 +11202,7 @@ _0815FB50:
bl sub_80A8394
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldrb r0, [r4]
ldr r1, [r1]
@@ -11253,7 +11253,7 @@ _0815FBE8:
ldrh r2, [r6, 0xA]
adds r0, r2
strh r0, [r6, 0xA]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11307,7 +11307,7 @@ _0815FC56:
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0815FCD6
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11315,7 +11315,7 @@ _0815FC56:
bne _0815FCB4
lsls r4, r5, 16
asrs r4, 16
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0
bl sub_80A5C6C
@@ -11328,7 +11328,7 @@ _0815FC56:
_0815FCB4:
lsls r4, r5, 16
asrs r4, 16
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0
bl sub_80A5C6C
@@ -11383,7 +11383,7 @@ _0815FD08:
ldr r5, =gSprites
adds r0, r5
bl sub_80A8610
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11440,7 +11440,7 @@ _0815FD8C:
ldrh r3, [r2, 0xA]
adds r0, r3
strh r0, [r2, 0xA]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
mov r10, r0
ldrb r0, [r0]
str r2, [sp, 0x18]
@@ -11524,7 +11524,7 @@ _0815FE44:
cmp r0, 0
bne _0815FE68
mov r0, r8
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815FE68:
add sp, 0x1C
pop {r3-r5}
@@ -11557,13 +11557,13 @@ _0815FE92:
cmp r1, r0
bne _0815FF2C
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
movs r0, 0x7A
bl PlaySE12WithPanning
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
bl sub_80A5C6C
@@ -11583,7 +11583,7 @@ _0815FE92:
negs r0, r0
ands r0, r1
strb r0, [r2]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11652,7 +11652,7 @@ _0815FF6E:
ldrh r1, [r4, 0x32]
adds r0, r1
strh r0, [r4, 0x32]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11683,7 +11683,7 @@ _0815FFA8:
cmp r0, 0x2
bne _0815FFBC
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_0815FFBC:
pop {r4}
pop {r0}
@@ -11721,14 +11721,14 @@ _0815FFF4:
.4byte _081600CC
.4byte _08160132
_08160008:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0
bl sub_80A5C6C
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0
bl sub_80A5C6C
@@ -11756,7 +11756,7 @@ _0816003E:
.pool
_08160058:
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
@@ -11812,7 +11812,7 @@ _081600B4:
b _08160150
_081600CC:
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
@@ -11862,7 +11862,7 @@ _0816012A:
b _08160150
_08160132:
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
@@ -11874,7 +11874,7 @@ _08160132:
movs r1, 0
strh r1, [r0, 0x24]
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08160150:
pop {r4,r5}
pop {r0}
@@ -11898,7 +11898,7 @@ sub_8160164: @ 8160164
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0xE]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -12061,7 +12061,7 @@ _081602C4:
.pool
_081602D4:
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081602DA:
pop {r4-r6}
pop {r0}
@@ -12072,7 +12072,7 @@ _081602DA:
sub_81602E0: @ 81602E0
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -12100,7 +12100,7 @@ sub_81602E0: @ 81602E0
cmp r0, 0
beq _08160326
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08160326:
ldrh r0, [r4, 0x32]
adds r0, 0x1
@@ -12115,7 +12115,7 @@ _08160326:
sub_8160338: @ 8160338
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -12166,7 +12166,7 @@ _08160396:
sub_81603A8: @ 81603A8
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -12377,7 +12377,7 @@ _08160536:
strh r0, [r2, 0xE]
_08160538:
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
thumb_func_end sub_81604F0
@@ -12477,7 +12477,7 @@ _08160600:
cmp r0, 0
bne _08160618
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08160618:
pop {r4-r6}
pop {r0}
diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s
index abbca8ff7..8de82c629 100644
--- a/asm/battle_anim_8170478.s
+++ b/asm/battle_anim_8170478.s
@@ -16,12 +16,12 @@ sub_8170478: @ 8170478
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x10]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r4, [r0]
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
ldr r1, =0x00003f3f
movs r0, 0x48
@@ -43,19 +43,19 @@ sub_8170478: @ 8170478
movs r0, 0x1
movs r1, 0x4
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0x1
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x1
movs r1, 0x3
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
ldr r0, =gHealthBoxesIds
adds r4, r0
ldrb r0, [r4]
@@ -168,12 +168,12 @@ sub_8170478: @ 8170478
lsls r1, 4
movs r2, 0x20
bl LoadCompressedPalette
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldrh r0, [r7, 0x20]
negs r0, r0
adds r0, 0x20
strh r0, [r1]
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
ldrh r0, [r7, 0x22]
negs r0, r0
subs r0, 0x20
@@ -212,7 +212,7 @@ sub_8170660: @ 8170660
push {r7}
lsls r0, 24
lsrs r7, r0, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
mov r8, r0
ldr r1, =gTasks
@@ -225,7 +225,7 @@ sub_8170660: @ 8170660
adds r1, r0
movs r3, 0
strh r1, [r5, 0x22]
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
lsls r0, r1, 16
lsrs r0, 24
ldrh r4, [r2]
@@ -317,9 +317,9 @@ _08170708:
bne _08170814
movs r0, 0
bl sub_80A477C
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
strh r4, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r4, [r0]
ldr r4, =0x00003f3f
movs r0, 0x48
@@ -335,7 +335,7 @@ _08170708:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_0817076C:
movs r0, 0
bl GetGpuReg
@@ -372,7 +372,7 @@ _0817076C:
movs r0, 0x1
movs r1, 0x1
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
ldr r0, =gHealthBoxesIds
add r0, r8
ldrb r0, [r0]
@@ -412,7 +412,7 @@ _0817076C:
orrs r2, r5
strb r2, [r0, 0x5]
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08170814:
pop {r3}
mov r8, r3
@@ -540,12 +540,12 @@ sub_8170920: @ 8170920
lsrs r4, 24
mov r1, sp
adds r1, 0x1
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r2, [r0]
mov r0, sp
bl sub_8170834
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
add sp, 0x4
pop {r4}
pop {r0}
@@ -628,11 +628,11 @@ sub_81709EC: @ 81709EC
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl sub_817094C
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -752,7 +752,7 @@ _08170AD6:
cmp r0, 0
bne _08170AF8
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08170AF8:
pop {r4-r6}
pop {r0}
@@ -766,7 +766,7 @@ sub_8170B04: @ 8170B04
lsls r0, 24
lsrs r6, r0, 24
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r5, [r0]
@@ -834,7 +834,7 @@ _08170B84:
orrs r1, r2
strb r1, [r0]
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08170BA4:
pop {r4-r6}
pop {r0}
@@ -852,7 +852,7 @@ sub_8170BB0: @ 8170BB0
lsls r0, 24
lsrs r5, r0, 24
ldr r1, =gBankSpriteIds
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
adds r1, r0, r1
ldrb r1, [r1]
@@ -904,7 +904,7 @@ _08170C08:
b _08170CEE
.pool
_08170C44:
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_80A5C6C
@@ -979,7 +979,7 @@ _08170CC4:
cmp r0, 0
bne _08170CEE
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08170CEE:
add sp, 0xC
pop {r3,r4}
@@ -1003,7 +1003,7 @@ sub_8170CFC: @ 8170CFC
lsrs r0, 24
bl sub_8076A78
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -1023,7 +1023,7 @@ sub_8170D24: @ 8170D24
lsrs r0, 24
bl sub_8076AE8
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -1035,7 +1035,7 @@ sub_8170D4C: @ 8170D4C
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x8]
@@ -1051,7 +1051,7 @@ _08170D70:
_08170D74:
strh r0, [r1, 0xE]
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -1162,7 +1162,7 @@ sub_8170E04: @ 8170E04
adds r6, r4, r1
movs r0, 0x22
strh r0, [r6, 0x2E]
- ldr r2, =gAnimationBankTarget
+ ldr r2, =gAnimBankTarget
mov r8, r2
ldrb r0, [r2]
movs r1, 0
@@ -1183,7 +1183,7 @@ sub_8170E04: @ 8170E04
adds r4, r0
ldr r0, =sub_8171104
str r0, [r4]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r3, [r0, 0x8]
ldr r1, =gBankSpriteIds
@@ -1246,7 +1246,7 @@ sub_8170EF0: @ 8170EF0
cmp r1, r0
bne _08170F1A
adds r0, r3, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08170F1A:
pop {r0}
bx r0
@@ -1283,7 +1283,7 @@ _08170F54:
lsls r4, 24
lsrs r4, 24
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
bl sub_80A82E4
@@ -1313,7 +1313,7 @@ _08170F54:
adds r6, r4, r0
movs r0, 0x22
strh r0, [r6, 0x2E]
- ldr r1, =gAnimationBankTarget
+ ldr r1, =gAnimBankTarget
mov r8, r1
ldrb r0, [r1]
movs r1, 0
@@ -1335,7 +1335,7 @@ _08170F54:
ldr r0, =SpriteCallbackDummy
str r0, [r4]
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r1, =gBankSpriteIds
lsls r0, 24
lsrs r0, 24
@@ -1371,7 +1371,7 @@ sub_8171030: @ 8171030
lsrs r5, r0, 24
ldr r6, =gSprites
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r1, =gBankSpriteIds
lsls r0, 24
lsrs r0, 24
@@ -1422,7 +1422,7 @@ sub_81710A8: @ 81710A8
lsrs r5, r0, 24
ldr r6, =gSprites
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r4, =gBankSpriteIds
lsls r0, 24
lsrs r0, 24
@@ -1438,7 +1438,7 @@ sub_81710A8: @ 81710A8
cmp r0, 0
bge _081710F4
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
adds r0, r4
@@ -1491,7 +1491,7 @@ sub_8171134: @ 8171134
lsls r0, 24
cmp r0, 0
beq _081711D2
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x8]
@@ -1550,7 +1550,7 @@ _08171188:
movs r2, 0x1
movs r3, 0x1C
bl sub_8171D98
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r1, [r0]
movs r0, 0
movs r2, 0xE
@@ -1585,7 +1585,7 @@ sub_81711E8: @ 81711E8
str r0, [r4, 0x1C]
ldr r2, =gSprites
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -1607,7 +1607,7 @@ sub_8171240: @ 8171240
push {r4-r7,lr}
adds r7, r0, 0
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r4, [r0]
@@ -1894,7 +1894,7 @@ _08171486:
adds r0, r1
strh r0, [r4, 0x22]
strh r5, [r4, 0x26]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x8]
@@ -1940,7 +1940,7 @@ sub_81714D4: @ 81714D4
adds r0, r4, 0
movs r1, 0x1
bl StartSpriteAffineAnim
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
strh r5, [r0, 0xC]
@@ -1982,7 +1982,7 @@ _08171540:
.4byte _08171708
.4byte _08171768
_0817155C:
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
ldr r5, [r1]
ldr r2, [r5, 0x8]
ldrh r3, [r2, 0xC]
@@ -2060,7 +2060,7 @@ _081715EA:
bl ChangeSpriteAffineAnim
b _081717AE
_081715F4:
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
ldr r5, [r1]
ldr r2, [r5, 0x8]
ldrh r3, [r2, 0xC]
@@ -2152,7 +2152,7 @@ _0817169C:
movs r1, 0x1
bl ChangeSpriteAffineAnim
_081716A4:
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
ldr r5, [r1]
ldr r2, [r5, 0x8]
ldrh r3, [r2, 0xC]
@@ -2211,7 +2211,7 @@ _08171708:
strh r0, [r4, 0x34]
lsls r0, 16
asrs r1, r0, 24
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x8]
@@ -2333,7 +2333,7 @@ sub_81717F8: @ 81717F8
push {r7}
sub sp, 0x4
adds r6, r0, 0
- ldr r7, =gAnimationBankTarget
+ ldr r7, =gAnimBankTarget
ldrh r0, [r6, 0x36]
adds r0, 0x1
movs r1, 0
@@ -2379,7 +2379,7 @@ _0817185A:
movs r1, 0
strb r1, [r0]
movs r0, 0x1
- bl sub_8072A88
+ bl UpdateOamPriorityInAllHealthboxes
bl m4aMPlayAllStop
ldr r0, =0x00000213
bl PlaySE
@@ -2715,7 +2715,7 @@ sub_8171AE4: @ 8171AE4
movs r2, 0x1
movs r3, 0x1C
bl sub_8171D98
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r1, [r0]
movs r0, 0x1
movs r2, 0xE
@@ -2724,7 +2724,7 @@ sub_8171AE4: @ 8171AE4
_08171B36:
ldr r6, =gSprites
ldr r5, =gBankSpriteIds
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
@@ -2792,7 +2792,7 @@ sub_8171BAC: @ 8171BAC
_08171BCA:
ldr r4, =gSprites
ldr r3, =gBankSpriteIds
- ldr r2, =gAnimationBankTarget
+ ldr r2, =gAnimBankTarget
ldrb r0, [r2]
adds r0, r3
ldrb r1, [r0]
@@ -2841,7 +2841,7 @@ _08171C24:
beq _08171C8A
ldr r4, =gSprites
ldr r3, =gBankSpriteIds
- ldr r2, =gAnimationBankTarget
+ ldr r2, =gAnimBankTarget
ldrb r0, [r2]
adds r0, r3
ldrb r1, [r0]
@@ -2859,7 +2859,7 @@ _08171C24:
adds r2, r0
lsls r2, 2
adds r2, r4
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x9]
@@ -2879,7 +2879,7 @@ _08171C24:
ldr r0, =gDoingBattleAnim
strb r6, [r0]
movs r0, 0x1
- bl sub_8072A88
+ bl UpdateOamPriorityInAllHealthboxes
_08171C8A:
pop {r4-r7}
pop {r0}
@@ -2974,7 +2974,7 @@ _08171D3E:
movs r0, 0
strb r0, [r1]
movs r0, 0x1
- bl sub_8072A88
+ bl UpdateOamPriorityInAllHealthboxes
_08171D52:
pop {r4}
pop {r0}
@@ -3083,7 +3083,7 @@ sub_8171E20: @ 8171E20
ands r0, r1
cmp r0, 0
beq _08171E3E
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x8]
ldrb r0, [r1, 0xA]
@@ -4419,7 +4419,7 @@ sub_8172944: @ 8172944
b _081729E2
.pool
_08172970:
- ldr r2, =gUnknown_020244D0
+ ldr r2, =gBattleSpritesDataPtr
ldr r0, [r2]
ldr r1, [r0, 0x8]
ldrb r0, [r1, 0xA]
@@ -4730,7 +4730,7 @@ sub_8172BF0: @ 8172BF0
movs r0, 0
mov r8, r0
ldr r0, =gBankSpriteIds
- ldr r3, =gAnimationBankAttacker
+ ldr r3, =gAnimBankAttacker
ldrb r2, [r3]
adds r0, r2, r0
ldrb r6, [r0]
@@ -4877,7 +4877,7 @@ _08172D28:
adds r0, r1
ldrb r1, [r0, 0x8]
strh r1, [r0, 0x8]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4914,7 +4914,7 @@ _08172D7E:
beq _08172D8A
_08172D84:
adds r0, r7, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08172D8A:
pop {r3}
mov r8, r3
@@ -4949,9 +4949,9 @@ _08172DC0:
beq _08172E4E
b _08172E84
_08172DC6:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -5010,7 +5010,7 @@ _08172E14:
b _08172E84
_08172E4E:
ldr r1, =gBankSpriteIds
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r1, [r0]
@@ -5032,7 +5032,7 @@ _08172E4E:
ldrb r0, [r4]
bl sub_805E974
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08172E84:
pop {r4,r5}
pop {r0}
@@ -5046,9 +5046,9 @@ sub_8172E9C: @ 8172E9C
lsls r0, 24
lsrs r0, 24
ldr r3, =gBattleAnimArgs
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
ldr r2, [r1]
- ldr r1, =gAnimationBankAttacker
+ ldr r1, =gAnimBankAttacker
ldrb r1, [r1]
ldr r2, [r2]
lsls r1, 2
@@ -5057,7 +5057,7 @@ sub_8172E9C: @ 8172E9C
lsls r1, 29
lsrs r1, 31
strh r1, [r3, 0xE]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -5068,11 +5068,11 @@ sub_8172ED0: @ 8172ED0
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, =gAnimationBankTarget
+ ldr r2, =gAnimBankTarget
ldr r1, =gEffectBank
ldrb r1, [r1]
strb r1, [r2]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -5088,7 +5088,7 @@ sub_8172EF0: @ 8172EF0
lsrs r6, r0, 24
movs r0, 0
mov r8, r0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r6, 1
@@ -5108,7 +5108,7 @@ sub_8172EF0: @ 8172EF0
bl GetMonData
adds r4, r0, 0
adds r0, r6, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _08172FC8
@@ -5134,9 +5134,9 @@ _08172F4E:
lsrs r0, 16
cmp r0, r7
bne _08172F6E
- ldr r0, =gUnknown_0852528C
+ ldr r0, =gBattleAnimPicTable + 0x748
bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_08525B94
+ ldr r0, =gBattleAnimPaletteTable + 0x748
bl LoadCompressedObjectPaletteUsingHeap
_08172F6E:
ldr r5, =sub_8172FEC
@@ -5169,7 +5169,7 @@ _08172F6E:
b _08172FDE
.pool
_08172FC8:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r6, 1
@@ -5212,7 +5212,7 @@ sub_8172FEC: @ 8172FEC
b _08173190
.pool
_08173018:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0xA]
@@ -5414,7 +5414,7 @@ sub_81731B0: @ 81731B0
cmp r0, 0x1
bne _081731EA
ldrb r1, [r1, 0x8]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r2, [r0, 0x4]
lsls r0, r1, 1
@@ -5533,14 +5533,14 @@ sub_81732B0: @ 81732B0
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gUnknown_085253AC
+ ldr r0, =gBattleAnimPicTable + 0x868
bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_08525CB4
+ ldr r0, =gBattleAnimPaletteTable + 0x868
bl LoadCompressedObjectPaletteUsingHeap
ldr r0, =0x0000281d
bl IndexOfSpritePaletteTag
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -5559,7 +5559,7 @@ sub_81732E4: @ 81732E4
adds r0, r5, 0
bl FreeSpritePaletteByTag
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
@@ -5575,7 +5575,7 @@ sub_817330C: @ 817330C
movs r0, 0x1E
strh r0, [r4, 0x2E]
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
movs r1, 0
@@ -5587,7 +5587,7 @@ sub_817330C: @ 817330C
adds r0, r1
strh r0, [r4, 0x32]
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -5603,7 +5603,7 @@ sub_817330C: @ 817330C
bl sub_80A68D4
ldr r2, =gSprites
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -5628,7 +5628,7 @@ sub_817339C: @ 817339C
adds r3, r0, 0
ldr r2, =gSprites
ldr r1, =gBankSpriteIds
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -5679,7 +5679,7 @@ sub_8173400: @ 8173400
adds r4, r0, 0
ldr r5, =gSprites
ldr r3, =gBankSpriteIds
- ldr r2, =gAnimationBankAttacker
+ ldr r2, =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r3
ldrb r1, [r0]
@@ -5708,7 +5708,7 @@ sub_8173400: @ 8173400
movs r1, 0
bl StartSpriteAnim
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_08173448:
pop {r4,r5}
pop {r0}
@@ -5732,25 +5732,25 @@ sub_817345C: @ 817345C
.pool
_08173478:
movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, =gAnimationBankAttacker
+ bl GetBankByIdentity
+ ldr r1, =gAnimBankAttacker
strb r0, [r1]
movs r0, 0x1
b _08173498
.pool
_0817348C:
movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r1, =gAnimationBankAttacker
+ bl GetBankByIdentity
+ ldr r1, =gAnimBankAttacker
strb r0, [r1]
movs r0, 0
_08173498:
- bl GetBankByPlayerAI
- ldr r1, =gAnimationBankTarget
+ bl GetBankByIdentity
+ ldr r1, =gAnimBankTarget
strb r0, [r1]
_081734A0:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -5762,7 +5762,7 @@ sub_81734B4: @ 81734B4
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrh r1, [r0]
@@ -5801,7 +5801,7 @@ _08173508:
_0817350C:
strh r0, [r1]
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -5812,18 +5812,18 @@ sub_817351C: @ 817351C
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r3, =gAnimationBankAttacker
- ldr r1, =gUnknown_020244D0
+ ldr r3, =gAnimBankAttacker
+ ldr r1, =gBattleSpritesDataPtr
ldr r2, [r1]
ldr r1, [r2, 0x8]
ldrh r1, [r1]
strb r1, [r3]
- ldr r3, =gAnimationBankTarget
+ ldr r3, =gAnimBankTarget
ldr r1, [r2, 0x8]
ldrh r1, [r1]
lsrs r1, 8
strb r1, [r3]
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
diff --git a/asm/battle_anim_sound_tasks.s b/asm/battle_anim_sound_tasks.s
index 698230802..4bfd7ae68 100644
--- a/asm/battle_anim_sound_tasks.s
+++ b/asm/battle_anim_sound_tasks.s
@@ -22,12 +22,12 @@ sub_8158B30: @ 8158B30
strh r0, [r6, 0xA]
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r5, r0, 0
lsls r4, 24
asrs r4, 24
@@ -36,7 +36,7 @@ sub_8158B30: @ 8158B30
adds r0, r4, 0
adds r1, r5, 0
movs r2, 0x2
- bl sub_80A5314
+ bl CalculatePanIncrement
strh r4, [r6, 0xC]
strh r5, [r6, 0xE]
lsls r0, 24
@@ -128,7 +128,7 @@ sub_8158C04: @ 8158C04
movs r0, 0
strh r0, [r4, 0x1C]
movs r0, 0x3F
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
ldrh r0, [r4, 0xA]
lsls r1, 24
@@ -142,7 +142,7 @@ sub_8158C04: @ 8158C04
cmp r0, 0x2
bne _08158C4C
adds r0, r5, 0
- bl move_anim_related_task_del
+ bl DestroyAnimSoundTask
_08158C4C:
pop {r4,r5}
pop {r0}
@@ -175,14 +175,14 @@ mas_80DCF38: @ 8158C58
ldrb r0, [r0, 0x2]
lsls r0, 24
asrs r0, 24
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
lsls r5, 24
asrs r5, 24
adds r0, r5, 0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r5, r0, 0
lsls r4, 24
asrs r4, 24
@@ -193,7 +193,7 @@ mas_80DCF38: @ 8158C58
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
- bl sub_80A5314
+ bl CalculatePanIncrement
ldr r2, =gTasks
mov r3, r8
lsls r1, r3, 2
@@ -264,7 +264,7 @@ sub_8158D08: @ 8158D08
cmp r0, 0
bne _08158D50
adds r0, r5, 0
- bl move_anim_related_task_del
+ bl DestroyAnimSoundTask
b _08158D82
.pool
_08158D50:
@@ -307,7 +307,7 @@ sub_8158D8C: @ 8158D8C
movs r4, 0
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
lsls r0, 24
lsrs r6, r0, 24
bl IsContest
@@ -319,7 +319,7 @@ sub_8158D8C: @ 8158D8C
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08158DC8
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldrh r4, [r0]
@@ -327,7 +327,7 @@ sub_8158D8C: @ 8158D8C
.pool
_08158DC8:
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08158E76
_08158DD0:
ldr r0, =gBattleAnimArgs
@@ -336,25 +336,25 @@ _08158DD0:
adds r2, r0, 0
cmp r1, 0
bne _08158DEC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r4, [r0]
b _08158E12
.pool
_08158DEC:
cmp r1, 0x1
bne _08158DFC
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r4, [r0]
b _08158E12
.pool
_08158DFC:
cmp r1, 0x2
bne _08158E08
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08158E0A
.pool
_08158E08:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08158E0A:
ldrb r1, [r0]
movs r0, 0x2
@@ -369,12 +369,12 @@ _08158E12:
bne _08158E38
_08158E1E:
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _08158E38
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08158E8C
.pool
_08158E38:
@@ -416,7 +416,7 @@ _08158E76:
bl PlayCry3
_08158E86:
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08158E8C:
pop {r4-r6}
pop {r0}
@@ -432,7 +432,7 @@ sub_8158E9C: @ 8158E9C
movs r4, 0
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
lsls r0, 24
lsrs r5, r0, 24
bl IsContest
@@ -444,7 +444,7 @@ sub_8158E9C: @ 8158E9C
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08158ED8
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldrh r4, [r0]
@@ -452,7 +452,7 @@ sub_8158E9C: @ 8158E9C
.pool
_08158ED8:
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08158F86
_08158EE0:
ldr r0, =gBattleAnimArgs
@@ -461,25 +461,25 @@ _08158EE0:
adds r2, r0, 0
cmp r1, 0
bne _08158EFC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r4, [r0]
b _08158F22
.pool
_08158EFC:
cmp r1, 0x1
bne _08158F0C
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r4, [r0]
b _08158F22
.pool
_08158F0C:
cmp r1, 0x2
bne _08158F18
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _08158F1A
.pool
_08158F18:
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_08158F1A:
ldrb r1, [r0]
movs r0, 0x2
@@ -494,12 +494,12 @@ _08158F22:
bne _08158F48
_08158F2E:
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _08158F48
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _08158FEE
.pool
_08158F48:
@@ -571,7 +571,7 @@ _08158FD0:
.pool
_08158FE8:
adds r0, r6, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08158FEE:
pop {r4-r6}
pop {r0}
@@ -620,7 +620,7 @@ _08159028:
movs r2, 0xA
bl PlayCry3
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _0815906A
_0815904E:
bl IsCryPlaying
@@ -633,7 +633,7 @@ _0815904E:
movs r2, 0x8
bl PlayCry3
mov r0, r9
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815906A:
pop {r3,r4}
mov r8, r3
@@ -669,7 +669,7 @@ _081590A0:
cmp r0, 0
bne _081590B0
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_081590B0:
pop {r4}
pop {r0}
@@ -691,21 +691,21 @@ sub_81590B8: @ 81590B8
strh r1, [r0, 0x1C]
movs r0, 0x40
negs r0, r0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
lsls r0, 24
lsrs r5, r0, 24
bl IsContest
lsls r0, 24
cmp r0, 0
beq _081590F8
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
b _08159102
.pool
_081590F8:
- ldr r1, =gUnknown_02038438
- ldr r0, =gAnimationBankAttacker
+ ldr r1, =gAnimSpeciesByBanks
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -728,7 +728,7 @@ _08159102:
.pool
_08159130:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08159136:
pop {r4,r5}
pop {r0}
@@ -829,7 +829,7 @@ _081591F2:
bl PlayCry3
_081591FE:
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_08159204:
pop {r3}
mov r8, r3
@@ -849,14 +849,14 @@ sub_8159210: @ 8159210
ldrb r0, [r0, 0x2]
lsls r0, 24
asrs r0, 24
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
adds r0, r5, 0
bl PlaySE1WithPanning
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
@@ -874,14 +874,14 @@ sub_8159244: @ 8159244
ldrb r0, [r0, 0x2]
lsls r0, 24
asrs r0, 24
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r1, r0, 0
lsls r1, 24
asrs r1, 24
adds r0, r5, 0
bl PlaySE2WithPanning
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4,r5}
pop {r0}
bx r0
@@ -906,14 +906,14 @@ sub_8159278: @ 8159278
ldrb r0, [r0]
lsls r0, 24
asrs r0, 24
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
lsls r5, 24
asrs r5, 24
adds r0, r5, 0
- bl BattleAnimGetPanControl
+ bl BattleAnimAdjustPanning
adds r5, r0, 0
lsls r4, 24
asrs r4, 24
@@ -924,7 +924,7 @@ sub_8159278: @ 8159278
adds r0, r4, 0
adds r1, r5, 0
adds r2, r6, 0
- bl sub_80A5314
+ bl CalculatePanIncrement
ldr r2, =gTasks
mov r3, r8
lsls r1, r3, 2
@@ -995,7 +995,7 @@ _08159342:
cmp r1, r0
bne _0815935A
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_0815935A:
pop {r4,r5}
pop {r0}
diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s
index d28823a8b..d4e248d8c 100644
--- a/asm/battle_controller_linkopponent.s
+++ b/asm/battle_controller_linkopponent.s
@@ -158,7 +158,7 @@ _080644C2:
thumb_func_start sub_80644D8
sub_80644D8: @ 80644D8
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r1, [r4]
ldr r3, =gActiveBank
ldrb r0, [r3]
@@ -199,11 +199,11 @@ sub_8064520: @ 8064520
movs r0, 0
mov r8, r0
movs r4, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0806454C
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08064584
@@ -276,12 +276,12 @@ _080645CA:
ldrb r1, [r7]
movs r0, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _0806469C
_080645DE:
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
mov r12, r1
ldr r0, [r1]
ldr r7, =gActiveBank
@@ -364,7 +364,7 @@ _08064600:
b _080646F2
.pool
_0806469C:
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r1, [r7]
ldr r2, [r0, 0x4]
@@ -405,7 +405,7 @@ _0806469C:
adds r0, r4, 0
bl FreeSpritePaletteByTag
_080646F2:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -440,7 +440,7 @@ sub_8064734: @ 8064734
push {r5-r7}
movs r0, 0
mov r10, r0
- ldr r5, =gUnknown_020244D0
+ ldr r5, =gBattleSpritesDataPtr
ldr r0, [r5]
ldr r4, =gActiveBank
ldrb r2, [r4]
@@ -497,7 +497,7 @@ _08064776:
adds r0, r3, 0
bl sub_8172EF0
_080647B4:
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, =gActiveBank
ldrb r5, [r2]
@@ -531,7 +531,7 @@ _080647B4:
ands r0, r1
cmp r0, 0
bne _0806487A
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0806484A
@@ -557,7 +557,7 @@ _080647B4:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
mov r1, r9
ldrb r0, [r1]
eors r0, r7
@@ -567,7 +567,7 @@ _080647B4:
eors r0, r7
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0806484A:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -583,15 +583,15 @@ _0806484A:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0806487A:
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -673,7 +673,7 @@ _08064930:
lsls r2, 1
bl m4aMPlayVolumeControl
_0806493C:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -735,7 +735,7 @@ _08064998:
lsrs r0, 24
cmp r0, 0x3
bne _080649E2
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r2, [r5]
ldr r0, [r0, 0x4]
@@ -760,7 +760,7 @@ _08064998:
movs r1, 0
strb r1, [r0, 0x9]
_080649E2:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08064A3A
@@ -799,7 +799,7 @@ _080649E2:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
_08064A3A:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -827,8 +827,8 @@ _08064A3A:
lsls r1, 16
lsrs r1, 16
adds r0, r5, 0
- bl sub_805EE54
- ldr r3, =gUnknown_020244D0
+ bl SetBankEnemyShadowSpriteCallback
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, [r0, 0x8]
ldrb r1, [r2, 0x9]
@@ -900,7 +900,7 @@ sub_8064B04: @ 8064B04
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08064BB6
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r1, [r0, 0x4]
lsls r4, r3, 1
@@ -974,7 +974,7 @@ sub_8064BC0: @ 8064BC0
ldrb r0, [r6]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -985,7 +985,7 @@ sub_8064BC0: @ 8064BC0
adds r0, r5
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _08064C0C
.pool
_08064C08:
@@ -1017,7 +1017,7 @@ sub_8064C14: @ 8064C14
ldr r0, =gHealthBoxesIds
adds r0, r3, r0
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkOpponentBufferExecCompleted
_08064C42:
pop {r0}
@@ -1028,7 +1028,7 @@ _08064C42:
thumb_func_start sub_8064C58
sub_8064C58: @ 8064C58
push {r4-r6,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r2, [r6]
@@ -1065,7 +1065,7 @@ sub_8064C58: @ 8064C58
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkOpponentBufferExecCompleted
_08064CB2:
pop {r4-r6}
@@ -1166,7 +1166,7 @@ sub_8064D60: @ 8064D60
ldr r0, =SpriteCallbackDummy
cmp r1, r0
bne _08064DAC
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r3, 2
@@ -1198,7 +1198,7 @@ _08064DAC:
thumb_func_start sub_8064DD0
sub_8064DD0: @ 8064DD0
push {r4,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r4, =gActiveBank
ldrb r1, [r4]
@@ -1250,7 +1250,7 @@ _08064E2A:
thumb_func_start sub_8064E50
sub_8064E50: @ 8064E50
push {r4-r7,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -1321,13 +1321,13 @@ sub_8064E50: @ 8064E50
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
bl sub_8076918
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldrb r0, [r5]
bl sub_805E408
ldr r1, =gBattleBankFunc
@@ -1346,7 +1346,7 @@ _08064F0C:
thumb_func_start sub_8064F40
sub_8064F40: @ 8064F40
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -1413,7 +1413,7 @@ _08064F72:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -1430,7 +1430,7 @@ _08064FDC:
thumb_func_start sub_8065008
sub_8065008: @ 8065008
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1454,7 +1454,7 @@ _0806502A:
thumb_func_start sub_8065038
sub_8065038: @ 8065038
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1572,7 +1572,7 @@ _0806513A:
lsrs r1, 16
movs r0, 0x1
mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl LinkOpponentBufferExecCompleted
add sp, 0x100
pop {r4-r6}
@@ -3583,7 +3583,7 @@ sub_80662F8: @ 80662F8
muls r2, r0
adds r0, r2, 0
add r0, r9
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
ldrb r0, [r6]
bl GetBankIdentity
adds r1, r0, 0
@@ -3673,7 +3673,7 @@ sub_80662F8: @ 80662F8
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r6]
lsls r0, 2
@@ -3772,7 +3772,7 @@ sub_8066494: @ 8066494
adds r0, r1, 0
adds r0, r5
adds r1, r6, 0
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
adds r0, r6, 0
bl GetBankIdentity
adds r1, r0, 0
@@ -3907,7 +3907,7 @@ sub_8066624: @ 8066624
ldrb r3, [r0]
cmp r3, 0
bne _0806666C
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
@@ -3947,7 +3947,7 @@ _0806666C:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkOpponentBufferExecCompleted
_080666A8:
pop {r4-r6}
@@ -3959,7 +3959,7 @@ _080666A8:
thumb_func_start sub_80666BC
sub_80666BC: @ 80666BC
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4283,7 +4283,7 @@ _0806694C:
bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r9, r7
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
mov r2, r8
lsls r0, r2, 2
adds r0, r1
@@ -4411,7 +4411,7 @@ _08066A76:
mov r0, r8
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r2, =gUnknown_083054E0
+ ldr r2, =gTrainerFrontPicCoords
mov r3, r8
lsls r1, r3, 2
adds r1, r2
@@ -4589,7 +4589,7 @@ sub_8066B94: @ 8066B94
thumb_func_start sub_8066C40
sub_8066C40: @ 8066C40
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4721,7 +4721,7 @@ _08066D32:
ldrb r0, [r0]
lsls r0, 8
orrs r6, r0
- ldr r0, =gUnknown_02038432
+ ldr r0, =gAnimMoveTurn
mov r8, r0
mov r0, r12
adds r0, 0x3
@@ -4729,7 +4729,7 @@ _08066D32:
ldrb r0, [r1]
mov r1, r8
strb r0, [r1]
- ldr r3, =gMovePowerMoveAnim
+ ldr r3, =gAnimMovePower
ldrb r1, [r5]
lsls r1, 9
mov r0, r12
@@ -4743,7 +4743,7 @@ _08066D32:
lsls r0, 8
orrs r2, r0
strh r2, [r3]
- ldr r3, =gMoveDmgMoveAnim
+ ldr r3, =gAnimMoveDmg
ldrb r1, [r5]
lsls r1, 9
mov r0, r12
@@ -4769,7 +4769,7 @@ _08066D32:
lsls r0, 24
orrs r2, r0
str r2, [r3]
- ldr r2, =gHappinessMoveAnim
+ ldr r2, =gAnimFriendship
ldrb r0, [r5]
lsls r0, 9
mov r1, r12
@@ -4791,7 +4791,7 @@ _08066D32:
lsls r0, 8
orrs r2, r0
strh r2, [r4]
- ldr r7, =gDisableStructMoveAnim
+ ldr r7, =gAnimDisableStructPtr
ldrb r1, [r5]
lsls r1, 9
mov r0, r12
@@ -4816,7 +4816,7 @@ _08066D32:
b _08066E58
.pool
_08066E30:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
@@ -4869,7 +4869,7 @@ sub_8066E70: @ 8066E70
adds r1, r2
ldrb r1, [r1]
mov r8, r1
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r5, [r7]
ldr r1, [r5, 0x4]
lsls r0, r3, 1
@@ -4928,7 +4928,7 @@ _08066F08:
movs r0, 0
bl sub_805EB9C
adds r0, r4, 0
- bl move_anim_start_t1
+ bl DoMoveAnim
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -4977,7 +4977,7 @@ _08066F32:
ands r0, r2
strb r0, [r1]
_08066F80:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -5031,10 +5031,10 @@ _08066FE4:
thumb_func_start sub_8066FF4
sub_8066FF4: @ 8066FF4
push {r4,r5,lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r5, =gActiveBank
ldrb r4, [r5]
@@ -5045,7 +5045,7 @@ sub_8066FF4: @ 8066FF4
bl BufferStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -5124,7 +5124,7 @@ sub_80670A0: @ 80670A0
push {r6,r7}
sub sp, 0x4
movs r0, 0
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
@@ -5171,7 +5171,7 @@ sub_80670A0: @ 80670A0
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
- bl sub_807294C
+ bl SetBattleBarStruct
b _0806715A
.pool
_08067130:
@@ -5193,7 +5193,7 @@ _08067130:
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
- bl sub_807294C
+ bl SetBattleBarStruct
_0806715A:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
@@ -5242,9 +5242,9 @@ sub_806719C: @ 806719C
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r2, 1
@@ -5565,7 +5565,7 @@ sub_806743C: @ 806743C
ldrb r0, [r0]
cmp r0, 0
beq _08067478
- bl sub_805EA60
+ bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
@@ -5718,7 +5718,7 @@ sub_8067508: @ 8067508
adds r1, r4
ldrb r0, [r6]
strh r0, [r1, 0x8]
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r2, [r6]
ldr r1, [r0, 0x4]
@@ -5779,7 +5779,7 @@ c3_08038DC4: @ 8067618
adds r0, r1
ldrh r0, [r0, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08067652
@@ -5893,7 +5893,7 @@ sub_8067718: @ 8067718
b _08067812
.pool
_08067748:
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -5954,13 +5954,13 @@ _080677B4:
subs r4, 0x2
adds r3, r4
ldrb r3, [r3]
- bl sub_80735DC
+ bl CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
movs r3, 0
strb r0, [r1]
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
@@ -6000,7 +6000,7 @@ _08067812:
thumb_func_start sub_806782C
sub_806782C: @ 806782C
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -6036,7 +6036,7 @@ _08067864:
thumb_func_start sub_8067874
sub_8067874: @ 8067874
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -6080,7 +6080,7 @@ sub_80678D0: @ 80678D0
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _08067916
diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s
index 881228279..adc5cdb84 100644
--- a/asm/battle_controller_linkpartner.s
+++ b/asm/battle_controller_linkpartner.s
@@ -131,7 +131,7 @@ _0814AFA4:
thumb_func_start sub_814AFBC
sub_814AFBC: @ 814AFBC
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r1, [r4]
ldr r3, =gActiveBank
ldrb r0, [r3]
@@ -168,11 +168,11 @@ _0814AFF4:
sub_814B004: @ 814B004
push {r4-r6,lr}
movs r6, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0814B028
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0814B05C
@@ -239,7 +239,7 @@ _0814B094:
_0814B0A0:
cmp r6, 0
beq _0814B0C6
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -270,7 +270,7 @@ sub_814B0E8: @ 814B0E8
mov r6, r9
mov r5, r8
push {r5-r7}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
mov r12, r0
ldr r0, [r0]
ldr r7, =gActiveBank
@@ -348,7 +348,7 @@ _0814B136:
lsls r0, 2
adds r0, r2
strb r6, [r0, 0x9]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0814B1F0
@@ -383,7 +383,7 @@ _0814B136:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
mov r1, r8
eors r0, r1
@@ -393,7 +393,7 @@ _0814B136:
eors r0, r1
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0814B1F0:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -419,14 +419,14 @@ _0814B1F0:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
- ldr r0, =gUnknown_020244D0
+ bl SetHealthboxSpriteVisible
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r2, [r0, 0x8]
ldrb r1, [r2, 0x9]
@@ -498,7 +498,7 @@ bx_t4_healthbar_update: @ 814B2D0
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -509,7 +509,7 @@ bx_t4_healthbar_update: @ 814B2D0
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _0814B332
.pool
_0814B318:
@@ -587,7 +587,7 @@ sub_814B340: @ 814B340
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkPartnerBufferExecCompleted
_0814B3BC:
pop {r4-r6}
@@ -599,7 +599,7 @@ _0814B3BC:
thumb_func_start sub_814B3DC
sub_814B3DC: @ 814B3DC
push {r4-r6,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r2, [r6]
@@ -634,7 +634,7 @@ sub_814B3DC: @ 814B3DC
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkPartnerBufferExecCompleted
_0814B430:
pop {r4-r6}
@@ -737,7 +737,7 @@ sub_814B4E0: @ 814B4E0
bne _0814B532
adds r0, r3, 0
bl sub_805E408
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
@@ -769,7 +769,7 @@ _0814B532:
thumb_func_start sub_814B554
sub_814B554: @ 814B554
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -808,7 +808,7 @@ sub_814B5A8: @ 814B5A8
push {r4-r7,lr}
mov r7, r8
push {r7}
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r7, =gActiveBank
ldrb r1, [r7]
@@ -878,13 +878,13 @@ sub_814B5A8: @ 814B5A8
muls r1, r6
adds r1, r5
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
bl sub_8076918
ldrb r0, [r7]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r7]
lsls r0, 2
@@ -903,7 +903,7 @@ _0814B664:
thumb_func_start sub_814B69C
sub_814B69C: @ 814B69C
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r4, =gActiveBank
ldrb r2, [r4]
@@ -1021,7 +1021,7 @@ _0814B7A6:
thumb_func_start sub_814B7B8
sub_814B7B8: @ 814B7B8
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1045,7 +1045,7 @@ _0814B7DA:
thumb_func_start sub_814B7E8
sub_814B7E8: @ 814B7E8
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1113,7 +1113,7 @@ _0814B872:
lsrs r1, 16
movs r0, 0x1
mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl LinkPartnerBufferExecCompleted
add sp, 0x100
pop {r4-r6}
@@ -3154,7 +3154,7 @@ sub_814CB0C: @ 814CB0C
muls r0, r5
ldr r4, =gPlayerParty
adds r0, r4
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r6]
lsls r0, 1
add r0, r8
@@ -3283,7 +3283,7 @@ sub_814CC28: @ 814CC28
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r5]
lsls r1, r0, 9
adds r1, r6
@@ -3476,7 +3476,7 @@ sub_814CE14: @ 814CE14
ldrb r3, [r0]
cmp r3, 0
bne _0814CE5C
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
@@ -3514,7 +3514,7 @@ _0814CE5C:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkPartnerBufferExecCompleted
_0814CE92:
pop {r4-r6}
@@ -3526,7 +3526,7 @@ _0814CE92:
thumb_func_start sub_814CEA4
sub_814CEA4: @ 814CEA4
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -3696,7 +3696,7 @@ _0814D002:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -3706,7 +3706,7 @@ _0814D002:
bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r8, r7
- ldr r0, =gUnknown_08305D2C
+ ldr r0, =gTrainerBackPicCoords
lsls r4, 2
adds r4, r0
ldrb r0, [r4]
@@ -3870,7 +3870,7 @@ sub_814D0F0: @ 814D0F0
thumb_func_start sub_814D19C
sub_814D19C: @ 814D19C
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4030,7 +4030,7 @@ _0814D2CE:
ldrb r0, [r0]
lsls r0, 8
orrs r6, r0
- ldr r0, =gUnknown_02038432
+ ldr r0, =gAnimMoveTurn
mov r8, r0
mov r0, r12
adds r0, 0x3
@@ -4038,7 +4038,7 @@ _0814D2CE:
ldrb r0, [r1]
mov r1, r8
strb r0, [r1]
- ldr r3, =gMovePowerMoveAnim
+ ldr r3, =gAnimMovePower
ldrb r1, [r5]
lsls r1, 9
mov r0, r12
@@ -4052,7 +4052,7 @@ _0814D2CE:
lsls r0, 8
orrs r2, r0
strh r2, [r3]
- ldr r3, =gMoveDmgMoveAnim
+ ldr r3, =gAnimMoveDmg
ldrb r1, [r5]
lsls r1, 9
mov r0, r12
@@ -4078,7 +4078,7 @@ _0814D2CE:
lsls r0, 24
orrs r2, r0
str r2, [r3]
- ldr r2, =gHappinessMoveAnim
+ ldr r2, =gAnimFriendship
ldrb r0, [r5]
lsls r0, 9
mov r1, r12
@@ -4100,7 +4100,7 @@ _0814D2CE:
lsls r0, 8
orrs r2, r0
strh r2, [r4]
- ldr r7, =gDisableStructMoveAnim
+ ldr r7, =gAnimDisableStructPtr
ldrb r1, [r5]
lsls r1, 9
mov r0, r12
@@ -4125,7 +4125,7 @@ _0814D2CE:
b _0814D3F4
.pool
_0814D3CC:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
@@ -4178,7 +4178,7 @@ bx_move_anim_4: @ 814D40C
adds r1, r2
ldrb r1, [r1]
mov r8, r1
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r5, [r7]
ldr r1, [r5, 0x4]
lsls r0, r3, 1
@@ -4237,7 +4237,7 @@ _0814D4A4:
movs r0, 0
bl sub_805EB9C
adds r0, r4, 0
- bl move_anim_start_t1
+ bl DoMoveAnim
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -4286,7 +4286,7 @@ _0814D4CE:
ands r0, r2
strb r0, [r1]
_0814D51C:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -4340,10 +4340,10 @@ _0814D580:
thumb_func_start sub_814D590
sub_814D590: @ 814D590
push {r4,r5,lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r5, =gActiveBank
ldrb r4, [r5]
@@ -4354,7 +4354,7 @@ sub_814D590: @ 814D590
bl BufferStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -4433,7 +4433,7 @@ sub_814D63C: @ 814D63C
push {r6,r7}
sub sp, 0x4
movs r0, 0
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
@@ -4480,7 +4480,7 @@ sub_814D63C: @ 814D63C
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
- bl sub_807294C
+ bl SetBattleBarStruct
b _0814D6F6
.pool
_0814D6CC:
@@ -4502,7 +4502,7 @@ _0814D6CC:
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
- bl sub_807294C
+ bl SetBattleBarStruct
_0814D6F6:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
@@ -4551,9 +4551,9 @@ sub_814D738: @ 814D738
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r2, 1
@@ -4874,7 +4874,7 @@ sub_814D9D8: @ 814D9D8
ldrb r0, [r0]
cmp r0, 0
beq _0814DA14
- bl sub_805EA60
+ bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
@@ -5147,7 +5147,7 @@ _0814DC06:
adds r1, r4
ldrb r0, [r5]
strh r0, [r1, 0x8]
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r2, [r5]
ldr r1, [r0, 0x4]
@@ -5217,7 +5217,7 @@ _0814DCF8:
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0814DD18
@@ -5276,7 +5276,7 @@ _0814DD48:
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r7]
movs r1, 0
bl sub_814CC98
@@ -5326,7 +5326,7 @@ sub_814DDD8: @ 814DDD8
b _0814DE7C
.pool
_0814DE08:
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r5, =gActiveBank
ldrb r1, [r5]
@@ -5349,7 +5349,7 @@ _0814DE08:
subs r4, 0x2
adds r3, r4
ldrb r3, [r3]
- bl sub_80735DC
+ bl CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
@@ -5394,7 +5394,7 @@ _0814DE7C:
thumb_func_start sub_814DE9C
sub_814DE9C: @ 814DE9C
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -5430,7 +5430,7 @@ _0814DED4:
thumb_func_start sub_814DEE4
sub_814DEE4: @ 814DEE4
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -5474,7 +5474,7 @@ sub_814DF40: @ 814DF40
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _0814DF86
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index 639ef0ce6..b66e373ca 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -158,7 +158,7 @@ _0805F292:
thumb_func_start sub_805F2A8
sub_805F2A8: @ 805F2A8
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r1, [r4]
ldr r3, =gActiveBank
ldrb r0, [r3]
@@ -200,11 +200,11 @@ sub_805F2F0: @ 805F2F0
push {r5-r7}
movs r0, 0
mov r10, r0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F32C
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F31E
@@ -277,7 +277,7 @@ _0805F3A0:
movs r6, 0x1
_0805F3A2:
ldr r3, =gUnknown_020244D8
- ldr r1, =gUnknown_020244D0
+ ldr r1, =gBattleSpritesDataPtr
mov r8, r1
ldr r2, [r1]
ldr r7, =gActiveBank
@@ -449,7 +449,7 @@ _0805F4E4:
ands r0, r2
strb r0, [r1, 0x1]
_0805F51A:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -488,7 +488,7 @@ sub_805F560: @ 805F560
movs r0, 0
str r0, [sp]
mov r10, r0
- ldr r5, =gUnknown_020244D0
+ ldr r5, =gBattleSpritesDataPtr
ldr r0, [r5]
ldr r4, =gActiveBank
ldrb r2, [r4]
@@ -520,7 +520,7 @@ _0805F5A6:
ands r0, r1
cmp r0, 0
bne _0805F5EE
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F5EE
@@ -549,7 +549,7 @@ _0805F5A6:
adds r0, r3, 0
bl sub_8172EF0
_0805F5EE:
- ldr r2, =gUnknown_020244D0
+ ldr r2, =gBattleSpritesDataPtr
ldr r0, [r2]
ldr r1, =gActiveBank
mov r8, r1
@@ -583,7 +583,7 @@ _0805F5EE:
ands r0, r1
cmp r0, 0
bne _0805F6B4
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F684
@@ -609,7 +609,7 @@ _0805F5EE:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
mov r1, r8
ldrb r0, [r1]
eors r0, r7
@@ -619,7 +619,7 @@ _0805F5EE:
eors r0, r7
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0805F684:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -635,15 +635,15 @@ _0805F684:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0805F6B4:
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r2, [r3]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -723,7 +723,7 @@ _0805F768:
lsls r2, 1
bl m4aMPlayVolumeControl
_0805F774:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -739,11 +739,11 @@ _0805F774:
movs r0, 0x1
str r0, [sp]
_0805F792:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F7B2
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F810
@@ -838,7 +838,7 @@ _0805F86E:
mov r0, r10
cmp r0, 0
beq _0805F958
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F8D2
@@ -877,7 +877,7 @@ _0805F86E:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
_0805F8D2:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -905,8 +905,8 @@ _0805F8D2:
lsls r1, 16
lsrs r1, 16
adds r0, r5, 0
- bl sub_805EE54
- ldr r3, =gUnknown_020244D0
+ bl SetBankEnemyShadowSpriteCallback
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, [r0, 0x8]
ldrb r1, [r2, 0x9]
@@ -972,7 +972,7 @@ sub_805F994: @ 805F994
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0805F9E0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r2, r3, 1
@@ -1010,7 +1010,7 @@ _0805F9E0:
ldr r0, =SpriteCallbackDummy
cmp r1, r0
bne _0805FA48
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r1, [r0, 0x4]
lsls r0, r3, 1
@@ -1068,7 +1068,7 @@ sub_805FA70: @ 805FA70
ldrb r0, [r6]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -1079,7 +1079,7 @@ sub_805FA70: @ 805FA70
adds r0, r5
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _0805FABC
.pool
_0805FAB8:
@@ -1111,7 +1111,7 @@ sub_805FAC4: @ 805FAC4
ldr r0, =gHealthBoxesIds
adds r0, r3, r0
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl OpponentBufferExecCompleted
_0805FAF2:
pop {r0}
@@ -1122,7 +1122,7 @@ _0805FAF2:
thumb_func_start sub_805FB08
sub_805FB08: @ 805FB08
push {r4-r6,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r2, [r6]
@@ -1159,7 +1159,7 @@ sub_805FB08: @ 805FB08
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl OpponentBufferExecCompleted
_0805FB62:
pop {r4-r6}
@@ -1260,7 +1260,7 @@ sub_805FC10: @ 805FC10
ldr r0, =SpriteCallbackDummy
cmp r1, r0
bne _0805FC5C
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r3, 2
@@ -1292,7 +1292,7 @@ _0805FC5C:
thumb_func_start bx_803AEDC
bx_803AEDC: @ 805FC80
push {r4,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r4, =gActiveBank
ldrb r1, [r4]
@@ -1344,7 +1344,7 @@ _0805FCDA:
thumb_func_start sub_805FD00
sub_805FD00: @ 805FD00
push {r4-r7,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -1415,13 +1415,13 @@ sub_805FD00: @ 805FD00
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
bl sub_8076918
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldrb r0, [r5]
bl sub_805E408
ldr r1, =gBattleBankFunc
@@ -1440,7 +1440,7 @@ _0805FDBC:
thumb_func_start sub_805FDF0
sub_805FDF0: @ 805FDF0
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -1507,7 +1507,7 @@ _0805FE22:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -1524,7 +1524,7 @@ _0805FE8C:
thumb_func_start sub_805FEB8
sub_805FEB8: @ 805FEB8
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1548,7 +1548,7 @@ _0805FEDA:
thumb_func_start bx_803B0F4
bx_803B0F4: @ 805FEE8
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1666,7 +1666,7 @@ _0805FFEA:
lsrs r1, 16
movs r0, 0x1
mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl OpponentBufferExecCompleted
add sp, 0x100
pop {r4-r6}
@@ -2607,7 +2607,7 @@ _08060806:
ldrb r1, [r0]
movs r0, 0x1
adds r2, r4, 0
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl OpponentBufferExecCompleted
add sp, 0x58
pop {r4-r7}
@@ -3730,7 +3730,7 @@ sub_8061224: @ 8061224
ldrh r0, [r0]
muls r0, r7
add r0, r10
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
ldrb r0, [r6]
bl GetBankIdentity
adds r1, r0, 0
@@ -3828,7 +3828,7 @@ sub_8061224: @ 8061224
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r6]
lsls r0, 2
@@ -3934,7 +3934,7 @@ sub_80613DC: @ 80613DC
adds r0, r1, 0
adds r0, r5
adds r1, r6, 0
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
adds r0, r6, 0
bl GetBankIdentity
adds r1, r0, 0
@@ -4069,7 +4069,7 @@ sub_806156C: @ 806156C
ldrb r3, [r0]
cmp r3, 0
bne _080615B4
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
@@ -4109,7 +4109,7 @@ _080615B4:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl OpponentBufferExecCompleted
_080615F0:
pop {r4-r6}
@@ -4121,7 +4121,7 @@ _080615F0:
thumb_func_start sub_8061604
sub_8061604: @ 8061604
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4339,7 +4339,7 @@ _080617CA:
bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r9, r7
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
mov r2, r8
lsls r0, r2, 2
adds r0, r1
@@ -4564,7 +4564,7 @@ _080619DE:
mov r0, r8
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r2, =gUnknown_083054E0
+ ldr r2, =gTrainerFrontPicCoords
mov r3, r8
lsls r1, r3, 2
adds r1, r2
@@ -4741,7 +4741,7 @@ sub_8061AF0: @ 8061AF0
thumb_func_start sub_8061B9C
sub_8061B9C: @ 8061B9C
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4871,13 +4871,13 @@ _08061C8A:
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, =gUnknown_02038432
+ ldr r5, =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
ldrb r1, [r2]
strb r1, [r5]
- ldr r4, =gMovePowerMoveAnim
+ ldr r4, =gAnimMovePower
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4891,7 +4891,7 @@ _08061C8A:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r4, =gMoveDmgMoveAnim
+ ldr r4, =gAnimMoveDmg
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4917,7 +4917,7 @@ _08061C8A:
lsls r1, 24
orrs r3, r1
str r3, [r4]
- ldr r3, =gHappinessMoveAnim
+ ldr r3, =gAnimFriendship
ldrb r1, [r6]
lsls r1, 9
mov r2, r12
@@ -4939,7 +4939,7 @@ _08061C8A:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, =gDisableStructMoveAnim
+ ldr r3, =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4962,7 +4962,7 @@ _08061C8A:
b _08061D9E
.pool
_08061D80:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -5009,7 +5009,7 @@ bx_move_anim_7: @ 8061DB0
adds r1, r2
ldrb r1, [r1]
mov r8, r1
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r5, [r7]
ldr r1, [r5, 0x4]
lsls r0, r3, 1
@@ -5068,7 +5068,7 @@ _08061E48:
movs r0, 0
bl sub_805EB9C
adds r0, r4, 0
- bl move_anim_start_t1
+ bl DoMoveAnim
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -5117,7 +5117,7 @@ _08061E72:
ands r0, r2
strb r0, [r1]
_08061EC0:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -5171,10 +5171,10 @@ _08061F24:
thumb_func_start sub_8061F34
sub_8061F34: @ 8061F34
push {r4,r5,lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r5, =gActiveBank
ldrb r4, [r5]
@@ -5185,7 +5185,7 @@ sub_8061F34: @ 8061F34
bl BufferStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -5212,7 +5212,7 @@ sub_8061F90: @ 8061F90
thumb_func_start sub_8061F9C
sub_8061F9C: @ 8061F9C
push {lr}
- bl sub_8063880
+ bl AI_TrySwitchOrUseItem
bl OpponentBufferExecCompleted
pop {r0}
bx r0
@@ -5243,7 +5243,7 @@ sub_8061FB8: @ 8061FB8
movs r0, 0x1
movs r1, 0xA
_08061FD6:
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
_08061FDA:
bl OpponentBufferExecCompleted
b _08062156
@@ -5323,7 +5323,7 @@ _08062062:
cmp r0, 0
beq _0806209C
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r5, =gBankTarget
strb r0, [r5]
ldr r0, =gAbsentBankFlags
@@ -5337,7 +5337,7 @@ _08062062:
cmp r1, 0
beq _0806209C
movs r0, 0x2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
strb r0, [r5]
_0806209C:
ldr r0, =gBankTarget
@@ -5347,7 +5347,7 @@ _0806209C:
movs r0, 0x1
movs r1, 0xA
adds r2, r4, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
b _08061FDA
.pool
_080620C4:
@@ -5378,7 +5378,7 @@ _080620C6:
movs r0, 0x1
movs r1, 0xA
adds r2, r4, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
b _08062152
.pool
_08062108:
@@ -5394,26 +5394,26 @@ _08062108:
lsls r1, 24
lsrs r1, 24
adds r0, r1, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
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
+ bl EmitCmd33
b _08062152
.pool
_0806213C:
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
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
+ bl EmitCmd33
_08062152:
bl OpponentBufferExecCompleted
_08062156:
@@ -5435,7 +5435,7 @@ sub_806215C: @ 806215C
adds r0, 0xC0
ldrb r1, [r0]
movs r0, 0x1
- bl dp01_build_cmdbuf_x23_aa_0
+ bl EmitCmd35
bl OpponentBufferExecCompleted
pop {r0}
bx r0
@@ -5456,7 +5456,7 @@ sub_8062188: @ 8062188
ldrb r0, [r1]
cmp r0, 0x6
bne _08062254
- bl sub_8063A90
+ bl GetMostSuitableMonToSwitchInto
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x6
@@ -5468,7 +5468,7 @@ sub_8062188: @ 8062188
cmp r0, 0
bne _080621D4
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r5, r0, 24
adds r7, r5, 0
@@ -5476,11 +5476,11 @@ sub_8062188: @ 8062188
.pool
_080621D4:
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r7, r0, 24
movs r0, 0x3
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r5, r0, 24
_080621E8:
@@ -5550,7 +5550,7 @@ _0806225A:
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x22_a_three_bytes
+ bl EmitCmd34
bl OpponentBufferExecCompleted
pop {r4-r7}
pop {r0}
@@ -5574,7 +5574,7 @@ sub_8062294: @ 8062294
push {r6,r7}
sub sp, 0x4
movs r0, 0
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
@@ -5621,7 +5621,7 @@ sub_8062294: @ 8062294
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
- bl sub_807294C
+ bl SetBattleBarStruct
b _0806234E
.pool
_08062324:
@@ -5643,7 +5643,7 @@ _08062324:
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
- bl sub_807294C
+ bl SetBattleBarStruct
_0806234E:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
@@ -5692,9 +5692,9 @@ sub_8062390: @ 8062390
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r2, 1
@@ -6015,7 +6015,7 @@ sub_8062630: @ 8062630
ldrb r0, [r0]
cmp r0, 0
beq _0806266C
- bl sub_805EA60
+ bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
@@ -6168,7 +6168,7 @@ sub_80626FC: @ 80626FC
adds r1, r4
ldrb r0, [r6]
strh r0, [r1, 0x8]
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r2, [r6]
ldr r1, [r0, 0x4]
@@ -6244,7 +6244,7 @@ sub_8062828: @ 8062828
adds r0, r1
ldrh r0, [r0, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0806286C
@@ -6348,7 +6348,7 @@ dp01t_30_7_0803D67C: @ 8062918
b _08062A12
.pool
_08062948:
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -6409,13 +6409,13 @@ _080629B4:
subs r4, 0x2
adds r3, r4
ldrb r3, [r3]
- bl sub_80735DC
+ bl CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
movs r3, 0
strb r0, [r1]
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
@@ -6455,7 +6455,7 @@ _08062A12:
thumb_func_start bx_0803D790_t7
bx_0803D790_t7: @ 8062A2C
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -6491,7 +6491,7 @@ _08062A64:
thumb_func_start sub_8062A74
sub_8062A74: @ 8062A74
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -6535,7 +6535,7 @@ sub_8062AD0: @ 8062AD0
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _08062B16
@@ -6655,7 +6655,7 @@ sub_8062BB0: @ 8062BB0
negs r0, r0
ands r0, r1
strb r0, [r3]
- ldr r0, =gUnknown_03005D00
+ ldr r0, =gPreBattleCallback1
ldr r0, [r0]
str r0, [r2]
ldr r0, [r2, 0x8]
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index eb4caa013..10b675714 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -191,7 +191,7 @@ _080575F0:
beq _08057658
movs r0, 0x5
bl PlaySE
- ldr r1, =gUnknown_020244AC
+ ldr r1, =gActionSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
@@ -226,14 +226,14 @@ _0805764C:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
b _080577C2
_08057658:
movs r0, 0x20
ands r0, r2
cmp r0, 0
beq _08057698
- ldr r5, =gUnknown_020244AC
+ ldr r5, =gActionSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r0, r5
@@ -249,7 +249,7 @@ _08057674:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -261,7 +261,7 @@ _08057698:
ands r0, r2
cmp r0, 0
beq _080576D8
- ldr r5, =gUnknown_020244AC
+ ldr r5, =gActionSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r0, r5
@@ -277,7 +277,7 @@ _080576B4:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -290,7 +290,7 @@ _080576D8:
ands r0, r2
cmp r0, 0
beq _08057700
- ldr r5, =gUnknown_020244AC
+ ldr r5, =gActionSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r0, r5
@@ -306,7 +306,7 @@ _08057700:
ands r0, r2
cmp r0, 0
beq _0805774C
- ldr r5, =gUnknown_020244AC
+ ldr r5, =gActionSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r0, r5
@@ -321,7 +321,7 @@ _0805771A:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -333,7 +333,7 @@ _08057732:
adds r0, r5
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
b _080577E8
.pool
_0805774C:
@@ -358,7 +358,7 @@ _0805775A:
cmp r0, 0x2
bne _080577E8
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r1, =gAbsentBankFlags
ldrb r1, [r1]
ldr r2, =gBitTable
@@ -393,7 +393,7 @@ _080577B2:
movs r1, 0xC
_080577BC:
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
_080577C2:
bl PlayerBufferExecCompleted
b _080577E8
@@ -403,7 +403,7 @@ _080577DC:
ands r0, r2
cmp r0, 0
beq _080577E8
- bl sub_8073314
+ bl SwapHpBarsWithHpText
_080577E8:
pop {r4-r7}
pop {r0}
@@ -508,7 +508,7 @@ _080578A0:
adds r0, r2
ldr r1, =sub_8039B2C
str r1, [r0]
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
@@ -518,7 +518,7 @@ _080578A0:
orrs r2, r0
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
ldrb r0, [r4]
movs r1, 0x1
bl dp11b_obj_free
@@ -622,7 +622,7 @@ _080579F0:
mov r1, sp
adds r0, r1, r4
ldrb r0, [r0]
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
strb r0, [r5]
ldr r1, =gNoOfAllBanks
lsls r0, 24
@@ -664,7 +664,7 @@ _08057A32:
muls r0, r1
ldr r1, =gPlayerParty
adds r0, r1
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
adds r2, r1
ldrb r1, [r2]
adds r1, 0xD
@@ -750,7 +750,7 @@ _08057B14:
mov r1, sp
adds r0, r1, r4
ldrb r0, [r0]
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
strb r0, [r5]
ldr r1, =gNoOfAllBanks
lsls r0, 24
@@ -792,7 +792,7 @@ _08057B56:
muls r0, r1
ldr r1, =gPlayerParty
adds r0, r1
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
adds r2, r1
ldrb r1, [r2]
adds r1, 0xD
@@ -890,7 +890,7 @@ _08057C48:
_08057C58:
movs r0, 0x5
bl PlaySE
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
@@ -942,7 +942,7 @@ _08057CC4:
movs r0, 0x1
ands r0, r1
eors r0, r2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r1, =gUnknown_03005D74
strb r0, [r1]
_08057CDE:
@@ -977,7 +977,7 @@ _08057D18:
movs r0, 0x1
add r8, r0
_08057D24:
- ldr r0, =gUnknown_020244B0
+ ldr r0, =gMoveSelectionCursor
adds r0, r3, r0
adds r1, r6, 0
adds r1, 0x8
@@ -1008,7 +1008,7 @@ _08057D5A:
cmp r0, 0
bne _08057D80
_08057D62:
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldrb r0, [r7]
adds r0, r1
ldrb r2, [r0]
@@ -1035,7 +1035,7 @@ _08057D80:
.pool
_08057DA8:
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r1, =gAbsentBankFlags
ldrb r1, [r1]
ldr r2, =gBitTable
@@ -1052,7 +1052,7 @@ _08057DA8:
_08057DD0:
movs r0, 0x1
_08057DD2:
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r1, =gUnknown_03005D74
_08057DD8:
strb r0, [r1]
@@ -1086,7 +1086,7 @@ _08057E14:
_08057E1C:
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl PlayerBufferExecCompleted
b _08057F9E
.pool
@@ -1095,7 +1095,7 @@ _08057E30:
ands r0, r2
cmp r0, 0
beq _08057E60
- ldr r4, =gUnknown_020244B0
+ ldr r4, =gMoveSelectionCursor
ldrb r0, [r7]
adds r2, r0, r4
ldrb r1, [r2]
@@ -1119,7 +1119,7 @@ _08057E60:
ands r0, r2
cmp r0, 0
beq _08057EA4
- ldr r4, =gUnknown_020244B0
+ ldr r4, =gMoveSelectionCursor
ldrb r0, [r7]
adds r3, r0, r4
ldrb r2, [r3]
@@ -1151,7 +1151,7 @@ _08057EA4:
ands r0, r2
cmp r0, 0
beq _08057ED4
- ldr r4, =gUnknown_020244B0
+ ldr r4, =gMoveSelectionCursor
ldrb r0, [r7]
adds r2, r0, r4
ldrb r1, [r2]
@@ -1173,7 +1173,7 @@ _08057ED4:
ands r0, r2
cmp r0, 0
beq _08057F30
- ldr r4, =gUnknown_020244B0
+ ldr r4, =gMoveSelectionCursor
ldrb r0, [r7]
adds r3, r0, r4
ldrb r2, [r3]
@@ -1221,7 +1221,7 @@ _08057F30:
ands r5, r6
cmp r5, 0
bne _08057F9E
- ldr r4, =gUnknown_020244B0
+ ldr r4, =gMoveSelectionCursor
ldrb r0, [r7]
adds r0, r4
ldrb r0, [r0]
@@ -1247,7 +1247,7 @@ _08057F80:
bl battle_menu_cursor_related_2
ldr r0, =gText_BattleSwitchWhich
movs r1, 0xB
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
ldrb r0, [r0]
@@ -1287,10 +1287,10 @@ _08057FD6:
beq _08057FF8
movs r0, 0x5
bl PlaySE
- ldr r1, =gUnknown_02022E14
+ ldr r1, =gBattle_BG0_X
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
movs r2, 0xA0
lsls r2, 1
adds r0, r2, 0
@@ -1302,7 +1302,7 @@ _08057FF8:
ands r0, r1
cmp r0, 0
beq _08058038
- ldr r5, =gUnknown_020244B0
+ ldr r5, =gMoveSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r2, r0, r5
@@ -1333,7 +1333,7 @@ _08058038:
ands r0, r1
cmp r0, 0
beq _08058086
- ldr r5, =gUnknown_020244B0
+ ldr r5, =gMoveSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r3, r0, r5
@@ -1370,7 +1370,7 @@ _08058086:
ands r0, r1
cmp r0, 0
beq _080580C8
- ldr r5, =gUnknown_020244B0
+ ldr r5, =gMoveSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r2, r0, r5
@@ -1401,7 +1401,7 @@ _080580C8:
ands r0, r1
cmp r0, 0
beq _08058116
- ldr r5, =gUnknown_020244B0
+ ldr r5, =gMoveSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r3, r0, r5
@@ -1457,7 +1457,7 @@ sub_8058138: @ 8058138
_08058152:
movs r0, 0x5
bl PlaySE
- ldr r0, =gUnknown_020244B0
+ ldr r0, =gMoveSelectionCursor
mov r10, r0
ldr r1, =gActiveBank
mov r8, r1
@@ -1594,7 +1594,7 @@ _0805824E:
adds r6, 0x1
cmp r6, 0x3
ble _0805824E
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldrb r0, [r7]
adds r0, r1
ldrb r0, [r0]
@@ -1758,7 +1758,7 @@ _08058392:
adds r6, 0x1
cmp r6, 0x3
ble _08058392
- ldr r4, =gUnknown_020244B0
+ ldr r4, =gMoveSelectionCursor
ldr r3, =gActiveBank
ldrb r0, [r3]
adds r0, r4
@@ -1892,7 +1892,7 @@ _080584A8:
adds r0, r1
ldr r1, =sub_8057BFC
str r1, [r0]
- ldr r3, =gUnknown_020244B0
+ ldr r3, =gMoveSelectionCursor
ldrb r0, [r2]
adds r0, r3
ldr r1, =gUnknown_03005D74
@@ -1915,7 +1915,7 @@ _08058500:
ldr r0, =gUnknown_03005D74
ldrb r0, [r0]
bl battle_menu_cursor_related
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r0, r1
@@ -1947,7 +1947,7 @@ _08058554:
bne _0805856A
b _080586E8
_0805856A:
- ldr r0, =gUnknown_020244B0
+ ldr r0, =gMoveSelectionCursor
ldr r1, =gActiveBank
ldrb r1, [r1]
adds r1, r0
@@ -1990,7 +1990,7 @@ _080585BA:
bcc _080585C8
b _080586E8
_080585C8:
- ldr r0, =gUnknown_020244B0
+ ldr r0, =gMoveSelectionCursor
ldr r1, =gActiveBank
ldrb r1, [r1]
adds r1, r0
@@ -2010,7 +2010,7 @@ _080585E8:
ands r0, r2
cmp r0, 0
beq _080586E8
- ldr r0, =gUnknown_020244B0
+ ldr r0, =gMoveSelectionCursor
ldr r1, =gActiveBank
ldrb r1, [r1]
adds r1, r0
@@ -2034,7 +2034,7 @@ _0805862C:
strb r0, [r4]
movs r0, 0x5
bl PlaySE
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
@@ -2064,7 +2064,7 @@ _0805865C:
ldrb r1, [r1]
cmp r0, r1
bcs _080586E8
- ldr r0, =gUnknown_020244B0
+ ldr r0, =gMoveSelectionCursor
ldr r1, =gActiveBank
ldrb r1, [r1]
adds r1, r0
@@ -2087,7 +2087,7 @@ _080586AA:
strb r0, [r4]
movs r0, 0x5
bl PlaySE
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
@@ -2123,7 +2123,7 @@ sub_80586F8: @ 80586F8
ldrb r0, [r0]
cmp r0, 0
bne _0805875C
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08058798
@@ -2137,7 +2137,7 @@ sub_80586F8: @ 80586F8
negs r0, r0
ands r0, r1
strb r0, [r2]
- ldr r0, =gUnknown_03005D00
+ ldr r0, =gPreBattleCallback1
ldr r0, [r0]
str r0, [r3]
ldr r0, =sub_8038D64
@@ -2166,7 +2166,7 @@ _0805875C:
negs r0, r0
ands r0, r1
strb r0, [r2]
- ldr r0, =gUnknown_03005D00
+ ldr r0, =gPreBattleCallback1
ldr r0, [r0]
str r0, [r3]
ldr r0, =sub_8038D64
@@ -2233,7 +2233,7 @@ _08058810:
negs r0, r0
ands r0, r1
strb r0, [r3]
- ldr r0, =gUnknown_03005D00
+ ldr r0, =gPreBattleCallback1
ldr r0, [r0]
str r0, [r2]
ldr r0, [r2, 0x8]
@@ -2344,7 +2344,7 @@ _08058908:
thumb_func_start sub_8058924
sub_8058924: @ 8058924
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r1, [r4]
ldr r3, =gActiveBank
ldrb r0, [r3]
@@ -2385,11 +2385,11 @@ sub_805896C: @ 805896C
mov r5, r8
push {r5-r7}
movs r7, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058998
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080589D0
@@ -2452,7 +2452,7 @@ _08058A0A:
cmp r7, 0
beq _08058B08
_08058A0E:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
mov r9, r0
ldr r0, [r0]
mov r6, r10
@@ -2541,7 +2541,7 @@ _08058A0E:
ldr r4, =gPlayerParty
adds r0, r4
bl sub_805E990
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058AE4
@@ -2593,7 +2593,7 @@ sub_8058B40: @ 8058B40
movs r0, 0
mov r9, r0
mov r8, r0
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r7, =gActiveBank
ldrb r2, [r7]
@@ -2672,7 +2672,7 @@ _08058BB2:
ands r0, r1
cmp r0, 0
bne _08058C68
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058C38
@@ -2697,7 +2697,7 @@ _08058BB2:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
eors r0, r6
bl sub_8076918
@@ -2705,7 +2705,7 @@ _08058BB2:
eors r0, r6
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08058C38:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -2721,15 +2721,15 @@ _08058C38:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08058C68:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -2743,7 +2743,7 @@ _08058C68:
orrs r1, r2
strb r1, [r0, 0x1]
_08058C82:
- ldr r5, =gUnknown_020244D0
+ ldr r5, =gBattleSpritesDataPtr
ldr r0, [r5]
ldr r4, =gActiveBank
ldrb r2, [r4]
@@ -2801,7 +2801,7 @@ _08058D08:
lsls r2, 1
bl m4aMPlayVolumeControl
_08058D14:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -2817,11 +2817,11 @@ _08058D14:
movs r0, 0x1
mov r9, r0
_08058D32:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058D52
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058DAC
@@ -2915,7 +2915,7 @@ _08058E0A:
mov r0, r8
cmp r0, 0
beq _08058EAA
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058E48
@@ -2950,7 +2950,7 @@ _08058E48:
ldr r1, =gSprites
adds r0, r1
bl DestroySprite
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, [r0, 0x8]
ldrb r1, [r2, 0x9]
@@ -3015,7 +3015,7 @@ sub_8058EDC: @ 8058EDC
ldr r0, =SpriteCallbackDummy
cmp r4, r0
bne _08058F94
- ldr r5, =gUnknown_020244D0
+ ldr r5, =gBattleSpritesDataPtr
ldr r0, [r5]
ldr r1, [r0, 0x4]
lsls r0, r3, 1
@@ -3098,7 +3098,7 @@ _08058F94:
thumb_func_start sub_8058FC0
sub_8058FC0: @ 8058FC0
push {r4,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r4, =gActiveBank
ldrb r1, [r4]
@@ -3142,7 +3142,7 @@ _0805900E:
thumb_func_start sub_805902C
sub_805902C: @ 805902C
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -3207,13 +3207,13 @@ _0805905E:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
bl sub_8076918
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3267,7 +3267,7 @@ bx_t1_healthbar_update: @ 8059130
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -3278,7 +3278,7 @@ bx_t1_healthbar_update: @ 8059130
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _08059192
.pool
_08059178:
@@ -3338,7 +3338,7 @@ sub_80591B8: @ 80591B8
str r7, [sp, 0x8]
ldrh r2, [r1, 0xA]
str r2, [sp, 0xC]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3413,9 +3413,9 @@ _080591FE:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
strb r5, [r4]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3557,7 +3557,7 @@ sub_8059330: @ 8059330
negs r0, r0
str r0, [sp]
mov r0, r10
- bl sub_807294C
+ bl SetBattleBarStruct
movs r0, 0x21
bl PlaySE
ldr r0, =sub_8059400
@@ -3616,7 +3616,7 @@ _08059430:
lsls r4, 16
lsrs r4, 16
ldrb r0, [r5]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r4, 16
movs r0, 0x1
@@ -3686,7 +3686,7 @@ _08059430:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
strb r5, [r4]
ldr r0, =sub_8059544
str r0, [r6]
@@ -3729,7 +3729,7 @@ sub_8059544: @ 8059544
adds r0, r1
ldrb r4, [r0, 0xC]
ldrb r6, [r0, 0x8]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3774,7 +3774,7 @@ sub_80595A4: @ 80595A4
lsls r0, 3
adds r2, r0, r1
ldrb r5, [r2, 0xC]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r5, 1
@@ -3795,7 +3795,7 @@ sub_80595A4: @ 80595A4
adds r0, r7, 0
movs r1, 0x38
bl GetMonData
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3814,7 +3814,7 @@ sub_80595A4: @ 80595A4
ldrb r0, [r0]
adds r1, r7, 0
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
b _08059638
.pool
_08059624:
@@ -3826,7 +3826,7 @@ _08059624:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
_08059638:
ldr r0, =gTasks
lsls r1, r6, 2
@@ -3930,7 +3930,7 @@ sub_80596A8: @ 80596A8
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerBufferExecCompleted
_08059724:
pop {r4-r6}
@@ -3942,7 +3942,7 @@ _08059724:
thumb_func_start sub_8059744
sub_8059744: @ 8059744
push {r4-r6,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r2, [r6]
@@ -3977,7 +3977,7 @@ sub_8059744: @ 8059744
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerBufferExecCompleted
_08059798:
pop {r4-r6}
@@ -4042,7 +4042,7 @@ sub_8059828: @ 8059828
push {lr}
ldr r0, =gMain
ldr r1, [r0, 0x4]
- ldr r0, =sub_8038420
+ ldr r0, =BattleMainCB2
cmp r1, r0
bne _08059898
ldr r0, =gPaletteFade
@@ -4059,14 +4059,14 @@ sub_8059828: @ 8059828
ldrb r1, [r0]
ldr r2, =gUnknown_0203CF00
movs r0, 0x1
- bl dp01_build_cmdbuf_x22_a_three_bytes
+ bl EmitCmd34
b _0805987A
.pool
_08059870:
movs r0, 0x1
movs r1, 0x6
movs r2, 0
- bl dp01_build_cmdbuf_x22_a_three_bytes
+ bl EmitCmd34
_0805987A:
ldr r1, =gBattleBufferA
ldr r0, =gActiveBank
@@ -4118,7 +4118,7 @@ sub_80598E0: @ 80598E0
push {lr}
ldr r0, =gMain
ldr r1, [r0, 0x4]
- ldr r0, =sub_8038420
+ ldr r0, =BattleMainCB2
cmp r1, r0
bne _08059906
ldr r0, =gPaletteFade
@@ -4130,7 +4130,7 @@ sub_80598E0: @ 80598E0
ldr r0, =gScriptItemId
ldrh r1, [r0]
movs r0, 0x1
- bl dp01_build_cmdbuf_x23_aa_0
+ bl EmitCmd35
bl PlayerBufferExecCompleted
_08059906:
pop {r0}
@@ -4145,7 +4145,7 @@ bx_wait_t1: @ 805991C
ldrb r0, [r0]
cmp r0, 0
beq _08059942
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -4244,11 +4244,11 @@ sub_80599D4: @ 80599D4
movs r0, 0x5
bl PlaySE
ldrb r0, [r4]
- bl sub_8056BAC
+ bl BattleDestroyCursorAt
movs r0, 0
strb r0, [r4]
movs r0, 0
- bl sub_8056B74
+ bl BattleCreateCursorAt
_08059A02:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
@@ -4263,11 +4263,11 @@ _08059A02:
movs r0, 0x5
bl PlaySE
ldrb r0, [r4]
- bl sub_8056BAC
+ bl BattleDestroyCursorAt
movs r0, 0x1
strb r0, [r4]
movs r0, 0x1
- bl sub_8056B74
+ bl BattleCreateCursorAt
_08059A2C:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
@@ -4291,14 +4291,14 @@ _08059A2C:
movs r0, 0x1
movs r1, 0xE
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
b _08059A76
.pool
_08059A6C:
movs r0, 0x1
movs r1, 0xD
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
_08059A76:
bl PlayerBufferExecCompleted
_08059A7A:
@@ -4355,7 +4355,7 @@ _08059AC4:
lsls r1, 24
lsrs r1, 24
adds r0, r7, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldrh r0, [r4]
cmp r0, 0
beq _08059AF4
@@ -4382,7 +4382,7 @@ sub_8059B18: @ 8059B18
bl StringCopy
adds r0, r4, 0
movs r1, 0x7
- bl battle_show_message_maybe
+ bl sub_814F9EC
pop {r4}
pop {r0}
bx r0
@@ -4401,13 +4401,13 @@ sub_8059B3C: @ 8059B3C
ldrb r0, [r0]
cmp r0, 0x1
beq _08059B98
- bl sub_814FBAC
+ bl SetPpNumbersPaletteInMoveSelection
ldrb r1, [r7]
lsls r4, r1, 9
adds r0, r5, 0x4
adds r4, r0
ldr r6, =gDisplayedStringBattle
- ldr r5, =gUnknown_020244B0
+ ldr r5, =gMoveSelectionCursor
adds r1, r5
adds r0, r4, 0
adds r0, 0x8
@@ -4432,7 +4432,7 @@ sub_8059B3C: @ 8059B3C
bl ConvertIntToDecimalStringN
adds r0, r6, 0
movs r1, 0x9
- bl battle_show_message_maybe
+ bl sub_814F9EC
_08059B98:
pop {r4-r7}
pop {r0}
@@ -4462,7 +4462,7 @@ sub_8059BB0: @ 8059BB0
strb r1, [r0]
adds r0, 0x1
ldr r3, =gBattleMoves
- ldr r2, =gUnknown_020244B0
+ ldr r2, =gMoveSelectionCursor
ldrb r1, [r5]
adds r1, r2
ldrb r1, [r1]
@@ -4481,7 +4481,7 @@ sub_8059BB0: @ 8059BB0
bl StringCopy
adds r0, r6, 0
movs r1, 0xA
- bl battle_show_message_maybe
+ bl sub_814F9EC
pop {r4-r6}
pop {r0}
bx r0
@@ -4561,8 +4561,8 @@ battle_menu_cursor_related: @ 8059C70
.pool
thumb_func_end battle_menu_cursor_related
- thumb_func_start sub_8059CB4
-sub_8059CB4: @ 8059CB4
+ thumb_func_start ActionSelectionCreateCursorAt
+ActionSelectionCreateCursorAt: @ 8059CB4
push {r4,lr}
sub sp, 0x10
adds r3, r0, 0
@@ -4595,10 +4595,10 @@ sub_8059CB4: @ 8059CB4
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_8059CB4
+ thumb_func_end ActionSelectionCreateCursorAt
- thumb_func_start sub_8059CF8
-sub_8059CF8: @ 8059CF8
+ thumb_func_start ActionSelectionDestroyCursorAt
+ActionSelectionDestroyCursorAt: @ 8059CF8
push {lr}
sub sp, 0x10
adds r3, r0, 0
@@ -4632,12 +4632,12 @@ sub_8059CF8: @ 8059CF8
pop {r0}
bx r0
.pool
- thumb_func_end sub_8059CF8
+ thumb_func_end ActionSelectionDestroyCursorAt
thumb_func_start sub_8059D40
sub_8059D40: @ 8059D40
push {lr}
- ldr r0, =sub_80A92F8
+ ldr r0, =ReshowBattleScreenAfterMenu
bl SetMainCallback2
pop {r0}
bx r0
@@ -4647,7 +4647,7 @@ sub_8059D40: @ 8059D40
thumb_func_start sub_8059D50
sub_8059D50: @ 8059D50
push {lr}
- ldr r0, =sub_80A92F8
+ ldr r0, =ReshowBattleScreenAfterMenu
bl SetMainCallback2
pop {r0}
bx r0
@@ -4657,7 +4657,7 @@ sub_8059D50: @ 8059D50
thumb_func_start sub_8059D60
sub_8059D60: @ 8059D60
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -4681,7 +4681,7 @@ _08059D82:
thumb_func_start bx_8030B2C
bx_8030B2C: @ 8059D90
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -4711,14 +4711,14 @@ b_link_standby_message: @ 8059DC0
ands r0, r1
cmp r0, 0
beq _08059DE0
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r0, =gText_LinkStandby
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
_08059DE0:
pop {r0}
bx r0
@@ -4772,7 +4772,7 @@ _08059E4E:
lsrs r1, 16
movs r0, 0x1
mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl PlayerBufferExecCompleted
add sp, 0x100
pop {r4-r6}
@@ -5713,7 +5713,7 @@ _0805A66A:
ldrb r1, [r0]
movs r0, 0x1
adds r2, r4, 0
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl PlayerBufferExecCompleted
add sp, 0x58
pop {r4-r7}
@@ -6866,7 +6866,7 @@ sub_805B164: @ 805B164
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldr r2, =gSprites
ldr r0, =gBankSpriteIds
ldrb r3, [r4]
@@ -6923,12 +6923,12 @@ sub_805B1CC: @ 805B1CC
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
- ldr r1, =gUnknown_020244AC
+ bl BattleLoadPlayerMonSpriteGfx
+ ldr r1, =gActionSelectionCursor
ldrb r0, [r5]
adds r0, r1
strb r4, [r0]
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldrb r0, [r5]
adds r0, r1
strb r4, [r0]
@@ -7124,7 +7124,7 @@ sub_805B3D4: @ 805B3D4
ldrb r3, [r0]
cmp r3, 0
bne _0805B41C
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
@@ -7162,7 +7162,7 @@ _0805B41C:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerBufferExecCompleted
_0805B452:
pop {r4-r6}
@@ -7174,7 +7174,7 @@ _0805B452:
thumb_func_start sub_805B464
sub_805B464: @ 805B464
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -7371,11 +7371,11 @@ _0805B5E0:
beq _0805B618
movs r0, 0x5A
mov r9, r0
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
b _0805B642
.pool
_0805B618:
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
lsls r0, r4, 2
adds r0, r1
ldrb r1, [r0]
@@ -7392,7 +7392,7 @@ _0805B618:
_0805B63C:
movs r0, 0x50
mov r9, r0
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
_0805B642:
lsls r0, r4, 2
adds r0, r1
@@ -7542,7 +7542,7 @@ _0805B794:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -7724,7 +7724,7 @@ _0805B926:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -7733,7 +7733,7 @@ _0805B926:
adds r0, r4, 0
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
lsls r4, 2
adds r4, r1
ldrb r1, [r4]
@@ -7890,7 +7890,7 @@ sub_805B9F8: @ 805B9F8
thumb_func_start sub_805BAB8
sub_805BAB8: @ 805BAB8
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -8013,7 +8013,7 @@ sub_805BBA4: @ 805BBA4
thumb_func_start sub_805BBC4
sub_805BBC4: @ 805BBC4
push {r4,r5,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x8]
movs r0, 0x4
@@ -8024,7 +8024,7 @@ sub_805BBC4: @ 805BBC4
ldr r5, =gActiveBank
ldrb r4, [r5]
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
@@ -8054,7 +8054,7 @@ sub_805BC18: @ 805BC18
adds r1, 0x1
adds r0, r1
ldrb r1, [r0]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
strb r1, [r0, 0x8]
@@ -8063,7 +8063,7 @@ sub_805BC18: @ 805BC18
strb r0, [r1]
ldrb r4, [r5]
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
@@ -8134,7 +8134,7 @@ _0805BCBE:
ldrb r0, [r0]
lsls r0, 8
orrs r6, r0
- ldr r0, =gUnknown_02038432
+ ldr r0, =gAnimMoveTurn
mov r8, r0
mov r0, r12
adds r0, 0x3
@@ -8142,7 +8142,7 @@ _0805BCBE:
ldrb r0, [r1]
mov r1, r8
strb r0, [r1]
- ldr r3, =gMovePowerMoveAnim
+ ldr r3, =gAnimMovePower
ldrb r1, [r5]
lsls r1, 9
mov r0, r12
@@ -8156,7 +8156,7 @@ _0805BCBE:
lsls r0, 8
orrs r2, r0
strh r2, [r3]
- ldr r3, =gMoveDmgMoveAnim
+ ldr r3, =gAnimMoveDmg
ldrb r1, [r5]
lsls r1, 9
mov r0, r12
@@ -8182,7 +8182,7 @@ _0805BCBE:
lsls r0, 24
orrs r2, r0
str r2, [r3]
- ldr r2, =gHappinessMoveAnim
+ ldr r2, =gAnimFriendship
ldrb r0, [r5]
lsls r0, 9
mov r1, r12
@@ -8204,7 +8204,7 @@ _0805BCBE:
lsls r0, 8
orrs r2, r0
strh r2, [r4]
- ldr r7, =gDisableStructMoveAnim
+ ldr r7, =gAnimDisableStructPtr
ldrb r1, [r5]
lsls r1, 9
mov r0, r12
@@ -8229,7 +8229,7 @@ _0805BCBE:
b _0805BDE4
.pool
_0805BDBC:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
@@ -8282,7 +8282,7 @@ bx_move_anim_1: @ 805BDFC
adds r1, r2
ldrb r1, [r1]
mov r8, r1
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r5, [r7]
ldr r1, [r5, 0x4]
lsls r0, r3, 1
@@ -8341,7 +8341,7 @@ _0805BE94:
movs r0, 0
bl sub_805EB9C
adds r0, r4, 0
- bl move_anim_start_t1
+ bl DoMoveAnim
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -8390,7 +8390,7 @@ _0805BEBE:
ands r0, r2
strb r0, [r1]
_0805BF0C:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -8444,10 +8444,10 @@ _0805BF70:
thumb_func_start sub_805BF80
sub_805BF80: @ 805BF80
push {r4,r5,lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r5, =gActiveBank
ldrb r4, [r5]
@@ -8458,7 +8458,7 @@ sub_805BF80: @ 805BF80
bl BufferStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -8503,9 +8503,9 @@ sub_805C004: @ 805C004
lsrs r1, r0, 24
cmp r1, 0
bne _0805C02A
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r1, [r0]
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, =gBattleBankFunc
@@ -8534,27 +8534,27 @@ dp01t_12_6_battle_menu: @ 805C044
bl sub_817F2A8
ldr r0, =gText_BattleMenu
movs r1, 0x2
- bl battle_show_message_maybe
+ bl sub_814F9EC
movs r4, 0
_0805C062:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
adds r4, 0x1
cmp r4, 0x3
ble _0805C062
- ldr r1, =gUnknown_020244AC
+ ldr r1, =gActionSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
ldr r0, =gText_WhatWillPkmnDo
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0x1
- bl battle_show_message_maybe
+ bl sub_814F9EC
pop {r4}
pop {r0}
bx r0
@@ -8580,12 +8580,12 @@ sub_805C0B0: @ 805C0B0
bl sub_8056A3C
ldr r0, =gText_BattleYesNoChoice
movs r1, 0xC
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gUnknown_03005D74
movs r0, 0x1
strb r0, [r1]
movs r0, 0x1
- bl sub_8056B74
+ bl BattleCreateCursorAt
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -8611,9 +8611,9 @@ sub_805C114: @ 805C114
lsrs r1, r0, 24
cmp r1, 0
bne _0805C13E
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r1, [r0]
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
movs r2, 0xA0
lsls r2, 1
adds r0, r2, 0
@@ -8648,7 +8648,7 @@ sub_805C158: @ 805C158
lsls r0, 24
cmp r0, 0
bne _0805C194
- ldr r1, =gUnknown_0203BD30
+ ldr r1, =gBattlePalaceMoveSelectionRngValue
ldr r0, =gRngValue
ldr r0, [r0]
str r0, [r1]
@@ -8658,7 +8658,7 @@ sub_805C158: @ 805C158
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl PlayerBufferExecCompleted
_0805C194:
pop {r0}
@@ -8715,7 +8715,7 @@ sub_805C210: @ 805C210
ldr r1, =gUnknown_03005D74
movs r0, 0xFF
strb r0, [r1]
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
@@ -8826,7 +8826,7 @@ _0805C2C8:
lsrs r1, 24
movs r0, 0x1
mov r2, r12
- bl dp01_build_cmdbuf_x22_a_three_bytes
+ bl EmitCmd34
bl PlayerBufferExecCompleted
b _0805C3BC
.pool
@@ -8913,7 +8913,7 @@ _0805C3BC:
sub_805C3EC: @ 805C3EC
push {lr}
sub sp, 0x4
- bl sub_805EA60
+ bl BattleMusicStop
movs r0, 0x1
negs r0, r0
movs r1, 0
@@ -8936,7 +8936,7 @@ sub_805C410: @ 805C410
push {r6,r7}
sub sp, 0x4
movs r0, 0
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
@@ -8992,7 +8992,7 @@ _0805C44A:
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
- bl sub_807294C
+ bl SetBattleBarStruct
b _0805C4F2
.pool
_0805C4B4:
@@ -9016,14 +9016,14 @@ _0805C4B4:
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
- bl sub_807294C
+ bl SetBattleBarStruct
mov r2, r9
ldrb r0, [r2]
adds r0, r4
ldrb r0, [r0]
movs r1, 0
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
_0805C4F2:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
@@ -9067,7 +9067,7 @@ sub_805C528: @ 805C528
.pool
_0805C560:
movs r0, 0x1
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
@@ -9130,9 +9130,9 @@ sub_805C5C4: @ 805C5C4
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r2, 1
@@ -9378,7 +9378,7 @@ sub_805C80C: @ 805C80C
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl PlayerBufferExecCompleted
pop {r0}
bx r0
@@ -9390,7 +9390,7 @@ sub_805C820: @ 805C820
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl dp01_build_cmdbuf_x22_a_three_bytes
+ bl EmitCmd34
bl PlayerBufferExecCompleted
pop {r0}
bx r0
@@ -9401,7 +9401,7 @@ sub_805C834: @ 805C834
push {lr}
movs r0, 0x1
movs r1, 0
- bl dp01_build_cmdbuf_x23_aa_0
+ bl EmitCmd35
bl PlayerBufferExecCompleted
pop {r0}
bx r0
@@ -9412,7 +9412,7 @@ sub_805C848: @ 805C848
push {lr}
movs r0, 0x1
movs r1, 0
- bl dp01_build_cmdbuf_x24_aa_0
+ bl EmitCmd36
bl PlayerBufferExecCompleted
pop {r0}
bx r0
@@ -9595,7 +9595,7 @@ sub_805C9B0: @ 805C9B0
ldrb r0, [r0]
cmp r0, 0
beq _0805C9EC
- bl sub_805EA60
+ bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
@@ -9794,7 +9794,7 @@ dp01t_2F_1_pokemon_enter: @ 805CA80
adds r1, r4
ldrb r0, [r7]
strh r0, [r1, 0x8]
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r2, [r7]
ldr r1, [r0, 0x4]
@@ -9860,7 +9860,7 @@ sub_805CC00: @ 805CC00
ldr r1, =gPlayerParty
adds r0, r1
adds r1, r4, 0
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldr r0, =gBankSpriteIds
adds r4, r0
ldrb r1, [r4]
@@ -9906,7 +9906,7 @@ _0805CC94:
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805CCB4
@@ -9965,7 +9965,7 @@ _0805CCE4:
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r7]
movs r1, 0
bl sub_805B258
@@ -10015,7 +10015,7 @@ sub_805CD74: @ 805CD74
b _0805CE18
.pool
_0805CDA4:
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r5, =gActiveBank
ldrb r1, [r5]
@@ -10038,7 +10038,7 @@ _0805CDA4:
subs r4, 0x2
adds r3, r4
ldrb r3, [r3]
- bl sub_80735DC
+ bl CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
@@ -10083,7 +10083,7 @@ _0805CE18:
thumb_func_start sub_805CE38
sub_805CE38: @ 805CE38
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -10119,7 +10119,7 @@ _0805CE70:
thumb_func_start sub_805CE80
sub_805CE80: @ 805CE80
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -10172,7 +10172,7 @@ dp01t_33_1_enemy_move: @ 805CEF4
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _0805CF3A
@@ -10333,21 +10333,21 @@ _0805D054:
beq _0805D07C
b _0805D084
_0805D05A:
- ldr r0, =gUnknown_020244AC
+ ldr r0, =gActionSelectionCursor
adds r0, r3, r0
strb r2, [r0]
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldrb r0, [r4]
adds r0, r1
strb r2, [r0]
b _0805D084
.pool
_0805D074:
- ldr r0, =gUnknown_020244AC
+ ldr r0, =gActionSelectionCursor
b _0805D07E
.pool
_0805D07C:
- ldr r0, =gUnknown_020244B0
+ ldr r0, =gMoveSelectionCursor
_0805D07E:
adds r0, r3, r0
movs r1, 0
diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s
index 6b5a14f95..f82e1c3c3 100644
--- a/asm/battle_controller_player_partner.s
+++ b/asm/battle_controller_player_partner.s
@@ -132,7 +132,7 @@ _081BAEE8:
thumb_func_start sub_81BAF00
sub_81BAF00: @ 81BAF00
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r1, [r4]
ldr r3, =gActiveBank
ldrb r0, [r3]
@@ -169,11 +169,11 @@ _081BAF38:
sub_81BAF48: @ 81BAF48
push {r4-r6,lr}
movs r6, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081BAF6C
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081BAFA0
@@ -240,7 +240,7 @@ _081BAFD8:
_081BAFE4:
cmp r6, 0
beq _081BB00A
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -271,7 +271,7 @@ sub_81BB02C: @ 81BB02C
mov r6, r9
mov r5, r8
push {r5-r7}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
mov r12, r0
ldr r0, [r0]
ldr r7, =gActiveBank
@@ -349,7 +349,7 @@ _081BB07A:
lsls r0, 2
adds r0, r2
strb r6, [r0, 0x9]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081BB134
@@ -384,7 +384,7 @@ _081BB07A:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
mov r1, r8
eors r0, r1
@@ -394,7 +394,7 @@ _081BB07A:
eors r0, r1
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_081BB134:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -420,14 +420,14 @@ _081BB134:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
- ldr r0, =gUnknown_020244D0
+ bl SetHealthboxSpriteVisible
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r2, [r0, 0x8]
ldrb r1, [r2, 0x9]
@@ -499,7 +499,7 @@ bx_t3_healthbar_update: @ 81BB214
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -510,7 +510,7 @@ bx_t3_healthbar_update: @ 81BB214
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _081BB276
.pool
_081BB25C:
@@ -570,7 +570,7 @@ sub_81BB29C: @ 81BB29C
str r7, [sp, 0x8]
ldrh r2, [r1, 0xA]
str r2, [sp, 0xC]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -645,9 +645,9 @@ _081BB2E2:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
strb r5, [r4]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -789,7 +789,7 @@ sub_81BB414: @ 81BB414
negs r0, r0
str r0, [sp]
mov r0, r10
- bl sub_807294C
+ bl SetBattleBarStruct
movs r0, 0x21
bl PlaySE
ldr r0, =sub_81BB4E4
@@ -848,7 +848,7 @@ _081BB514:
lsls r4, 16
lsrs r4, 16
ldrb r0, [r5]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r4, 16
movs r0, 0x1
@@ -918,7 +918,7 @@ _081BB514:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
strb r5, [r4]
ldr r0, =sub_81BB628
str r0, [r6]
@@ -961,7 +961,7 @@ sub_81BB628: @ 81BB628
adds r0, r1
ldrb r4, [r0, 0xC]
ldrb r6, [r0, 0x8]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1006,7 +1006,7 @@ sub_81BB688: @ 81BB688
lsls r0, 3
adds r2, r0, r1
ldrb r5, [r2, 0xC]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r5, 1
@@ -1027,7 +1027,7 @@ sub_81BB688: @ 81BB688
adds r0, r7, 0
movs r1, 0x38
bl GetMonData
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1046,7 +1046,7 @@ sub_81BB688: @ 81BB688
ldrb r0, [r0]
adds r1, r7, 0
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
b _081BB71C
.pool
_081BB708:
@@ -1058,7 +1058,7 @@ _081BB708:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
_081BB71C:
ldr r0, =gTasks
lsls r1, r6, 2
@@ -1162,7 +1162,7 @@ sub_81BB78C: @ 81BB78C
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerPartnerBufferExecCompleted
_081BB808:
pop {r4-r6}
@@ -1174,7 +1174,7 @@ _081BB808:
thumb_func_start sub_81BB828
sub_81BB828: @ 81BB828
push {r4-r6,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r2, [r6]
@@ -1209,7 +1209,7 @@ sub_81BB828: @ 81BB828
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerPartnerBufferExecCompleted
_081BB87C:
pop {r4-r6}
@@ -1312,7 +1312,7 @@ sub_81BB92C: @ 81BB92C
bne _081BB97E
adds r0, r3, 0
bl sub_805E408
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
@@ -1344,7 +1344,7 @@ _081BB97E:
thumb_func_start dp01t_35_3_free_vram
dp01t_35_3_free_vram: @ 81BB9A0
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -1383,7 +1383,7 @@ sub_81BB9F4: @ 81BB9F4
push {r4-r7,lr}
mov r7, r8
push {r7}
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r7, =gActiveBank
ldrb r1, [r7]
@@ -1453,13 +1453,13 @@ sub_81BB9F4: @ 81BB9F4
muls r1, r6
adds r1, r5
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
bl sub_8076918
ldrb r0, [r7]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r7]
lsls r0, 2
@@ -1478,7 +1478,7 @@ _081BBAB0:
thumb_func_start sub_81BBAE8
sub_81BBAE8: @ 81BBAE8
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r4, =gActiveBank
ldrb r2, [r4]
@@ -1596,7 +1596,7 @@ _081BBBF2:
thumb_func_start sub_81BBC04
sub_81BBC04: @ 81BBC04
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1620,7 +1620,7 @@ _081BBC26:
thumb_func_start bx_80E8A6C
bx_80E8A6C: @ 81BBC34
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1688,7 +1688,7 @@ _081BBCBE:
lsrs r1, 16
movs r0, 0x1
mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl PlayerPartnerBufferExecCompleted
add sp, 0x100
pop {r4-r6}
@@ -3729,7 +3729,7 @@ sub_81BCF58: @ 81BCF58
muls r0, r5
ldr r4, =gPlayerParty
adds r0, r4
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r6]
lsls r0, 1
add r0, r8
@@ -3858,7 +3858,7 @@ sub_81BD074: @ 81BD074
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r5]
lsls r1, r0, 9
adds r1, r6
@@ -4051,7 +4051,7 @@ sub_81BD260: @ 81BD260
ldrb r3, [r0]
cmp r3, 0
bne _081BD2A8
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
@@ -4089,7 +4089,7 @@ _081BD2A8:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerPartnerBufferExecCompleted
_081BD2DE:
pop {r4-r6}
@@ -4101,7 +4101,7 @@ _081BD2DE:
thumb_func_start sub_81BD2F0
sub_81BD2F0: @ 81BD2F0
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4182,7 +4182,7 @@ sub_81BD37C: @ 81BD37C
movs r4, 0x7
movs r0, 0x5A
mov r9, r0
- ldr r0, =gUnknown_08305D2C
+ ldr r0, =gTrainerBackPicCoords
ldrb r1, [r0, 0x1C]
b _081BD3BE
.pool
@@ -4193,7 +4193,7 @@ _081BD3A8:
lsrs r4, r0, 24
movs r0, 0x20
mov r9, r0
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
lsls r0, r4, 2
adds r0, r1
ldrb r1, [r0]
@@ -4213,7 +4213,7 @@ _081BD3BE:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -4494,7 +4494,7 @@ sub_81BD5C8: @ 81BD5C8
thumb_func_start sub_81BD674
sub_81BD674: @ 81BD674
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4652,13 +4652,13 @@ _081BD7A2:
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, =gUnknown_02038432
+ ldr r5, =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
ldrb r1, [r2]
strb r1, [r5]
- ldr r4, =gMovePowerMoveAnim
+ ldr r4, =gAnimMovePower
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4672,7 +4672,7 @@ _081BD7A2:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r4, =gMoveDmgMoveAnim
+ ldr r4, =gAnimMoveDmg
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4698,7 +4698,7 @@ _081BD7A2:
lsls r1, 24
orrs r3, r1
str r3, [r4]
- ldr r3, =gHappinessMoveAnim
+ ldr r3, =gAnimFriendship
ldrb r1, [r6]
lsls r1, 9
mov r2, r12
@@ -4720,7 +4720,7 @@ _081BD7A2:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, =gDisableStructMoveAnim
+ ldr r3, =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4743,7 +4743,7 @@ _081BD7A2:
b _081BD8B6
.pool
_081BD898:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -4790,7 +4790,7 @@ bx_move_anim_3: @ 81BD8C8
adds r1, r2
ldrb r1, [r1]
mov r8, r1
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r5, [r7]
ldr r1, [r5, 0x4]
lsls r0, r3, 1
@@ -4849,7 +4849,7 @@ _081BD960:
movs r0, 0
bl sub_805EB9C
adds r0, r4, 0
- bl move_anim_start_t1
+ bl DoMoveAnim
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -4898,7 +4898,7 @@ _081BD98A:
ands r0, r2
strb r0, [r1]
_081BD9D8:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -4952,10 +4952,10 @@ _081BDA3C:
thumb_func_start sub_81BDA4C
sub_81BDA4C: @ 81BDA4C
push {r4,lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r4, =gActiveBank
ldrb r0, [r4]
@@ -4966,7 +4966,7 @@ sub_81BDA4C: @ 81BDA4C
bl BufferStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -4990,7 +4990,7 @@ sub_81BDAA0: @ 81BDAA0
thumb_func_start sub_81BDAAC
sub_81BDAAC: @ 81BDAAC
push {lr}
- bl sub_8063880
+ bl AI_TrySwitchOrUseItem
bl PlayerPartnerBufferExecCompleted
pop {r0}
bx r0
@@ -5045,7 +5045,7 @@ _081BDB02:
cmp r0, 0
beq _081BDB3C
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r4, =gBankTarget
strb r0, [r4]
ldr r0, =gAbsentBankFlags
@@ -5059,7 +5059,7 @@ _081BDB02:
cmp r1, 0
beq _081BDB3C
movs r0, 0x3
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
strb r0, [r4]
_081BDB3C:
ldr r0, =gBankTarget
@@ -5068,7 +5068,7 @@ _081BDB3C:
orrs r2, r5
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl PlayerPartnerBufferExecCompleted
pop {r4-r6}
pop {r0}
@@ -5087,17 +5087,17 @@ sub_81BDB70: @ 81BDB70
thumb_func_start sub_81BDB7C
sub_81BDB7C: @ 81BDB7C
push {r4-r6,lr}
- bl sub_8063A90
+ bl GetMostSuitableMonToSwitchInto
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x6
bne _081BDBD0
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0x2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0x3
@@ -5138,7 +5138,7 @@ _081BDBD0:
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x22_a_three_bytes
+ bl EmitCmd34
bl PlayerPartnerBufferExecCompleted
pop {r4-r6}
pop {r0}
@@ -5162,7 +5162,7 @@ sub_81BDC10: @ 81BDC10
push {r6,r7}
sub sp, 0x4
movs r0, 0
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
@@ -5209,7 +5209,7 @@ sub_81BDC10: @ 81BDC10
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
- bl sub_807294C
+ bl SetBattleBarStruct
b _081BDCCA
.pool
_081BDCA0:
@@ -5231,7 +5231,7 @@ _081BDCA0:
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
- bl sub_807294C
+ bl SetBattleBarStruct
_081BDCCA:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
@@ -5275,7 +5275,7 @@ sub_81BDD00: @ 81BDD00
.pool
_081BDD38:
movs r0, 0x1
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
adds r0, r4, 0
movs r1, 0xB
bl GetMonData
@@ -5338,9 +5338,9 @@ sub_81BDD9C: @ 81BDD9C
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r2, 1
@@ -5661,7 +5661,7 @@ sub_81BE03C: @ 81BE03C
ldrb r0, [r0]
cmp r0, 0
beq _081BE078
- bl sub_805EA60
+ bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
@@ -5880,7 +5880,7 @@ _081BE21A:
adds r1, r4
ldrb r0, [r5]
strh r0, [r1, 0x8]
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r2, [r5]
ldr r1, [r0, 0x4]
@@ -5950,7 +5950,7 @@ _081BE2F4:
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081BE314
@@ -6009,7 +6009,7 @@ _081BE344:
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r7]
movs r1, 0
bl sub_81BD0E4
@@ -6059,7 +6059,7 @@ dp01t_30_3_80EB11C: @ 81BE3D4
b _081BE478
.pool
_081BE404:
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r5, =gActiveBank
ldrb r1, [r5]
@@ -6082,7 +6082,7 @@ _081BE404:
subs r4, 0x2
adds r3, r4
ldrb r3, [r3]
- bl sub_80735DC
+ bl CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
@@ -6127,7 +6127,7 @@ _081BE478:
thumb_func_start sub_81BE498
sub_81BE498: @ 81BE498
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -6163,7 +6163,7 @@ _081BE4D0:
thumb_func_start sub_81BE4E0
sub_81BE4E0: @ 81BE4E0
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -6207,7 +6207,7 @@ sub_81BE53C: @ 81BE53C
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _081BE582
diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s
index dc7fe7de5..f98c10a6c 100644
--- a/asm/battle_controller_recorded_opponent.s
+++ b/asm/battle_controller_recorded_opponent.s
@@ -157,7 +157,7 @@ _0818661A:
thumb_func_start sub_8186630
sub_8186630: @ 8186630
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r1, [r4]
ldr r3, =gActiveBank
ldrb r0, [r3]
@@ -198,11 +198,11 @@ sub_8186678: @ 8186678
push {r6,r7}
movs r0, 0
mov r9, r0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081866A4
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081866F8
@@ -311,7 +311,7 @@ _0818676A:
lsrs r3, r0, 24
cmp r3, 0x1
bne _08186816
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
mov r12, r0
ldr r0, [r0]
ldrb r2, [r6]
@@ -388,7 +388,7 @@ _0818676A:
adds r0, r4, 0
bl FreeSpritePaletteByTag
_08186816:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
mov r2, r8
ldrb r1, [r2]
@@ -425,7 +425,7 @@ sub_818686C: @ 818686C
movs r0, 0
mov r9, r0
mov r8, r0
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r7, =gActiveBank
ldrb r2, [r7]
@@ -504,7 +504,7 @@ _081868DE:
ands r0, r1
cmp r0, 0
bne _08186994
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08186964
@@ -529,7 +529,7 @@ _081868DE:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
eors r0, r6
bl sub_8076918
@@ -537,7 +537,7 @@ _081868DE:
eors r0, r6
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08186964:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -553,15 +553,15 @@ _08186964:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08186994:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -575,7 +575,7 @@ _08186994:
orrs r1, r2
strb r1, [r0, 0x1]
_081869AE:
- ldr r5, =gUnknown_020244D0
+ ldr r5, =gBattleSpritesDataPtr
ldr r0, [r5]
ldr r4, =gActiveBank
ldrb r2, [r4]
@@ -639,7 +639,7 @@ _08186A40:
lsls r2, 1
bl m4aMPlayVolumeControl
_08186A4C:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -655,7 +655,7 @@ _08186A4C:
movs r0, 0x1
mov r9, r0
_08186A6A:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _08186AC8
@@ -742,7 +742,7 @@ _08186B26:
mov r0, r8
cmp r0, 0
beq _08186C10
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08186B8A
@@ -781,7 +781,7 @@ _08186B26:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
_08186B8A:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -809,8 +809,8 @@ _08186B8A:
lsls r1, 16
lsrs r1, 16
adds r0, r5, 0
- bl sub_805EE54
- ldr r3, =gUnknown_020244D0
+ bl SetBankEnemyShadowSpriteCallback
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, [r0, 0x8]
ldrb r1, [r2, 0x9]
@@ -881,7 +881,7 @@ sub_8186C48: @ 8186C48
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08186CFA
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r1, [r0, 0x4]
lsls r4, r3, 1
@@ -955,7 +955,7 @@ sub_8186D04: @ 8186D04
ldrb r0, [r6]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -966,7 +966,7 @@ sub_8186D04: @ 8186D04
adds r0, r5
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _08186D50
.pool
_08186D4C:
@@ -998,7 +998,7 @@ sub_8186D58: @ 8186D58
ldr r0, =gHealthBoxesIds
adds r0, r3, r0
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedOpponentBufferExecCompleted
_08186D86:
pop {r0}
@@ -1009,7 +1009,7 @@ _08186D86:
thumb_func_start sub_8186D9C
sub_8186D9C: @ 8186D9C
push {r4-r6,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r2, [r6]
@@ -1046,7 +1046,7 @@ sub_8186D9C: @ 8186D9C
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedOpponentBufferExecCompleted
_08186DF6:
pop {r4-r6}
@@ -1147,7 +1147,7 @@ sub_8186EA4: @ 8186EA4
ldr r0, =SpriteCallbackDummy
cmp r1, r0
bne _08186EF0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r3, 2
@@ -1179,7 +1179,7 @@ _08186EF0:
thumb_func_start sub_8186F14
sub_8186F14: @ 8186F14
push {r4,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r4, =gActiveBank
ldrb r1, [r4]
@@ -1231,7 +1231,7 @@ _08186F6E:
thumb_func_start sub_8186F94
sub_8186F94: @ 8186F94
push {r4-r7,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -1302,13 +1302,13 @@ sub_8186F94: @ 8186F94
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
bl sub_8076918
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldrb r0, [r5]
bl sub_805E408
ldr r1, =gBattleBankFunc
@@ -1327,7 +1327,7 @@ _08187050:
thumb_func_start sub_8187084
sub_8187084: @ 8187084
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -1394,7 +1394,7 @@ _081870B6:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -1411,7 +1411,7 @@ _08187120:
thumb_func_start sub_818714C
sub_818714C: @ 818714C
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1435,7 +1435,7 @@ _0818716E:
thumb_func_start sub_818717C
sub_818717C: @ 818717C
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1553,7 +1553,7 @@ _0818727E:
lsrs r1, 16
movs r0, 0x1
mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl RecordedOpponentBufferExecCompleted
add sp, 0x100
pop {r4-r6}
@@ -3564,7 +3564,7 @@ sub_818843C: @ 818843C
muls r2, r0
adds r0, r2, 0
add r0, r9
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
ldrb r0, [r6]
bl GetBankIdentity
adds r1, r0, 0
@@ -3654,7 +3654,7 @@ sub_818843C: @ 818843C
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r6]
lsls r0, 2
@@ -3753,7 +3753,7 @@ sub_81885D8: @ 81885D8
adds r0, r1, 0
adds r0, r5
adds r1, r6, 0
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
adds r0, r6, 0
bl GetBankIdentity
adds r1, r0, 0
@@ -3888,7 +3888,7 @@ sub_8188768: @ 8188768
ldrb r3, [r0]
cmp r3, 0
bne _081887B0
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
@@ -3928,7 +3928,7 @@ _081887B0:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedOpponentBufferExecCompleted
_081887EC:
pop {r4-r6}
@@ -3940,7 +3940,7 @@ _081887EC:
thumb_func_start sub_8188800
sub_8188800: @ 8188800
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4096,7 +4096,7 @@ _0818892C:
bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r9, r7
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
mov r2, r8
lsls r0, r2, 2
adds r0, r1
@@ -4278,7 +4278,7 @@ sub_8188A4C: @ 8188A4C
thumb_func_start sub_8188AF8
sub_8188AF8: @ 8188AF8
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4408,13 +4408,13 @@ _08188BE6:
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, =gUnknown_02038432
+ ldr r5, =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
ldrb r1, [r2]
strb r1, [r5]
- ldr r4, =gMovePowerMoveAnim
+ ldr r4, =gAnimMovePower
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4428,7 +4428,7 @@ _08188BE6:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r4, =gMoveDmgMoveAnim
+ ldr r4, =gAnimMoveDmg
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4454,7 +4454,7 @@ _08188BE6:
lsls r1, 24
orrs r3, r1
str r3, [r4]
- ldr r3, =gHappinessMoveAnim
+ ldr r3, =gAnimFriendship
ldrb r1, [r6]
lsls r1, 9
mov r2, r12
@@ -4476,7 +4476,7 @@ _08188BE6:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, =gDisableStructMoveAnim
+ ldr r3, =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4499,7 +4499,7 @@ _08188BE6:
b _08188CFA
.pool
_08188CDC:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -4546,7 +4546,7 @@ sub_8188D0C: @ 8188D0C
adds r1, r2
ldrb r1, [r1]
mov r8, r1
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r5, [r7]
ldr r1, [r5, 0x4]
lsls r0, r3, 1
@@ -4605,7 +4605,7 @@ _08188DA4:
movs r0, 0
bl sub_805EB9C
adds r0, r4, 0
- bl move_anim_start_t1
+ bl DoMoveAnim
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -4654,7 +4654,7 @@ _08188DCE:
ands r0, r2
strb r0, [r1]
_08188E1C:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -4708,10 +4708,10 @@ _08188E80:
thumb_func_start sub_8188E90
sub_8188E90: @ 8188E90
push {r4,lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r4, =gActiveBank
ldrb r0, [r4]
@@ -4722,7 +4722,7 @@ sub_8188E90: @ 8188E90
bl BufferStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -4754,7 +4754,7 @@ sub_8188EF0: @ 8188EF0
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl RecordedOpponentBufferExecCompleted
pop {r0}
bx r0
@@ -4785,7 +4785,7 @@ sub_8188F20: @ 8188F20
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
b _08188F6C
.pool
_08188F48:
@@ -4803,7 +4803,7 @@ _08188F48:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
_08188F6C:
bl RecordedOpponentBufferExecCompleted
pop {r4,r5}
@@ -4839,7 +4839,7 @@ sub_8188F88: @ 8188F88
ldrb r1, [r0]
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x22_a_three_bytes
+ bl EmitCmd34
bl RecordedOpponentBufferExecCompleted
pop {r4}
pop {r0}
@@ -4863,7 +4863,7 @@ sub_8188FD0: @ 8188FD0
push {r6,r7}
sub sp, 0x4
movs r0, 0
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
@@ -4910,7 +4910,7 @@ sub_8188FD0: @ 8188FD0
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
- bl sub_807294C
+ bl SetBattleBarStruct
b _0818908A
.pool
_08189060:
@@ -4932,7 +4932,7 @@ _08189060:
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
- bl sub_807294C
+ bl SetBattleBarStruct
_0818908A:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
@@ -4981,9 +4981,9 @@ sub_81890CC: @ 81890CC
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r2, 1
@@ -5304,7 +5304,7 @@ sub_818936C: @ 818936C
ldrb r0, [r0]
cmp r0, 0
beq _081893A8
- bl sub_805EA60
+ bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
@@ -5457,7 +5457,7 @@ sub_8189438: @ 8189438
adds r1, r4
ldrb r0, [r6]
strh r0, [r1, 0x8]
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r2, [r6]
ldr r1, [r0, 0x4]
@@ -5518,7 +5518,7 @@ c3_0803D564: @ 8189548
adds r0, r1
ldrh r0, [r0, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189582
@@ -5632,7 +5632,7 @@ sub_8189648: @ 8189648
b _08189742
.pool
_08189678:
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -5693,13 +5693,13 @@ _081896E4:
subs r4, 0x2
adds r3, r4
ldrb r3, [r3]
- bl sub_80735DC
+ bl CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
movs r3, 0
strb r0, [r1]
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldrb r1, [r5]
ldr r2, [r0, 0x4]
@@ -5739,7 +5739,7 @@ _08189742:
thumb_func_start sub_818975C
sub_818975C: @ 818975C
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -5775,7 +5775,7 @@ _08189794:
thumb_func_start sub_81897A4
sub_81897A4: @ 81897A4
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -5819,7 +5819,7 @@ sub_8189800: @ 8189800
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _08189846
diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s
index b2769671c..6f3976205 100644
--- a/asm/battle_controller_recorded_player.s
+++ b/asm/battle_controller_recorded_player.s
@@ -132,7 +132,7 @@ _08189A40:
thumb_func_start sub_8189A58
sub_8189A58: @ 8189A58
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r1, [r4]
ldr r3, =gActiveBank
ldrb r0, [r3]
@@ -180,11 +180,11 @@ sub_8189AA0: @ 8189AA0
beq _08189ABA
b _08189C60
_08189ABA:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189ADA
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189B0C
@@ -244,7 +244,7 @@ _08189B42:
bne _08189B48
b _08189D18
_08189B48:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
mov r9, r0
ldr r0, [r0]
ldr r5, =gActiveBank
@@ -337,7 +337,7 @@ _08189B86:
ldr r4, =gPlayerParty
adds r0, r4
bl sub_805E990
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189C22
@@ -366,11 +366,11 @@ _08189C22:
b _08189D10
.pool
_08189C60:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189C80
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189CB0
@@ -435,7 +435,7 @@ _08189CE6:
_08189CF2:
cmp r6, 0
beq _08189D18
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -478,7 +478,7 @@ sub_8189D40: @ 8189D40
lsls r0, 24
cmp r0, 0
bne _08189DBE
- ldr r5, =gUnknown_020244D0
+ ldr r5, =gBattleSpritesDataPtr
ldr r0, [r5]
ldrb r2, [r4]
ldr r1, [r0, 0x4]
@@ -527,7 +527,7 @@ _08189D8C:
adds r0, r3, 0
bl sub_8172EF0
_08189DBE:
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, =gActiveBank
ldrb r5, [r2]
@@ -561,7 +561,7 @@ _08189DBE:
ands r0, r1
cmp r0, 0
bne _08189E84
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189E54
@@ -587,7 +587,7 @@ _08189DBE:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
mov r1, r9
ldrb r0, [r1]
eors r0, r7
@@ -597,7 +597,7 @@ _08189DBE:
eors r0, r7
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08189E54:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -613,15 +613,15 @@ _08189E54:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08189E84:
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -702,7 +702,7 @@ _08189F38:
lsls r2, 1
bl m4aMPlayVolumeControl
_08189F44:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -747,7 +747,7 @@ _08189F62:
ldr r0, [r0]
cmp r0, r2
bne _0818A02A
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189FC8
@@ -779,7 +779,7 @@ _08189FC8:
ldr r1, =gSprites
adds r0, r1
bl DestroySprite
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, [r0, 0x8]
ldrb r1, [r2, 0x9]
@@ -874,7 +874,7 @@ sub_818A0A4: @ 818A0A4
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -885,7 +885,7 @@ sub_818A0A4: @ 818A0A4
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _0818A106
.pool
_0818A0EC:
@@ -963,7 +963,7 @@ sub_818A114: @ 818A114
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedPlayerBufferExecCompleted
_0818A190:
pop {r4-r6}
@@ -975,7 +975,7 @@ _0818A190:
thumb_func_start sub_818A1B0
sub_818A1B0: @ 818A1B0
push {r4-r6,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r2, [r6]
@@ -1010,7 +1010,7 @@ sub_818A1B0: @ 818A1B0
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedPlayerBufferExecCompleted
_0818A204:
pop {r4-r6}
@@ -1113,7 +1113,7 @@ sub_818A2B4: @ 818A2B4
bne _0818A306
adds r0, r3, 0
bl sub_805E408
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r2, [r4]
ldr r1, [r0]
@@ -1145,7 +1145,7 @@ _0818A306:
thumb_func_start sub_818A328
sub_818A328: @ 818A328
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -1184,7 +1184,7 @@ sub_818A37C: @ 818A37C
push {r4-r7,lr}
mov r7, r8
push {r7}
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r7, =gActiveBank
ldrb r1, [r7]
@@ -1254,13 +1254,13 @@ sub_818A37C: @ 818A37C
muls r1, r6
adds r1, r5
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
bl sub_8076918
ldrb r0, [r7]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r7]
lsls r0, 2
@@ -1279,7 +1279,7 @@ _0818A438:
thumb_func_start sub_818A470
sub_818A470: @ 818A470
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r4, =gActiveBank
ldrb r2, [r4]
@@ -1397,7 +1397,7 @@ _0818A57A:
thumb_func_start sub_818A58C
sub_818A58C: @ 818A58C
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1421,7 +1421,7 @@ _0818A5AE:
thumb_func_start sub_818A5BC
sub_818A5BC: @ 818A5BC
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -1489,7 +1489,7 @@ _0818A646:
lsrs r1, 16
movs r0, 0x1
mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl RecordedPlayerBufferExecCompleted
add sp, 0x100
pop {r4-r6}
@@ -3530,7 +3530,7 @@ sub_818B8E0: @ 818B8E0
muls r0, r5
ldr r4, =gPlayerParty
adds r0, r4
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r6]
lsls r0, 1
add r0, r8
@@ -3659,7 +3659,7 @@ sub_818B9FC: @ 818B9FC
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r5]
lsls r1, r0, 9
adds r1, r6
@@ -3852,7 +3852,7 @@ sub_818BBE8: @ 818BBE8
ldrb r3, [r0]
cmp r3, 0
bne _0818BC30
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r2, 1
@@ -3890,7 +3890,7 @@ _0818BC30:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedPlayerBufferExecCompleted
_0818BC66:
pop {r4-r6}
@@ -3902,7 +3902,7 @@ _0818BC66:
thumb_func_start sub_818BC78
sub_818BC78: @ 818BC78
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4033,14 +4033,14 @@ _0818BD72:
beq _0818BD9C
movs r0, 0x5A
mov r9, r0
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
b _0818BD9E
.pool
_0818BD98:
movs r0, 0x50
mov r9, r0
_0818BD9C:
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
_0818BD9E:
lsls r0, r4, 2
adds r0, r1
@@ -4182,7 +4182,7 @@ _0818BEDC:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -4350,7 +4350,7 @@ sub_818BFB8: @ 818BFB8
thumb_func_start sub_818C064
sub_818C064: @ 818C064
push {r4-r6,lr}
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r4, [r6]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -4508,13 +4508,13 @@ _0818C192:
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, =gUnknown_02038432
+ ldr r5, =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
ldrb r1, [r2]
strb r1, [r5]
- ldr r4, =gMovePowerMoveAnim
+ ldr r4, =gAnimMovePower
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4528,7 +4528,7 @@ _0818C192:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r4, =gMoveDmgMoveAnim
+ ldr r4, =gAnimMoveDmg
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4554,7 +4554,7 @@ _0818C192:
lsls r1, 24
orrs r3, r1
str r3, [r4]
- ldr r3, =gHappinessMoveAnim
+ ldr r3, =gAnimFriendship
ldrb r1, [r6]
lsls r1, 9
mov r2, r12
@@ -4576,7 +4576,7 @@ _0818C192:
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, =gDisableStructMoveAnim
+ ldr r3, =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -4599,7 +4599,7 @@ _0818C192:
b _0818C2A6
.pool
_0818C288:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -4646,7 +4646,7 @@ bx_move_anim_2: @ 818C2B8
adds r1, r2
ldrb r1, [r1]
mov r8, r1
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r5, [r7]
ldr r1, [r5, 0x4]
lsls r0, r3, 1
@@ -4705,7 +4705,7 @@ _0818C350:
movs r0, 0
bl sub_805EB9C
adds r0, r4, 0
- bl move_anim_start_t1
+ bl DoMoveAnim
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -4754,7 +4754,7 @@ _0818C37A:
ands r0, r2
strb r0, [r1]
_0818C3C8:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -4808,10 +4808,10 @@ _0818C42C:
thumb_func_start sub_818C43C
sub_818C43C: @ 818C43C
push {r4,lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r4, =gActiveBank
ldrb r0, [r4]
@@ -4822,7 +4822,7 @@ sub_818C43C: @ 818C43C
bl BufferStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -4861,7 +4861,7 @@ sub_818C49C: @ 818C49C
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl RecordedPlayerBufferExecCompleted
_0818C4C6:
pop {r0}
@@ -4897,7 +4897,7 @@ _0818C508:
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl RecordedPlayerBufferExecCompleted
_0818C522:
pop {r0}
@@ -4929,7 +4929,7 @@ sub_818C538: @ 818C538
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
b _0818C584
.pool
_0818C560:
@@ -4947,7 +4947,7 @@ _0818C560:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
_0818C584:
bl RecordedPlayerBufferExecCompleted
pop {r4,r5}
@@ -4983,7 +4983,7 @@ sub_818C5A0: @ 818C5A0
ldrb r1, [r0]
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x22_a_three_bytes
+ bl EmitCmd34
bl RecordedPlayerBufferExecCompleted
pop {r4}
pop {r0}
@@ -5007,7 +5007,7 @@ sub_818C5E8: @ 818C5E8
push {r6,r7}
sub sp, 0x4
movs r0, 0
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
@@ -5054,7 +5054,7 @@ sub_818C5E8: @ 818C5E8
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
- bl sub_807294C
+ bl SetBattleBarStruct
b _0818C6B2
.pool
_0818C678:
@@ -5076,14 +5076,14 @@ _0818C678:
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
- bl sub_807294C
+ bl SetBattleBarStruct
mov r1, r9
ldrb r0, [r1]
adds r0, r4
ldrb r0, [r0]
movs r1, 0
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
_0818C6B2:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
@@ -5132,9 +5132,9 @@ sub_818C6F4: @ 818C6F4
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r2, 1
@@ -5455,7 +5455,7 @@ sub_818C994: @ 818C994
ldrb r0, [r0]
cmp r0, 0
beq _0818C9D0
- bl sub_805EA60
+ bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
@@ -5676,7 +5676,7 @@ _0818CB5A:
adds r1, r4
ldrb r0, [r5]
strh r0, [r1, 0x8]
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r2, [r5]
ldr r1, [r0, 0x4]
@@ -5746,7 +5746,7 @@ _0818CC50:
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0818CC70
@@ -5805,7 +5805,7 @@ _0818CCA0:
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r7]
movs r1, 0
bl sub_818BA6C
@@ -5855,7 +5855,7 @@ sub_818CD30: @ 818CD30
b _0818CDD4
.pool
_0818CD60:
- ldr r6, =gUnknown_020244D0
+ ldr r6, =gBattleSpritesDataPtr
ldr r0, [r6]
ldr r5, =gActiveBank
ldrb r1, [r5]
@@ -5878,7 +5878,7 @@ _0818CD60:
subs r4, 0x2
adds r3, r4
ldrb r3, [r3]
- bl sub_80735DC
+ bl CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
@@ -5923,7 +5923,7 @@ _0818CDD4:
thumb_func_start bx_increment_dp11b_field_5_till_x60_then_resume
bx_increment_dp11b_field_5_till_x60_then_resume: @ 818CDF4
push {r4,lr}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r3, =gActiveBank
ldrb r1, [r3]
@@ -5959,7 +5959,7 @@ _0818CE2C:
thumb_func_start sub_818CE3C
sub_818CE3C: @ 818CE3C
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r1, [r0]
ldr r0, =gActiveBank
ldrb r3, [r0]
@@ -6003,7 +6003,7 @@ sub_818CE98: @ 818CE98
push {r4,lr}
ldr r4, =gActiveBank
ldrb r0, [r4]
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _0818CEDE
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
index 6ca6e9d4e..d7efd69fe 100644
--- a/asm/battle_controller_safari.s
+++ b/asm/battle_controller_safari.s
@@ -71,7 +71,7 @@ bx_battle_menu_t6_2: @ 81593D8
beq _08159446
movs r0, 0x5
bl PlaySE
- ldr r1, =gUnknown_020244AC
+ ldr r1, =gActionSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
@@ -103,13 +103,13 @@ _0815942A:
movs r1, 0x7
_0815942E:
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
b _08159440
_08159436:
movs r0, 0x1
movs r1, 0x8
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
_08159440:
bl SafariBufferExecCompleted
b _0815954E
@@ -118,7 +118,7 @@ _08159446:
ands r0, r1
cmp r0, 0
beq _08159484
- ldr r5, =gUnknown_020244AC
+ ldr r5, =gActionSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r0, r5
@@ -132,7 +132,7 @@ _08159446:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -144,7 +144,7 @@ _08159484:
ands r0, r1
cmp r0, 0
beq _081594C0
- ldr r5, =gUnknown_020244AC
+ ldr r5, =gActionSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r0, r5
@@ -158,7 +158,7 @@ _08159484:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -170,7 +170,7 @@ _081594C0:
ands r0, r1
cmp r0, 0
beq _0815950C
- ldr r5, =gUnknown_020244AC
+ ldr r5, =gActionSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r0, r5
@@ -184,7 +184,7 @@ _081594C0:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -196,7 +196,7 @@ _081594F2:
adds r0, r5
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
b _0815954E
.pool
_0815950C:
@@ -204,7 +204,7 @@ _0815950C:
ands r0, r1
cmp r0, 0
beq _0815954E
- ldr r5, =gUnknown_020244AC
+ ldr r5, =gActionSelectionCursor
ldr r4, =gActiveBank
ldrb r0, [r4]
adds r0, r5
@@ -218,7 +218,7 @@ _0815950C:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -229,7 +229,7 @@ _0815950C:
adds r0, r5
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
_0815954E:
pop {r4,r5}
pop {r0}
@@ -318,7 +318,7 @@ sub_81595E4: @ 81595E4
negs r0, r0
ands r0, r1
strb r0, [r3]
- ldr r0, =gUnknown_03005D00
+ ldr r0, =gPreBattleCallback1
ldr r0, [r0]
str r0, [r2]
ldr r0, [r2, 0x8]
@@ -336,7 +336,7 @@ bx_wait_t6: @ 8159624
ldrb r0, [r0]
cmp r0, 0
beq _0815964A
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -387,7 +387,7 @@ sub_8159698: @ 8159698
push {lr}
ldr r0, =gMain
ldr r1, [r0, 0x4]
- ldr r0, =sub_8038420
+ ldr r0, =BattleMainCB2
cmp r1, r0
bne _081596BE
ldr r0, =gPaletteFade
@@ -399,7 +399,7 @@ sub_8159698: @ 8159698
ldr r0, =gScriptItemId
ldrh r1, [r0]
movs r0, 0x1
- bl dp01_build_cmdbuf_x23_aa_0
+ bl EmitCmd35
bl SafariBufferExecCompleted
_081596BE:
pop {r0}
@@ -410,7 +410,7 @@ _081596BE:
thumb_func_start sub_81596D4
sub_81596D4: @ 81596D4
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -484,7 +484,7 @@ _0815976A:
thumb_func_start bx_80364D0
bx_80364D0: @ 815977C
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -569,7 +569,7 @@ sub_8159800: @ 8159800
ldrb r0, [r0, 0x8]
ldr r5, =gActiveBank
ldrb r1, [r5]
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldr r0, [r4]
ldrb r6, [r0, 0x8]
ldrb r0, [r5]
@@ -580,7 +580,7 @@ sub_8159800: @ 8159800
adds r0, r6, 0
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r2, =gUnknown_08305D2C
+ ldr r2, =gTrainerBackPicCoords
ldr r1, [r4]
ldrb r1, [r1, 0x8]
lsls r1, 2
@@ -689,7 +689,7 @@ sub_8159904: @ 8159904
thumb_func_start sub_8159910
sub_8159910: @ 8159910
push {r4,r5,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x8]
movs r0, 0x4
@@ -700,7 +700,7 @@ sub_8159910: @ 8159910
ldr r5, =gActiveBank
ldrb r4, [r5]
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
@@ -730,7 +730,7 @@ sub_8159964: @ 8159964
adds r1, 0x1
adds r0, r1
ldrb r1, [r0]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
strb r1, [r0, 0x8]
@@ -739,7 +739,7 @@ sub_8159964: @ 8159964
strb r0, [r1]
ldrb r4, [r5]
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
@@ -778,10 +778,10 @@ sub_81599D0: @ 81599D0
thumb_func_start dp01t_10_6_message
dp01t_10_6_message: @ 81599DC
push {r4,lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r4, =gActiveBank
ldrb r0, [r4]
@@ -792,7 +792,7 @@ dp01t_10_6_message: @ 81599DC
bl BufferStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -832,9 +832,9 @@ sub_8159A54: @ 8159A54
lsrs r1, r0, 24
cmp r1, 0
bne _08159A7A
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r1, [r0]
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, =gBattleBankFunc
@@ -862,27 +862,27 @@ sub_8159A94: @ 8159A94
str r1, [r0]
ldr r0, =gText_SafariZoneMenu
movs r1, 0x2
- bl battle_show_message_maybe
+ bl sub_814F9EC
movs r4, 0
_08159AAE:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
adds r4, 0x1
cmp r4, 0x3
ble _08159AAE
- ldr r1, =gUnknown_020244AC
+ ldr r1, =gActionSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
ldr r0, =gText_WhatWillPkmnDo2
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0x1
- bl battle_show_message_maybe
+ bl sub_814F9EC
pop {r4}
pop {r0}
bx r0
@@ -981,7 +981,7 @@ sub_8159B84: @ 8159B84
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0xB
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
bl SafariBufferExecCompleted
pop {r0}
bx r0
@@ -1161,7 +1161,7 @@ dp01t_34_6_move_anim_start_t3: @ 8159CC4
ldrb r0, [r0]
cmp r0, 0
beq _08159D00
- bl sub_805EA60
+ bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
@@ -1256,13 +1256,13 @@ sub_8159D90: @ 8159D90
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0xA
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s
index 98d3e7c68..e1d92de0d 100644
--- a/asm/battle_controller_wally.s
+++ b/asm/battle_controller_wally.s
@@ -153,7 +153,7 @@ _081684CE:
movs r1, 0x9
_081684E4:
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl WallyBufferExecCompleted
ldr r1, [r4]
adds r1, 0x94
@@ -180,10 +180,10 @@ _08168508:
movs r0, 0x5
bl PlaySE
movs r0, 0
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
movs r0, 0x1
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
ldr r0, [r4]
adds r0, 0x96
movs r1, 0x40
@@ -208,7 +208,7 @@ _08168540:
movs r0, 0x1
movs r1, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl WallyBufferExecCompleted
_08168564:
pop {r4,r5}
@@ -299,7 +299,7 @@ sub_8168610: @ 8168610
push {lr}
ldr r0, =gMain
ldr r1, [r0, 0x4]
- ldr r0, =sub_8038420
+ ldr r0, =BattleMainCB2
cmp r1, r0
bne _08168636
ldr r0, =gPaletteFade
@@ -311,7 +311,7 @@ sub_8168610: @ 8168610
ldr r0, =gScriptItemId
ldrh r1, [r0]
movs r0, 0x1
- bl dp01_build_cmdbuf_x23_aa_0
+ bl EmitCmd35
bl WallyBufferExecCompleted
_08168636:
pop {r0}
@@ -324,7 +324,7 @@ sub_816864C: @ 816864C
push {r4-r7,lr}
mov r7, r8
push {r7}
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r5, =gActiveBank
ldrb r2, [r5]
@@ -425,7 +425,7 @@ _081686D2:
ldr r0, [r0]
cmp r0, r3
bne _081687DC
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0816877A
@@ -459,7 +459,7 @@ _081686D2:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
eors r0, r6
bl sub_8076918
@@ -467,7 +467,7 @@ _081686D2:
eors r0, r6
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0816877A:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -493,14 +493,14 @@ _0816877A:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
- ldr r0, =gUnknown_020244D0
+ bl SetHealthboxSpriteVisible
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r2, [r0, 0x8]
ldrb r1, [r2, 0x9]
@@ -549,7 +549,7 @@ sub_8168818: @ 8168818
_08168842:
cmp r4, 0
beq _08168904
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r0, [r7]
ldr r4, [r0, 0x4]
lsls r0, r3, 1
@@ -665,7 +665,7 @@ sub_8168934: @ 8168934
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -676,7 +676,7 @@ sub_8168934: @ 8168934
adds r0, r6
ldrb r0, [r0]
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
b _08168996
.pool
_0816897C:
@@ -761,7 +761,7 @@ _08168A1A:
thumb_func_start sub_8168A20
sub_8168A20: @ 8168A20
push {r4-r6,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r2, [r6]
@@ -796,7 +796,7 @@ sub_8168A20: @ 8168A20
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl WallyBufferExecCompleted
_08168A74:
pop {r4-r6}
@@ -833,7 +833,7 @@ _08168AB4:
thumb_func_start sub_8168AC8
sub_8168AC8: @ 8168AC8
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -907,7 +907,7 @@ _08168B5E:
thumb_func_start sub_8168B70
sub_8168B70: @ 8168B70
push {lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
ldr r0, =gActiveBank
ldrb r1, [r0]
@@ -975,7 +975,7 @@ _08168BFA:
lsrs r1, 16
movs r0, 0x1
mov r2, sp
- bl dp01_build_cmdbuf_x1D_1D_numargs_varargs
+ bl EmitDataTransfer
bl WallyBufferExecCompleted
add sp, 0x100
pop {r4-r6}
@@ -3015,7 +3015,7 @@ _08169E80:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl WallyBufferExecCompleted
_08169EB6:
pop {r4-r6}
@@ -3030,7 +3030,7 @@ sub_8169EC8: @ 8169EC8
ldr r4, =gActiveBank
ldrb r1, [r4]
movs r0, 0x6
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r4]
bl GetBankIdentity
adds r1, r0, 0
@@ -3039,7 +3039,7 @@ sub_8169EC8: @ 8169EC8
movs r0, 0x6
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
ldrb r1, [r1, 0x18]
movs r2, 0x8
subs r2, r1
@@ -3115,7 +3115,7 @@ dp01t_07_6_: @ 8169F94
ldr r4, =gActiveBank
ldrb r1, [r4]
movs r0, 0x6
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r4]
bl GetBankIdentity
adds r1, r0, 0
@@ -3124,7 +3124,7 @@ dp01t_07_6_: @ 8169F94
movs r0, 0x6
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
ldrb r1, [r1, 0x18]
movs r2, 0x8
subs r2, r1
@@ -3221,7 +3221,7 @@ sub_816A078: @ 816A078
thumb_func_start sub_816A084
sub_816A084: @ 816A084
push {r4,r5,lr}
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x8]
movs r0, 0x4
@@ -3232,7 +3232,7 @@ sub_816A084: @ 816A084
ldr r5, =gActiveBank
ldrb r4, [r5]
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
@@ -3262,7 +3262,7 @@ sub_816A0D8: @ 816A0D8
adds r1, 0x1
adds r0, r1
ldrb r1, [r0]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
strb r1, [r0, 0x8]
@@ -3271,7 +3271,7 @@ sub_816A0D8: @ 816A0D8
strb r0, [r1]
ldrb r4, [r5]
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
@@ -3316,13 +3316,13 @@ sub_816A144: @ 816A144
ldrb r1, [r1]
lsls r1, 8
orrs r0, r1
- ldr r5, =gUnknown_02038432
+ ldr r5, =gAnimMoveTurn
mov r1, r12
adds r1, 0x3
adds r2, r1
ldrb r1, [r2]
strb r1, [r5]
- ldr r4, =gMovePowerMoveAnim
+ ldr r4, =gAnimMovePower
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -3336,7 +3336,7 @@ sub_816A144: @ 816A144
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r4, =gMoveDmgMoveAnim
+ ldr r4, =gAnimMoveDmg
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -3362,7 +3362,7 @@ sub_816A144: @ 816A144
lsls r1, 24
orrs r3, r1
str r3, [r4]
- ldr r3, =gHappinessMoveAnim
+ ldr r3, =gAnimFriendship
ldrb r1, [r6]
lsls r1, 9
mov r2, r12
@@ -3384,7 +3384,7 @@ sub_816A144: @ 816A144
lsls r1, 8
orrs r3, r1
strh r3, [r4]
- ldr r3, =gDisableStructMoveAnim
+ ldr r3, =gAnimDisableStructPtr
ldrb r2, [r6]
lsls r2, 9
mov r1, r12
@@ -3407,7 +3407,7 @@ sub_816A144: @ 816A144
b _0816A25A
.pool
_0816A23C:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -3449,7 +3449,7 @@ bx_move_anim_5: @ 816A26C
ldrb r0, [r1]
lsls r0, 8
orrs r4, r0
- ldr r7, =gUnknown_020244D0
+ ldr r7, =gBattleSpritesDataPtr
ldr r5, [r7]
ldr r1, [r5, 0x4]
lsls r0, r3, 1
@@ -3505,7 +3505,7 @@ _0816A2F6:
movs r0, 0
bl sub_805EB9C
adds r0, r4, 0
- bl move_anim_start_t1
+ bl DoMoveAnim
ldr r0, [r7]
ldrb r1, [r6]
ldr r2, [r0, 0x4]
@@ -3592,10 +3592,10 @@ _0816A3AC:
thumb_func_start sub_816A3B8
sub_816A3B8: @ 816A3B8
push {r4,lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
ldr r4, =gActiveBank
ldrb r0, [r4]
@@ -3606,7 +3606,7 @@ sub_816A3B8: @ 816A3B8
bl BufferStringBattle
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
@@ -3646,9 +3646,9 @@ sub_816A430: @ 816A430
lsrs r1, r0, 24
cmp r1, 0
bne _0816A456
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r1, [r0]
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, =gBattleBankFunc
@@ -3676,27 +3676,27 @@ dp01t_12_1_battle_menu: @ 816A470
str r1, [r0]
ldr r0, =gText_BattleMenu
movs r1, 0x2
- bl battle_show_message_maybe
+ bl sub_814F9EC
movs r4, 0
_0816A48A:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
adds r4, 0x1
cmp r4, 0x3
ble _0816A48A
- ldr r1, =gUnknown_020244AC
+ ldr r1, =gActionSelectionCursor
ldr r0, =gActiveBank
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
ldr r0, =gText_WhatWillWallyDo
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0x1
- bl battle_show_message_maybe
+ bl sub_814F9EC
pop {r4}
pop {r0}
bx r0
@@ -3749,9 +3749,9 @@ _0816A522:
lsrs r1, r0, 24
cmp r1, 0
bne _0816A574
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r1, [r0]
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
movs r2, 0xA0
lsls r2, 1
adds r0, r2, 0
@@ -3777,7 +3777,7 @@ _0816A550:
lsls r2, 1
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd33
bl WallyBufferExecCompleted
_0816A574:
pop {r4}
@@ -3836,7 +3836,7 @@ sub_816A5D4: @ 816A5D4
push {r6,r7}
sub sp, 0x4
movs r0, 0
- bl load_gfxc_health_bar
+ bl LoadBattleBarGfx
ldr r3, =gBattleBufferA
ldr r0, =gActiveBank
mov r9, r0
@@ -3883,7 +3883,7 @@ sub_816A5D4: @ 816A5D4
ldrb r1, [r1]
str r7, [sp]
mov r2, r8
- bl sub_807294C
+ bl SetBattleBarStruct
b _0816A69E
.pool
_0816A664:
@@ -3905,14 +3905,14 @@ _0816A664:
ldrb r1, [r1]
str r7, [sp]
movs r3, 0
- bl sub_807294C
+ bl SetBattleBarStruct
mov r1, r9
ldrb r0, [r1]
adds r0, r4
ldrb r0, [r0]
movs r1, 0
movs r2, 0
- bl heathbar_draw_hp
+ bl UpdateHpTextInHealthbox
_0816A69E:
ldr r1, =gBattleBankFunc
ldr r0, =gActiveBank
@@ -4150,7 +4150,7 @@ sub_816A840: @ 816A840
ldrb r0, [r0]
cmp r0, 0
beq _0816A87C
- bl sub_805EA60
+ bl BattleMusicStop
ldrb r1, [r5]
lsls r1, 9
adds r0, r4, 0x1
@@ -4342,7 +4342,7 @@ sub_816A90C: @ 816A90C
adds r1, r4
ldrb r0, [r7]
strh r0, [r1, 0x8]
- ldr r3, =gUnknown_020244D0
+ ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldrb r2, [r7]
ldr r1, [r0, 0x4]
@@ -4393,7 +4393,7 @@ sub_816AA80: @ 816AA80
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r6, 2
@@ -4622,7 +4622,7 @@ sub_816AC78: @ 816AC78
b _0816ACE6
.pool
_0816ACA8:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r5, =gActiveBank
ldrb r1, [r5]
@@ -4645,7 +4645,7 @@ _0816ACA8:
subs r3, 0x2
adds r4, r3
ldrb r3, [r4]
- bl sub_80735DC
+ bl CreatePartyStatusSummarySprites
ldr r2, =gUnknown_020244B4
ldrb r1, [r5]
adds r1, r2
diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s
index 5fb146afc..7ac60f1be 100755
--- a/asm/battle_frontier_1.s
+++ b/asm/battle_frontier_1.s
@@ -2599,10 +2599,10 @@ _0818FFFC:
b _081900A4
.pool
_0819002C:
- ldr r0, =gUnknown_0831ACE8
+ ldr r0, =gTypeEffectiveness
adds r1, r6, r0
ldrb r0, [r1]
- ldr r7, =gUnknown_0831ACE8
+ ldr r7, =gTypeEffectiveness
cmp r0, 0xFF
beq _081900A4
adds r4, r1, 0
@@ -2657,7 +2657,7 @@ _08190088:
_08190096:
adds r4, 0x3
adds r6, 0x3
- ldr r1, =gUnknown_0831ACE8
+ ldr r1, =gTypeEffectiveness
adds r0, r6, r1
ldrb r0, [r0]
cmp r0, 0xFF
@@ -3161,31 +3161,31 @@ _0819044E:
ldr r0, =gUnknown_0860CEB4
bl InitWindows
bl DeactivateAllTextPrinters
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r4, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r4, [r0]
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
strh r4, [r0]
mov r2, r9
cmp r2, 0x2
bne _081904DC
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r4, [r0]
b _081904E6
.pool
_081904DC:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r4, [r0]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
_081904E6:
@@ -4366,27 +4366,27 @@ _08190E98:
ldrsh r2, [r0, r5]
cmp r2, 0
beq _08190ED4
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r1, [r0]
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
movs r0, 0xA0
strh r0, [r1]
b _08190EE6
.pool
_08190ED4:
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r2, [r0]
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
movs r0, 0xA0
strh r0, [r1]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r2, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r2, [r0]
_08190EE6:
cmp r6, 0x1
@@ -4396,9 +4396,9 @@ _08190EE6:
ldrb r1, [r0, 0x10]
cmp r1, 0
bne _08190F50
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r1, [r0]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r6, 0xA0
lsls r6, 1
adds r0, r6, 0
@@ -4424,12 +4424,12 @@ _08190EE6:
b _08191084
.pool
_08190F50:
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r6, 0x80
lsls r6, 1
adds r0, r6, 0
strh r0, [r1]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
movs r4, 0
strh r4, [r0]
ldr r3, =gUnknown_0860D080
@@ -4473,9 +4473,9 @@ _08190F9C:
lsrs r0, 24
adds r1, 0x11
bl sub_8192F08
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r5, [r0]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r3, 0xA0
lsls r3, 1
adds r0, r3, 0
@@ -4508,10 +4508,10 @@ _08190FF8:
lsrs r0, 24
adds r1, 0x11
bl sub_8192F08
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r2, 0xA0
lsls r2, 1
adds r0, r2, 0
@@ -4529,12 +4529,12 @@ _08190FF8:
b _08191084
.pool
_0819104C:
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r3, 0x80
lsls r3, 1
adds r0, r3, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, =gTasks
@@ -4765,29 +4765,29 @@ _08191234:
ldrsh r2, [r0, r5]
cmp r2, 0
beq _08191278
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r1, [r0]
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
ldr r2, =0x0000ff60
adds r0, r2, 0
strh r0, [r1]
b _0819128C
.pool
_08191278:
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r2, [r0]
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
ldr r3, =0x0000ff60
adds r0, r3, 0
strh r0, [r1]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r2, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r2, [r0]
_0819128C:
cmp r6, 0x2
@@ -4797,9 +4797,9 @@ _0819128C:
ldrb r1, [r0, 0x10]
cmp r1, 0
bne _081912F4
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r1, [r0]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
ldr r3, =gUnknown_0860D080
@@ -4823,10 +4823,10 @@ _0819128C:
b _0819141C
.pool
_081912F4:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
movs r4, 0
strh r4, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r4, [r0]
ldr r3, =gUnknown_0860D080
ldr r2, =gTasks
@@ -4869,9 +4869,9 @@ _0819133C:
lsrs r0, 24
adds r1, 0x11
bl sub_8192F08
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r5, [r0]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
ldr r2, [r6]
@@ -4902,10 +4902,10 @@ _08191394:
lsrs r0, 24
adds r1, 0x11
bl sub_8192F08
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
ldr r2, [r6]
@@ -4921,12 +4921,12 @@ _08191394:
b _0819141C
.pool
_081913E4:
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r4, 0x80
lsls r4, 1
adds r0, r4, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0
strh r0, [r1]
ldr r1, =gTasks
@@ -5157,31 +5157,31 @@ _081915CC:
ldrsh r2, [r0, r5]
cmp r2, 0
beq _0819160C
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
movs r6, 0x80
lsls r6, 1
adds r0, r6, 0
strh r0, [r2]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
b _08191622
.pool
_0819160C:
- ldr r1, =gUnknown_02022E14
+ ldr r1, =gBattle_BG0_X
movs r3, 0x80
lsls r3, 1
adds r0, r3, 0
strh r0, [r1]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r2, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r2, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r2, [r0]
_08191622:
ldr r0, =gUnknown_0203CD78
@@ -5189,12 +5189,12 @@ _08191622:
ldrb r0, [r4, 0x10]
cmp r0, 0
bne _08191688
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r4, 0x80
lsls r4, 1
adds r0, r4, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
ldr r3, =gUnknown_0860D080
@@ -5218,12 +5218,12 @@ _08191622:
b _081916C6
.pool
_08191688:
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r6, 0x80
lsls r6, 1
adds r0, r6, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0
strh r0, [r1]
ldr r3, =gUnknown_0860D15C
@@ -5457,31 +5457,31 @@ _0819187C:
ldrsh r2, [r0, r5]
cmp r2, 0
beq _081918BC
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
movs r6, 0x80
lsls r6, 1
adds r0, r6, 0
strh r0, [r2]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
b _081918D2
.pool
_081918BC:
- ldr r1, =gUnknown_02022E14
+ ldr r1, =gBattle_BG0_X
movs r3, 0x80
lsls r3, 1
adds r0, r3, 0
strh r0, [r1]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r2, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r2, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r2, [r0]
_081918D2:
ldr r0, =gUnknown_0203CD78
@@ -5489,12 +5489,12 @@ _081918D2:
ldrb r0, [r2, 0x10]
cmp r0, 0
bne _08191924
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r4, 0x80
lsls r4, 1
adds r0, r4, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, =gTasks
@@ -5510,10 +5510,10 @@ _081918D2:
b _08191958
.pool
_08191924:
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, =gTasks
@@ -5744,31 +5744,31 @@ _08191B08:
ldrsh r2, [r0, r5]
cmp r2, 0
beq _08191B48
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
movs r6, 0xFF
lsls r6, 8
adds r0, r6, 0
strh r0, [r2]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
b _08191B5E
.pool
_08191B48:
- ldr r1, =gUnknown_02022E14
+ ldr r1, =gBattle_BG0_X
movs r3, 0xFF
lsls r3, 8
adds r0, r3, 0
strh r0, [r1]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r2, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r2, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r2, [r0]
_08191B5E:
ldr r0, =gUnknown_0203CD78
@@ -5776,19 +5776,19 @@ _08191B5E:
ldrb r0, [r0, 0x10]
cmp r0, 0x1
bne _08191B94
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
b _08191B9E
.pool
_08191B94:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
_08191B9E:
ldr r4, =gUnknown_0860D15C
@@ -6011,31 +6011,31 @@ _08191D68:
ldrsh r2, [r0, r5]
cmp r2, 0
beq _08191DA8
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r2, =gUnknown_02022E18
+ ldr r2, =gBattle_BG1_X
movs r6, 0xFF
lsls r6, 8
adds r0, r6, 0
strh r0, [r2]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
b _08191DBE
.pool
_08191DA8:
- ldr r1, =gUnknown_02022E14
+ ldr r1, =gBattle_BG0_X
movs r3, 0xFF
lsls r3, 8
adds r0, r3, 0
strh r0, [r1]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r2, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r2, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r2, [r0]
_08191DBE:
ldr r0, =gUnknown_0203CD78
@@ -6043,12 +6043,12 @@ _08191DBE:
ldrb r0, [r2, 0x10]
cmp r0, 0x2
bne _08191E10
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r4, 0x80
lsls r4, 1
adds r0, r4, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, =gTasks
@@ -6064,10 +6064,10 @@ _08191DBE:
b _08191E44
.pool
_08191E10:
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
movs r0, 0xA0
strh r0, [r1]
ldr r1, =gTasks
@@ -6306,15 +6306,15 @@ _08191FF8:
asrs r0, 16
cmp r0, 0x29
beq _08192100
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
ldrh r0, [r1]
subs r0, 0x4
strh r0, [r1]
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
ldrh r0, [r1]
subs r0, 0x4
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
b _081920A4
.pool
_08192038:
@@ -6331,15 +6331,15 @@ _08192038:
asrs r0, 16
cmp r0, 0x29
beq _08192100
- ldr r1, =gUnknown_02022E16
+ ldr r1, =gBattle_BG0_Y
ldrh r0, [r1]
adds r0, 0x4
strh r0, [r1]
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
ldrh r0, [r1]
adds r0, 0x4
strh r0, [r1]
- ldr r1, =gUnknown_02022E1E
+ ldr r1, =gBattle_BG2_Y
b _081920E8
.pool
_08192078:
@@ -6356,15 +6356,15 @@ _08192078:
asrs r0, 16
cmp r0, 0x41
beq _08192100
- ldr r1, =gUnknown_02022E14
+ ldr r1, =gBattle_BG0_X
ldrh r0, [r1]
subs r0, 0x4
strh r0, [r1]
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldrh r0, [r1]
subs r0, 0x4
strh r0, [r1]
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
_081920A4:
ldrh r0, [r1]
subs r0, 0x4
@@ -6385,15 +6385,15 @@ _081920BC:
asrs r0, 16
cmp r0, 0x41
beq _08192100
- ldr r1, =gUnknown_02022E14
+ ldr r1, =gBattle_BG0_X
ldrh r0, [r1]
adds r0, 0x4
strh r0, [r1]
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
ldrh r0, [r1]
adds r0, 0x4
strh r0, [r1]
- ldr r1, =gUnknown_02022E1C
+ ldr r1, =gBattle_BG2_X
_081920E8:
ldrh r0, [r1]
adds r0, 0x4
@@ -10109,7 +10109,7 @@ _08194074:
lsls r0, r4, 1
add r0, r10
ldrh r0, [r0]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0x6
@@ -10400,13 +10400,13 @@ _0819427C:
ldr r0, =gUnknown_0860CE94
bl InitWindows
bl DeactivateAllTextPrinters
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r4, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r4, [r0]
movs r0, 0x2
movs r1, 0
@@ -11358,27 +11358,27 @@ sub_8194B70: @ 8194B70
movs r1, 0x80
movs r2, 0x2
bl ChangeBgY
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r1, [r0]
movs r0, 0x18
bl SetGpuReg
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
ldrh r1, [r0]
movs r0, 0x1A
bl SetGpuReg
@@ -11486,19 +11486,19 @@ _08194CD4:
thumb_func_start sub_8194CE4
sub_8194CE4: @ 8194CE4
push {lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
@@ -14296,7 +14296,7 @@ sub_81963F0: @ 81963F0
adds r0, r1
bl FieldObjectClearAnimIfSpecialAnimFinished
bl sub_80D338C
- bl sub_809757C
+ bl UnfreezeMapObjects
bl ScriptContext2_Disable
_08196446:
movs r0, 0x1
@@ -14680,7 +14680,7 @@ sub_8196748: @ 8196748
ldr r4, =gUnknown_085500A4
_08196750:
ldrh r0, [r4]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _0819675E
@@ -14706,7 +14706,7 @@ sub_8196774: @ 8196774
ldr r5, =gUnknown_085500A4
_0819677E:
ldrh r0, [r5]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _0819679A
diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s
index 8a9b0ba24..37ddc7ac6 100755
--- a/asm/battle_frontier_2.s
+++ b/asm/battle_frontier_2.s
@@ -12935,7 +12935,7 @@ _081A1118:
adds r1, r0, 0
mov r0, sp
movs r2, 0x2
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
adds r0, r5, 0
mov r1, sp
bl StringCopy
@@ -18768,7 +18768,7 @@ _081A43EE:
sub_81A4410: @ 81A4410
push {r4,lr}
ldr r4, =gScriptResult
- bl sub_8185338
+ bl MoveRecordedBattleToSaveData
strh r0, [r4]
ldr r0, =gSaveBlock2Ptr
ldr r1, [r0]
@@ -18997,7 +18997,7 @@ sub_81A4594: @ 81A4594
adds r1, r6, 0x6
ldrb r2, [r6, 0xE]
add r0, sp, 0xC
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
ldr r1, =gUnknown_0203AB74
ldrb r0, [r1]
mov r3, r8
@@ -19111,7 +19111,7 @@ sub_81A4684: @ 81A4684
adds r1, 0xA
ldrb r2, [r5, 0x1A]
add r0, sp, 0xC
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
ldr r1, =gUnknown_0203AB74
ldrb r0, [r1]
adds r3, r7, 0x2
@@ -19133,13 +19133,13 @@ sub_81A4684: @ 81A4684
adds r4, r5, 0
adds r4, 0x12
adds r0, r4, 0
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _081A4734
add r0, sp, 0xC
adds r1, r4, 0
movs r2, 0x1
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
b _081A473C
.pool
_081A4734:
@@ -20533,10 +20533,10 @@ _081A52A4:
lsls r1, 1
movs r2, 0x20
bl LoadCompressedPalette
- ldr r1, =gUnknown_02022E24
+ ldr r1, =gBattle_WIN0H
movs r0, 0xFF
strh r0, [r1]
- ldr r1, =gUnknown_02022E26
+ ldr r1, =gBattle_WIN0V
movs r0, 0x70
strh r0, [r1]
b _081A553E
@@ -20577,34 +20577,34 @@ _081A5328:
movs r0, 0x1
negs r0, r0
strb r0, [r1, 0x1]
- ldr r0, =gText_JapaneseHonorific
- bl StrCpyDecodeToDisplayedStringBattle
+ ldr r0, =gText_PlayerMon1Name
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r4, =gDisplayedStringBattle
adds r0, r4, 0
movs r1, 0xF
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gText_Vs
movs r1, 0x10
- bl battle_show_message_maybe
- ldr r0, =gText_RivalBuffer
- bl StrCpyDecodeToDisplayedStringBattle
+ bl sub_814F9EC
+ ldr r0, =gText_OpponentMon1Name
+ bl BattleStringExpandPlaceholdersToDisplayedString
adds r0, r4, 0
movs r1, 0x11
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gText_Mind
movs r1, 0x12
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gText_Skill
movs r1, 0x13
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gText_Body
movs r1, 0x14
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gText_Judgement
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
adds r0, r4, 0
movs r1, 0x15
- bl battle_show_message_maybe
+ bl sub_814F9EC
b _081A553E
.pool
_081A53B4:
@@ -20685,10 +20685,10 @@ _081A5464:
movs r3, 0x1
bl sub_81A5558
ldr r0, =gText_Judgement
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0x15
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldrb r0, [r5]
adds r0, 0x1
strb r0, [r5]
@@ -27306,7 +27306,7 @@ _081A8A74:
ldrb r1, [r2, 0x5]
ldrb r2, [r2, 0x4]
adds r3, r7, 0
- bl exec_movement
+ bl ScriptMovement_StartObjectMovementScript
b _081A8AD4
.pool
_081A8ACC:
@@ -27540,7 +27540,7 @@ _081A8C72:
ldr r2, [r1]
ldrb r1, [r2, 0x5]
ldrb r2, [r2, 0x4]
- bl exec_movement
+ bl ScriptMovement_StartObjectMovementScript
b _081A8D32
.pool
_081A8C9C:
@@ -27618,7 +27618,7 @@ _081A8D12:
ldr r2, [r1]
ldrb r1, [r2, 0x5]
ldrb r2, [r2, 0x4]
- bl exec_movement
+ bl ScriptMovement_StartObjectMovementScript
_081A8D32:
mov r0, r9
adds r0, 0x1
@@ -28660,7 +28660,7 @@ _081A95EE:
lsls r0, r7, 2
adds r0, r1
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
add sp, 0x8
pop {r3,r4}
mov r8, r3
@@ -31263,8 +31263,8 @@ _081AAA9E:
.pool
thumb_func_end sub_81AAA7C
- thumb_func_start CalculateBattlePyramidPickupItemId
-CalculateBattlePyramidPickupItemId: @ 81AAAE0
+ thumb_func_start GetBattlePyramidPickupItemId
+GetBattlePyramidPickupItemId: @ 81AAAE0
push {r4-r6,lr}
ldr r0, =gSaveBlock2Ptr
ldr r1, [r0]
@@ -31331,6 +31331,6 @@ _081AAB5A:
pop {r1}
bx r1
.pool
- thumb_func_end CalculateBattlePyramidPickupItemId
+ thumb_func_end GetBattlePyramidPickupItemId
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
deleted file mode 100755
index 489366fe8..000000000
--- a/asm/battle_interface.s
+++ /dev/null
@@ -1,5734 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8072304
-sub_8072304: @ 8072304
- movs r0, 0x9
- bx lr
- thumb_func_end sub_8072304
-
- thumb_func_start sub_8072308
-sub_8072308: @ 8072308
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r7, r1, 0
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- movs r3, 0
- movs r2, 0
-_08072324:
- lsls r0, r3, 24
- asrs r0, 24
- mov r3, sp
- adds r1, r3, r0
- strb r2, [r1]
- adds r0, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _08072324
- movs r3, 0x3
- movs r0, 0x1
- negs r0, r0
- mov r9, r0
- mov r8, sp
-_08072344:
- lsls r0, r5, 16
- asrs r6, r0, 16
- cmp r6, 0
- ble _08072372
- lsls r4, r3, 24
- asrs r4, 24
- mov r1, sp
- adds r5, r1, r4
- adds r0, r6, 0
- movs r1, 0xA
- bl __modsi3
- strb r0, [r5]
- adds r0, r6, 0
- movs r1, 0xA
- bl __divsi3
- lsls r0, 16
- lsrs r5, r0, 16
- subs r4, 0x1
- lsls r4, 24
- lsrs r3, r4, 24
- b _08072344
-_08072372:
- lsls r1, r3, 24
- asrs r0, r1, 24
- cmp r0, r9
- ble _08072396
- movs r4, 0xFF
- movs r3, 0x1
- negs r3, r3
-_08072380:
- asrs r2, r1, 24
- mov r5, sp
- adds r1, r5, r2
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- subs r2, 0x1
- lsls r1, r2, 24
- asrs r0, r1, 24
- cmp r0, r3
- bgt _08072380
-_08072396:
- mov r1, r8
- ldrb r0, [r1, 0x3]
- cmp r0, 0xFF
- bne _080723A2
- movs r0, 0
- strb r0, [r1, 0x3]
-_080723A2:
- mov r2, r10
- cmp r2, 0
- bne _08072432
- movs r3, 0
- movs r1, 0
- movs r6, 0xFC
- lsls r6, 8
- movs r5, 0x1E
- mov r12, r5
-_080723B4:
- lsls r1, 24
- asrs r2, r1, 24
- mov r0, sp
- adds r5, r0, r2
- ldrb r0, [r5]
- mov r8, r1
- cmp r0, 0xFF
- bne _080723EA
- lsls r1, r2, 1
- adds r1, r7
- ldrh r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- mov r2, r12
- orrs r0, r2
- strh r0, [r1]
- lsls r3, 24
- asrs r1, r3, 23
- adds r1, r7
- adds r1, 0x40
- ldrh r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- mov r5, r12
- orrs r0, r5
- strh r0, [r1]
- b _0807241A
-_080723EA:
- lsls r2, 1
- adds r2, r7
- ldrh r0, [r2]
- adds r1, r6, 0
- ands r1, r0
- ldrb r0, [r5]
- adds r0, 0x14
- orrs r1, r0
- strh r1, [r2]
- lsls r4, r3, 24
- asrs r3, r4, 24
- lsls r2, r3, 1
- adds r2, r7
- adds r2, 0x40
- ldrh r0, [r2]
- adds r1, r6, 0
- ands r1, r0
- mov r5, sp
- adds r0, r5, r3
- ldrb r0, [r0]
- adds r0, 0x34
- orrs r1, r0
- strh r1, [r2]
- adds r3, r4, 0
-_0807241A:
- movs r0, 0x80
- lsls r0, 17
- add r0, r8
- lsrs r1, r0, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r3, r2
- lsrs r3, r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _080723B4
- b _08072496
-_08072432:
- movs r3, 0
- movs r4, 0xFC
- lsls r4, 8
- movs r6, 0x1E
-_0807243A:
- lsls r1, r3, 24
- asrs r2, r1, 24
- mov r3, sp
- adds r5, r3, r2
- ldrb r0, [r5]
- adds r3, r1, 0
- cmp r0, 0xFF
- bne _08072466
- lsls r1, r2, 1
- adds r1, r7
- ldrh r2, [r1]
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r6
- strh r0, [r1]
- adds r1, 0x40
- ldrh r2, [r1]
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r6
- strh r0, [r1]
- b _08072488
-_08072466:
- lsls r2, 1
- adds r2, r7
- ldrh r0, [r2]
- adds r1, r4, 0
- ands r1, r0
- ldrb r0, [r5]
- adds r0, 0x14
- orrs r1, r0
- strh r1, [r2]
- adds r2, 0x40
- ldrh r0, [r2]
- adds r1, r4, 0
- ands r1, r0
- ldrb r0, [r5]
- adds r0, 0x34
- orrs r1, r0
- strh r1, [r2]
-_08072488:
- movs r5, 0x80
- lsls r5, 17
- adds r0, r3, r5
- lsrs r3, r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _0807243A
-_08072496:
- 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_8072308
-
- thumb_func_start sub_80724A8
-sub_80724A8: @ 80724A8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- adds r5, r2, 0
- lsls r4, 16
- lsrs r4, 16
- movs r1, 0x1E
- strh r1, [r5, 0x8]
- lsls r0, 16
- asrs r0, 16
- adds r1, r5, 0
- movs r2, 0
- bl sub_8072308
- lsls r4, 16
- asrs r4, 16
- adds r5, 0xA
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl sub_8072308
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80724A8
-
- thumb_func_start battle_make_oam_normal_battle
-battle_make_oam_normal_battle: @ 80724DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- movs r0, 0
- str r0, [sp]
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- bne _080725F0
- mov r0, r10
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072574
- ldr r4, =gUnknown_0832C140
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, =gSprites
- lsls r1, r6, 4
- adds r1, r6
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x1]
- movs r3, 0x3F
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1, 0x1]
- lsls r2, r7, 4
- adds r2, r7
- lsls r2, 2
- adds r2, r4
- ldrb r0, [r2, 0x1]
- ands r3, r0
- strb r3, [r2, 0x1]
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x40
- ldr r4, =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- b _080725BA
- .pool
-_08072574:
- ldr r4, =gUnknown_0832C170
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gSprites
- lsls r2, r7, 4
- adds r2, r7
- lsls r2, 2
- adds r2, r0
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x20
- ldr r5, =0x000003ff
- adds r0, r5, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- movs r0, 0x2
- str r0, [sp]
-_080725BA:
- ldr r2, =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r2
- strh r7, [r0, 0x6]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r1, r0, r2
- strh r6, [r1, 0x38]
- adds r2, 0x1C
- adds r0, r2
- ldr r1, =sub_8072924
- str r1, [r0]
- b _08072718
- .pool
-_080725F0:
- mov r0, r10
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072694
- mov r0, r10
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 25
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r4, =gUnknown_0832C140
- adds r0, r4
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- mov r0, r10
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 25
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x6]
- lsls r2, r7, 4
- adds r2, r7
- lsls r2, 2
- adds r3, r2, r4
- strh r6, [r3, 0x38]
- ldrh r1, [r3, 0x4]
- mov r8, r1
- mov r5, r8
- lsls r1, r5, 22
- lsrs r1, 22
- adds r1, 0x20
- ldr r5, =0x000003ff
- adds r0, r5, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- mov r5, r8
- ands r0, r5
- orrs r0, r1
- strh r0, [r3, 0x4]
- adds r4, 0x1C
- adds r2, r4
- ldr r0, =sub_8072924
- str r0, [r2]
- movs r0, 0x1
- b _08072716
- .pool
-_08072694:
- mov r0, r10
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 25
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r4, =gUnknown_0832C170
- adds r0, r4
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r6, r0, 24
- mov r0, r10
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 25
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, r4
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x6]
- lsls r2, r7, 4
- adds r2, r7
- lsls r2, 2
- adds r3, r2, r4
- strh r6, [r3, 0x38]
- ldrh r1, [r3, 0x4]
- mov r8, r1
- mov r5, r8
- lsls r1, r5, 22
- lsrs r1, 22
- adds r1, 0x20
- ldr r5, =0x000003ff
- adds r0, r5, 0
- ands r1, r0
- ldr r0, =0xfffffc00
- mov r5, r8
- ands r0, r5
- orrs r0, r1
- strh r0, [r3, 0x4]
- adds r4, 0x1C
- adds r2, r4
- ldr r0, =sub_8072924
- str r0, [r2]
- movs r0, 0x2
-_08072716:
- str r0, [sp]
-_08072718:
- ldr r0, =gBanksBySide
- add r0, r10
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldr r1, =gUnknown_0832C1C0
- adds r0, r1
- movs r1, 0x8C
- movs r2, 0x3C
- movs r3, 0
- bl CreateSpriteAtEnd
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- ldr r1, =gSprites
- mov r8, r1
- add r4, r8
- mov r0, r10
- bl GetBankSide
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 21
- ldr r0, =gUnknown_0832C28C
- adds r1, r0
- adds r0, r4, 0
- bl SetSubspriteTables
- adds r2, r4, 0
- adds r2, 0x42
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r2, 0x4
- mov r9, r2
- mov r1, r9
- orrs r0, r1
- strb r0, [r4, 0x5]
- movs r0, 0x1
- bl sub_80728A4
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000010
- bl CpuSet
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- add r0, r8
- strh r5, [r0, 0x38]
- mov r2, r10
- strh r2, [r0, 0x3A]
- adds r0, 0x3E
- ldrb r1, [r0]
- mov r5, r9
- orrs r1, r5
- strb r1, [r0]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- add r0, r8
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r5
- strb r1, [r0]
- strh r6, [r4, 0x38]
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x3A]
- adds r4, 0x3E
- ldrb r0, [r4]
- orrs r0, r5
- strb r0, [r4]
- adds r0, r6, 0
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end battle_make_oam_normal_battle
-
- thumb_func_start battle_make_oam_safari_battle
-battle_make_oam_safari_battle: @ 8072804
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r4, =gUnknown_0832C1A0
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0xA0
- movs r3, 0x1
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSprites
- mov r9, r1
- lsls r4, r6, 4
- adds r4, r6
- lsls r4, 2
- add r4, r9
- ldrb r3, [r4, 0x1]
- movs r2, 0x3F
- adds r1, r2, 0
- ands r1, r3
- strb r1, [r4, 0x1]
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- mov r7, r9
- adds r5, r3, r7
- ldrb r1, [r5, 0x1]
- ands r2, r1
- strb r2, [r5, 0x1]
- ldrh r1, [r5, 0x4]
- mov r8, r1
- mov r7, r8
- lsls r2, r7, 22
- lsrs r2, 22
- adds r2, 0x40
- ldr r7, =0x000003ff
- adds r1, r7, 0
- ands r2, r1
- ldr r1, =0xfffffc00
- mov r7, r8
- ands r1, r7
- orrs r1, r2
- strh r1, [r5, 0x4]
- strh r0, [r4, 0x6]
- strh r6, [r5, 0x38]
- movs r0, 0x1C
- add r9, r0
- add r3, r9
- ldr r0, =sub_8072924
- str r0, [r3]
- adds r0, r6, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end battle_make_oam_safari_battle
-
- thumb_func_start sub_80728A4
-sub_80728A4: @ 80728A4
- lsls r0, 24
- lsrs r0, 19
- ldr r1, =gUnknown_08C11BDC
- adds r0, r1
- bx lr
- .pool
- thumb_func_end sub_80728A4
-
- thumb_func_start sub_80728B4
-sub_80728B4: @ 80728B4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080728E4
- cmp r0, 0x1
- bgt _080728F8
- cmp r0, 0
- bne _080728F8
- ldr r2, =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x20]
- adds r0, 0x10
- b _08072906
- .pool
-_080728E4:
- ldr r2, =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x20]
- adds r0, 0x10
- b _08072906
- .pool
-_080728F8:
- ldr r2, =gSprites
- lsls r3, r5, 4
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x20]
- adds r0, 0x8
-_08072906:
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x22]
- strh r0, [r4, 0x22]
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- strh r1, [r4, 0x24]
- ldrh r0, [r0, 0x26]
- strh r0, [r4, 0x26]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80728B4
-
- thumb_func_start sub_8072924
-sub_8072924: @ 8072924
- ldrh r1, [r0, 0x38]
- lsls r1, 24
- lsrs r1, 24
- ldr r3, =gSprites
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r3
- ldrh r1, [r2, 0x20]
- adds r1, 0x40
- strh r1, [r0, 0x20]
- ldrh r1, [r2, 0x22]
- strh r1, [r0, 0x22]
- ldrh r1, [r2, 0x24]
- strh r1, [r0, 0x24]
- ldrh r1, [r2, 0x26]
- strh r1, [r0, 0x26]
- bx lr
- .pool
- thumb_func_end sub_8072924
-
- thumb_func_start sub_807294C
-sub_807294C: @ 807294C
- push {r4-r7,lr}
- ldr r7, [sp, 0x14]
- lsls r0, 24
- lsrs r0, 24
- ldr r6, =gUnknown_020244D0
- ldr r4, [r6]
- ldr r5, [r4, 0xC]
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 2
- adds r5, r4, r5
- strb r1, [r5]
- ldr r0, [r6]
- ldr r0, [r0, 0xC]
- adds r4, r0
- str r2, [r4, 0x4]
- str r3, [r4, 0x8]
- str r7, [r4, 0xC]
- ldr r0, =0xffff8000
- str r0, [r4, 0x10]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807294C
-
- thumb_func_start sub_8072984
-sub_8072984: @ 8072984
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1]
- movs r0, 0x38
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- ldrh r1, [r2, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8072984
-
- thumb_func_start sub_80729D0
-sub_80729D0: @ 80729D0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r5
- adds r4, r2, 0
- adds r4, 0x3E
- ldrb r1, [r4]
- movs r3, 0x5
- negs r3, r3
- adds r0, r3, 0
- ands r0, r1
- strb r0, [r4]
- movs r0, 0x38
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r4, [r0]
- adds r1, r3, 0
- ands r1, r4
- strb r1, [r0]
- ldrh r1, [r2, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r3, r1
- strb r3, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80729D0
-
- thumb_func_start sub_8072A24
-sub_8072A24: @ 8072A24
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r3, r4
- strh r1, [r3, 0x20]
- strh r2, [r3, 0x22]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8072A24
-
- thumb_func_start sub_8072A44
-sub_8072A44: @ 8072A44
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r4, r5
- ldrh r1, [r4, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- adds r0, r4, 0
- bl DestroySprite
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8072A44
-
- thumb_func_start nullsub_30
-nullsub_30: @ 8072A84
- bx lr
- thumb_func_end nullsub_30
-
- thumb_func_start sub_8072A88
-sub_8072A88: @ 8072A88
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0
- ldr r1, =gNoOfAllBanks
- mov r8, r1
- ldrb r2, [r1]
- cmp r6, r2
- bge _08072B00
- ldr r1, =gSprites
- mov r12, r1
- movs r1, 0x3
- ands r0, r1
- lsls r5, r0, 2
- movs r7, 0xD
- negs r7, r7
- ldr r2, =gHealthBoxesIds
- mov r9, r2
-_08072AB2:
- mov r1, r9
- adds r0, r6, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- ldrb r4, [r1, 0x6]
- ldrh r3, [r1, 0x38]
- lsls r3, 24
- lsrs r3, 24
- ldrb r2, [r1, 0x5]
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1, 0x5]
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- add r1, r12
- ldrb r2, [r1, 0x5]
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1, 0x5]
- lsls r1, r3, 4
- adds r1, r3
- lsls r1, 2
- add r1, r12
- ldrb r2, [r1, 0x5]
- adds r0, r7, 0
- ands r0, r2
- orrs r0, r5
- strb r0, [r1, 0x5]
- adds r6, 0x1
- mov r2, r8
- ldrb r2, [r2]
- cmp r6, r2
- blt _08072AB2
-_08072B00:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8072A88
-
- thumb_func_start sub_8072B18
-sub_8072B18: @ 8072B18
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- movs r4, 0
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- bne _08072B44
- adds r0, r6, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08072B3E
- movs r5, 0x2C
- movs r4, 0x1E
- b _08072B7C
-_08072B3E:
- movs r5, 0x9E
- movs r4, 0x58
- b _08072B7C
-_08072B44:
- adds r0, r6, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08072B72
- cmp r0, 0x1
- bgt _08072B5C
- cmp r0, 0
- beq _08072B66
- b _08072B7C
-_08072B5C:
- cmp r0, 0x2
- beq _08072B6C
- cmp r0, 0x3
- beq _08072B78
- b _08072B7C
-_08072B66:
- movs r5, 0x9F
- movs r4, 0x4C
- b _08072B7C
-_08072B6C:
- movs r5, 0xAB
- movs r4, 0x65
- b _08072B7C
-_08072B72:
- movs r5, 0x2C
- movs r4, 0x13
- b _08072B7C
-_08072B78:
- movs r5, 0x20
- movs r4, 0x2C
-_08072B7C:
- ldr r0, =gHealthBoxesIds
- adds r0, r6, r0
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8072A24
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8072B18
-
- thumb_func_start healthbar_draw_level
-healthbar_draw_level: @ 8072B94
- push {r4,r5,lr}
- sub sp, 0x18
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- add r2, sp, 0x4
- movs r0, 0xF9
- strb r0, [r2]
- movs r0, 0x5
- strb r0, [r2, 0x1]
- mov r0, sp
- adds r0, 0x6
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r1, r0, 0
- subs r1, 0x2
- add r0, sp, 0x4
- subs r1, r0
- movs r0, 0x3
- subs r0, r1
- lsls r1, r0, 2
- adds r1, r0
- add r0, sp, 0x14
- str r0, [sp]
- add r0, sp, 0x4
- movs r2, 0x3
- movs r3, 0x2
- bl write_to_rbox
- adds r5, r0, 0
- ldr r0, =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x4]
- lsls r0, 22
- lsrs r4, r0, 17
- ldrh r0, [r1, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072C18
- bl battle_type_is_double
- lsls r0, 24
- ldr r2, =0x06010420
- adds r1, r4, r2
- cmp r0, 0
- bne _08072C1C
- ldr r0, =0x06010820
- adds r1, r4, r0
- b _08072C1C
- .pool
-_08072C18:
- ldr r2, =0x06010400
- adds r1, r4, r2
-_08072C1C:
- adds r0, r1, 0
- adds r1, r5, 0
- movs r2, 0x3
- bl sub_8075198
- ldr r0, [sp, 0x14]
- bl sub_807512C
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end healthbar_draw_level
-
- thumb_func_start heathbar_draw_hp
-heathbar_draw_hp: @ 8072C38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r1, =gSprites
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r4, r0, r1
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072D10
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- bne _08072D10
- ldrh r0, [r4, 0x4]
- lsls r0, 22
- lsrs r5, r0, 17
- mov r0, r8
- cmp r0, 0
- beq _08072CB8
- mov r2, r9
- lsls r1, r2, 16
- asrs r1, 16
- add r0, sp, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r0, sp, 0x24
- str r0, [sp]
- add r0, sp, 0x4
- movs r1, 0
- movs r2, 0x5
- movs r3, 0x2
- bl write_to_rbox
- adds r4, r0, 0
- ldr r1, =0x06010b40
- adds r0, r5, r1
- adds r1, r4, 0
- b _08072CF8
- .pool
-_08072CB8:
- mov r2, r9
- lsls r1, r2, 16
- asrs r1, 16
- add r0, sp, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r1, sp, 0x4
- movs r0, 0xBA
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- add r0, sp, 0x24
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0x4
- movs r2, 0x5
- movs r3, 0x2
- bl write_to_rbox
- adds r4, r0, 0
- ldr r1, =0x060103e0
- adds r0, r5, r1
- adds r1, r4, 0
- movs r2, 0x1
- bl sub_8075170
- ldr r2, =0x06010b00
- adds r0, r5, r2
- adds r1, r4, 0
- adds r1, 0x20
-_08072CF8:
- movs r2, 0x2
- bl sub_8075170
- ldr r0, [sp, 0x24]
- bl sub_807512C
- b _08072DEA
- .pool
-_08072D10:
- ldr r1, =gUnknown_0832C3C4
- add r0, sp, 0x4
- movs r2, 0x14
- bl memcpy
- ldr r1, =gSprites
- lsls r4, r7, 4
- adds r0, r4, r7
- lsls r0, 2
- adds r6, r0, r1
- ldrh r0, [r6, 0x3A]
- lsls r0, 24
- lsrs r5, r0, 24
- bl battle_type_is_double
- lsls r0, 24
- lsrs r0, 24
- mov r10, r4
- cmp r0, 0x1
- beq _08072D46
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08072D60
-_08072D46:
- mov r0, r9
- lsls r1, r0, 16
- asrs r1, 16
- adds r0, r7, 0
- mov r2, r8
- bl sub_8072E0C
- b _08072DEA
- .pool
-_08072D60:
- ldrh r0, [r6, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072D7C
- movs r6, 0x59
- mov r1, r8
- cmp r1, 0
- bne _08072D86
- movs r6, 0x1D
- b _08072D86
-_08072D7C:
- movs r6, 0x30
- mov r2, r8
- cmp r2, 0
- bne _08072D86
- movs r6, 0x14
-_08072D86:
- mov r0, sp
- adds r0, 0xA
- mov r2, r9
- lsls r1, r2, 16
- asrs r1, 16
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, =gBattleSpritesGfx
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x9
- add r2, sp, 0x4
- bl RenderTextFont9
- movs r4, 0
- ldr r1, =gSprites
- mov r2, r10
- adds r0, r2, r7
- lsls r0, 2
- adds r5, r0, r1
-_08072DB8:
- ldr r0, =gBattleSpritesGfx
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- lsls r1, r4, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r6
- adds r1, r4
- lsls r1, 5
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _08072DB8
-_08072DEA:
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end heathbar_draw_hp
-
- thumb_func_start sub_8072E0C
-sub_8072E0C: @ 8072E0C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r4, r1, 16
- mov r10, r4
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- ldr r5, =gSprites
- lsls r0, 4
- add r0, r9
- lsls r0, 2
- adds r7, r0, r5
- ldrh r0, [r7, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08072F28
- ldr r0, =gUnknown_020244D0
- ldr r1, [r0]
- movs r2, 0x3A
- ldrsh r0, [r7, r2]
- ldr r1, [r1]
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08072E5E
- b _080730B8
-_08072E5E:
- movs r3, 0x38
- ldrsh r1, [r7, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r0, [r0, 0x4]
- lsls r0, 22
- lsrs r5, r0, 17
- ldr r0, =0x06010000
- adds r6, r5, r0
- mov r0, r8
- cmp r0, 0
- beq _08072EDC
- lsls r1, r4, 16
- asrs r1, 16
- add r0, sp, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r0, sp, 0x28
- str r0, [sp]
- add r0, sp, 0x4
- movs r1, 0
- movs r2, 0x5
- movs r3, 0
- bl write_to_rbox
- adds r4, r0, 0
- ldr r1, =0x060100c0
- adds r0, r5, r1
- adds r1, r4, 0
- movs r2, 0x2
- bl sub_8075170
- ldr r0, [sp, 0x28]
- bl sub_807512C
- movs r0, 0x74
- bl sub_80728A4
- ldrh r1, [r7, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, =0x06010680
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- b _080730B8
- .pool
-_08072EDC:
- lsls r1, r4, 16
- asrs r1, 16
- add r0, sp, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- add r1, sp, 0x4
- movs r0, 0xBA
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- add r0, sp, 0x28
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0x4
- movs r2, 0x5
- movs r3, 0
- bl write_to_rbox
- adds r4, r0, 0
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0x3
- bl sub_807513C
- ldr r3, =0x06010060
- adds r0, r5, r3
- adds r1, r4, 0
- movs r2, 0x3
- bl sub_8075170
- ldr r0, [sp, 0x28]
- bl sub_807512C
- b _080730B8
- .pool
-_08072F28:
- ldr r1, =gUnknown_0832C3D8
- add r0, sp, 0x4
- movs r2, 0x14
- bl memcpy
- ldrh r0, [r7, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x2C]
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r2, [sp, 0x2C]
- lsls r0, r2, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08072F52
- b _080730B8
-_08072F52:
- movs r6, 0x4
- mov r3, r8
- negs r0, r3
- orrs r0, r3
- asrs r0, 31
- ands r6, r0
- ldrh r0, [r7, 0x38]
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, sp
- adds r0, 0xA
- mov r2, r10
- lsls r1, r2, 16
- asrs r1, 16
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r3, r8
- cmp r3, 0
- bne _08072F82
- ldr r1, =gText_Slash
- bl StringCopy
-_08072F82:
- ldr r0, =gBattleSpritesGfx
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x9
- add r2, sp, 0x4
- bl RenderTextFont9
- adds r4, r6, 0
- adds r0, r4, 0x3
- cmp r4, r0
- bge _08073024
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r5, r0, r5
-_08072FA6:
- cmp r4, 0x2
- bhi _08072FF0
- ldr r0, =gBattleSpritesGfx
- ldr r0, [r0]
- movs r2, 0xBA
- lsls r2, 1
- adds r0, r2
- subs r1, r4, r6
- lsls r1, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r4, 0x1
- adds r1, r4
- lsls r1, 5
- ldr r3, =0x06010000
- adds r1, r3
- ldr r2, =0x04000008
- bl CpuSet
- b _0807301A
- .pool
-_08072FF0:
- ldr r0, =gBattleSpritesGfx
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- subs r1, r4, r6
- lsls r1, 6
- adds r1, 0x20
- ldr r0, [r0]
- adds r0, r1
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r4, r1
- lsls r1, 5
- ldr r2, =0x06010020
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- adds r4, 0x1
-_0807301A:
- lsls r0, r4, 24
- lsrs r4, r0, 24
- adds r0, r6, 0x3
- cmp r4, r0
- blt _08072FA6
-_08073024:
- mov r3, r8
- cmp r3, 0
- bne _08073084
- ldr r0, =gBattleSpritesGfx
- ldr r0, [r0]
- movs r1, 0xBA
- lsls r1, 1
- adds r0, r1
- ldr r0, [r0]
- adds r0, 0xE0
- ldr r1, =gSprites
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- adds r4, r1
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, 0x80
- ldr r5, =0x06010000
- adds r1, r5
- ldr r2, =0x04000008
- bl CpuSet
- mov r2, r8
- str r2, [sp, 0x24]
- add r0, sp, 0x24
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, r5
- ldr r2, =0x05000008
- bl CpuSet
- b _080730B8
- .pool
-_08073084:
- ldr r0, [sp, 0x2C]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080730B8
- movs r0, 0x74
- bl sub_80728A4
- ldr r2, =gSprites
- mov r3, r9
- lsls r1, r3, 4
- add r1, r9
- lsls r1, 2
- adds r1, r2
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- movs r2, 0xD0
- lsls r2, 3
- adds r1, r2
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
-_080730B8:
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8072E0C
-
- thumb_func_start sub_80730D4
-sub_80730D4: @ 80730D4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- ldr r1, =gUnknown_0832C3C4
- mov r0, sp
- movs r2, 0x14
- bl memcpy
- ldr r1, =gSprites
- ldr r2, [sp, 0x14]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankIdentity
- ldr r1, =gBattleSpritesGfx
- ldr r2, [r1]
- movs r3, 0xBA
- lsls r3, 1
- adds r2, r3
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 7
- movs r0, 0xA4
- lsls r0, 3
- adds r1, r0
- ldr r0, [r2]
- adds r6, r0, r1
- movs r1, 0x5
- mov r8, r1
- adds r0, r4, 0
- bl GetNature
- lsls r0, 24
- mov r4, sp
- adds r4, 0x6
- ldr r1, =gNatureNamePointers
- lsrs r0, 22
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringCopy
- adds r0, r6, 0
- movs r1, 0x9
- mov r2, sp
- bl RenderTextFont9
- movs r7, 0x6
- movs r5, 0
- mov r2, sp
- adds r2, 0x9
- str r2, [sp, 0x1C]
-_08073158:
- mov r3, sp
- adds r0, r3, r7
- ldrb r1, [r0]
- adds r0, r1, 0
- subs r0, 0x37
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bls _08073176
- adds r0, r1, 0
- adds r0, 0x79
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _0807318C
-_08073176:
- movs r0, 0x2C
- b _080731AA
- .pool
-_0807318C:
- adds r0, r1, 0
- subs r0, 0x4B
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _080731A4
- adds r0, r1, 0
- adds r0, 0x65
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080731A8
-_080731A4:
- movs r0, 0x2D
- b _080731AA
-_080731A8:
- movs r0, 0x2B
-_080731AA:
- bl sub_80728A4
- lsls r1, r5, 6
- adds r1, r6, r1
- ldr r2, =0x04000008
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, 0x1
- cmp r5, r8
- bcc _08073158
- movs r7, 0x1
- ldr r0, [sp, 0x14]
- lsls r0, 4
- str r0, [sp, 0x18]
- movs r1, 0x1
- add r1, r8
- mov r9, r1
- cmp r7, r9
- bge _08073236
- ldr r1, =gSprites
- ldr r2, =0x04000008
- mov r10, r2
- ldr r3, [sp, 0x14]
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- mov r8, r0
-_080731E6:
- mov r1, r8
- ldrh r0, [r1, 0x4]
- lsls r0, 22
- lsrs r0, 22
- adds r5, r7, 0
- cmp r7, 0
- bge _080731F6
- adds r5, r7, 0x7
-_080731F6:
- asrs r5, 3
- lsls r4, r5, 3
- subs r4, r7, r4
- adds r0, r4
- lsls r5, 6
- adds r0, r5
- lsls r0, 5
- ldr r2, =0x06010000
- adds r1, r0, r2
- adds r0, r6, 0
- mov r2, r10
- bl CpuSet
- adds r6, 0x20
- mov r3, r8
- ldrh r0, [r3, 0x4]
- lsls r0, 22
- lsrs r0, 22
- adds r4, 0x8
- adds r0, r4
- adds r0, r5
- lsls r0, 5
- ldr r2, =0x06010000
- adds r1, r0, r2
- adds r0, r6, 0
- mov r2, r10
- bl CpuSet
- adds r6, 0x20
- adds r7, 0x1
- cmp r7, r9
- blt _080731E6
-_08073236:
- ldr r6, =gSprites
- ldr r3, [sp, 0x18]
- ldr r1, [sp, 0x14]
- adds r0, r3, r1
- lsls r0, 2
- adds r0, r6
- ldrh r4, [r0, 0x38]
- lsls r4, 24
- lsrs r4, 24
- ldr r5, =gBattleStruct
- ldr r0, [r5]
- adds r0, 0x7C
- ldrb r1, [r0]
- mov r0, sp
- adds r0, 0x6
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r5]
- adds r0, 0x7B
- ldrb r1, [r0]
- ldr r0, [sp, 0x1C]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r1, sp
- movs r0, 0
- strb r0, [r1, 0x5]
- movs r0, 0xBA
- strb r0, [r1, 0x8]
- ldr r5, =gBattleSpritesGfx
- ldr r0, [r5]
- movs r2, 0xBA
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0x9
- mov r2, sp
- bl RenderTextFont9
- movs r7, 0
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r6, r0, r6
- movs r4, 0x20
-_08073296:
- cmp r7, 0x1
- bgt _080732D4
- ldr r0, [r5]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- ldr r0, [r0]
- adds r0, r4
- ldrh r1, [r6, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r2, r7, 0x2
- adds r1, r2
- lsls r1, 5
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- b _080732F4
- .pool
-_080732D4:
- ldr r0, [r5]
- movs r3, 0xBA
- lsls r3, 1
- adds r0, r3
- ldr r0, [r0]
- adds r0, r4
- ldrh r1, [r6, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r7, r1
- lsls r1, 5
- ldr r2, =0x060100c0
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
-_080732F4:
- adds r4, 0x40
- adds r7, 0x1
- cmp r7, 0x4
- ble _08073296
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80730D4
-
- thumb_func_start sub_8073314
-sub_8073314: @ 8073314
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- mov r9, r0
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r9, r0
- blt _0807332E
- b _080735BA
-_0807332E:
- ldr r1, =gSprites
- mov r10, r1
- ldr r2, =gBattlePartyID
- mov r8, r2
-_08073336:
- ldr r0, =gHealthBoxesIds
- mov r1, r9
- adds r6, r1, r0
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r1, r10
- adds r1, 0x1C
- adds r0, r1
- ldr r1, [r0]
- ldr r0, =SpriteCallbackDummy
- cmp r1, r0
- beq _08073354
- b _080735A8
-_08073354:
- mov r2, r9
- lsls r0, r2, 24
- lsrs r7, r0, 24
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0807336A
- b _080735A8
-_0807336A:
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- bne _08073382
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08073382
- b _080735A8
-_08073382:
- ldr r5, =gUnknown_020244D0
- ldr r0, [r5]
- ldr r3, [r0]
- mov r0, r9
- lsls r4, r0, 2
- adds r3, r4, r3
- ldr r0, [r3]
- lsls r0, 27
- lsrs r0, 31
- movs r2, 0x1
- eors r2, r0
- lsls r2, 4
- mov r12, r2
- ldrb r0, [r3]
- movs r2, 0x11
- negs r2, r2
- adds r1, r2, 0
- ands r0, r1
- mov r1, r12
- orrs r0, r1
- strb r0, [r3]
- ldr r0, [r5]
- ldr r0, [r0]
- adds r4, r0
- ldr r0, [r4]
- lsls r0, 27
- lsrs r4, r0, 31
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080734B0
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- bne _080733D0
- b _080735A8
-_080733D0:
- ldr r0, =gBattleTypeFlags
- ldr r2, [r0]
- movs r0, 0x80
- ands r2, r0
- cmp r2, 0
- beq _080733DE
- b _080735A8
-_080733DE:
- cmp r4, 0x1
- bne _08073468
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r0, [r0, 0x38]
- lsls r0, 24
- lsrs r1, r0, 24
- str r2, [sp]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, =0x06010000
- adds r1, r2
- mov r0, sp
- ldr r2, =0x05000040
- bl CpuSet
- ldrb r4, [r6]
- mov r1, r8
- ldrh r0, [r1]
- movs r2, 0x64
- muls r0, r2
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- bl sub_8072E0C
- ldrb r4, [r6]
- mov r2, r8
- ldrh r0, [r2]
- movs r1, 0x64
- muls r0, r1
- ldr r2, =gPlayerParty
- b _08073536
- .pool
-_08073468:
- ldrb r0, [r6]
- bl draw_status_ailment_maybe
- ldrb r0, [r6]
- mov r2, r8
- ldrh r1, [r2]
- movs r2, 0x64
- muls r1, r2
- ldr r2, =gPlayerParty
- adds r1, r2
- movs r2, 0x5
- bl healthbar_draw_field_maybe
- movs r0, 0x75
- bl sub_80728A4
- ldrb r2, [r6]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r10
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, =0x06010680
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- b _08073592
- .pool
-_080734B0:
- cmp r4, 0x1
- bne _0807355C
- ldr r0, =gBattleTypeFlags
- ldr r2, [r0]
- movs r0, 0x80
- ands r2, r0
- cmp r2, 0
- beq _080734DC
- ldrb r0, [r6]
- mov r2, r8
- ldrh r1, [r2]
- movs r2, 0x64
- muls r1, r2
- ldr r2, =gEnemyParty
- adds r1, r2
- bl sub_80730D4
- b _08073592
- .pool
-_080734DC:
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r0, [r0, 0x38]
- lsls r0, 24
- lsrs r1, r0, 24
- str r2, [sp]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r0, =0x06010000
- adds r1, r0
- mov r0, sp
- ldr r2, =0x05000040
- bl CpuSet
- ldrb r4, [r6]
- mov r1, r8
- ldrh r0, [r1]
- movs r2, 0x64
- muls r0, r2
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- bl sub_8072E0C
- ldrb r4, [r6]
- mov r2, r8
- ldrh r0, [r2]
- movs r1, 0x64
- muls r0, r1
- ldr r2, =gEnemyParty
-_08073536:
- adds r0, r2
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r4, 0
- movs r2, 0x1
- bl sub_8072E0C
- b _08073592
- .pool
-_0807355C:
- ldrb r0, [r6]
- bl draw_status_ailment_maybe
- ldrb r0, [r6]
- mov r2, r8
- ldrh r1, [r2]
- movs r5, 0x64
- muls r1, r5
- ldr r4, =gEnemyParty
- adds r1, r4
- movs r2, 0x5
- bl healthbar_draw_field_maybe
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08073592
- ldrb r0, [r6]
- mov r2, r8
- ldrh r1, [r2]
- muls r1, r5
- adds r1, r4
- movs r2, 0x4
- bl healthbar_draw_field_maybe
-_08073592:
- ldr r0, =gHealthBoxesIds
- add r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrh r1, [r0, 0x3C]
- movs r2, 0x1
- eors r1, r2
- strh r1, [r0, 0x3C]
-_080735A8:
- movs r0, 0x2
- add r8, r0
- movs r1, 0x1
- add r9, r1
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r9, r0
- bge _080735BA
- b _08073336
-_080735BA:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8073314
-
- thumb_func_start sub_80735DC
-sub_80735DC: @ 80735DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- str r1, [sp, 0xC]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- lsls r2, 24
- lsrs r2, 24
- adds r4, r2, 0
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- cmp r4, 0
- beq _0807360C
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0807365C
-_0807360C:
- ldr r0, [sp, 0x8]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08073630
- movs r0, 0
- mov r9, r0
- movs r5, 0x88
- movs r4, 0x60
- movs r1, 0x64
- mov r10, r1
- ldr r2, =0x0000fffb
- mov r8, r2
- b _0807366C
- .pool
-_08073630:
- movs r3, 0x1
- mov r9, r3
- cmp r4, 0
- beq _08073642
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- bne _08073648
-_08073642:
- movs r5, 0x68
- movs r4, 0x28
- b _0807364C
-_08073648:
- movs r5, 0x68
- movs r4, 0x10
-_0807364C:
- ldr r6, =0x0000ff9c
- mov r10, r6
- movs r0, 0x5
- mov r8, r0
- b _0807366C
- .pool
-_0807365C:
- movs r1, 0x1
- mov r9, r1
- movs r5, 0x68
- movs r4, 0x28
- ldr r2, =0x0000ff9c
- mov r10, r2
- movs r3, 0x5
- mov r8, r3
-_0807366C:
- ldr r0, =gUnknown_0832C334
- bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_0832C34C
- bl LoadSpriteSheet
- ldr r0, =gUnknown_0832C33C
- bl LoadSpritePalette
- ldr r0, =gUnknown_0832C344
- bl LoadSpritePalette
- mov r0, r9
- lsls r6, r0, 1
- adds r0, r6, r0
- lsls r0, 3
- ldr r1, =gUnknown_0832C364
- adds r0, r1
- lsls r5, 16
- asrs r1, r5, 16
- lsls r4, 16
- asrs r2, r4, 16
- movs r3, 0xA
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- lsls r0, 4
- ldr r1, [sp, 0x14]
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r7, r0, r1
- ldr r1, =gUnknown_0832C2C4
- adds r0, r7, 0
- bl SetSubspriteTables
- mov r2, r10
- strh r2, [r7, 0x24]
- mov r3, r8
- strh r3, [r7, 0x2E]
- str r5, [sp, 0x1C]
- str r4, [sp, 0x20]
- mov r5, r9
- cmp r5, 0
- beq _08073700
- ldrh r0, [r7, 0x20]
- subs r0, 0x60
- strh r0, [r7, 0x20]
- ldrb r1, [r7, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r7, 0x3]
- b _08073706
- .pool
-_08073700:
- ldrh r0, [r7, 0x20]
- adds r0, 0x60
- strh r0, [r7, 0x20]
-_08073706:
- movs r0, 0
- mov r8, r0
- ldr r1, =gSprites
- mov r10, r1
- mov r7, sp
- mov r2, r9
- adds r0, r6, r2
- lsls r0, 3
- str r0, [sp, 0x18]
- movs r6, 0xA
- movs r5, 0
-_0807371C:
- ldr r0, =gUnknown_0832C394
- ldr r3, [sp, 0x20]
- ldr r1, =0xfffc0000
- adds r2, r3, r1
- ldr r3, [sp, 0x18]
- adds r0, r3, r0
- ldr r3, [sp, 0x1C]
- asrs r1, r3, 16
- asrs r2, 16
- movs r3, 0x9
- bl CreateSpriteAtEnd
- strb r0, [r7]
- ldr r0, [sp, 0x10]
- cmp r0, 0
- bne _0807374C
- ldrb r0, [r7]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r2, =gSprites + 0x1C
- adds r1, r2
- ldr r0, =sub_80741C8
- str r0, [r1]
-_0807374C:
- ldr r4, =gSprites
- mov r3, r9
- cmp r3, 0
- bne _0807376E
- ldrb r1, [r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- strh r3, [r0, 0x24]
- ldrb r1, [r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r10
- mov r1, r9
- strh r1, [r0, 0x26]
-_0807376E:
- ldrb r1, [r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0
- mov r2, sp
- ldrh r2, [r2, 0x14]
- strh r2, [r0, 0x2E]
- mov r3, r9
- cmp r3, 0
- bne _080737C8
- ldrb r0, [r7]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x20]
- adds r0, 0x18
- adds r0, r5
- strh r0, [r1, 0x20]
- ldrb r1, [r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r6, [r0, 0x30]
- ldrb r1, [r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x78
- b _0807380A
- .pool
-_080737C8:
- ldrb r0, [r7]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- ldrh r3, [r2, 0x20]
- subs r3, 0x18
- movs r1, 0x5
- mov r0, r8
- subs r1, r0
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- subs r3, r0
- strh r3, [r2, 0x20]
- ldrb r0, [r7]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r4
- movs r1, 0x6
- mov r3, r8
- subs r1, r3
- lsls r0, r1, 3
- subs r0, r1
- adds r0, 0xA
- strh r0, [r2, 0x30]
- ldrb r1, [r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, =0x0000ff88
-_0807380A:
- strh r1, [r0, 0x24]
- ldrb r1, [r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r1, r9
- strh r1, [r0, 0x32]
- adds r7, 0x1
- adds r6, 0x7
- adds r5, 0xA
- movs r2, 0x1
- add r8, r2
- mov r3, r8
- cmp r3, 0x5
- bgt _0807382C
- b _0807371C
-_0807382C:
- ldr r0, [sp, 0x8]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0807383A
- b _080739E8
-_0807383A:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x40
- ands r1, r2
- cmp r1, 0
- beq _080738F4
- ldr r5, =0x0000ffff
- mov r10, r5
- ldr r6, =gSprites
- ldr r0, =0x000003ff
- adds r7, r0, 0
- ldr r1, =0xfffffc00
- mov r9, r1
- mov r4, sp
- ldr r5, [sp, 0xC]
- movs r2, 0x5
- mov r8, r2
-_0807385C:
- ldrh r0, [r5]
- cmp r0, r10
- bne _080738A8
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x1
- ands r1, r7
- mov r0, r9
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- strh r1, [r0, 0x3C]
- b _080738E2
- .pool
-_080738A8:
- cmp r0, 0
- bne _080738C0
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _080738D8
-_080738C0:
- ldr r0, [r5, 0x4]
- cmp r0, 0
- beq _080738E2
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x2
-_080738D8:
- ands r1, r7
- mov r0, r9
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
-_080738E2:
- adds r4, 0x1
- adds r5, 0x8
- movs r3, 0x1
- negs r3, r3
- add r8, r3
- mov r0, r8
- cmp r0, 0
- bge _0807385C
- b _08073B9A
-_080738F4:
- movs r1, 0x5
- mov r10, r1
- movs r7, 0
- ldr r2, =gSprites
- mov r8, r2
- ldr r3, =0x000003ff
- mov r9, r3
- ldr r5, =0xfffffc00
- mov r12, r5
- ldr r6, [sp, 0xC]
- mov r5, sp
-_0807390A:
- ldrh r0, [r6]
- ldr r1, =0x0000ffff
- cmp r0, r1
- bne _08073958
- mov r4, sp
- add r4, r10
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r8
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x1
- mov r0, r9
- ands r1, r0
- mov r0, r12
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x1
- strh r1, [r0, 0x3C]
- subs r1, 0x2
- add r10, r1
- b _080739DE
- .pool
-_08073958:
- cmp r0, 0
- bne _08073970
- ldrb r0, [r5]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r8
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _080739D0
-_08073970:
- ldr r1, =gBattleTypeFlags
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _080739B8
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- movs r2, 0xA8
- lsls r2, 2
- adds r0, r2
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r7, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _080739B8
- ldrb r0, [r5]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r8
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _080739D0
- .pool
-_080739B8:
- ldr r0, [r6, 0x4]
- cmp r0, 0
- beq _080739DC
- ldrb r0, [r5]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r8
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x2
-_080739D0:
- mov r0, r9
- ands r1, r0
- mov r0, r12
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
-_080739DC:
- adds r5, 0x1
-_080739DE:
- adds r6, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _0807390A
- b _08073B9A
-_080739E8:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r2, =0x00008040
- ands r1, r2
- cmp r1, 0
- beq _08073AA4
- ldr r1, =0x0000ffff
- mov r10, r1
- ldr r6, =gSprites
- ldr r2, =0x000003ff
- adds r7, r2, 0
- ldr r3, =0xfffffc00
- mov r9, r3
- ldr r5, [sp, 0xC]
- mov r4, sp
- adds r4, 0x5
- movs r0, 0x5
- mov r8, r0
-_08073A0C:
- ldrh r0, [r5]
- cmp r0, r10
- bne _08073A58
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x1
- ands r1, r7
- mov r0, r9
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- strh r1, [r0, 0x3C]
- b _08073A92
- .pool
-_08073A58:
- cmp r0, 0
- bne _08073A70
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _08073A88
-_08073A70:
- ldr r0, [r5, 0x4]
- cmp r0, 0
- beq _08073A92
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x2
-_08073A88:
- ands r1, r7
- mov r0, r9
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
-_08073A92:
- subs r4, 0x1
- adds r5, 0x8
- movs r1, 0x1
- negs r1, r1
- add r8, r1
- mov r2, r8
- cmp r2, 0
- bge _08073A0C
- b _08073B9A
-_08073AA4:
- movs r3, 0
- mov r8, r3
- movs r7, 0
- ldr r5, =gSprites
- mov r9, r5
- ldr r6, =0x000003ff
- mov r12, r6
- ldr r0, =0xfffffc00
- mov r10, r0
- ldr r6, [sp, 0xC]
- mov r5, sp
- adds r5, 0x5
-_08073ABC:
- ldrh r0, [r6]
- ldr r1, =0x0000ffff
- cmp r0, r1
- bne _08073B08
- mov r4, sp
- add r4, r8
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r9
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x1
- mov r0, r12
- ands r1, r0
- mov r0, r10
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- movs r1, 0x1
- strh r1, [r0, 0x3C]
- add r8, r1
- b _08073B92
- .pool
-_08073B08:
- cmp r0, 0
- bne _08073B20
- ldrb r0, [r5]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r9
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _08073B84
-_08073B20:
- ldr r1, =gBattleTypeFlags
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- beq _08073B6C
- ldr r2, =gBattleStruct
- ldr r0, [r2]
- ldr r3, =0x000002a1
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r7, 2
- ldr r2, =gBitTable
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08073B6C
- ldrb r0, [r5]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r9
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x3
- b _08073B84
- .pool
-_08073B6C:
- ldr r0, [r6, 0x4]
- cmp r0, 0
- beq _08073B90
- ldrb r0, [r5]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r9
- ldrh r3, [r2, 0x4]
- lsls r1, r3, 22
- lsrs r1, 22
- adds r1, 0x2
-_08073B84:
- mov r0, r12
- ands r1, r0
- mov r0, r10
- ands r0, r3
- orrs r0, r1
- strh r0, [r2, 0x4]
-_08073B90:
- subs r5, 0x1
-_08073B92:
- adds r6, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _08073ABC
-_08073B9A:
- ldr r0, =TaskDummy
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, =gTasks
- lsls r3, r4, 2
- adds r1, r3, r4
- lsls r1, 3
- adds r0, r1, r2
- mov r5, sp
- ldrh r5, [r5, 0x8]
- strh r5, [r0, 0x8]
- mov r6, sp
- ldrh r6, [r6, 0x14]
- strh r6, [r0, 0xA]
- movs r0, 0
- mov r8, r0
- adds r0, r2, 0
- adds r0, 0xE
- adds r1, r0
-_08073BC6:
- mov r0, sp
- add r0, r8
- ldrb r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- movs r5, 0x1
- add r8, r5
- mov r6, r8
- cmp r6, 0x5
- ble _08073BC6
- adds r0, r3, r4
- lsls r0, 3
- adds r0, r2
- mov r1, sp
- ldrh r1, [r1, 0x10]
- strh r1, [r0, 0x1C]
- ldr r2, [sp, 0x10]
- cmp r2, 0
- beq _08073C0A
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r3, [r0, 0x8]
- ldrb r2, [r3, 0x9]
- lsls r1, r2, 27
- lsrs r1, 29
- adds r1, 0x1
- movs r0, 0x7
- ands r1, r0
- lsls r1, 2
- movs r0, 0x1D
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x9]
-_08073C0A:
- movs r0, 0x72
- movs r1, 0
- bl PlaySE12WithPanning
- adds r0, r4, 0
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80735DC
-
- thumb_func_start sub_8073C30
-sub_8073C30: @ 8073C30
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r2, =gTasks
- lsls r3, r0, 2
- adds r1, r3, r0
- lsls r1, 3
- adds r0, r1, r2
- ldrb r7, [r0, 0x1C]
- ldrb r4, [r0, 0xA]
- mov r10, r4
- ldrb r0, [r0, 0x8]
- str r0, [sp, 0x8]
- movs r5, 0
- str r3, [sp, 0xC]
- adds r2, 0xE
- adds r2, r1, r2
-_08073C5E:
- mov r0, sp
- adds r1, r0, r5
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r5, 0x1
- cmp r5, 0x5
- ble _08073C5E
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x10
- bl SetGpuReg
- ldr r1, =gTasks
- ldr r0, [sp, 0xC]
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0x10
- strh r1, [r0, 0x26]
- movs r5, 0
- mov r1, r10
- lsls r1, 4
- str r1, [sp, 0x10]
- ldr r3, =gSprites
- movs r6, 0xD
- negs r6, r6
- mov r12, r3
- movs r4, 0x4
-_08073CA0:
- mov r2, sp
- adds r0, r2, r5
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r1, 0x1]
- adds r0, r6, 0
- ands r0, r2
- orrs r0, r4
- strb r0, [r1, 0x1]
- adds r5, 0x1
- cmp r5, 0x5
- ble _08073CA0
- ldr r2, [sp, 0x10]
- add r2, r10
- lsls r2, 2
- add r2, r12
- ldrb r1, [r2, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x1]
- cmp r7, 0
- bne _08073CDA
- b _08073DE0
-_08073CDA:
- movs r5, 0
- mov r6, r12
- mov r9, r5
- adds r3, r6, 0
- adds r3, 0x1C
- mov r4, sp
- movs r7, 0
-_08073CE8:
- ldr r0, [sp, 0x8]
- str r3, [sp, 0x14]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r3, [sp, 0x14]
- cmp r2, 0
- beq _08073D4C
- movs r0, 0x5
- subs r0, r5
- mov r1, sp
- adds r2, r1, r0
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r7, [r0, 0x30]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r9
- strh r1, [r0, 0x34]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r9
- strh r1, [r0, 0x36]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, =sub_8074158
- str r1, [r0]
- ldr r2, =gSprites
- mov r12, r2
- b _08073D82
- .pool
-_08073D4C:
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r7, [r0, 0x30]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x34]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- strh r2, [r0, 0x36]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, =sub_8074158
- str r1, [r0]
- ldr r0, =gSprites
- mov r12, r0
-_08073D82:
- adds r4, 0x1
- adds r7, 0x7
- adds r5, 0x1
- cmp r5, 0x5
- ble _08073CE8
- ldr r3, [sp, 0x10]
- add r3, r10
- lsls r3, 2
- mov r1, r12
- adds r0, r3, r1
- movs r2, 0x2E
- ldrsh r1, [r0, r2]
- lsrs r2, r1, 31
- adds r1, r2
- asrs r1, 1
- movs r2, 0
- strh r1, [r0, 0x2E]
- strh r2, [r0, 0x30]
- mov r1, r12
- adds r1, 0x1C
- adds r3, r1
- ldr r1, =sub_8074090
- str r1, [r3]
- ldr r1, =gUnknown_0832C2CC
- bl SetSubspriteTables
- ldr r1, =gTasks
- ldr r0, [sp, 0xC]
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, =task_battle_throw_own_ball
- str r1, [r0]
- b _08073DEE
- .pool
-_08073DE0:
- ldr r0, =gTasks
- ldr r1, [sp, 0xC]
- add r1, r8
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8073F98
- str r0, [r1]
-_08073DEE:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8073C30
-
- thumb_func_start task_battle_throw_own_ball
-task_battle_throw_own_ball: @ 8073E08
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x1E]
- adds r1, r0, 0x1
- strh r1, [r4, 0x1E]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08073E48
- ldrh r0, [r4, 0x26]
- subs r1, r0, 0x1
- strh r1, [r4, 0x26]
- lsls r0, r1, 16
- cmp r0, 0
- blt _08073E54
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
-_08073E48:
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08073E54
- ldr r0, =sub_8073E64
- str r0, [r4]
-_08073E54:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_battle_throw_own_ball
-
- thumb_func_start sub_8073E64
-sub_8073E64: @ 8073E64
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r7, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r3, r0, 3
- adds r4, r3, r7
- ldrb r2, [r4, 0x8]
- ldrh r0, [r4, 0x26]
- subs r0, 0x1
- strh r0, [r4, 0x26]
- lsls r0, 16
- asrs r1, r0, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _08073F54
- ldrb r5, [r4, 0xA]
- movs r4, 0
- ldr r6, =gUnknown_020244D0
- adds r0, r7, 0
- adds r0, 0xE
- adds r2, r3, r0
-_08073E96:
- mov r0, sp
- adds r1, r0, r4
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r4, 0x1
- cmp r4, 0x5
- ble _08073E96
- ldr r0, [r6]
- ldr r3, [r0, 0x8]
- ldrb r2, [r3, 0x9]
- lsls r1, r2, 27
- lsrs r1, 29
- subs r1, 0x1
- movs r0, 0x7
- ands r1, r0
- lsls r1, 2
- movs r0, 0x1D
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x9]
- ldr r0, [r6]
- ldr r0, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- movs r0, 0x1C
- ands r0, r1
- cmp r0, 0
- bne _08073EFC
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r4, =gSprites
- adds r0, r4
- bl DestroySpriteAndFreeResources
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySpriteAndFreeResources
- b _08073F32
- .pool
-_08073EFC:
- lsls r4, r5, 4
- adds r4, r5
- lsls r4, 2
- ldr r5, =gSprites
- adds r4, r5
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl FreeSpriteOamMatrix
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
-_08073F32:
- movs r4, 0x1
- ldr r5, =gSprites
-_08073F36:
- mov r1, sp
- adds r0, r1, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- adds r4, 0x1
- cmp r4, 0x5
- ble _08073F36
- b _08073F8A
- .pool
-_08073F54:
- movs r0, 0x3
- negs r0, r0
- cmp r1, r0
- bne _08073F8A
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r5, 0
- bl DestroyTask
-_08073F8A:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8073E64
-
- thumb_func_start sub_8073F98
-sub_8073F98: @ 8073F98
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r7, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r6, r0, 3
- adds r3, r6, r7
- ldrb r5, [r3, 0x8]
- ldrh r0, [r3, 0x26]
- subs r1, r0, 0x1
- strh r1, [r3, 0x26]
- lsls r0, r1, 16
- asrs r2, r0, 16
- cmp r2, 0
- blt _08073FD4
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x52
- bl SetGpuReg
- b _0807406A
- .pool
-_08073FD4:
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- bne _08074034
- ldrb r3, [r3, 0xA]
- movs r5, 0
- adds r0, r7, 0
- adds r0, 0xE
- adds r2, r6, r0
-_08073FE6:
- mov r0, sp
- adds r1, r0, r5
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r5, 0x1
- cmp r5, 0x5
- ble _08073FE6
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 2
- ldr r4, =gSprites
- adds r0, r4
- bl DestroySpriteAndFreeResources
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySpriteAndFreeResources
- movs r5, 0x1
-_08074016:
- mov r1, sp
- adds r0, r1, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- adds r5, 0x1
- cmp r5, 0x5
- ble _08074016
- b _0807406A
- .pool
-_08074034:
- movs r0, 0x3
- negs r0, r0
- cmp r2, r0
- bne _0807406A
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- adds r0, r4, 0
- bl DestroyTask
-_0807406A:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8073F98
-
- thumb_func_start sub_8074078
-sub_8074078: @ 8074078
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1, 0x24]
- movs r3, 0x24
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0807408C
- ldrh r0, [r1, 0x2E]
- adds r0, r2, r0
- strh r0, [r1, 0x24]
-_0807408C:
- pop {r0}
- bx r0
- thumb_func_end sub_8074078
-
- thumb_func_start sub_8074090
-sub_8074090: @ 8074090
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r1, r0, 0
- adds r1, 0x20
- strh r1, [r2, 0x30]
- movs r3, 0x2E
- ldrsh r0, [r2, r3]
- cmp r0, 0
- ble _080740AE
- lsls r0, r1, 16
- asrs r0, 20
- ldrh r1, [r2, 0x24]
- adds r0, r1
- b _080740B6
-_080740AE:
- lsls r1, 16
- asrs r1, 20
- ldrh r0, [r2, 0x24]
- subs r0, r1
-_080740B6:
- strh r0, [r2, 0x24]
- ldrh r1, [r2, 0x30]
- movs r0, 0xF
- ands r0, r1
- strh r0, [r2, 0x30]
- pop {r0}
- bx r0
- thumb_func_end sub_8074090
-
- thumb_func_start sub_80740C4
-sub_80740C4: @ 80740C4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _080740D8
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _0807414E
-_080740D8:
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r3, r0, 24
- ldrh r2, [r4, 0x34]
- adds r0, r2, 0
- adds r0, 0x38
- lsls r1, r0, 16
- lsrs r2, r1, 16
- ldr r0, =0x0000fff0
- ands r2, r0
- strh r2, [r4, 0x34]
- cmp r3, 0
- beq _0807410C
- lsrs r0, r1, 20
- ldrh r1, [r4, 0x24]
- adds r0, r1
- strh r0, [r4, 0x24]
- lsls r0, 16
- cmp r0, 0
- ble _0807411C
- movs r0, 0
- strh r0, [r4, 0x24]
- b _0807411C
- .pool
-_0807410C:
- lsrs r1, 20
- ldrh r0, [r4, 0x24]
- subs r0, r1
- strh r0, [r4, 0x24]
- lsls r0, 16
- cmp r0, 0
- bge _0807411C
- strh r3, [r4, 0x24]
-_0807411C:
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0807414E
- movs r1, 0x3F
- cmp r3, 0
- beq _0807412C
- movs r1, 0xC0
-_0807412C:
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _08074140
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x74
- bl PlaySE2WithPanning
- b _0807414A
-_08074140:
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x73
- bl PlaySE1WithPanning
-_0807414A:
- ldr r0, =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_0807414E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80740C4
-
- thumb_func_start sub_8074158
-sub_8074158: @ 8074158
- push {r4,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x30]
- movs r2, 0x30
- ldrsh r0, [r3, r2]
- cmp r0, 0
- ble _0807416C
- subs r0, r1, 0x1
- strh r0, [r3, 0x30]
- b _080741BC
-_0807416C:
- ldrh r0, [r3, 0x32]
- lsls r0, 24
- ldrh r2, [r3, 0x34]
- adds r1, r2, 0
- adds r1, 0x38
- lsls r4, r1, 16
- lsrs r2, r4, 16
- ldr r1, =0x0000fff0
- ands r2, r1
- strh r2, [r3, 0x34]
- cmp r0, 0
- beq _08074190
- lsrs r0, r4, 20
- ldrh r1, [r3, 0x24]
- adds r0, r1
- b _08074196
- .pool
-_08074190:
- lsrs r1, r4, 20
- ldrh r0, [r3, 0x24]
- subs r0, r1
-_08074196:
- strh r0, [r3, 0x24]
- movs r2, 0x24
- ldrsh r0, [r3, r2]
- movs r2, 0x20
- ldrsh r1, [r3, r2]
- adds r0, r1
- adds r0, 0x8
- movs r1, 0x80
- lsls r1, 1
- cmp r0, r1
- bls _080741BC
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, =SpriteCallbackDummy
- str r0, [r3, 0x1C]
-_080741BC:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8074158
-
- thumb_func_start sub_80741C8
-sub_80741C8: @ 80741C8
- ldrh r2, [r0, 0x2E]
- lsls r2, 24
- lsrs r2, 24
- ldr r3, =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- ldrh r2, [r1, 0x24]
- strh r2, [r0, 0x24]
- ldrh r1, [r1, 0x26]
- strh r1, [r0, 0x26]
- bx lr
- .pool
- thumb_func_end sub_80741C8
-
- thumb_func_start sub_80741E8
-sub_80741E8: @ 80741E8
- push {r4-r7,lr}
- sub sp, 0x14
- adds r4, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r5, =gDisplayedStringBattle
- ldr r1, =gText_HighlightDarkGrey
- adds r0, r5, 0
- bl StringCopy
- adds r0, r4, 0
- movs r1, 0x2
- add r2, sp, 0x4
- bl GetMonData
- add r0, sp, 0x4
- bl StringGetEnd10
- adds r0, r5, 0
- add r1, sp, 0x4
- bl StringAppend
- adds r5, r0, 0
- adds r0, r4, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x1D
- beq _08074236
- cmp r0, 0x20
- bne _0807424A
-_08074236:
- movs r0, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- add r0, sp, 0x4
- bl StringCompare
- cmp r0, 0
- bne _0807424A
- movs r6, 0x64
-_0807424A:
- cmp r6, 0
- beq _08074268
- cmp r6, 0xFE
- beq _08074270
- ldr r1, =gText_DynColor2
- b _08074272
- .pool
-_08074268:
- ldr r1, =gText_DynColor2Male
- b _08074272
- .pool
-_08074270:
- ldr r1, =gText_DynColor1Female
-_08074272:
- adds r0, r5, 0
- bl StringCopy
- ldr r0, =gDisplayedStringBattle
- add r1, sp, 0x10
- str r1, [sp]
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl write_to_rbox
- adds r6, r0, 0
- ldr r0, =gSprites
- lsls r1, r7, 4
- adds r1, r7
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x4]
- lsls r0, 22
- lsrs r4, r0, 17
- ldrh r0, [r1, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080742F0
- ldr r1, =0x06010040
- adds r0, r4, r1
- adds r1, r6, 0
- movs r2, 0x6
- bl sub_8075198
- bl battle_type_is_double
- lsls r0, 24
- ldr r1, =0x06010400
- adds r5, r4, r1
- cmp r0, 0
- bne _080742C8
- ldr r0, =0x06010800
- adds r5, r4, r0
-_080742C8:
- adds r1, r6, 0
- adds r1, 0xC0
- adds r0, r5, 0
- movs r2, 0x1
- bl sub_8075198
- b _080742FC
- .pool
-_080742F0:
- ldr r1, =0x06010020
- adds r0, r4, r1
- adds r1, r6, 0
- movs r2, 0x7
- bl sub_8075198
-_080742FC:
- ldr r0, [sp, 0x10]
- bl sub_807512C
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80741E8
-
- thumb_func_start sub_8074310
-sub_8074310: @ 8074310
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _080743E6
- movs r0, 0x8
- ands r1, r0
- cmp r1, 0
- bne _080743E6
- ldr r6, =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r5, r0, r6
- ldrh r0, [r5, 0x3A]
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080743E6
- ldr r1, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetSetPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _080743E6
- ldrh r0, [r5, 0x38]
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r7, 0
- beq _080743C4
- movs r0, 0x46
- bl sub_80728A4
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r6
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- b _080743E6
- .pool
-_080743C4:
- str r7, [sp]
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r6
- ldrh r1, [r0, 0x4]
- lsls r1, 22
- lsrs r1, 17
- movs r0, 0x80
- lsls r0, 1
- adds r1, r0
- ldr r0, =0x06010000
- adds r1, r0
- ldr r2, =0x05000008
- mov r0, sp
- bl CpuSet
-_080743E6:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8074310
-
- thumb_func_start draw_status_ailment_maybe
-draw_status_ailment_maybe: @ 80743F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gSprites
- mov r2, r9
- lsls r1, r2, 4
- add r1, r9
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x3A]
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r0, [r1, 0x38]
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08074468
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x37
- bl GetMonData
- adds r4, r0, 0
- bl battle_type_is_double
- lsls r0, 24
- movs r3, 0x12
- mov r8, r3
- cmp r0, 0
- bne _08074484
- movs r0, 0x1A
- mov r8, r0
- b _08074484
- .pool
-_08074468:
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x37
- bl GetMonData
- adds r4, r0, 0
- movs r1, 0x11
- mov r8, r1
-_08074484:
- movs r0, 0x7
- ands r0, r4
- cmp r0, 0
- beq _080744AC
- movs r0, 0x1B
- adds r1, r7, 0
- bl sub_80746A8
- lsls r0, 24
- lsrs r0, 24
- bl sub_80728A4
- adds r6, r0, 0
- movs r0, 0x2
- b _080745B8
- .pool
-_080744AC:
- movs r0, 0x88
- ands r0, r4
- cmp r0, 0
- beq _080744CA
- movs r0, 0x15
- adds r1, r7, 0
- bl sub_80746A8
- lsls r0, 24
- lsrs r0, 24
- bl sub_80728A4
- adds r6, r0, 0
- movs r0, 0
- b _080745B8
-_080744CA:
- movs r0, 0x10
- ands r0, r4
- cmp r0, 0
- beq _080744E8
- movs r0, 0x21
- adds r1, r7, 0
- bl sub_80746A8
- lsls r0, 24
- lsrs r0, 24
- bl sub_80728A4
- adds r6, r0, 0
- movs r0, 0x4
- b _080745B8
-_080744E8:
- movs r0, 0x20
- ands r0, r4
- cmp r0, 0
- beq _08074506
- movs r0, 0x1E
- adds r1, r7, 0
- bl sub_80746A8
- lsls r0, 24
- lsrs r0, 24
- bl sub_80728A4
- adds r6, r0, 0
- movs r0, 0x3
- b _080745B8
-_08074506:
- movs r0, 0x40
- ands r0, r4
- cmp r0, 0
- beq _08074524
- movs r0, 0x18
- adds r1, r7, 0
- bl sub_80746A8
- lsls r0, 24
- lsrs r0, 24
- bl sub_80728A4
- adds r6, r0, 0
- movs r0, 0x1
- b _080745B8
-_08074524:
- movs r0, 0x27
- bl sub_80728A4
- adds r6, r0, 0
- movs r4, 0
- mov r2, r9
- lsls r0, r2, 4
- mov r3, r8
- lsls r3, 16
- mov r8, r3
- lsls r7, 2
- ldr r1, =gSprites
- add r0, r9
- lsls r0, 2
- adds r5, r0, r1
-_08074542:
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- mov r2, r8
- asrs r0, r2, 16
- adds r1, r0
- adds r1, r4
- lsls r1, 5
- ldr r3, =0x06010000
- adds r1, r3
- adds r0, r6, 0
- ldr r2, =0x04000008
- bl CpuSet
- adds r4, 0x1
- cmp r4, 0x2
- ble _08074542
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, r7, r0
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08074598
- movs r0, 0x1
- bl sub_80728A4
- ldr r2, =gSprites
- mov r3, r10
- lsls r1, r3, 4
- add r1, r10
- lsls r1, 2
- adds r1, r2
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 17
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000010
- bl CpuSet
-_08074598:
- mov r0, r9
- movs r1, 0x1
- bl sub_8074310
- b _0807467A
- .pool
-_080745B8:
- mov r1, r9
- lsls r5, r1, 4
- add r5, r9
- lsls r5, 2
- ldr r2, =gSprites
- adds r5, r2
- ldrb r4, [r5, 0x5]
- lsrs r4, 4
- lsls r4, 4
- adds r4, 0xC
- adds r4, r7
- ldr r1, =gUnknown_0832C3EC
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- movs r3, 0x80
- lsls r3, 1
- adds r1, r4, r3
- movs r2, 0x2
- bl FillPalette
- lsls r4, 1
- ldr r0, =gPlttBufferUnfaded + 0x200
- adds r0, r4, r0
- ldr r1, =0x05000200
- adds r4, r1
- adds r1, r4, 0
- movs r2, 0x1
- bl CpuSet
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- add r1, r8
- lsls r1, 5
- ldr r2, =0x06010000
- mov r8, r2
- add r1, r8
- ldr r2, =0x04000018
- adds r0, r6, 0
- bl CpuSet
- bl battle_type_is_double
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08074626
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08074672
-_08074626:
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r7, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08074672
- movs r0, 0
- bl sub_80728A4
- mov r3, r10
- lsls r4, r3, 4
- add r4, r10
- lsls r4, 2
- ldr r1, =gSprites
- adds r4, r1
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- add r1, r8
- ldr r5, =0x04000008
- adds r2, r5, 0
- bl CpuSet
- movs r0, 0x41
- bl sub_80728A4
- ldrh r1, [r4, 0x4]
- lsls r1, 22
- lsrs r1, 17
- adds r1, 0x20
- add r1, r8
- adds r2, r5, 0
- bl CpuSet
-_08074672:
- mov r0, r9
- movs r1, 0
- bl sub_8074310
-_0807467A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end draw_status_ailment_maybe
-
- thumb_func_start sub_80746A8
-sub_80746A8: @ 80746A8
- push {lr}
- lsls r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- lsrs r2, r0, 24
- adds r0, r2, 0
- subs r0, 0x15
- cmp r0, 0xC
- bhi _08074768
- lsls r0, 2
- ldr r1, =_080746C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080746C8:
- .4byte _080746FC
- .4byte _08074768
- .4byte _08074768
- .4byte _08074712
- .4byte _08074768
- .4byte _08074768
- .4byte _08074728
- .4byte _08074768
- .4byte _08074768
- .4byte _0807473E
- .4byte _08074768
- .4byte _08074768
- .4byte _08074754
-_080746FC:
- movs r2, 0x15
- cmp r3, 0
- beq _08074768
- movs r2, 0x47
- cmp r3, 0x1
- beq _08074768
- movs r2, 0x65
- cmp r3, 0x2
- bne _08074768
- movs r2, 0x56
- b _08074768
-_08074712:
- movs r2, 0x18
- cmp r3, 0
- beq _08074768
- movs r2, 0x4A
- cmp r3, 0x1
- beq _08074768
- movs r2, 0x68
- cmp r3, 0x2
- bne _08074768
- movs r2, 0x59
- b _08074768
-_08074728:
- movs r2, 0x1B
- cmp r3, 0
- beq _08074768
- movs r2, 0x4D
- cmp r3, 0x1
- beq _08074768
- movs r2, 0x6B
- cmp r3, 0x2
- bne _08074768
- movs r2, 0x5C
- b _08074768
-_0807473E:
- movs r2, 0x1E
- cmp r3, 0
- beq _08074768
- movs r2, 0x50
- cmp r3, 0x1
- beq _08074768
- movs r2, 0x6E
- cmp r3, 0x2
- bne _08074768
- movs r2, 0x5F
- b _08074768
-_08074754:
- movs r2, 0x21
- cmp r3, 0
- beq _08074768
- movs r2, 0x53
- cmp r3, 0x1
- beq _08074768
- movs r2, 0x71
- cmp r3, 0x2
- bne _08074768
- movs r2, 0x62
-_08074768:
- adds r0, r2, 0
- pop {r1}
- bx r1
- thumb_func_end sub_80746A8
-
- thumb_func_start sub_8074770
-sub_8074770: @ 8074770
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gText_SafariBalls
- add r1, sp, 0x4
- str r1, [sp]
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl write_to_rbox
- adds r5, r0, 0
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r4, [r0, 0x4]
- lsls r4, 22
- lsrs r4, 17
- ldr r1, =0x06010040
- adds r0, r4, r1
- adds r1, r5, 0
- movs r2, 0x6
- bl sub_8075198
- ldr r0, =0x06010800
- adds r4, r0
- adds r5, 0xC0
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x2
- bl sub_8075198
- ldr r0, [sp, 0x4]
- bl sub_807512C
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8074770
-
- thumb_func_start sub_80747D8
-sub_80747D8: @ 80747D8
- push {r4,r5,lr}
- sub sp, 0x18
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gText_SafariBallLeft
- add r0, sp, 0x4
- bl StringCopy
- ldr r1, =gNumSafariBalls
- ldrb r1, [r1]
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r0, 0
- add r1, sp, 0x4
- movs r2, 0x2F
- bl GetStringRightAlignXOffset
- adds r1, r0, 0
- add r0, sp, 0x14
- str r0, [sp]
- add r0, sp, 0x4
- movs r2, 0x3
- movs r3, 0x2
- bl write_to_rbox
- adds r5, r0, 0
- ldr r1, =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrh r4, [r0, 0x4]
- lsls r4, 22
- lsrs r4, 17
- ldr r1, =0x060102c0
- adds r0, r4, r1
- adds r1, r5, 0
- movs r2, 0x2
- bl sub_80751E4
- ldr r0, =0x06010a00
- adds r4, r0
- adds r5, 0x40
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x4
- bl sub_80751E4
- ldr r0, [sp, 0x14]
- bl sub_807512C
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80747D8
-
- thumb_func_start healthbar_draw_field_maybe
-healthbar_draw_field_maybe: @ 8074860
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r8, r1
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r1, =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r7, 0
- bne _0807489C
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- bne _0807489C
- mov r0, r9
- bl GetBankSide
-_0807489C:
- ldr r1, =gSprites
- lsls r0, r6, 4
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080748B8
- b _08074A18
-_080748B8:
- cmp r7, 0x3
- beq _080748C0
- cmp r7, 0
- bne _080748D4
-_080748C0:
- mov r0, r8
- movs r1, 0x38
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl healthbar_draw_level
-_080748D4:
- cmp r7, 0x1
- bhi _080748EE
- mov r0, r8
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r6, 0
- movs r2, 0
- bl heathbar_draw_hp
-_080748EE:
- cmp r7, 0x2
- beq _080748F6
- cmp r7, 0
- bne _0807490C
-_080748F6:
- mov r0, r8
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- adds r0, r6, 0
- movs r2, 0x1
- bl heathbar_draw_hp
-_0807490C:
- cmp r7, 0x5
- beq _08074914
- cmp r7, 0
- bne _08074948
-_08074914:
- movs r0, 0
- bl load_gfxc_health_bar
- mov r0, r8
- movs r1, 0x3A
- bl GetMonData
- adds r4, r0, 0
- mov r0, r8
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- movs r0, 0
- str r0, [sp]
- mov r0, r9
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_807294C
- mov r0, r9
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0
- bl sub_8074AA0
-_08074948:
- bl battle_type_is_double
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- cmp r0, 0
- bne _080749CE
- cmp r7, 0x6
- beq _0807495E
- cmp r7, 0
- bne _080749CE
-_0807495E:
- movs r0, 0x3
- bl load_gfxc_health_bar
- mov r0, r8
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r0, r8
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- movs r1, 0x19
- bl GetMonData
- adds r3, r0, 0
- ldr r0, =gExperienceTables
- mov r12, r0
- lsls r1, r4, 2
- ldr r2, =gBaseStats
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r2
- adds r1, r0
- add r1, r12
- ldr r1, [r1]
- subs r3, r1
- adds r4, 0x1
- lsls r4, 2
- adds r4, r0
- add r4, r12
- ldr r2, [r4]
- subs r2, r1
- mov r0, r10
- str r0, [sp]
- mov r0, r9
- adds r1, r6, 0
- bl sub_807294C
- mov r0, r9
- adds r1, r6, 0
- movs r2, 0x1
- movs r3, 0
- bl sub_8074AA0
-_080749CE:
- cmp r7, 0x4
- beq _080749D6
- cmp r7, 0
- bne _080749DE
-_080749D6:
- adds r0, r6, 0
- mov r1, r8
- bl sub_80741E8
-_080749DE:
- cmp r7, 0x9
- beq _080749E6
- cmp r7, 0
- bne _080749EC
-_080749E6:
- adds r0, r6, 0
- bl draw_status_ailment_maybe
-_080749EC:
- cmp r7, 0xA
- bne _080749F6
- adds r0, r6, 0
- bl sub_8074770
-_080749F6:
- adds r0, r7, 0
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08074A8E
- adds r0, r6, 0
- bl sub_80747D8
- b _08074A8E
- .pool
-_08074A18:
- cmp r7, 0x3
- beq _08074A20
- cmp r7, 0
- bne _08074A34
-_08074A20:
- mov r0, r8
- movs r1, 0x38
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl healthbar_draw_level
-_08074A34:
- cmp r7, 0x5
- beq _08074A3C
- cmp r7, 0
- bne _08074A70
-_08074A3C:
- movs r0, 0
- bl load_gfxc_health_bar
- mov r0, r8
- movs r1, 0x3A
- bl GetMonData
- adds r4, r0, 0
- mov r0, r8
- movs r1, 0x39
- bl GetMonData
- adds r3, r0, 0
- movs r0, 0
- str r0, [sp]
- mov r0, r9
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_807294C
- mov r0, r9
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0
- bl sub_8074AA0
-_08074A70:
- cmp r7, 0x4
- beq _08074A78
- cmp r7, 0
- bne _08074A80
-_08074A78:
- adds r0, r6, 0
- mov r1, r8
- bl sub_80741E8
-_08074A80:
- cmp r7, 0x9
- beq _08074A88
- cmp r7, 0
- bne _08074A8E
-_08074A88:
- adds r0, r6, 0
- bl draw_status_ailment_maybe
-_08074A8E:
- 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 healthbar_draw_field_maybe
-
- thumb_func_start sub_8074AA0
-sub_8074AA0: @ 8074AA0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- cmp r2, 0
- bne _08074AEC
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- mov r1, r8
- lsls r5, r1, 2
- adds r3, r5, r1
- lsls r3, 2
- adds r3, r0
- ldr r0, [r3, 0x4]
- ldr r1, [r3, 0x8]
- ldr r2, [r3, 0xC]
- adds r3, 0x10
- movs r4, 0x6
- str r4, [sp]
- movs r4, 0x1
- str r4, [sp, 0x4]
- bl sub_8074DB8
- adds r4, r0, 0
- adds r7, r5, 0
- b _08074B48
- .pool
-_08074AEC:
- ldr r2, =gUnknown_020244D0
- mov r10, r2
- ldr r0, [r2]
- ldr r2, [r0, 0xC]
- mov r0, r8
- lsls r4, r0, 2
- adds r0, r4, r0
- lsls r6, r0, 2
- adds r2, r6, r2
- ldr r0, [r2, 0x8]
- ldr r1, [r2, 0xC]
- ldr r2, [r2, 0x4]
- movs r3, 0x8
- bl sub_8074FE8
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r4, 0
- cmp r5, 0
- bne _08074B16
- movs r5, 0x1
-_08074B16:
- mov r1, r10
- ldr r0, [r1]
- ldr r0, [r0, 0xC]
- adds r4, r6, r0
- ldr r6, [r4, 0xC]
- adds r0, r6, 0
- adds r1, r5, 0
- bl __divsi3
- cmp r0, 0
- bge _08074B2E
- negs r0, r0
-_08074B2E:
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [r4, 0x4]
- ldr r1, [r4, 0x8]
- adds r3, r4, 0
- adds r3, 0x10
- movs r2, 0x8
- str r2, [sp]
- str r5, [sp, 0x4]
- adds r2, r6, 0
- bl sub_8074DB8
- adds r4, r0, 0
-_08074B48:
- mov r2, r9
- cmp r2, 0x1
- beq _08074B64
- cmp r2, 0
- bne _08074B6C
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0]
- adds r0, r7, r0
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08074B6C
-_08074B64:
- mov r0, r8
- mov r1, r9
- bl sub_8074B9C
-_08074B6C:
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- bne _08074B86
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0, 0xC]
- mov r2, r8
- adds r0, r7, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0
- str r1, [r0, 0x10]
-_08074B86:
- adds r0, r4, 0
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8074AA0
-
- thumb_func_start sub_8074B9C
-sub_8074B9C: @ 8074B9C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- beq _08074BB8
- cmp r1, 0x1
- beq _08074CA0
- b _08074D9E
-_08074BB8:
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- lsls r5, r6, 2
- adds r3, r5, r6
- lsls r3, 2
- adds r3, r0
- ldr r0, [r3, 0x4]
- ldr r1, [r3, 0x8]
- ldr r2, [r3, 0xC]
- adds r3, 0x10
- add r4, sp, 0x8
- str r4, [sp]
- movs r4, 0x6
- str r4, [sp, 0x4]
- bl sub_8074E8C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- mov r9, r1
- adds r7, r5, 0
- cmp r0, 0x18
- bhi _08074BF4
- movs r2, 0x38
- mov r9, r2
- cmp r0, 0x9
- bls _08074BF4
- movs r4, 0x2F
- mov r9, r4
-_08074BF4:
- movs r5, 0
- ldr r0, =gSprites
- mov r8, r0
-_08074BFA:
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0, 0xC]
- adds r0, r7, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrh r0, [r0, 0x38]
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r5, 0x1
- bhi _08074C5C
- mov r0, r9
- bl sub_80728A4
- mov r1, sp
- adds r1, r5
- adds r1, 0x8
- ldrb r1, [r1]
- lsls r1, 5
- adds r0, r1
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- add r1, r8
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r2, r5, 0x2
- adds r1, r2
- lsls r1, 5
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- b _08074C8A
- .pool
-_08074C5C:
- mov r0, r9
- bl sub_80728A4
- mov r1, sp
- adds r1, r5
- adds r1, 0x8
- ldrb r1, [r1]
- lsls r1, 5
- adds r0, r1
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- add r1, r8
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r5, r1
- lsls r1, 5
- ldr r4, =0x06010040
- adds r1, r4
- ldr r2, =0x04000008
- bl CpuSet
-_08074C8A:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _08074BFA
- b _08074D9E
- .pool
-_08074CA0:
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0, 0xC]
- lsls r5, r6, 2
- adds r3, r5, r6
- lsls r3, 2
- adds r3, r0
- ldr r0, [r3, 0x4]
- ldr r1, [r3, 0x8]
- ldr r2, [r3, 0xC]
- adds r3, 0x10
- add r4, sp, 0x8
- str r4, [sp]
- movs r4, 0x8
- str r4, [sp, 0x4]
- bl sub_8074E8C
- ldr r1, =gBattlePartyID
- lsls r0, r6, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- adds r7, r5, 0
- cmp r0, 0x64
- bne _08074CF8
- movs r5, 0
- movs r1, 0
-_08074CE6:
- mov r0, sp
- adds r0, r5
- adds r0, 0x8
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x7
- bls _08074CE6
-_08074CF8:
- movs r5, 0
- ldr r0, =gSprites
- mov r8, r0
- adds r0, r7, r6
- lsls r4, r0, 2
-_08074D02:
- cmp r5, 0x3
- bhi _08074D5C
- movs r0, 0xC
- bl sub_80728A4
- mov r1, sp
- adds r1, r5
- adds r1, 0x8
- ldrb r1, [r1]
- lsls r1, 5
- adds r0, r1
- ldr r1, =gUnknown_020244D0
- ldr r1, [r1]
- ldr r1, [r1, 0xC]
- adds r1, r4, r1
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r2, r5, 0
- adds r2, 0x24
- adds r1, r2
- lsls r1, 5
- ldr r2, =0x06010000
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
- b _08074D94
- .pool
-_08074D5C:
- movs r0, 0xC
- bl sub_80728A4
- mov r1, sp
- adds r1, r5
- adds r1, 0x8
- ldrb r1, [r1]
- lsls r1, 5
- adds r0, r1
- ldr r1, =gUnknown_020244D0
- ldr r1, [r1]
- ldr r1, [r1, 0xC]
- adds r1, r4, r1
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrh r1, [r1, 0x4]
- lsls r1, 22
- lsrs r1, 22
- adds r1, r5, r1
- lsls r1, 5
- ldr r2, =0x06010b80
- adds r1, r2
- ldr r2, =0x04000008
- bl CpuSet
-_08074D94:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x7
- bls _08074D02
-_08074D9E:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8074B9C
-
- thumb_func_start sub_8074DB8
-sub_8074DB8: @ 8074DB8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r4, r1, 0
- mov r8, r2
- adds r5, r3, 0
- ldr r1, [sp, 0x18]
- ldr r0, [sp, 0x1C]
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 27
- lsrs r2, r1, 24
- ldr r1, [r5]
- ldr r0, =0xffff8000
- cmp r1, r0
- bne _08074DEA
- cmp r7, r2
- bge _08074DE8
- lsls r0, r4, 8
- str r0, [r5]
- b _08074DEA
- .pool
-_08074DE8:
- str r4, [r5]
-_08074DEA:
- mov r0, r8
- subs r4, r0
- cmp r4, 0
- bge _08074DF6
- movs r4, 0
- b _08074DFC
-_08074DF6:
- cmp r4, r7
- ble _08074DFC
- adds r4, r7, 0
-_08074DFC:
- cmp r7, r2
- bge _08074E18
- ldr r0, [r5]
- asrs r1, r0, 8
- adds r6, r0, 0
- cmp r4, r1
- bne _08074E24
- movs r0, 0xFF
- ands r0, r6
- cmp r0, 0
- bne _08074E24
- movs r0, 0x1
- negs r0, r0
- b _08074E80
-_08074E18:
- ldr r6, [r5]
- cmp r4, r6
- bne _08074E24
- movs r0, 0x1
- negs r0, r0
- b _08074E80
-_08074E24:
- cmp r7, r2
- bge _08074E5E
- lsls r0, r7, 8
- adds r1, r2, 0
- bl __divsi3
- mov r1, r8
- cmp r1, 0
- bge _08074E42
- adds r0, r6, r0
- str r0, [r5]
- asrs r2, r0, 8
- cmp r2, r4
- blt _08074E7E
- b _08074E56
-_08074E42:
- subs r0, r6, r0
- str r0, [r5]
- asrs r2, r0, 8
- movs r1, 0xFF
- ands r0, r1
- cmp r0, 0
- ble _08074E52
- adds r2, 0x1
-_08074E52:
- cmp r2, r4
- bgt _08074E7E
-_08074E56:
- lsls r0, r4, 8
- str r0, [r5]
- adds r2, r4, 0
- b _08074E7E
-_08074E5E:
- mov r0, r8
- cmp r0, 0
- bge _08074E70
- ldr r0, [r5]
- adds r0, r3
- str r0, [r5]
- cmp r0, r4
- ble _08074E7C
- b _08074E7A
-_08074E70:
- ldr r0, [r5]
- subs r0, r3
- str r0, [r5]
- cmp r0, r4
- bge _08074E7C
-_08074E7A:
- str r4, [r5]
-_08074E7C:
- ldr r2, [r5]
-_08074E7E:
- adds r0, r2, 0
-_08074E80:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8074DB8
-
- thumb_func_start sub_8074E8C
-sub_8074E8C: @ 8074E8C
- push {r4-r7,lr}
- adds r4, r0, 0
- mov r12, r3
- ldr r7, [sp, 0x14]
- ldr r0, [sp, 0x18]
- lsls r0, 24
- lsrs r6, r0, 24
- subs r5, r1, r2
- cmp r5, 0
- bge _08074EA4
- movs r5, 0
- b _08074EAA
-_08074EA4:
- cmp r5, r4
- ble _08074EAA
- adds r5, r4, 0
-_08074EAA:
- lsls r0, r6, 27
- lsrs r3, r0, 24
- movs r1, 0
- cmp r1, r6
- bcs _08074EC4
- movs r2, 0
-_08074EB6:
- adds r0, r7, r1
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r6
- bcc _08074EB6
-_08074EC4:
- cmp r4, r3
- bge _08074ED8
- mov r1, r12
- ldr r0, [r1]
- muls r0, r3
- adds r1, r4, 0
- bl __divsi3
- asrs r0, 8
- b _08074EE4
-_08074ED8:
- mov r1, r12
- ldr r0, [r1]
- muls r0, r3
- adds r1, r4, 0
- bl __divsi3
-_08074EE4:
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- cmp r3, 0
- bne _08074EFA
- cmp r5, 0
- ble _08074EFA
- movs r0, 0x1
- strb r0, [r7]
- movs r3, 0x1
- b _08074F1E
-_08074EFA:
- movs r1, 0
- movs r4, 0x8
-_08074EFE:
- cmp r1, r6
- bcs _08074F1E
- cmp r2, 0x7
- bls _08074F1A
- adds r0, r7, r1
- strb r4, [r0]
- adds r0, r2, 0
- subs r0, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- b _08074EFE
-_08074F1A:
- adds r0, r7, r1
- strb r2, [r0]
-_08074F1E:
- adds r0, r3, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8074E8C
-
- thumb_func_start sub_8074F28
-sub_8074F28: @ 8074F28
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- mov r8, r3
- ldr r0, [r5]
- ldr r1, [r5, 0x4]
- ldr r2, [r5, 0x8]
- movs r3, 0x6
- str r3, [sp]
- movs r3, 0x1
- str r3, [sp, 0x4]
- adds r3, r6, 0
- bl sub_8074DB8
- lsls r0, 16
- lsrs r7, r0, 16
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_8074F88
- ldr r0, [r5]
- cmp r0, 0x2F
- bgt _08074F68
- ldr r0, [r6]
- lsls r0, 8
- lsrs r1, r0, 16
- b _08074F6A
-_08074F68:
- ldrh r1, [r6]
-_08074F6A:
- movs r2, 0
- ldrsh r0, [r5, r2]
- lsls r1, 16
- asrs r1, 16
- mov r2, r8
- bl sub_8072304
- lsls r0, r7, 16
- asrs r0, 16
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8074F28
-
- thumb_func_start sub_8074F88
-sub_8074F88: @ 8074F88
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x1C
- adds r5, r0, 0
- adds r3, r1, 0
- mov r8, r2
- ldr r0, [r5]
- ldr r1, [r5, 0x4]
- ldr r2, [r5, 0x8]
- add r4, sp, 0x8
- str r4, [sp]
- movs r4, 0x6
- str r4, [sp, 0x4]
- bl sub_8074E8C
- movs r3, 0
- add r7, sp, 0x10
- mov r12, r7
- ldrb r0, [r5, 0xC]
- lsls r6, r0, 27
- ldr r4, [r5, 0x10]
-_08074FB4:
- lsls r2, r3, 1
- add r2, r12
- lsrs r1, r6, 15
- mov r0, sp
- adds r0, r3
- adds r0, 0x8
- ldrb r0, [r0]
- adds r0, r4, r0
- orrs r1, r0
- strh r1, [r2]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x5
- bls _08074FB4
- adds r0, r7, 0
- mov r1, r8
- movs r2, 0x6
- bl CpuSet
- add sp, 0x1C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8074F88
-
- thumb_func_start sub_8074FE8
-sub_8074FE8: @ 8074FE8
- push {r4-r7,lr}
- adds r6, r2, 0
- lsls r3, 27
- lsrs r7, r3, 24
- subs r5, r0, r1
- cmp r5, 0
- bge _08074FFA
- movs r5, 0
- b _08075000
-_08074FFA:
- cmp r5, r6
- ble _08075000
- adds r5, r6, 0
-_08075000:
- muls r0, r7
- adds r1, r6, 0
- bl __divsi3
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- muls r0, r7
- adds r1, r6, 0
- bl __divsi3
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- subs r0, r4, r0
- cmp r0, 0
- bge _08075028
- negs r0, r0
-_08075028:
- lsls r0, 24
- lsrs r0, 24
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8074FE8
-
- thumb_func_start sub_8075034
-sub_8075034: @ 8075034
- push {r4,lr}
- lsls r2, 24
- lsrs r2, 24
- lsls r0, 16
- asrs r4, r0, 16
- adds r0, r4, 0
- muls r0, r2
- lsls r1, 16
- asrs r1, 16
- bl __divsi3
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08075058
- cmp r4, 0
- ble _08075058
- movs r0, 0x1
-_08075058:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8075034
-
- thumb_func_start sub_8075060
-sub_8075060: @ 8075060
- push {lr}
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- cmp r0, r1
- bne _08075072
- movs r0, 0x4
- b _0807508E
-_08075072:
- movs r2, 0x30
- bl sub_8075034
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x3
- cmp r1, 0x18
- bhi _0807508E
- movs r0, 0x2
- cmp r1, 0x9
- bhi _0807508E
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
-_0807508E:
- pop {r1}
- bx r1
- thumb_func_end sub_8075060
-
- thumb_func_start write_to_rbox
-write_to_rbox: @ 8075094
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- mov r10, r0
- mov r8, r1
- mov r9, r2
- adds r5, r3, 0
- ldr r7, [sp, 0x40]
- ldr r0, =gUnknown_0832C3F8
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- add r0, sp, 0x18
- bl AddWindow
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r6, r4, 24
- lsrs r6, 24
- lsls r1, r5, 4
- orrs r1, r5
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl FillWindowPixelBuffer
- add r0, sp, 0x14
- movs r2, 0
- strb r5, [r0]
- adds r1, r0, 0
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x3
- strb r0, [r1, 0x2]
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- str r2, [sp]
- str r2, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0xC]
- mov r0, r10
- str r0, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0
- mov r2, r8
- mov r3, r9
- bl AddTextPrinterParametrized2
- str r4, [r7]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetWindowAttribute
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end write_to_rbox
-
- thumb_func_start sub_807512C
-sub_807512C: @ 807512C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl RemoveWindow
- pop {r0}
- bx r0
- thumb_func_end sub_807512C
-
- thumb_func_start sub_807513C
-sub_807513C: @ 807513C
- push {lr}
- sub sp, 0x4
- adds r3, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r1, r0, 8
- adds r0, r1
- lsls r1, r0, 16
- adds r0, r1
- str r0, [sp]
- lsls r2, 3
- ldr r0, =0x001fffff
- ands r2, r0
- movs r0, 0xA0
- lsls r0, 19
- orrs r2, r0
- mov r0, sp
- adds r1, r3, 0
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807513C
-
- thumb_func_start sub_8075170
-sub_8075170: @ 8075170
- push {lr}
- adds r3, r0, 0
- adds r0, r1, 0
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- lsls r2, 3
- ldr r1, =0x001fffff
- ands r2, r1
- movs r1, 0x80
- lsls r1, 19
- orrs r2, r1
- adds r1, r3, 0
- bl CpuSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8075170
-
- thumb_func_start sub_8075198
-sub_8075198: @ 8075198
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r4, r2, 0
- movs r1, 0x80
- lsls r1, 1
- adds r0, r5, r1
- adds r1, r6, r1
- lsls r2, r4, 3
- ldr r3, =0x001fffff
- ands r2, r3
- movs r3, 0x80
- lsls r3, 19
- orrs r2, r3
- bl CpuSet
- cmp r4, 0
- ble _080751D4
-_080751BC:
- adds r0, r5, 0
- adds r0, 0x14
- adds r1, r6, 0
- adds r1, 0x14
- ldr r2, =0x04000003
- bl CpuSet
- adds r6, 0x20
- adds r5, 0x20
- subs r4, 0x1
- cmp r4, 0
- bne _080751BC
-_080751D4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8075198
-
- thumb_func_start sub_80751E4
-sub_80751E4: @ 80751E4
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- lsls r4, r2, 3
- ldr r0, =0x001fffff
- ands r4, r0
- movs r0, 0x80
- lsls r0, 19
- orrs r4, r0
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl CpuSet
- movs r0, 0x80
- lsls r0, 1
- adds r5, r0
- adds r6, r0
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl CpuSet
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80751E4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s
index 94ae7ad7f..aa887bc25 100644
--- a/asm/battle_link_817C95C.s
+++ b/asm/battle_link_817C95C.s
@@ -665,7 +665,7 @@ _0817D16C:
bl _0817DFAC
.pool
_0817D1B8:
- ldr r1, =gUnknown_02022F5C
+ ldr r1, =gBattleTextBuff1 + 4
ldrb r0, [r1]
cmp r0, 0
beq _0817D1C4
@@ -917,7 +917,7 @@ _0817D3C0:
bne _0817D3CC
bl _0817E0A6
_0817D3CC:
- ldr r1, =gUnknown_02022F6A
+ ldr r1, =gBattleTextBuff2 + 2
ldrh r0, [r1]
cmp r0, 0xD1
bne _0817D3E8
@@ -946,7 +946,7 @@ _0817D3FE:
ldrb r1, [r1]
cmp r0, r1
bne _0817D436
- ldr r1, =gUnknown_02022F6A
+ ldr r1, =gBattleTextBuff2 + 2
ldrh r0, [r1]
cmp r0, 0xD1
bne _0817D42C
@@ -988,7 +988,7 @@ _0817D45C:
bne _0817D468
bl _0817E0A6
_0817D468:
- ldr r1, =gUnknown_02022F6A
+ ldr r1, =gBattleTextBuff2 + 2
ldrh r0, [r1]
cmp r0, 0xD3
bne _0817D484
@@ -2182,7 +2182,7 @@ _0817DE10:
b _0817DFAA
.pool
_0817DE58:
- ldr r1, =gUnknown_02022F5A
+ ldr r1, =gBattleTextBuff1 + 2
ldrh r0, [r1]
cmp r0, 0x73
bne _0817DE82
@@ -2204,7 +2204,7 @@ _0817DE58:
ands r0, r2
strb r0, [r1]
_0817DE82:
- ldr r2, =gUnknown_02022F5A
+ ldr r2, =gBattleTextBuff1 + 2
ldrh r0, [r2]
cmp r0, 0x71
bne _0817DEAA
@@ -2225,7 +2225,7 @@ _0817DE82:
ands r0, r2
strb r0, [r1]
_0817DEAA:
- ldr r1, =gUnknown_02022F5A
+ ldr r1, =gBattleTextBuff1 + 2
ldrh r0, [r1]
cmp r0, 0x36
beq _0817DEB4
@@ -3193,7 +3193,7 @@ _0817E63A:
adds r1, r4, 0
ldr r2, [sp]
ldr r3, [sp, 0x4]
- bl sub_80ECB00
+ bl PutBattleUpdateOnTheAir
b _0817E670
.pool
_0817E65C:
@@ -3205,7 +3205,7 @@ _0817E65C:
adds r1, r4, 0
ldr r2, [sp]
ldr r3, [sp, 0x4]
- bl sub_80ECB00
+ bl PutBattleUpdateOnTheAir
_0817E670:
add sp, 0x20
pop {r3-r5}
@@ -4322,7 +4322,7 @@ _0817EF36:
b _0817F1FA
_0817EF44:
ldr r3, =gBattleMoves
- ldr r2, =gUnknown_020244B0
+ ldr r2, =gMoveSelectionCursor
adds r0, r4, r2
ldrb r0, [r0]
lsls r0, 1
@@ -4514,7 +4514,7 @@ _0817F0B4:
ble _0817EFC2
movs r5, 0
ldr r3, =gBankAttacker
- ldr r6, =gUnknown_020244B0
+ ldr r6, =gMoveSelectionCursor
ldr r4, =gBattlePartyID
mov r8, r4
movs r7, 0x64
@@ -4624,7 +4624,7 @@ _0817F1D4:
b _0817F0CC
_0817F1DC:
ldr r2, =gBattleMoveDamage
- ldr r1, =gUnknown_020244B0
+ ldr r1, =gMoveSelectionCursor
ldr r0, =gBankAttacker
ldrb r0, [r0]
adds r0, r1
diff --git a/asm/battle_message.s b/asm/battle_message.s
deleted file mode 100644
index dfbf069b3..000000000
--- a/asm/battle_message.s
+++ /dev/null
@@ -1,3089 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start BufferStringBattle
-BufferStringBattle: @ 814E0C4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r6, r0, 16
- movs r7, 0
- ldr r4, =gStringInfo
- ldr r0, =gActiveBank
- mov r8, r0
- ldrb r1, [r0]
- lsls r1, 9
- ldr r0, =gBattleBufferA + 4
- adds r1, r0
- str r1, [r4]
- ldr r2, =gLastUsedItem
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- ldr r2, =gLastUsedAbility
- ldrb r0, [r1, 0x6]
- strb r0, [r2]
- ldr r5, =gBattleScripting
- ldrb r0, [r1, 0x7]
- strb r0, [r5, 0x17]
- ldr r3, =gBattleStruct
- ldr r0, [r3]
- adds r0, 0x52
- ldrb r1, [r1, 0x8]
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0xB1
- ldr r1, [r4]
- ldrb r1, [r1, 0x9]
- strb r1, [r0]
- ldr r1, =gStringBank
- ldr r2, [r4]
- ldrb r0, [r2, 0xA]
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x8E
- ldrb r1, [r2, 0xB]
- strb r1, [r0]
- movs r2, 0
- mov r12, r8
- mov r9, r5
- ldr r1, =gBattleTextBuff1
- mov r10, r1
- ldr r3, =gAbilitiesPerBank
-_0814E126:
- adds r0, r2, r3
- ldr r1, [r4]
- adds r1, 0xC
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _0814E126
- movs r2, 0
- ldr r0, =gBattleTextBuff1
- mov r8, r0
- ldr r3, =gStringInfo
- ldr r5, =gBattleTextBuff2
- ldr r4, =gBattleTextBuff3
-_0814E144:
- mov r0, r8
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x10
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r5
- ldr r0, [r3]
- adds r0, 0x20
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r4
- ldr r0, [r3]
- adds r0, 0x30
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0xF
- ble _0814E144
- cmp r6, 0x5
- bls _0814E176
- b _0814E6B8
-_0814E176:
- lsls r0, r6, 2
- ldr r1, =_0814E1B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0814E1B4:
- .4byte _0814E1CC
- .4byte _0814E2AC
- .4byte _0814E394
- .4byte _0814E430
- .4byte _0814E4F8
- .4byte _0814E55C
-_0814E1CC:
- ldr r0, =gBattleTypeFlags
- ldr r2, [r0]
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _0814E26C
- ldr r0, =0x02000002
- ands r0, r2
- cmp r0, 0
- beq _0814E248
- movs r0, 0x80
- lsls r0, 16
- ands r0, r2
- cmp r0, 0
- bne _0814E260
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _0814E214
- movs r0, 0x80
- lsls r0, 17
- ands r2, r0
- ldr r7, =gText_TwoTrainersWantToBattle
- cmp r2, 0
- bne _0814E200
- b _0814E6D8
-_0814E200:
- ldr r7, =gText_TwoTrainersWantToBattle3
- b _0814E6D8
- .pool
-_0814E214:
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 4
- cmp r1, r0
- bne _0814E22C
- ldr r7, =gText_TrainerXYWantsToBattle
- b _0814E6D8
- .pool
-_0814E22C:
- movs r0, 0x80
- lsls r0, 17
- ands r2, r0
- ldr r7, =gText_TrainerXWantsToBattle
- cmp r2, 0
- bne _0814E23A
- b _0814E6D8
-_0814E23A:
- ldr r7, =gText_TrainerWantsToBattle
- b _0814E6D8
- .pool
-_0814E248:
- movs r0, 0x80
- lsls r0, 15
- ands r0, r2
- cmp r0, 0
- bne _0814E260
- movs r0, 0x80
- lsls r0, 8
- ands r2, r0
- ldr r7, =gText_TrainerXYWantsToBattle
- cmp r2, 0
- bne _0814E260
- b _0814E6D8
-_0814E260:
- ldr r7, =gText_TwoTrainersWantToBattle2
- b _0814E6D8
- .pool
-_0814E26C:
- movs r0, 0x80
- lsls r0, 6
- ands r0, r2
- cmp r0, 0
- beq _0814E280
- ldr r7, =gText_WildPkmnAppeared2
- b _0814E6D8
- .pool
-_0814E280:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0814E290
- ldr r7, =gText_TwoWildPkmnAppeared
- b _0814E6D8
- .pool
-_0814E290:
- movs r0, 0x80
- lsls r0, 2
- ands r2, r0
- ldr r7, =gText_WildPkmnAppeared
- cmp r2, 0
- bne _0814E29E
- b _0814E6D8
-_0814E29E:
- ldr r7, =gText_WildPkmnAppearedPause
- b _0814E6D8
- .pool
-_0814E2AC:
- mov r1, r12
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814E310
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814E308
- movs r0, 0x80
- lsls r0, 15
- ands r0, r1
- cmp r0, 0
- beq _0814E2DC
- ldr r7, =gText_TrainerXYSentOutZGoN
- b _0814E6D8
- .pool
-_0814E2DC:
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _0814E2F0
- ldr r7, =gText_GoTwoPkmn
- b _0814E6D8
- .pool
-_0814E2F0:
- movs r0, 0x40
- ands r1, r0
- ldr r7, =gText_GoTwoPkmn
- cmp r1, 0
- bne _0814E2FC
- b _0814E6D8
-_0814E2FC:
- ldr r7, =gText_EnemySentOutPkmnGoPkmn
- b _0814E6D8
- .pool
-_0814E308:
- ldr r7, =gText_GoPkmn
- b _0814E6D8
- .pool
-_0814E310:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814E368
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- bne _0814E330
- movs r0, 0x80
- lsls r0, 16
- ands r0, r1
- cmp r0, 0
- beq _0814E33C
-_0814E330:
- ldr r7, =gText_TwoTrainersSentPkmn
- b _0814E6D8
- .pool
-_0814E33C:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0814E34C
- ldr r7, =gText_TwoTrainersSentOutPkmn
- b _0814E6D8
- .pool
-_0814E34C:
- ldr r0, =0x02000002
- ands r1, r0
- ldr r7, =gText_TrainerXYSentOutTwoPkmn
- cmp r1, 0
- bne _0814E358
- b _0814E6D8
-_0814E358:
- ldr r7, =gText_TrainerXSentOutTwoPkmn
- b _0814E6D8
- .pool
-_0814E368:
- ldr r0, =0x02000002
- ands r1, r0
- cmp r1, 0
- beq _0814E380
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 4
- ldr r7, =gText_TrainerXSentOutPkmn
- cmp r1, r0
- beq _0814E380
- b _0814E6D8
-_0814E380:
- ldr r7, =gText_TrainerXYSentOutPkmn
- b _0814E6D8
- .pool
-_0814E394:
- mov r1, r12
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814E3EC
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB1
- ldrb r2, [r0]
- cmp r2, 0
- bne _0814E3BC
- ldr r7, =gText_PkmnThatsEnough
- b _0814E6D8
- .pool
-_0814E3BC:
- cmp r2, 0x1
- beq _0814E3CC
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814E3D8
-_0814E3CC:
- ldr r7, =gText_PkmnComeBack
- b _0814E6D8
- .pool
-_0814E3D8:
- ldr r7, =gText_PkmnGoodComeBack
- cmp r2, 0x2
- beq _0814E3E0
- b _0814E6D8
-_0814E3E0:
- ldr r7, =gText_PkmnOkComeBack
- b _0814E6D8
- .pool
-_0814E3EC:
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 4
- ldr r2, =gBattleTypeFlags
- cmp r1, r0
- beq _0814E406
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _0814E428
-_0814E406:
- ldr r0, [r2]
- movs r1, 0x40
- ands r0, r1
- ldr r7, =gText_TrainerXWithdrewPkmn
- cmp r0, 0
- bne _0814E414
- b _0814E6D8
-_0814E414:
- ldr r7, =gText_TrainerXWithdrewPkmn2
- b _0814E6D8
- .pool
-_0814E428:
- ldr r7, =gText_TrainerXYWithdrewPkmn
- b _0814E6D8
- .pool
-_0814E430:
- mov r4, r9
- ldrb r0, [r4, 0x17]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814E488
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB1
- ldrb r2, [r0]
- cmp r2, 0
- beq _0814E456
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814E468
-_0814E456:
- ldr r7, =gText_GoPkmn2
- b _0814E6D8
- .pool
-_0814E468:
- cmp r2, 0x1
- bne _0814E474
- ldr r7, =gText_DoItPkmn
- b _0814E6D8
- .pool
-_0814E474:
- ldr r7, =gText_YourFoesWeakGetEmPkmn
- cmp r2, 0x2
- beq _0814E47C
- b _0814E6D8
-_0814E47C:
- ldr r7, =gText_GoForItPkmn
- b _0814E6D8
- .pool
-_0814E488:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0814E4DC
- movs r0, 0x80
- lsls r0, 16
- ands r0, r1
- cmp r0, 0
- beq _0814E4AC
- ldrb r0, [r4, 0x17]
- b _0814E4EA
- .pool
-_0814E4AC:
- movs r0, 0x40
- ands r1, r0
- cmp r1, 0
- beq _0814E4BC
- ldr r7, =gText_TrainerXSentOutPkmn3
- b _0814E6D8
- .pool
-_0814E4BC:
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 4
- ldr r7, =gText_TrainerXSentOutPkmn2
- cmp r1, r0
- beq _0814E4CC
- b _0814E6D8
-_0814E4CC:
- ldr r7, =gText_TrainerXYSentOutPkmn2
- b _0814E6D8
- .pool
-_0814E4DC:
- movs r0, 0x80
- lsls r0, 8
- ands r1, r0
- cmp r1, 0
- beq _0814E4CC
- mov r1, r9
- ldrb r0, [r1, 0x17]
-_0814E4EA:
- ldr r7, =gText_TrainerXYSentOutPkmn3
- cmp r0, 0x1
- beq _0814E4F2
- b _0814E6D8
-_0814E4F2:
- b _0814E4CC
- .pool
-_0814E4F8:
- mov r0, r10
- bl sub_814F8F8
- ldr r0, =gStringInfo
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _0814E534
- ldr r0, =gBattleTextBuff2
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r1, 0x8E
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- ldr r2, =gText_UnknownMoveTypes
- adds r1, r2
- bl StringCopy
- b _0814E544
- .pool
-_0814E534:
- ldr r0, =gBattleTextBuff2
- ldrh r2, [r2]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
-_0814E544:
- ldr r0, =gBattleTextBuff2
- bl sub_814F950
- ldr r7, =gText_XUsedY2
- b _0814E6D8
- .pool
-_0814E55C:
- ldr r4, =gBattleTextBuff1
- ldrb r1, [r4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0814E5C4
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r4]
- mov r1, r12
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0814E58A
- ldrb r1, [r4]
- cmp r1, 0x3
- beq _0814E58A
- movs r0, 0x3
- eors r0, r1
- strb r0, [r4]
-_0814E58A:
- ldr r0, =gBattleTextBuff1
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0814E5A4
- ldr r7, =gText_GotAwaySafely
- b _0814E6D8
- .pool
-_0814E5A4:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- ldr r7, =gText_WildFled
- cmp r0, 0
- bne _0814E5B4
- b _0814E6D8
-_0814E5B4:
- ldr r7, =gText_TwoWildFled
- b _0814E6D8
- .pool
-_0814E5C4:
- mov r1, r12
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0814E5E0
- ldrb r1, [r4]
- cmp r1, 0x3
- beq _0814E5E0
- movs r0, 0x3
- eors r0, r1
- strb r0, [r4]
-_0814E5E0:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0814E638
- ldr r0, =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0814E628
- cmp r0, 0x2
- bgt _0814E608
- cmp r0, 0x1
- beq _0814E60E
- b _0814E6D8
- .pool
-_0814E608:
- cmp r0, 0x3
- beq _0814E630
- b _0814E6D8
-_0814E60E:
- movs r0, 0x80
- lsls r0, 16
- ands r1, r0
- ldr r7, =gText_PlayerBeatTwo
- cmp r1, 0
- beq _0814E6D8
- ldr r7, =gText_TwoEnemiesDefeated
- b _0814E6D8
- .pool
-_0814E628:
- ldr r7, =gText_PlayerLostToTwo
- b _0814E6D8
- .pool
-_0814E630:
- ldr r7, =gText_PlayerBattledToDrawVsTwo
- b _0814E6D8
- .pool
-_0814E638:
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 4
- cmp r1, r0
- bne _0814E680
- ldr r0, =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0814E670
- cmp r0, 0x2
- bgt _0814E660
- cmp r0, 0x1
- beq _0814E666
- b _0814E6D8
- .pool
-_0814E660:
- cmp r0, 0x3
- beq _0814E678
- b _0814E6D8
-_0814E666:
- ldr r7, =gText_PlayerDefeatedXY
- b _0814E6D8
- .pool
-_0814E670:
- ldr r7, =gText_PlayerLostAgainst2
- b _0814E6D8
- .pool
-_0814E678:
- ldr r7, =gText_PlayerBattledToDraw2
- b _0814E6D8
- .pool
-_0814E680:
- ldr r0, =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0814E6A8
- cmp r0, 0x2
- bgt _0814E698
- cmp r0, 0x1
- beq _0814E69E
- b _0814E6D8
- .pool
-_0814E698:
- cmp r0, 0x3
- beq _0814E6B0
- b _0814E6D8
-_0814E69E:
- ldr r7, =gText_PlayerDefeated
- b _0814E6D8
- .pool
-_0814E6A8:
- ldr r7, =gText_PlayerLostAgainst
- b _0814E6D8
- .pool
-_0814E6B0:
- ldr r7, =gText_PlayerBattledToDraw
- b _0814E6D8
- .pool
-_0814E6B8:
- movs r0, 0xBE
- lsls r0, 1
- cmp r6, r0
- bls _0814E6CC
- ldr r1, =gDisplayedStringBattle
- movs r0, 0xFF
- strb r0, [r1]
- b _0814E6DE
- .pool
-_0814E6CC:
- ldr r1, =gBattleStringsTable
- adds r0, r6, 0
- subs r0, 0xC
- lsls r0, 2
- adds r0, r1
- ldr r7, [r0]
-_0814E6D8:
- adds r0, r7, 0
- bl StrCpyDecodeToDisplayedStringBattle
-_0814E6DE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end BufferStringBattle
-
- thumb_func_start StrCpyDecodeToDisplayedStringBattle
-StrCpyDecodeToDisplayedStringBattle: @ 814E6F0
- push {lr}
- ldr r1, =gDisplayedStringBattle
- bl StrCpyDecodeBattle
- pop {r1}
- bx r1
- .pool
- thumb_func_end StrCpyDecodeToDisplayedStringBattle
-
- thumb_func_start AppendStatusString
-AppendStatusString: @ 814E700
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, =gUnknown_085CD422
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- mov r2, sp
- movs r3, 0
- b _0814E728
- .pool
-_0814E71C:
- strb r1, [r2]
- adds r4, 0x1
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x7
- bhi _0814E730
-_0814E728:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814E71C
-_0814E730:
- ldr r5, [sp]
- ldr r4, [sp, 0x4]
- movs r3, 0
- ldr r2, =gUnknown_0831BCA8
-_0814E738:
- ldr r1, [r2]
- ldr r0, [r1]
- cmp r5, r0
- bne _0814E750
- ldr r0, [r1, 0x4]
- cmp r4, r0
- bne _0814E750
- ldr r0, [r2, 0x4]
- b _0814E75A
- .pool
-_0814E750:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x6
- bls _0814E738
- movs r0, 0
-_0814E75A:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end AppendStatusString
-
- thumb_func_start StrCpyDecodeBattle
-StrCpyDecodeBattle: @ 814E764
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x20
- mov r9, r0
- mov r8, r1
- movs r6, 0
- movs r4, 0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _0814E794
- ldr r0, =gUnknown_0203C7B4
- ldrb r7, [r0]
- b _0814E79C
- .pool
-_0814E794:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r7, r0, 24
-_0814E79C:
- mov r0, r9
- ldrb r1, [r0]
- bl _0814F620
-_0814E7A4:
- cmp r1, 0xFD
- beq _0814E7AC
- bl _0814F610
-_0814E7AC:
- movs r1, 0x1
- add r9, r1
- mov r2, r9
- ldrb r0, [r2]
- cmp r0, 0x34
- bls _0814E7BC
- bl _0814F5C0
-_0814E7BC:
- lsls r0, 2
- ldr r1, =_0814E7CC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0814E7CC:
- .4byte _0814E8A0
- .4byte _0814E8CE
- .4byte _0814E90A
- .4byte _0814E914
- .4byte _0814E920
- .4byte _0814E92C
- .4byte _0814E960
- .4byte _0814E994
- .4byte _0814E9C8
- .4byte _0814E9FC
- .4byte _0814EA38
- .4byte _0814EA78
- .4byte _0814EAB8
- .4byte _0814EAF8
- .4byte _0814EBB0
- .4byte _0814EC38
- .4byte _0814ECD4
- .4byte _0814ED70
- .4byte _0814EE0C
- .4byte _0814EEA8
- .4byte _0814EF44
- .4byte _0814EF5C
- .4byte _0814EF98
- .4byte _0814F080
- .4byte _0814F088
- .4byte _0814F098
- .4byte _0814F0A8
- .4byte _0814F0B8
- .4byte _0814F0D8
- .4byte _0814F164
- .4byte _0814F220
- .4byte _0814F230
- .4byte _0814F244
- .4byte _0814F258
- .4byte _0814F27C
- .4byte _0814F298
- .4byte _0814F2C0
- .4byte _0814F300
- .4byte _0814F330
- .4byte _0814F3C4
- .4byte _0814F410
- .4byte _0814F418
- .4byte _0814F3E4
- .4byte _0814F3EC
- .4byte _0814F43C
- .4byte _0814F444
- .4byte _0814F468
- .4byte _0814F4B8
- .4byte _0814F508
- .4byte _0814F548
- .4byte _0814F594
- .4byte _0814F5B4
- .4byte _0814E8E4
-_0814E8A0:
- ldr r5, =gBattleTextBuff1
- ldrb r0, [r5]
- cmp r0, 0xFD
- bne _0814E8B8
- ldr r4, =gStringVar1
- adds r0, r5, 0
- b _0814E8F0
- .pool
-_0814E8B8:
- adds r0, r5, 0
- bl AppendStatusString
- adds r4, r0, 0
- cmp r4, 0
- beq _0814E8C8
- bl _0814F5C0
-_0814E8C8:
- adds r4, r5, 0
- bl _0814F5C0
-_0814E8CE:
- ldr r1, =gBattleTextBuff2
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _0814E904
- ldr r4, =gStringVar2
- b _0814E8EE
- .pool
-_0814E8E4:
- ldr r1, =gBattleTextBuff3
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _0814E904
- ldr r4, =gStringVar3
-_0814E8EE:
- adds r0, r1, 0
-_0814E8F0:
- adds r1, r4, 0
- bl StrCpyDecodeBattleTextBuff
- bl _0814F5C0
- .pool
-_0814E904:
- adds r4, r1, 0
- bl _0814F5C0
-_0814E90A:
- ldr r4, =gStringVar1
- bl _0814F5C0
- .pool
-_0814E914:
- ldr r4, =gStringVar2
- bl _0814F5C0
- .pool
-_0814E920:
- ldr r4, =gStringVar3
- bl _0814F5C0
- .pool
-_0814E92C:
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814E960:
- movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814E994:
- movs r0, 0x2
- bl GetBankByPlayerAI
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814E9C8:
- movs r0, 0x3
- bl GetBankByPlayerAI
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814E9FC:
- ldr r2, =gBattlePartyID
- ldr r1, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x18]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EA38:
- ldr r2, =gBattlePartyID
- ldr r1, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EA78:
- ldr r2, =gBattlePartyID
- ldr r1, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EAB8:
- ldr r2, =gBattlePartyID
- ldr r1, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EAF8:
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- adds r2, r4, 0
- cmp r0, 0
- beq _0814EB74
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814EB36
- ldr r4, =gText_FoePkmnPrefix
- b _0814EB36
- .pool
-_0814EB2C:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_0814EB36:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814EB2C
- ldrb r0, [r2]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EB9E
- .pool
-_0814EB74:
- ldrb r0, [r2]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EB9E:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EBB0:
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814EBF8
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EC24
- .pool
-_0814EBF8:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EC24:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EC38:
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814ECA8
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814EC56
- ldr r4, =gText_FoePkmnPrefix
-_0814EC56:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814EC78
-_0814EC66:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814EC66
-_0814EC78:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814ECC2
- .pool
-_0814ECA8:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814ECC2:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814ECD4:
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814ED44
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814ECF2
- ldr r4, =gText_FoePkmnPrefix
-_0814ECF2:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814ED14
-_0814ED02:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814ED02
-_0814ED14:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814ED5E
- .pool
-_0814ED44:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814ED5E:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814ED70:
- ldr r5, =gEffectBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814EDE0
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814ED8E
- ldr r4, =gText_FoePkmnPrefix
-_0814ED8E:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814EDB0
-_0814ED9E:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814ED9E
-_0814EDB0:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EDFA
- .pool
-_0814EDE0:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EDFA:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EE0C:
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814EE7C
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814EE2A
- ldr r4, =gText_FoePkmnPrefix
-_0814EE2A:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814EE4C
-_0814EE3A:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814EE3A
-_0814EE4C:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EE96
- .pool
-_0814EE7C:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EE96:
- mov r0, sp
- bl StringGetEnd10
- b _0814F5BE
- .pool
-_0814EEA8:
- ldr r5, =gBattleScripting
- ldrb r0, [r5, 0x17]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814EF18
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814EEC6
- ldr r4, =gText_FoePkmnPrefix
-_0814EEC6:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814EEE8
-_0814EED6:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814EED6
-_0814EEE8:
- ldrb r0, [r2, 0x17]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EF32
- .pool
-_0814EF18:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5, 0x17]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EF32:
- mov r0, sp
- bl StringGetEnd10
- b _0814F5BE
- .pool
-_0814EF44:
- ldr r0, =gStringInfo
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bhi _0814EF6A
- ldrh r1, [r2]
- b _0814EF8A
- .pool
-_0814EF5C:
- ldr r0, =gStringInfo
- ldr r2, [r0]
- ldrh r1, [r2, 0x2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _0814EF88
-_0814EF6A:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- ldr r1, =gText_UnknownMoveTypes
- adds r4, r0, r1
- b _0814F5C0
- .pool
-_0814EF88:
- ldrh r1, [r2, 0x2]
-_0814EF8A:
- movs r0, 0xD
- muls r1, r0
- ldr r0, =gMoveNames
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814EF98:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0814F06E
- ldr r2, =gLastUsedItem
- ldrh r0, [r2]
- cmp r0, 0xAF
- bne _0814F064
- movs r0, 0x40
- ands r1, r0
- cmp r1, 0
- bne _0814F014
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r0, [r0]
- cmp r0, 0
- beq _0814EFE0
- ldr r2, =gStringBank
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0814EFEC
- b _0814F05C
- .pool
-_0814EFE0:
- ldr r2, =gStringBank
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0814F05C
-_0814EFEC:
- ldrb r0, [r2]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, =gEnigmaBerries
- adds r1, r0
- mov r0, sp
- bl StringCopy
- ldr r1, =gText_BerrySuffix
- mov r0, sp
- bl StringAppend
- b _0814F5BE
- .pool
-_0814F014:
- ldr r2, =gLinkPlayers
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _0814F05C
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, =gEnigmaBerries
- adds r1, r0
- mov r0, sp
- bl StringCopy
- ldr r1, =gText_BerrySuffix
- mov r0, sp
- bl StringAppend
- b _0814F5BE
- .pool
-_0814F05C:
- ldr r4, =gText_EnigmaBerry
- b _0814F5C0
- .pool
-_0814F064:
- ldrh r0, [r2]
- mov r1, sp
- bl CopyItemName
- b _0814F5BE
-_0814F06E:
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- mov r1, sp
- bl CopyItemName
- b _0814F5BE
- .pool
-_0814F080:
- ldr r0, =gLastUsedAbility
- b _0814F0C0
- .pool
-_0814F088:
- ldr r1, =gAbilitiesPerBank
- ldr r0, =gBankAttacker
- b _0814F0BC
- .pool
-_0814F098:
- ldr r1, =gAbilitiesPerBank
- ldr r0, =gBankTarget
- b _0814F0BC
- .pool
-_0814F0A8:
- ldr r1, =gAbilitiesPerBank
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- b _0814F0BE
- .pool
-_0814F0B8:
- ldr r1, =gAbilitiesPerBank
- ldr r0, =gEffectBank
-_0814F0BC:
- ldrb r0, [r0]
-_0814F0BE:
- adds r0, r1
-_0814F0C0:
- ldrb r1, [r0]
- movs r0, 0xD
- muls r1, r0
- ldr r0, =gAbilityNames
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814F0D8:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 20
- ands r0, r1
- cmp r0, 0
- beq _0814F0F0
- bl GetSecretBaseTrainerNameIndex
- b _0814F59C
- .pool
-_0814F0F0:
- ldr r3, =gTrainerBattleOpponent_A
- ldrh r2, [r3]
- movs r0, 0xC0
- lsls r0, 4
- cmp r2, r0
- bne _0814F10C
- bl sub_8068BB0
- lsls r0, 16
- lsrs r0, 16
- b _0814F5A0
- .pool
-_0814F10C:
- ldr r0, =0x000003fe
- cmp r2, r0
- bne _0814F11C
- bl sub_81A4D00
- b _0814F59C
- .pool
-_0814F11C:
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F12C
- ldrh r0, [r3]
- b _0814F598
- .pool
-_0814F12C:
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _0814F13E
- ldrh r0, [r3]
- bl sub_81D5530
- b _0814F59C
-_0814F13E:
- movs r0, 0x80
- lsls r0, 4
- ands r1, r0
- cmp r1, 0
- beq _0814F14E
- bl sub_8165264
- b _0814F59C
-_0814F14E:
- ldr r2, =gTrainers
- ldrh r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- b _0814F5A2
- .pool
-_0814F164:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 20
- ands r0, r1
- cmp r0, 0
- beq _0814F1AC
- movs r2, 0
- ldr r4, =gBattleResources
- ldr r3, [r4]
-_0814F178:
- mov r1, sp
- adds r0, r1, r2
- ldr r1, [r3]
- adds r1, 0x2
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x6
- ble _0814F178
- mov r3, sp
- adds r1, r3, r2
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r1, [r0, 0xD]
- mov r0, sp
- bl ConvertInternationalString
- b _0814F5BE
- .pool
-_0814F1AC:
- ldr r3, =gTrainerBattleOpponent_A
- ldrh r2, [r3]
- movs r0, 0xC0
- lsls r0, 4
- cmp r2, r0
- bne _0814F1C4
- movs r1, 0x1
- adds r0, r7, 0
- eors r0, r1
- b _0814F284
- .pool
-_0814F1C4:
- ldr r0, =0x000003fe
- cmp r2, r0
- bne _0814F1D8
- mov r0, sp
- bl sub_81A4D50
- b _0814F5BE
- .pool
-_0814F1D8:
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F1E8
- ldrh r1, [r3]
- b _0814F5B8
- .pool
-_0814F1E8:
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _0814F1FC
- ldrh r1, [r3]
- mov r0, sp
- bl sub_81D5554
- b _0814F5BE
-_0814F1FC:
- movs r0, 0x80
- lsls r0, 4
- ands r1, r0
- cmp r1, 0
- beq _0814F20E
- mov r0, sp
- bl sub_8165284
- b _0814F5BE
-_0814F20E:
- ldrh r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTrainers + 0x4 @ name offset
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814F220:
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- ldr r1, =gLinkPlayers + 8
- adds r4, r0, r1
- b _0814F5C0
- .pool
-_0814F230:
- ldr r4, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- b _0814F266
- .pool
-_0814F244:
- ldr r4, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- b _0814F266
- .pool
-_0814F258:
- ldr r4, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
-_0814F266:
- eors r0, r1
- bl sub_806D864
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r4, 0x8
- adds r4, r1, r4
- b _0814F5C0
- .pool
-_0814F27C:
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- bl sub_806D864
-_0814F284:
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, =gLinkPlayers + 8
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814F298:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0814F2B4
- ldr r4, =gLinkPlayers + 8
- b _0814F5C0
- .pool
-_0814F2B4:
- ldr r0, =gSaveBlock2Ptr
- ldr r4, [r0]
- b _0814F5C0
- .pool
-_0814F2C0:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F2E0
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x2
- b _0814F55A
- .pool
-_0814F2E0:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F2F8
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x4
- b _0814F584
- .pool
-_0814F2F8:
- bl sub_80B1CA4
- adds r4, r0, 0
- b _0814F5C0
-_0814F300:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F31C
- ldr r0, =gTrainerBattleOpponent_A
- b _0814F556
- .pool
-_0814F31C:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- bne _0814F328
- b _0814F5C0
-_0814F328:
- ldr r0, =gTrainerBattleOpponent_A
- b _0814F580
- .pool
-_0814F330:
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814F39C
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814F34E
- ldr r4, =gText_FoePkmnPrefix
-_0814F34E:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r5, =gEnemyParty
- mov r12, r5
- ldr r2, =gBattleStruct
- cmp r0, 0xFF
- beq _0814F36E
-_0814F35C:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814F35C
-_0814F36E:
- ldr r0, [r2]
- adds r0, 0x52
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814F3B4
- .pool
-_0814F39C:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x52
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814F3B4:
- mov r0, sp
- bl StringGetEnd10
- b _0814F5BE
- .pool
-_0814F3C4:
- ldr r0, =0x000008ab
- bl FlagGet
- lsls r0, 24
- ldr r4, =gText_Someones
- cmp r0, 0
- bne _0814F3D4
- b _0814F5C0
-_0814F3D4:
- ldr r4, =gText_Lanettes
- b _0814F5C0
- .pool
-_0814F3E4:
- ldr r0, =gBankAttacker
- b _0814F3EE
- .pool
-_0814F3EC:
- ldr r0, =gBankTarget
-_0814F3EE:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, =gText_FoePkmnPrefix3
- cmp r0, 0
- beq _0814F3FE
- b _0814F5C0
-_0814F3FE:
- ldr r4, =gText_AllyPkmnPrefix2
- b _0814F5C0
- .pool
-_0814F410:
- ldr r0, =gBankAttacker
- b _0814F41A
- .pool
-_0814F418:
- ldr r0, =gBankTarget
-_0814F41A:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, =gText_FoePkmnPrefix2
- cmp r0, 0
- beq _0814F42A
- b _0814F5C0
-_0814F42A:
- ldr r4, =gText_AllyPkmnPrefix
- b _0814F5C0
- .pool
-_0814F43C:
- ldr r0, =gBankAttacker
- b _0814F446
- .pool
-_0814F444:
- ldr r0, =gBankTarget
-_0814F446:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, =gText_FoePkmnPrefix4
- cmp r0, 0
- beq _0814F456
- b _0814F5C0
-_0814F456:
- ldr r4, =gText_AllyPkmnPrefix3
- b _0814F5C0
- .pool
-_0814F468:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F484
- ldr r0, =gTrainerBattleOpponent_B
- b _0814F596
- .pool
-_0814F484:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F49C
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r0, [r0]
- bl sub_81D5530
- b _0814F59C
- .pool
-_0814F49C:
- ldr r2, =gTrainers
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- b _0814F5A2
- .pool
-_0814F4B8:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F4D4
- ldr r0, =gTrainerBattleOpponent_B
- b _0814F5B6
- .pool
-_0814F4D4:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F4F0
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- mov r0, sp
- bl sub_81D5554
- b _0814F5BE
- .pool
-_0814F4F0:
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, =gTrainers + 0x4 @ name offset
- adds r4, r0, r1
- b _0814F5C0
- .pool
-_0814F508:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F528
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- movs r0, 0x2
- b _0814F55A
- .pool
-_0814F528:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F540
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- movs r0, 0x4
- b _0814F584
- .pool
-_0814F540:
- bl sub_80B1CE0
- adds r4, r0, 0
- b _0814F5C0
-_0814F548:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F574
- ldr r0, =gTrainerBattleOpponent_B
-_0814F556:
- ldrh r1, [r0]
- movs r0, 0x1
-_0814F55A:
- bl sub_81A36D0
- ldr r4, =gStringVar4
- b _0814F5C0
- .pool
-_0814F574:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F5C0
- ldr r0, =gTrainerBattleOpponent_B
-_0814F580:
- ldrh r1, [r0]
- movs r0, 0x3
-_0814F584:
- bl sub_81D572C
- ldr r4, =gStringVar4
- b _0814F5C0
- .pool
-_0814F594:
- ldr r0, =gPartnerTrainerId
-_0814F596:
- ldrh r0, [r0]
-_0814F598:
- bl GetFrontierOpponentClass
-_0814F59C:
- lsls r0, 24
- lsrs r0, 24
-_0814F5A0:
- movs r1, 0xD
-_0814F5A2:
- muls r1, r0
- ldr r0, =gTrainerClassNames
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814F5B4:
- ldr r0, =gPartnerTrainerId
-_0814F5B6:
- ldrh r1, [r0]
-_0814F5B8:
- mov r0, sp
- bl GetFrontierTrainerName
-_0814F5BE:
- mov r4, sp
-_0814F5C0:
- ldrb r1, [r4]
- adds r0, r1, 0
- mov r5, r9
- ldrb r2, [r5]
- mov r3, r9
- adds r3, 0x1
- cmp r0, 0xFF
- beq _0814F5E2
-_0814F5D0:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814F5D0
-_0814F5E2:
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x24
- beq _0814F5F6
- cmp r0, 0x30
- beq _0814F5F6
- cmp r0, 0x25
- beq _0814F5F6
- cmp r0, 0x31
- bne _0814F61C
-_0814F5F6:
- mov r0, r8
- adds r1, r0, r6
- movs r0, 0xFC
- strb r0, [r1]
- adds r6, 0x1
- mov r2, r8
- adds r1, r2, r6
- movs r0, 0x9
- strb r0, [r1]
- adds r6, 0x1
- b _0814F61C
- .pool
-_0814F610:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- mov r3, r9
- adds r3, 0x1
-_0814F61C:
- mov r9, r3
- ldrb r1, [r3]
-_0814F620:
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _0814F62A
- bl _0814E7A4
-_0814F62A:
- mov r5, r8
- adds r1, r5, r6
- mov r2, r9
- ldrb r0, [r2]
- strb r0, [r1]
- adds r6, 0x1
- adds r0, r6, 0
- add sp, 0x20
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end StrCpyDecodeBattle
-
- thumb_func_start StrCpyDecodeBattleTextBuff
-StrCpyDecodeBattleTextBuff: @ 814F648
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r7, r0, 0
- adds r6, r1, 0
- movs r5, 0x1
- movs r0, 0
- mov r8, r0
- movs r0, 0xFF
- strb r0, [r6]
- ldrb r0, [r7, 0x1]
- cmp r0, 0xFF
- bne _0814F666
- b _0814F8EA
-_0814F666:
- adds r0, r7, r5
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0xA
- bls _0814F672
- b _0814F8E0
-_0814F672:
- lsls r0, r1, 2
- ldr r1, =_0814F680
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0814F680:
- .4byte _0814F6AC
- .4byte _0814F6C8
- .4byte _0814F71C
- .4byte _0814F734
- .4byte _0814F744
- .4byte _0814F7BC
- .4byte _0814F7D0
- .4byte _0814F7E2
- .4byte _0814F828
- .4byte _0814F83C
- .4byte _0814F858
-_0814F6AC:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r0, =gBattleStringsTable
- subs r1, 0xC
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- b _0814F8BE
- .pool
-_0814F6C8:
- ldrb r0, [r4, 0x1]
- cmp r0, 0x2
- beq _0814F6E4
- cmp r0, 0x2
- bgt _0814F6D8
- cmp r0, 0x1
- beq _0814F6DE
- b _0814F706
-_0814F6D8:
- cmp r0, 0x4
- beq _0814F6EC
- b _0814F706
-_0814F6DE:
- ldrb r4, [r4, 0x3]
- mov r8, r4
- b _0814F706
-_0814F6E4:
- ldrb r1, [r4, 0x3]
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- b _0814F702
-_0814F6EC:
- ldrb r0, [r4, 0x3]
- mov r8, r0
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- mov r1, r8
- orrs r1, r0
- ldrb r0, [r4, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r4, 0x6]
- lsls r0, 24
-_0814F702:
- orrs r1, r0
- mov r8, r1
-_0814F706:
- adds r4, r5, r7
- ldrb r3, [r4, 0x2]
- adds r0, r6, 0
- mov r1, r8
- movs r2, 0
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0x3
- ldrb r4, [r4, 0x1]
- adds r5, r0, r4
- b _0814F8E0
-_0814F71C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0xD
- muls r1, r0
- ldr r0, =gMoveNames
- adds r1, r0
- b _0814F8BE
- .pool
-_0814F734:
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, =gTypeNames
- b _0814F846
- .pool
-_0814F744:
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814F768
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814F7A4
- .pool
-_0814F768:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0814F788
- ldr r1, =gText_FoePkmnPrefix
- adds r0, r6, 0
- bl StringAppend
- b _0814F790
- .pool
-_0814F788:
- ldr r1, =gText_WildPkmnPrefix
- adds r0, r6, 0
- bl StringAppend
-_0814F790:
- adds r0, r5, r7
- ldrb r1, [r0, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814F7A4:
- mov r0, sp
- bl StringGetEnd10
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- b _0814F8DE
- .pool
-_0814F7BC:
- ldr r1, =gStatNamesTable
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _0814F848
- .pool
-_0814F7D0:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- adds r0, r6, 0
- bl GetSpeciesName
- b _0814F8DE
-_0814F7E2:
- adds r4, r5, r7
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814F808
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
- b _0814F81A
- .pool
-_0814F808:
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
-_0814F81A:
- adds r0, r6, 0
- bl StringGetEnd10
- b _0814F8DE
- .pool
-_0814F828:
- ldr r1, =gPokeblockWasTooXStringTable
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _0814F848
- .pool
-_0814F83C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- muls r1, r0
- ldr r0, =gAbilityNames
-_0814F846:
- adds r1, r0
-_0814F848:
- adds r0, r6, 0
- bl StringAppend
- adds r5, 0x2
- b _0814F8E0
- .pool
-_0814F858:
- adds r0, r5, r7
- ldrb r2, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0814F8D6
- cmp r2, 0xAF
- bne _0814F8CC
- ldr r2, =gLinkPlayers
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _0814F8BC
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, =gEnigmaBerries
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- ldr r1, =gText_BerrySuffix
- b _0814F8BE
- .pool
-_0814F8BC:
- ldr r1, =gText_EnigmaBerry
-_0814F8BE:
- adds r0, r6, 0
- bl StringAppend
- b _0814F8DE
- .pool
-_0814F8CC:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
- b _0814F8DE
-_0814F8D6:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
-_0814F8DE:
- adds r5, 0x3
-_0814F8E0:
- adds r0, r7, r5
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0814F8EA
- b _0814F666
-_0814F8EA:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end StrCpyDecodeBattleTextBuff
-
- thumb_func_start sub_814F8F8
-sub_814F8F8: @ 814F8F8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r2, 0
- ldr r5, =gStringInfo
- ldr r3, =gUnknown_085CD336
-_0814F902:
- cmp r2, 0x4
- beq _0814F918
- ldrh r1, [r3]
- cmp r1, 0
- bne _0814F90E
- adds r2, 0x1
-_0814F90E:
- ldr r0, [r5]
- adds r3, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _0814F902
-_0814F918:
- cmp r2, 0
- blt _0814F944
- cmp r2, 0x2
- bgt _0814F938
- ldr r1, =gText_SpaceIs
- adds r0, r4, 0
- bl StringCopy
- b _0814F944
- .pool
-_0814F938:
- cmp r2, 0x4
- bgt _0814F944
- ldr r1, =gText_ApostropheS
- adds r0, r4, 0
- bl StringCopy
-_0814F944:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814F8F8
-
- thumb_func_start sub_814F950
-sub_814F950: @ 814F950
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r4, 0
- b _0814F95A
-_0814F958:
- adds r3, 0x1
-_0814F95A:
- ldrb r0, [r3]
- cmp r0, 0xFF
- bne _0814F958
- ldr r1, =gUnknown_085CD336
- ldr r5, =gStringInfo
- movs r0, 0
- lsls r0, 1
- adds r2, r0, r1
-_0814F96A:
- cmp r4, 0x4
- beq _0814F984
- ldrh r1, [r2]
- cmp r1, 0
- bne _0814F976
- adds r4, 0x1
-_0814F976:
- ldr r0, [r5]
- adds r2, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _0814F96A
- cmp r4, 0x4
- bhi _0814F9E0
-_0814F984:
- lsls r0, r4, 2
- ldr r1, =_0814F99C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0814F99C:
- .4byte _0814F9B0
- .4byte _0814F9B8
- .4byte _0814F9C0
- .4byte _0814F9C8
- .4byte _0814F9D8
-_0814F9B0:
- ldr r1, =gText_ExclamationMark
- b _0814F9CA
- .pool
-_0814F9B8:
- ldr r1, =gText_ExclamationMark2
- b _0814F9CA
- .pool
-_0814F9C0:
- ldr r1, =gText_ExclamationMark3
- b _0814F9CA
- .pool
-_0814F9C8:
- ldr r1, =gText_ExclamationMark4
-_0814F9CA:
- adds r0, r3, 0
- bl StringCopy
- b _0814F9E0
- .pool
-_0814F9D8:
- ldr r1, =gText_ExclamationMark5
- adds r0, r3, 0
- bl StringCopy
-_0814F9E0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814F950
-
- thumb_func_start battle_show_message_maybe
-battle_show_message_maybe: @ 814F9EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r1, =gUnknown_085CD660
- ldr r0, =gBattleScripting
- adds r0, 0x24
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- mov r8, r0
- movs r0, 0x80
- ands r0, r7
- cmp r0, 0
- beq _0814FA24
- movs r0, 0x7F
- ands r7, r0
- movs r0, 0
- b _0814FA36
- .pool
-_0814FA24:
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 2
- add r0, r8
- ldrb r1, [r0]
- adds r0, r7, 0
- bl FillWindowPixelBuffer
- movs r0, 0x1
-_0814FA36:
- mov r9, r0
- str r4, [sp]
- mov r0, sp
- strb r7, [r0, 0x4]
- mov r1, sp
- lsls r6, r7, 1
- adds r3, r6, r7
- lsls r3, 2
- add r3, r8
- ldrb r0, [r3, 0x1]
- strb r0, [r1, 0x5]
- ldrb r0, [r3, 0x2]
- strb r0, [r1, 0x6]
- ldrb r0, [r3, 0x3]
- strb r0, [r1, 0x7]
- mov r0, sp
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x8]
- mov r0, sp
- ldrb r0, [r0, 0x7]
- strb r0, [r1, 0x9]
- ldrb r0, [r3, 0x4]
- strb r0, [r1, 0xA]
- ldrb r0, [r3, 0x5]
- strb r0, [r1, 0xB]
- mov r4, sp
- ldrb r2, [r4, 0xC]
- movs r1, 0x10
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r4, 0xC]
- mov r2, sp
- ldrb r0, [r3, 0x7]
- lsls r0, 4
- movs r5, 0xF
- strb r0, [r2, 0xC]
- ldrb r2, [r3, 0x8]
- adds r0, r5, 0
- ands r0, r2
- ldrb r2, [r4, 0xD]
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xD]
- mov r2, sp
- ldrb r0, [r3, 0x9]
- lsls r0, 4
- ands r1, r5
- orrs r1, r0
- strb r1, [r2, 0xD]
- mov r0, sp
- ldrb r0, [r0, 0x6]
- cmp r0, 0xFF
- bne _0814FAC6
- ldr r0, =gBattleScripting
- adds r0, 0x24
- ldrb r0, [r0]
- adds r1, r7, 0
- bl sub_80397C4
- adds r2, r0, 0
- mov r0, sp
- ldrb r0, [r0, 0x5]
- ldr r1, [sp]
- mov r3, sp
- ldrb r3, [r3, 0xA]
- bl GetStringCenterAlignXOffsetWithLetterSpacing
- mov r2, sp
- mov r1, sp
- strb r0, [r1, 0x8]
- strb r0, [r2, 0x6]
-_0814FAC6:
- cmp r7, 0x16
- bne _0814FAE0
- ldr r0, =gTextFlags
- ldrb r2, [r0]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- b _0814FAE8
- .pool
-_0814FAE0:
- ldr r0, =gTextFlags
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
-_0814FAE8:
- strb r1, [r0]
- adds r3, r0, 0
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r2, =0x01000002
- ands r1, r2
- adds r2, r0, 0
- cmp r1, 0
- beq _0814FB10
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- b _0814FB18
- .pool
-_0814FB10:
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
-_0814FB18:
- strb r0, [r3]
- cmp r7, 0
- beq _0814FB22
- cmp r7, 0x16
- bne _0814FB6C
-_0814FB22:
- ldr r1, [r2]
- ldr r0, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0814FB34
- movs r6, 0x1
- b _0814FB5C
- .pool
-_0814FB34:
- movs r0, 0x80
- lsls r0, 17
- ands r1, r0
- cmp r1, 0
- beq _0814FB54
- ldr r4, =gUnknown_085CD668
- bl sub_8185FC4
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r6, [r0]
- b _0814FB5C
- .pool
-_0814FB54:
- bl sav2_get_text_speed
- lsls r0, 24
- lsrs r6, r0, 24
-_0814FB5C:
- ldr r0, =gTextFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _0814FB7E
- .pool
-_0814FB6C:
- adds r0, r6, r7
- lsls r0, 2
- add r0, r8
- ldrb r6, [r0, 0x6]
- ldrb r1, [r3]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
-_0814FB7E:
- mov r0, sp
- adds r1, r6, 0
- movs r2, 0
- bl AddTextPrinter
- mov r0, r9
- cmp r0, 0
- beq _0814FB9C
- adds r0, r7, 0
- bl PutWindowTilemap
- adds r0, r7, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0814FB9C:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end battle_show_message_maybe
-
- thumb_func_start sub_814FBAC
-sub_814FBAC: @ 814FBAC
- push {r4,r5,lr}
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- lsls r1, r2, 9
- ldr r0, =gBattleBufferA + 4
- adds r1, r0
- ldr r4, =gUnknown_08D85620
- ldr r0, =gUnknown_020244B0
- adds r2, r0
- ldrb r2, [r2]
- adds r0, r1, 0
- adds r0, 0x8
- adds r0, r2
- ldrb r0, [r0]
- adds r1, 0xC
- adds r1, r2
- ldrb r1, [r1]
- bl sub_814FC20
- lsls r0, 24
- ldr r5, =gPlttBufferUnfaded
- lsrs r0, 22
- adds r0, r4
- ldrh r1, [r0]
- adds r2, r5, 0
- adds r2, 0xB8
- strh r1, [r2]
- ldrh r0, [r0, 0x2]
- adds r5, 0xB6
- strh r0, [r5]
- ldr r4, =gPlttBufferFaded + 0xB8
- adds r0, r2, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl CpuSet
- subs r4, 0x2
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl CpuSet
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814FBAC
-
- thumb_func_start sub_814FC20
-sub_814FC20: @ 814FC20
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- lsls r1, 24
- lsrs r0, r1, 24
- cmp r0, r2
- beq _0814FC68
- cmp r0, 0x2
- bhi _0814FC3A
- cmp r2, 0x1
- bhi _0814FC68
- b _0814FC42
-_0814FC3A:
- cmp r0, 0x7
- bhi _0814FC4C
- cmp r2, 0x2
- bhi _0814FC68
-_0814FC42:
- movs r0, 0x2
- subs r0, r2
- lsls r0, 24
- lsrs r0, 24
- b _0814FC6A
-_0814FC4C:
- cmp r2, 0
- bne _0814FC54
- movs r0, 0x2
- b _0814FC6A
-_0814FC54:
- lsrs r0, r1, 26
- cmp r2, r0
- bhi _0814FC5E
- movs r0, 0x1
- b _0814FC6A
-_0814FC5E:
- lsrs r0, r1, 25
- cmp r3, r0
- bhi _0814FC68
- movs r0, 0
- b _0814FC6A
-_0814FC68:
- movs r0, 0x3
-_0814FC6A:
- pop {r1}
- bx r1
- thumb_func_end sub_814FC20
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
index 752e4adf1..5c7196579 100644
--- a/asm/battle_setup.s
+++ b/asm/battle_setup.s
@@ -41,7 +41,7 @@ _080B062E:
cmp r0, 0x1
bne _080B0652
bl overworld_free_bg_tilemaps
- ldr r0, =sub_8036760
+ ldr r0, =CB2_InitBattle
bl SetMainCallback2
bl prev_quest_postbuffer_cursor_backup_reset
bl overworld_poison_timer_set
@@ -299,8 +299,8 @@ sub_80B086C: @ 80B086C
.pool
thumb_func_end sub_80B086C
- thumb_func_start sub_80B08A8
-sub_80B08A8: @ 80B08A8
+ thumb_func_start BattleSetup_StartScriptedWildBattle
+BattleSetup_StartScriptedWildBattle: @ 80B08A8
push {lr}
bl ScriptContext2_Enable
ldr r1, =gMain
@@ -323,7 +323,7 @@ sub_80B08A8: @ 80B08A8
pop {r0}
bx r0
.pool
- thumb_func_end sub_80B08A8
+ thumb_func_end BattleSetup_StartScriptedWildBattle
thumb_func_start sub_80B08EC
sub_80B08EC: @ 80B08EC
@@ -638,8 +638,8 @@ _080B0BC6:
.pool
thumb_func_end sub_80B0B6C
- thumb_func_start sub_80B0BD0
-sub_80B0BD0: @ 80B0BD0
+ thumb_func_start BattleSetup_GetTerrainId
+BattleSetup_GetTerrainId: @ 80B0BD0
push {r4,r5,lr}
sub sp, 0x4
mov r4, sp
@@ -704,7 +704,7 @@ _080B0C64:
lsls r0, r5, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_8089588
+ bl MetatileBehavior_IsMB_0B
lsls r0, 24
cmp r0, 0
beq _080B0C78
@@ -734,7 +734,7 @@ _080B0C9C:
lsls r0, r5, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_808962C
+ bl MetatileBehavior_IsDeepOrOceanWater
lsls r0, 24
cmp r0, 0
bne _080B0CF2
@@ -744,7 +744,7 @@ _080B0C9C:
cmp r0, 0
bne _080B0CE0
adds r0, r4, 0
- bl sub_808959C
+ bl MetatileBehavior_IsMountain
lsls r0, 24
cmp r0, 0
beq _080B0CC8
@@ -757,7 +757,7 @@ _080B0CC8:
cmp r0, 0
beq _080B0CF6
adds r0, r4, 0
- bl sub_80894D4
+ bl MetatileBehavior_GetBridgeSth
lsls r0, 24
cmp r0, 0
beq _080B0CE4
@@ -766,7 +766,7 @@ _080B0CE0:
b _080B0D1A
_080B0CE4:
adds r0, r4, 0
- bl sub_80894AC
+ bl MetatileBehavior_IsBridge
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -798,7 +798,7 @@ _080B0D1A:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_80B0BD0
+ thumb_func_end BattleSetup_GetTerrainId
thumb_func_start sub_80B0D24
sub_80B0D24: @ 80B0D24
@@ -1357,7 +1357,7 @@ sub_80B1158: @ 80B1158
movs r1, 0x5
movs r2, 0
movs r3, 0
- bl sub_80F9244
+ bl ScriptGiveMon
bl ResetTasks
bl PlayBattleBGM
ldr r0, =sub_80B11A8
@@ -1387,7 +1387,7 @@ sub_80B11A8: @ 80B11A8
ldr r0, =sub_80B1204
str r0, [r1, 0x8]
bl FreeAllWindowBuffers
- ldr r0, =sub_8036760
+ ldr r0, =CB2_InitBattle
bl SetMainCallback2
bl prev_quest_postbuffer_cursor_backup_reset
bl overworld_poison_timer_set
@@ -1686,9 +1686,9 @@ _080B141A:
.pool
thumb_func_end battle_80801F0
- thumb_func_start TrainerBattleConfigure
-@ u8 *TrainerBattleConfigure(u8 *args)
-TrainerBattleConfigure: @ 80B1430
+ thumb_func_start BattleSetup_ConfigureTrainerBattle
+@ u8 *BattleSetup_ConfigureTrainerBattle(u8 *args)
+BattleSetup_ConfigureTrainerBattle: @ 80B1430
push {r4,r5,lr}
adds r5, r0, 0
bl InitTrainerBattleVariables
@@ -1872,7 +1872,7 @@ _080B161E:
pop {r1}
bx r1
.pool
- thumb_func_end TrainerBattleConfigure
+ thumb_func_end BattleSetup_ConfigureTrainerBattle
thumb_func_start SingleTrainerWantsBattle
@ void SingleTrainerWantsBattle(u8 trainerFieldObjectId, u8 *trainerScript)
@@ -1892,7 +1892,7 @@ SingleTrainerWantsBattle: @ 80B162C
strh r0, [r4]
adds r1, 0x1
adds r0, r1, 0
- bl TrainerBattleConfigure
+ bl BattleSetup_ConfigureTrainerBattle
ldr r0, =gUnknown_08271354
bl ScriptContext1_SetupScript
bl ScriptContext2_Enable
@@ -1920,7 +1920,7 @@ TwoTrainersWantBattle: @ 80B1670
strh r0, [r4]
adds r1, 0x1
adds r0, r1, 0
- bl TrainerBattleConfigure
+ bl BattleSetup_ConfigureTrainerBattle
pop {r4}
pop {r0}
bx r0
@@ -2056,8 +2056,8 @@ sub_80B178C: @ 80B178C
bx r0
thumb_func_end sub_80B178C
- thumb_func_start trainer_flag_check
-trainer_flag_check: @ 80B17A0
+ thumb_func_start HasTrainerAlreadyBeenFought
+HasTrainerAlreadyBeenFought: @ 80B17A0
push {lr}
lsls r0, 16
movs r1, 0xA0
@@ -2069,7 +2069,7 @@ trainer_flag_check: @ 80B17A0
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end trainer_flag_check
+ thumb_func_end HasTrainerAlreadyBeenFought
thumb_func_start trainer_flag_set
trainer_flag_set: @ 80B17B8
@@ -2092,13 +2092,13 @@ trainer_flag_clear: @ 80B17CC
lsls r1, 19
adds r0, r1
lsrs r0, 16
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
thumb_func_end trainer_flag_clear
- thumb_func_start sub_80B17E0
-sub_80B17E0: @ 80B17E0
+ thumb_func_start BattleSetup_StartTrainerBattle
+BattleSetup_StartTrainerBattle: @ 80B17E0
push {r4,lr}
ldr r0, =gUnknown_030060A8
ldrb r0, [r0]
@@ -2217,7 +2217,7 @@ _080B190C:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_80B17E0
+ thumb_func_end BattleSetup_StartTrainerBattle
thumb_func_start sub_80B1918
sub_80B1918: @ 80B1918
@@ -2407,14 +2407,14 @@ _080B1AD8:
.pool
_080B1AEC:
bl sub_80B1C7C
- bl box_related_two__2
+ bl ShowFieldMessage
_080B1AF4:
pop {r0}
bx r0
thumb_func_end sub_80B1A14
- thumb_func_start sub_80B1AF8
-sub_80B1AF8: @ 80B1AF8
+ thumb_func_start BattleSetup_GetScriptAddrAfterBattle
+BattleSetup_GetScriptAddrAfterBattle: @ 80B1AF8
push {lr}
ldr r0, =gUnknown_02038BEC
ldr r0, [r0]
@@ -2425,10 +2425,10 @@ _080B1B04:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80B1AF8
+ thumb_func_end BattleSetup_GetScriptAddrAfterBattle
- thumb_func_start sub_80B1B10
-sub_80B1B10: @ 80B1B10
+ thumb_func_start BattleSetup_GetTrainerPostBattleScript
+BattleSetup_GetTrainerPostBattleScript: @ 80B1B10
push {lr}
ldr r1, =gUnknown_02038BF8
ldrb r2, [r1]
@@ -2462,13 +2462,13 @@ _080B1B56:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80B1B10
+ thumb_func_end BattleSetup_GetTrainerPostBattleScript
thumb_func_start special_trainer_unable_to_battle
special_trainer_unable_to_battle: @ 80B1B60
push {lr}
bl sub_80B1D18
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r0}
bx r0
thumb_func_end special_trainer_unable_to_battle
@@ -2617,8 +2617,8 @@ _080B1C96:
.pool
thumb_func_end sub_80B1C7C
- thumb_func_start sub_80B1CA4
-sub_80B1CA4: @ 80B1CA4
+ thumb_func_start GetTrainer1LoseText
+GetTrainer1LoseText: @ 80B1CA4
push {r4,lr}
ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
@@ -2643,10 +2643,10 @@ _080B1CC0:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80B1CA4
+ thumb_func_end GetTrainer1LoseText
- thumb_func_start sub_80B1CE0
-sub_80B1CE0: @ 80B1CE0
+ thumb_func_start GetTrainer2LoseText
+GetTrainer2LoseText: @ 80B1CE0
push {r4,lr}
ldr r4, =gStringVar4
ldr r0, =gUnknown_02038BE0
@@ -2660,7 +2660,7 @@ sub_80B1CE0: @ 80B1CE0
pop {r1}
bx r1
.pool
- thumb_func_end sub_80B1CE0
+ thumb_func_end GetTrainer2LoseText
thumb_func_start sub_80B1D04
sub_80B1D04: @ 80B1D04
@@ -2796,7 +2796,7 @@ _080B1DCE:
ldrh r0, [r4]
cmp r0, 0
beq _080B1DE2
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
bne _080B1DCA
@@ -2895,7 +2895,7 @@ sub_80B1E94: @ 80B1E94
lsls r0, r4, 4
adds r0, r5
ldrh r0, [r0]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3076,7 +3076,7 @@ _080B1FE2:
ldrh r0, [r4]
cmp r0, 0
beq _080B1FCA
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080B1FD4
@@ -3127,7 +3127,7 @@ _080B203A:
ldrh r0, [r4]
cmp r0, 0
beq _080B201E
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080B2028
@@ -3233,7 +3233,7 @@ sub_80B20F4: @ 80B20F4
lsls r0, r1, 4
adds r0, r4
ldrh r0, [r0, 0x2]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080B211E
@@ -3509,7 +3509,7 @@ sub_80B2318: @ 80B2318
lsrs r4, r0, 12
adds r6, r4, r7
ldrh r0, [r6]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3527,7 +3527,7 @@ _080B2338:
adds r4, r6, 0x2
_080B2346:
ldrh r0, [r4]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080B2360
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 0782b8609..74c84e34c 100755
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -1795,7 +1795,7 @@ _08162ED8:
adds r0, 0xE4
ldrb r2, [r0]
adds r0, r6, 0
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
b _08162F62
.pool
_08162F00:
@@ -1835,7 +1835,7 @@ _08162F3E:
adds r1, r0, 0
adds r0, r6, 0
adds r2, r4, 0
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
b _08162F62
.pool
_08162F5C:
@@ -3194,7 +3194,7 @@ sub_8163A8C: @ 8163A8C
ldr r0, =gMain
ldr r1, =sub_81639AC
str r1, [r0, 0x8]
- ldr r0, =sub_8036760
+ ldr r0, =CB2_InitBattle
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
@@ -3548,11 +3548,11 @@ _08163E2C:
movs r0, 0
strb r0, [r4]
ldr r0, =gUnknown_08224158
- bl TrainerBattleConfigure
+ bl BattleSetup_ConfigureTrainerBattle
movs r0, 0x1
strb r0, [r4]
ldr r0, =gUnknown_08224167
- bl TrainerBattleConfigure
+ bl BattleSetup_ConfigureTrainerBattle
ldr r0, =gPartnerTrainerId
strh r5, [r0]
ldr r0, =sub_8163A8C
@@ -4364,7 +4364,7 @@ _081644E0:
strb r0, [r1, 0x1]
movs r0, 0xD8
lsls r0, 2
- bl FlagReset
+ bl FlagClear
ldr r0, [r6]
adds r0, r5
ldrh r0, [r0]
@@ -4525,7 +4525,7 @@ _08164660:
adds r1, 0xC0
strb r0, [r1, 0x1]
ldr r0, =0x00000361
- bl FlagReset
+ bl FlagClear
ldr r0, [r6]
adds r0, r5
ldrh r0, [r0]
@@ -5016,7 +5016,7 @@ _08164B04:
lsls r0, 2
adds r0, r1
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
b _08164B54
.pool
_08164B28:
@@ -5040,7 +5040,7 @@ _08164B28:
lsls r1, 2
adds r1, r0
ldr r0, [r1]
- bl box_related_two__2
+ bl ShowFieldMessage
_08164B54:
add sp, 0x8
pop {r3-r5}
@@ -5125,21 +5125,21 @@ _08164C18:
lsrs r0, 24
mov r1, sp
movs r2, 0x4
- bl link_0800A448
+ bl SendBlock
ldr r1, =gScriptResult
movs r0, 0x1
b _08164DB4
.pool
_08164C3C:
- bl sub_800A550
+ bl GetBlockReceivedStatus
movs r1, 0x3
ands r1, r0
cmp r1, 0x3
beq _08164C4A
b _08164DB6
_08164C4A:
- bl sub_800A5B4
- ldr r1, =gUnknown_020223C4
+ bl ResetBlockReceivedFlags
+ ldr r1, =gBlockRecvBuffer
movs r0, 0x80
lsls r0, 1
adds r2, r1, r0
@@ -5221,23 +5221,23 @@ _08164CE0:
ldr r3, =0x00000cb4
adds r1, r3
movs r2, 0x28
- bl link_0800A448
+ bl SendBlock
ldr r1, =gScriptResult
movs r0, 0x3
b _08164DB4
.pool
_08164D14:
- bl sub_800A550
+ bl GetBlockReceivedStatus
movs r1, 0x3
ands r1, r0
cmp r1, 0x3
bne _08164DB6
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
ldr r4, =gSaveBlock2Ptr
ldr r0, [r4]
ldr r5, =0x00000cb4
adds r0, r5
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
movs r2, 0x28
bl memcpy
ldr r2, =gTrainerBattleOpponent_A
@@ -5260,7 +5260,7 @@ _08164D14:
ldrh r0, [r4]
movs r1, 0x1
bl sub_8162614
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08164DB0
@@ -5279,7 +5279,7 @@ _08164D98:
b _08164DB4
.pool
_08164DA8:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08164DB6
@@ -5673,7 +5673,7 @@ _0816508C:
bl SetMonData
ldr r0, [r7]
adds r0, r4
- bl sub_80EE5A4
+ bl GetRibbonCount
strb r0, [r5, 0x1]
_081650D4:
adds r5, 0x4
@@ -5857,8 +5857,8 @@ sub_8165244: @ 8165244
.pool
thumb_func_end sub_8165244
- thumb_func_start sub_8165264
-sub_8165264: @ 8165264
+ thumb_func_start GetEreaderTrainerClassId
+GetEreaderTrainerClassId: @ 8165264
ldr r1, =gTrainerClassToNameIndex
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
@@ -5869,10 +5869,10 @@ sub_8165264: @ 8165264
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end sub_8165264
+ thumb_func_end GetEreaderTrainerClassId
- thumb_func_start sub_8165284
-sub_8165284: @ 8165284
+ thumb_func_start GetEreaderTrainerName
+GetEreaderTrainerName: @ 8165284
push {r4,lr}
adds r3, r0, 0
movs r2, 0
@@ -5896,7 +5896,7 @@ _08165294:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8165284
+ thumb_func_end GetEreaderTrainerName
thumb_func_start sub_81652B4
sub_81652B4: @ 81652B4
@@ -6056,7 +6056,7 @@ _081653E0:
bne _081653F8
bl sub_80F01B8
movs r0, 0x77
- bl FlagReset
+ bl FlagClear
_081653F8:
pop {r0}
bx r0
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index 6406a3f24..2f9637594 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -2151,7 +2151,7 @@ sub_8147018: @ 8147018
ands r5, r0
movs r1, 0
mov r8, r4
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
_08147046:
lsls r5, 16
asrs r5, 16
@@ -2221,7 +2221,7 @@ _081470C4:
sub_81470D0: @ 81470D0
push {r4,r5,lr}
ldr r0, =gUnknown_085C8E68
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
movs r2, 0
ldrsh r1, [r5, r2]
movs r3, 0x4
@@ -9513,11 +9513,11 @@ sub_814ABE4: @ 814ABE4
strh r0, [r6, 0xC]
cmp r0, 0
bne _0814AC24
- ldr r5, =gUnknown_02022E14
+ ldr r5, =gBattle_BG0_X
ldrh r1, [r5]
movs r0, 0x12
bl SetGpuReg
- ldr r4, =gUnknown_02022E16
+ ldr r4, =gBattle_BG0_Y
ldrh r1, [r4]
movs r0, 0x10
bl SetGpuReg
@@ -9562,9 +9562,9 @@ sub_814AC38: @ 814AC38
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r5, [r0]
- ldr r4, =gUnknown_02022E16
+ ldr r4, =gBattle_BG0_Y
strh r5, [r4]
movs r0, 0x12
movs r1, 0
@@ -9781,10 +9781,10 @@ sub_814AE40: @ 814AE40
push {r4,r5,lr}
sub sp, 0x8
adds r5, r0, 0
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r4, =gUnknown_02022E16
+ ldr r4, =gBattle_BG0_Y
strh r1, [r4]
movs r0, 0x12
movs r1, 0
diff --git a/asm/berry_blender.s b/asm/berry_blender.s
index 0599fa153..6d18ab7cb 100644
--- a/asm/berry_blender.s
+++ b/asm/berry_blender.s
@@ -512,7 +512,7 @@ _0807FBBE:
adds r4, 0x1
cmp r4, 0x3
ble _0807FBBE
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0807FC14
@@ -1116,7 +1116,7 @@ _08080126:
adds r5, 0x1
cmp r5, 0x3
ble _08080126
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0808016A
@@ -1213,7 +1213,7 @@ _08080248:
bne _08080254
b _08080546
_08080254:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
bl GetMultiplayerId
lsls r0, 24
cmp r0, 0
@@ -1239,7 +1239,7 @@ _08080282:
movs r0, 0x4
movs r1, 0x1
bl sub_8197DF8
- bl sub_800A550
+ bl GetBlockReceivedStatus
adds r4, r0, 0
bl sub_800A9D8
lsls r4, 24
@@ -1260,7 +1260,7 @@ _080802AC:
adds r0, r4, r0
adds r0, r6
lsls r1, r5, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x10
bl memcpy
@@ -1275,12 +1275,12 @@ _080802AC:
strh r0, [r1]
adds r5, 0x1
_080802D4:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
blt _080802AC
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
b _080804F8
.pool
_080802EC:
@@ -1295,7 +1295,7 @@ _080802EC:
bl sub_807FD90
b _08080336
_08080302:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
ldr r2, =gUnknown_020322A4
ldr r1, [r2]
adds r1, 0x7C
@@ -1876,7 +1876,7 @@ sub_80807BC: @ 80807BC
sub sp, 0x1C
movs r0, 0
mov r10, r0
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080807DE
@@ -3330,7 +3330,7 @@ sub_80814B0: @ 80814B0
lsrs r1, 16
lsls r2, 16
lsrs r2, 16
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080814E4
@@ -3633,7 +3633,7 @@ sub_8081744: @ 8081744
push {r4-r6,lr}
movs r4, 0
movs r6, 0
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0808175A
@@ -4702,7 +4702,7 @@ _08081F7C:
sub_8081F94: @ 8081F94
push {lr}
adds r1, r0, 0
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08081FB8
@@ -4810,7 +4810,7 @@ _08082078:
adds r1, 0x4C
movs r0, 0
strh r0, [r1]
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080820B0
@@ -4848,7 +4848,7 @@ _080820E0:
bne _080820EC
b _0808249E
_080820EC:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0808218C
@@ -4911,7 +4911,7 @@ _08082132:
adds r1, r4
movs r0, 0
movs r2, 0x20
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
bne _08082172
@@ -4941,7 +4941,7 @@ _0808218C:
strh r2, [r0]
movs r0, 0
movs r2, 0x28
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
bne _080821BE
@@ -4951,20 +4951,20 @@ _080821BE:
b _0808245C
.pool
_080821C8:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
cmp r0, 0
bne _080821D4
b _0808249E
_080821D4:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
ldr r5, =gUnknown_020322A4
ldr r1, [r5]
adds r1, 0x63
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08082254
@@ -4972,7 +4972,7 @@ _080821D4:
ldrb r0, [r0]
cmp r0, 0
beq _08082254
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
ldr r3, [r5]
ldrh r0, [r2, 0x4]
adds r1, r3, 0
@@ -5016,7 +5016,7 @@ _08082220:
b _0808249E
.pool
_08082254:
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
ldr r0, =gUnknown_020322A4
ldr r3, [r0]
ldrh r0, [r2, 0x4]
@@ -5748,7 +5748,7 @@ _080828BC:
strb r0, [r1]
b _080828DC
_080828C6:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r4, [r0]
cmp r4, 0
bne _080828DC
@@ -5966,7 +5966,7 @@ _08082A92:
thumb_func_start sub_8082AD4
sub_8082AD4: @ 8082AD4
push {r4-r7,lr}
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08082AE0
@@ -6091,7 +6091,7 @@ _08082BEE:
lsls r0, 24
lsrs r5, r0, 24
_08082BF4:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6104,7 +6104,7 @@ _08082C0C:
lsls r0, 24
lsrs r5, r0, 24
_08082C12:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6118,7 +6118,7 @@ _08082C12:
cmp r0, 0
bne _08082C0C
_08082C2E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6132,7 +6132,7 @@ _08082C48:
lsls r0, 24
lsrs r5, r0, 24
_08082C4E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6149,7 +6149,7 @@ _08082C6A:
ldr r4, =gUnknown_03003110
adds r0, r4, 0
bl sub_8081F94
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6242,7 +6242,7 @@ sub_8082D18: @ 8082D18
sub_8082D28: @ 8082D28
push {r4,lr}
movs r1, 0
- ldr r4, =gUnknown_03003124
+ ldr r4, =gReceivedRemoteLinkPlayers
ldrb r0, [r4]
cmp r0, 0
beq _08082D3C
@@ -7909,7 +7909,7 @@ _08083A80:
cmp r5, r0
bcc _08083A80
_08083A9E:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08083AB4
@@ -8514,7 +8514,7 @@ sub_8083F94: @ 8083F94
strb r0, [r7, 0xC]
movs r0, 0xFF
strb r0, [r7]
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080840C4
@@ -8568,7 +8568,7 @@ sub_8083F94: @ 8083F94
ldrb r0, [r5, 0x12]
str r0, [sp]
adds r0, r7, 0
- bl sub_80ECC04
+ bl Put3CheersForPokeblocksOnTheAir
lsls r0, 24
cmp r0, 0
bne _080840BA
@@ -8617,7 +8617,7 @@ _08084058:
ldrb r0, [r5, 0x12]
str r0, [sp]
adds r0, r7, 0
- bl sub_80ECC04
+ bl Put3CheersForPokeblocksOnTheAir
lsls r0, 24
cmp r0, 0
beq _080840C4
diff --git a/asm/bike.s b/asm/bike.s
index 7ea4a4598..b5d40a312 100644
--- a/asm/bike.s
+++ b/asm/bike.s
@@ -2013,9 +2013,9 @@ _0811A0B0:
bl SetPlayerAvatarTransitionFlags
ldr r4, =0x00000193
adds r0, r4, 0
- bl sav1_set_battle_music_maybe
+ bl Overworld_SetSavedMusic
adds r0, r4, 0
- bl sub_80858C4
+ bl Overworld_ChangeMusicTo
_0811A0C4:
pop {r4}
pop {r0}
diff --git a/asm/braille_puzzles.s b/asm/braille_puzzles.s
deleted file mode 100644
index 095b1b793..000000000
--- a/asm/braille_puzzles.s
+++ /dev/null
@@ -1,627 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81795E8
-sub_81795E8: @ 81795E8
- push {lr}
- ldr r0, =0x000008af
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08179634
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldrh r1, [r2, 0x4]
- ldr r0, =0x00004718
- cmp r1, r0
- bne _08179634
- ldr r1, [r2]
- ldr r0, =0x0003000a
- cmp r1, r0
- beq _08179616
- ldr r0, =0x00030009
- cmp r1, r0
- beq _08179616
- ldr r0, =0x0003000b
- cmp r1, r0
- bne _08179634
-_08179616:
- movs r0, 0x1
- b _08179636
- .pool
-_08179634:
- movs r0, 0
-_08179636:
- pop {r1}
- bx r1
- thumb_func_end sub_81795E8
-
- thumb_func_start sub_817963C
-sub_817963C: @ 817963C
- push {lr}
- ldr r2, =0x0000022a
- movs r0, 0x10
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- ldr r2, =0x0000022b
- movs r0, 0x11
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- movs r2, 0x8B
- lsls r2, 2
- movs r0, 0x12
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000e32
- movs r0, 0x10
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000233
- movs r0, 0x11
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000e34
- movs r0, 0x12
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- movs r0, 0x14
- bl PlaySE
- ldr r0, =0x000008af
- bl FlagSet
- bl ScriptContext2_Disable
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817963C
-
- thumb_func_start sub_81796AC
-sub_81796AC: @ 81796AC
- push {r4,lr}
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- movs r1, 0x9D
- lsls r1, 1
- cmp r0, r1
- bne _081796F4
- bl CalculatePlayerPartyCount
- ldr r0, =gPlayerPartyCount
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- adds r1, r4, 0
- subs r1, 0x64
- adds r0, r1
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- ldr r1, =0x0000017d
- cmp r0, r1
- bne _081796F4
- movs r0, 0x1
- b _081796F6
- .pool
-_081796F4:
- movs r0, 0
-_081796F6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81796AC
-
- thumb_func_start nullsub_84
-nullsub_84: @ 81796FC
- bx lr
- thumb_func_end nullsub_84
-
- thumb_func_start sub_8179700
-sub_8179700: @ 8179700
- push {lr}
- ldr r0, =sub_8179778
- movs r1, 0x9
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0xA]
- strh r0, [r1, 0xC]
- movs r0, 0x2
- strh r0, [r1, 0x10]
- movs r0, 0x5
- strh r0, [r1, 0x12]
- movs r0, 0x32
- strh r0, [r1, 0x14]
- movs r0, 0
- bl SetCameraPanningCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8179700
-
- thumb_func_start sub_817973C
-sub_817973C: @ 817973C
- push {lr}
- ldr r0, =sub_8179778
- movs r1, 0x9
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0xA]
- strh r0, [r1, 0xC]
- movs r0, 0x3
- strh r0, [r1, 0x10]
- movs r0, 0x5
- strh r0, [r1, 0x12]
- movs r0, 0x2
- strh r0, [r1, 0x14]
- movs r0, 0
- bl SetCameraPanningCallback
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817973C
-
- thumb_func_start sub_8179778
-sub_8179778: @ 8179778
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _081797D0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x10]
- negs r0, r0
- strh r0, [r4, 0x10]
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r0, 0
- bl SetCameraPanning
- movs r2, 0xC
- ldrsh r1, [r4, r2]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _081797D0
- adds r0, r5, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- bl InstallCameraPanAheadCallback
-_081797D0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8179778
-
- thumb_func_start sub_81797DC
-sub_81797DC: @ 81797DC
- push {lr}
- movs r0, 0x8B
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _0817982C
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldrh r1, [r3, 0x4]
- movs r0, 0xC3
- lsls r0, 3
- cmp r1, r0
- bne _0817982C
- ldr r1, [r3]
- ldr r0, =0x00170006
- cmp r1, r0
- beq _08179810
- ldr r0, =0x00170005
- cmp r1, r0
- beq _08179810
- ldr r0, =0x00170007
- cmp r1, r0
- bne _0817982C
-_08179810:
- ldr r0, =gUnknown_0203BD14
- strb r2, [r0]
- movs r0, 0x1
- b _0817982E
- .pool
-_0817982C:
- movs r0, 0
-_0817982E:
- pop {r1}
- bx r1
- thumb_func_end sub_81797DC
-
- thumb_func_start sub_8179834
-sub_8179834: @ 8179834
- push {lr}
- bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- movs r0, 0x3C
- bl FieldEffectStart
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8179834
-
- thumb_func_start sub_8179850
-sub_8179850: @ 8179850
- push {lr}
- movs r0, 0x3C
- bl FieldEffectActiveListRemove
- bl sub_8179860
- pop {r0}
- bx r0
- thumb_func_end sub_8179850
-
- thumb_func_start sub_8179860
-sub_8179860: @ 8179860
- push {lr}
- ldr r2, =0x0000022a
- movs r0, 0xE
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- ldr r2, =0x0000022b
- movs r0, 0xF
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- movs r2, 0x8B
- lsls r2, 2
- movs r0, 0x10
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000e32
- movs r0, 0xE
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000233
- movs r0, 0xF
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000e34
- movs r0, 0x10
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- movs r0, 0x14
- bl PlaySE
- movs r0, 0x8B
- lsls r0, 4
- bl FlagSet
- bl ScriptContext2_Disable
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8179860
-
- thumb_func_start sub_81798D0
-sub_81798D0: @ 81798D0
- push {lr}
- ldr r0, =0x000008b2
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08179910
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldrh r1, [r2, 0x4]
- ldr r0, =0x00004418
- cmp r1, r0
- bne _08179910
- ldr r1, [r2]
- ldr r0, =0x00190008
- cmp r1, r0
- bne _08179910
- ldr r1, =gUnknown_0203BD14
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
- b _08179912
- .pool
-_08179910:
- movs r0, 0
-_08179912:
- pop {r1}
- bx r1
- thumb_func_end sub_81798D0
-
- thumb_func_start sub_8179918
-sub_8179918: @ 8179918
- push {lr}
- bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1]
- movs r0, 0x3C
- bl FieldEffectStart
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8179918
-
- thumb_func_start sub_8179934
-sub_8179934: @ 8179934
- push {lr}
- movs r0, 0x3C
- bl FieldEffectActiveListRemove
- bl sub_8179944
- pop {r0}
- bx r0
- thumb_func_end sub_8179934
-
- thumb_func_start sub_8179944
-sub_8179944: @ 8179944
- push {lr}
- ldr r2, =0x0000022a
- movs r0, 0xE
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- ldr r2, =0x0000022b
- movs r0, 0xF
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- movs r2, 0x8B
- lsls r2, 2
- movs r0, 0x10
- movs r1, 0x1A
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000e32
- movs r0, 0xE
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000233
- movs r0, 0xF
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000e34
- movs r0, 0x10
- movs r1, 0x1B
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- movs r0, 0x14
- bl PlaySE
- ldr r0, =0x000008b2
- bl FlagSet
- bl ScriptContext2_Disable
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8179944
-
- thumb_func_start nullsub_64
-nullsub_64: @ 81799B4
- bx lr
- thumb_func_end nullsub_64
-
- thumb_func_start sub_81799B8
-sub_81799B8: @ 81799B8
- push {lr}
- bl oei_task_add
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gUnknown_0203BD14
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081799E4
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldr r2, =sub_8179934
- b _081799F0
- .pool
-_081799E4:
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldr r2, =sub_8179850
-_081799F0:
- lsrs r1, r2, 16
- strh r1, [r0, 0x18]
- strh r2, [r0, 0x1A]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81799B8
-
- thumb_func_start sub_8179A04
-sub_8179A04: @ 8179A04
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldrh r1, [r0, 0x4]
- ldr r0, =0x00004318
- cmp r1, r0
- beq _08179A1A
- b _08179B5A
-_08179A1A:
- ldr r0, =0x000008b1
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _08179A28
- b _08179B5A
-_08179A28:
- movs r0, 0x2
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08179A36
- b _08179B5A
-_08179A36:
- movs r0, 0x3
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08179A58
- b _08179B5A
- .pool
-_08179A54:
- movs r0, 0x1
- b _08179B5C
-_08179A58:
- movs r5, 0
- mov r8, r4
- ldr r4, =gUnknown_085EFE74
- adds r0, r4, 0x1
- mov r12, r0
- ldr r6, =0x0000403b
- ldr r1, =0x0000403c
- mov r9, r1
-_08179A68:
- lsls r0, r5, 1
- adds r1, r0, r4
- add r0, r12
- ldrb r3, [r0]
- mov r7, r8
- ldr r2, [r7]
- movs r7, 0
- ldrsh r0, [r2, r7]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08179B44
- movs r1, 0x2
- ldrsh r0, [r2, r1]
- cmp r0, r3
- bne _08179B44
- cmp r5, 0xF
- bhi _08179AB0
- adds r0, r6, 0
- bl VarGet
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r5
- orrs r1, r0
- lsrs r1, 16
- adds r0, r6, 0
- bl VarSet
- b _08179AF0
- .pool
-_08179AB0:
- cmp r5, 0x1F
- bhi _08179AD2
- mov r0, r9
- bl VarGet
- lsls r0, 16
- adds r2, r5, 0
- subs r2, 0x10
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r2
- orrs r1, r0
- lsrs r1, 16
- mov r0, r9
- bl VarSet
- b _08179AF0
-_08179AD2:
- ldr r4, =0x0000403d
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- adds r2, r5, 0
- subs r2, 0x20
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r2
- orrs r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
-_08179AF0:
- ldr r0, =0x0000403b
- bl VarGet
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =0x0000ffff
- cmp r4, r0
- bne _08179B5A
- ldr r0, =0x0000403c
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bne _08179B5A
- ldr r0, =0x0000403d
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xF
- bne _08179B5A
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, [r0]
- ldr r0, =0x00150008
- cmp r1, r0
- beq _08179A54
- b _08179B5A
- .pool
-_08179B44:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x23
- bls _08179A68
- movs r0, 0x3
- bl FlagSet
- movs r0, 0x2
- bl FlagReset
-_08179B5A:
- movs r0, 0
-_08179B5C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8179A04
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 80d9a0916..15ba76e9c 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -434,7 +434,7 @@ sub_80B2688: @ 80B2688
movs r0, 0x15
bl PlaySE
ldr r0, =gUnknown_082780B3
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
ldr r0, =sub_80B270C
b _080B26FA
.pool
@@ -442,7 +442,7 @@ _080B26EC:
movs r0, 0x16
bl PlaySE
ldr r0, =gUnknown_08278131
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
ldr r0, =sub_80B2918
_080B26FA:
str r0, [r4]
@@ -545,7 +545,7 @@ sub_80B275C: @ 80B275C
movs r3, 0x1
bl ConvertIntToDecimalStringN
ldr r0, =gUnknown_082780F2
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
mov r0, r9
subs r0, 0x8
add r0, r8
@@ -598,7 +598,7 @@ sub_80B2804: @ 80B2804
beq _080B2878
_080B2852:
ldr r0, =gUnknown_082780B3
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
ldr r1, =gTasks
lsls r0, r5, 2
adds r0, r5
@@ -719,7 +719,7 @@ sub_80B2918: @ 80B2918
cmp r0, 0x1
bhi _080B297C
bl sub_800AC34
- bl textbox_close
+ bl HideFieldMessageBox
ldr r0, =sub_80B2CB0
b _080B29E4
.pool
@@ -730,7 +730,7 @@ _080B297C:
bne _080B2994
_080B2984:
bl sub_80097E8
- bl textbox_close
+ bl HideFieldMessageBox
ldr r0, =sub_80B2CB0
b _080B29E4
.pool
@@ -814,7 +814,7 @@ _080B2A42:
_080B2A4A:
bl sub_80097E8
_080B2A4E:
- bl textbox_close
+ bl HideFieldMessageBox
ldr r0, =gTasks
lsls r1, r7, 2
adds r1, r7
@@ -1030,7 +1030,7 @@ sub_80B2C30: @ 80B2C30
bl sub_80B24F8
cmp r0, 0x1
beq _080B2C9C
- bl sub_800A550
+ bl GetBlockReceivedStatus
adds r4, r0, 0
bl sub_800A9A8
lsls r4, 24
@@ -1047,7 +1047,7 @@ _080B2C5C:
ldr r1, =gUnknown_02039B58
adds r0, r1
lsls r1, r4, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
lsls r2, r4, 3
subs r2, r4
@@ -1059,14 +1059,14 @@ _080B2C5C:
lsls r0, 24
lsrs r4, r0, 24
_080B2C7E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bcc _080B2C5C
movs r0, 0
bl sub_800B330
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
ldr r0, =gScriptResult
adds r1, r5, 0
bl task_map_chg_seq_0807EC34
@@ -1082,7 +1082,7 @@ sub_80B2CB0: @ 80B2CB0
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080B2CDE
@@ -1151,7 +1151,7 @@ sub_80B2D2C: @ 80B2D2C
bl sub_80B241C
ldrb r0, [r4, 0x12]
bl RemoveWindow
- bl textbox_close
+ bl HideFieldMessageBox
bl EnableBothScriptContexts
adds r0, r5, 0
bl DestroyTask
@@ -1361,7 +1361,7 @@ _080B2F0C:
movs r0, 0
mov r8, r0
mov r9, r0
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
@@ -1434,7 +1434,7 @@ _080B2FA8:
bl DestroyTask
b _080B2FC6
_080B2FB4:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080B2FC6
@@ -1706,7 +1706,7 @@ sub_80B3220: @ 80B3220
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _080B3248
@@ -1836,7 +1836,7 @@ _080B3338:
bl sub_800AC34
b _080B3346
_080B333E:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
_080B3342:
cmp r0, 0
@@ -1872,7 +1872,7 @@ _080B3378:
lsls r2, 4
adds r0, r2, 0
strh r0, [r1]
- ldr r0, =sub_8036760
+ ldr r0, =CB2_InitBattle
bl SetMainCallback2
ldr r1, =gMain
ldr r0, =sub_80B360C
@@ -1948,13 +1948,13 @@ _080B3444:
ldr r1, =gUnknown_020229CC
movs r0, 0
movs r2, 0x1C
- bl link_0800A448
+ bl SendBlock
movs r0, 0x3
strh r0, [r6]
b _080B3532
.pool
_080B3458:
- bl sub_800A550
+ bl GetBlockReceivedStatus
adds r4, r0, 0
bl sub_800A9D8
lsls r4, 24
@@ -1967,7 +1967,7 @@ _080B3458:
.pool
_080B3474:
lsls r1, r4, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r0, r5, 0
adds r1, r2
ldm r1!, {r2,r3,r7}
@@ -1980,11 +1980,11 @@ _080B3474:
bl sub_800B524
lsls r0, r4, 24
lsrs r0, 24
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
adds r5, 0x1C
adds r4, 0x1
_080B349A:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -2045,7 +2045,7 @@ _080B3504:
lsls r3, 4
adds r0, r3, 0
strh r0, [r1]
- ldr r0, =sub_8036760
+ ldr r0, =CB2_InitBattle
bl SetMainCallback2
ldr r1, =gMain
ldr r0, =sub_80B360C
@@ -2080,7 +2080,7 @@ _080B3574:
beq _080B35F8
b _080B35FE
_080B357A:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r3, r0, 24
movs r4, 0
@@ -2128,7 +2128,7 @@ _080B35C8:
b _080B35FE
.pool
_080B35E0:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080B35FE
@@ -2297,13 +2297,13 @@ _080B3750:
b _080B37CC
_080B375A:
ldr r0, =gUnknown_08278091
- bl box_related_two__2
+ bl ShowFieldMessage
movs r0, 0x1
strh r0, [r5, 0x8]
b _080B37CC
.pool
_080B376C:
- bl sub_809833C
+ bl IsFieldMessageBoxHidden
lsls r0, 24
cmp r0, 0
beq _080B37CC
@@ -2325,7 +2325,7 @@ _080B378C:
beq _080B37B2
b _080B37CC
_080B379E:
- bl textbox_close
+ bl HideFieldMessageBox
movs r0, 0
strh r0, [r5, 0x8]
bl sub_80872C4
@@ -2425,7 +2425,7 @@ _080B3864:
b _080B3884
.pool
_080B3870:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080B3884
@@ -2657,7 +2657,7 @@ task00_08081A90: @ 80B3A30
adds r0, r4, 0
bl DestroyTask
_080B3A62:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080B3AA6
@@ -2691,7 +2691,7 @@ sub_80B3AAC: @ 80B3AAC
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080B3AC4
@@ -2804,7 +2804,7 @@ _080B3B96:
strh r0, [r5]
b _080B3BB8
_080B3B9E:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _080B3BB8
diff --git a/asm/clear_save_data_screen.s b/asm/clear_save_data_screen.s
deleted file mode 100644
index 5efff250c..000000000
--- a/asm/clear_save_data_screen.s
+++ /dev/null
@@ -1,399 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start c2_clear_save_data_screen_2
-c2_clear_save_data_screen_2: @ 817ACC8
- push {lr}
- bl sub_817AE00
- lsls r0, 24
- cmp r0, 0
- beq _0817ACDC
- ldr r0, =sub_817ACE4
- movs r1, 0
- bl CreateTask
-_0817ACDC:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_clear_save_data_screen_2
-
- thumb_func_start sub_817ACE4
-sub_817ACE4: @ 817ACE4
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0xE
- bl SetWindowBorderStyle
- ldr r2, =gText_ClearAllSaveData
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- ldr r0, =gUnknown_085F06D8
- movs r1, 0x2
- movs r2, 0xE
- movs r3, 0x1
- bl CreateYesNoMenu
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_817AD40
- str r1, [r0]
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817ACE4
-
- thumb_func_start sub_817AD40
-sub_817AD40: @ 817AD40
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8198C58
- lsls r0, 24
- asrs r4, r0, 24
- cmp r4, 0
- beq _0817AD68
- cmp r4, 0
- bgt _0817AD62
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _0817ADA0
- b _0817ADB2
-_0817AD62:
- cmp r4, 0x1
- beq _0817ADA0
- b _0817ADB2
-_0817AD68:
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, =gText_ClearingData
- movs r0, 0x1
- str r0, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_817ADC0
- str r1, [r0]
- b _0817ADB2
- .pool
-_0817ADA0:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl DestroyTask
- ldr r0, =sub_817AFD4
- bl SetMainCallback2
-_0817ADB2:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817AD40
-
- thumb_func_start sub_817ADC0
-sub_817ADC0: @ 817ADC0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl ClearSaveData
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, =sub_817AFD4
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817ADC0
-
- thumb_func_start sub_817ADE4
-sub_817ADE4: @ 817ADE4
- push {lr}
- bl RunTasks
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_817ADE4
-
- thumb_func_start sub_817ADF4
-sub_817ADF4: @ 817ADF4
- push {lr}
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_817ADF4
-
- thumb_func_start sub_817AE00
-sub_817AE00: @ 817AE00
- push {r4,lr}
- sub sp, 0xC
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0817AE18
- cmp r0, 0x1
- bne _0817AE18
- b _0817AFA4
-_0817AE18:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- add r0, sp, 0x4
- movs r4, 0
- strh r4, [r0]
- ldr r1, =0x040000d4
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0
- str r2, [sp, 0x8]
- add r0, sp, 0x8
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0x4
- strh r2, [r0]
- str r0, [r1]
- ldr r0, =0x05000002
- str r0, [r1, 0x4]
- ldr r0, =0x810001ff
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- ldr r2, =gPlttBufferUnfaded
- ldr r0, =0x00007fff
- strh r0, [r2]
- ldr r1, =gPlttBufferFaded
- strh r0, [r1]
- ldr r0, =0x00003945
- strh r0, [r2, 0x2]
- strh r0, [r1, 0x2]
- movs r1, 0
- ldr r3, =0x06000020
- ldr r0, =0x00001111
- adds r2, r0, 0
-_0817AED4:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _0817AED4
- movs r1, 0
- ldr r4, =0x0600f000
- movs r3, 0x1
- ldr r2, =0x000003ff
-_0817AEEC:
- lsls r0, r1, 1
- adds r0, r4
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r2
- bls _0817AEEC
- bl ResetTasks
- bl ResetSpriteData
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085F06C0
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- bl sub_817B02C
- ldr r0, =0x0000ffff
- str r0, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, =sub_817ADF4
- bl SetVBlankCallback
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _0817AFC8
- .pool
-_0817AFA4:
- bl UpdatePaletteFade
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0817AFC8
- ldr r0, =sub_817ADE4
- bl SetMainCallback2
- movs r0, 0x1
- b _0817AFCA
- .pool
-_0817AFC8:
- movs r0, 0
-_0817AFCA:
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_817AE00
-
- thumb_func_start sub_817AFD4
-sub_817AFD4: @ 817AFD4
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- beq _0817AFEA
- cmp r0, 0x1
- beq _0817B008
-_0817AFEA:
- ldr r0, =0x0000ffff
- str r0, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x1
- strb r0, [r4]
- b _0817B020
- .pool
-_0817B008:
- bl UpdatePaletteFade
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0817B020
- bl FreeAllWindowBuffers
- bl DoSoftReset
-_0817B020:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817AFD4
-
- thumb_func_start sub_817B02C
-sub_817B02C: @ 817B02C
- push {lr}
- ldr r0, =gUnknown_085F06C8
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0xE0
- bl sub_80987D4
- ldr r0, =gUnknown_0860F074
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_817B02C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/clock.s b/asm/clock.s
index 01c7e964e..5d771a8b6 100644
--- a/asm/clock.s
+++ b/asm/clock.s
@@ -27,8 +27,8 @@ sub_809E778: @ 809E778
.pool
thumb_func_end sub_809E778
- thumb_func_start sub_809E7B0
-sub_809E7B0: @ 809E7B0
+ thumb_func_start DoTimeBasedEvents
+DoTimeBasedEvents: @ 809E7B0
push {r4,lr}
ldr r0, =0x00000895
bl FlagGet
@@ -50,7 +50,7 @@ _0809E7DA:
pop {r0}
bx r0
.pool
- thumb_func_end sub_809E7B0
+ thumb_func_end DoTimeBasedEvents
thumb_func_start sub_809E7E8
sub_809E7E8: @ 809E7E8
diff --git a/asm/coins.s b/asm/coins.s
index ea55dd85c..d2b6cbb47 100644
--- a/asm/coins.s
+++ b/asm/coins.s
@@ -5,9 +5,9 @@
.text
- thumb_func_start AddCoins
-@ bool8 AddCoins(u16 toAdd)
-AddCoins: @ 8145C80
+ thumb_func_start GiveCoins
+@ bool8 GiveCoins(u16 toAdd)
+GiveCoins: @ 8145C80
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
@@ -44,11 +44,11 @@ _08145CC0:
pop {r1}
bx r1
.pool
- thumb_func_end AddCoins
+ thumb_func_end GiveCoins
- thumb_func_start SubtractCoins
-@ bool8 SubtractCoins(u16 toSub)
-SubtractCoins: @ 8145CCC
+ thumb_func_start TakeCoins
+@ bool8 TakeCoins(u16 toSub)
+TakeCoins: @ 8145CCC
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
@@ -69,6 +69,6 @@ _08145CEE:
pop {r4}
pop {r1}
bx r1
- thumb_func_end SubtractCoins
+ thumb_func_end TakeCoins
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/contest.s b/asm/contest.s
index 71e8ab058..9c0684663 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -45,30 +45,30 @@ sub_80D7678: @ 80D7678
lsls r1, 7
movs r0, 0
bl SetGpuRegBits
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
strh r1, [r0]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
- ldr r0, =gUnknown_02022E28
+ ldr r0, =gBattle_WIN1H
strh r1, [r0]
- ldr r0, =gUnknown_02022E2A
+ ldr r0, =gBattle_WIN1V
strh r1, [r0]
pop {r4}
pop {r0}
@@ -76,8 +76,8 @@ sub_80D7678: @ 80D7678
.pool
thumb_func_end sub_80D7678
- thumb_func_start sub_80D7724
-sub_80D7724: @ 80D7724
+ thumb_func_start LoadContestBgAfterMoveAnim
+LoadContestBgAfterMoveAnim: @ 80D7724
push {r4,r5,lr}
ldr r0, =gUnknown_08C17AB0
movs r1, 0xC0
@@ -119,7 +119,7 @@ _080D775E:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D7724
+ thumb_func_end LoadContestBgAfterMoveAnim
thumb_func_start sub_80D779C
sub_80D779C: @ 80D779C
@@ -138,7 +138,7 @@ sub_80D779C: @ 80D779C
_080D77BA:
lsls r0, r4, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
lsls r2, r4, 2
adds r1, 0x24
@@ -224,7 +224,7 @@ _080D7848:
thumb_func_start sub_80D787C
sub_80D787C: @ 80D787C
push {r4-r7,lr}
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0]
movs r1, 0
@@ -244,7 +244,7 @@ _080D7890:
cmp r5, 0x3
ble _080D7890
movs r4, 0
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
movs r5, 0x3
_080D78AA:
ldr r0, [r6]
@@ -257,7 +257,7 @@ _080D78AA:
subs r5, 0x1
cmp r5, 0
bge _080D78AA
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
movs r7, 0x4
negs r7, r7
movs r6, 0xFF
@@ -287,7 +287,7 @@ _080D78CC:
subs r5, 0x1
cmp r5, 0
bge _080D78CC
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0x8]
movs r1, 0
@@ -339,7 +339,7 @@ _080D7942:
cmp r5, 0x3
ble _080D7942
bl sub_80DD590
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x1C]
movs r1, 0
@@ -354,7 +354,7 @@ _080D7942:
thumb_func_start sub_80D7988
sub_80D7988: @ 80D7988
push {r4,r5,lr}
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
movs r0, 0x40
bl AllocZeroed
str r0, [r4]
@@ -441,7 +441,7 @@ sub_80D7988: @ 80D7988
thumb_func_start sub_80D7A5C
sub_80D7A5C: @ 80D7A5C
push {r4,r5,lr}
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r0, [r0]
bl Free
@@ -546,8 +546,8 @@ _080D7B4E:
ldr r0, =gUnknown_02039F38
strb r5, [r0]
bl sub_80D7988
- bl init_uns_table_pokemon_copy
- ldr r4, =gBattleSpritesGfx
+ bl AllocateMonSpritesGfx
+ ldr r4, =gMonSpritesGfxPtr
ldr r0, [r4]
ldr r0, [r0]
bl Free
@@ -590,7 +590,7 @@ _080D7BD4:
strb r0, [r6]
b _080D7C56
_080D7BDA:
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0]
adds r0, 0x59
@@ -611,10 +611,10 @@ _080D7BF6:
.pool
_080D7C04:
bl sub_80DE224
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
movs r0, 0x2
bl BeginFastPaletteFade
@@ -628,7 +628,7 @@ _080D7C04:
ldr r0, =sub_80D7C7C
movs r1, 0xA
bl CreateTask
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r1, [r1]
strb r0, [r1, 0x8]
@@ -840,7 +840,7 @@ sub_80D7DE8: @ 80D7DE8
bl GetMultiplayerId
adds r0, r4, 0
bl DestroyTask
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r1, [r0, 0x8]
@@ -973,7 +973,7 @@ _080D7F40:
bl CopyToBgTilemapBuffer
movs r0, 0x2
bl CopyBgTilemapBufferToVram
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x2C]
ldr r2, =0x0201aa04
@@ -1038,7 +1038,7 @@ _080D8004:
bl sub_80DBF90
bl sub_80DB2BC
bl sub_80DB120
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r1, [r1]
movs r4, 0
@@ -1048,7 +1048,7 @@ _080D8004:
bl sub_80DC594
bl sub_80DC5E8
bl sub_80DC7EC
- ldr r1, =gBanksBySide
+ ldr r1, =gBanksByIdentity
strb r4, [r1]
movs r0, 0x1
strb r0, [r1, 0x1]
@@ -1190,7 +1190,7 @@ _080D814C:
strh r0, [r4, 0x8]
b _080D822C
_080D8176:
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
ldrh r0, [r1]
adds r0, 0x7
strh r0, [r1]
@@ -1256,7 +1256,7 @@ _080D81FA:
b _080D822C
.pool
_080D8208:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r1, [r0, 0x6]
@@ -1316,51 +1316,51 @@ _080D8266:
thumb_func_start vblank_cb_battle
vblank_cb_battle: @ 80D827C
push {lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r1, [r0]
movs r0, 0x18
bl SetGpuReg
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
ldrh r1, [r0]
movs r0, 0x1A
bl SetGpuReg
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
ldrh r1, [r0]
movs r0, 0x1C
bl SetGpuReg
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
ldrh r1, [r0]
movs r0, 0x1E
bl SetGpuReg
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
ldrh r1, [r0]
movs r0, 0x40
bl SetGpuReg
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
ldrh r1, [r0]
movs r0, 0x44
bl SetGpuReg
- ldr r0, =gUnknown_02022E28
+ ldr r0, =gBattle_WIN1H
ldrh r1, [r0]
movs r0, 0x42
bl SetGpuReg
- ldr r0, =gUnknown_02022E2A
+ ldr r0, =gBattle_WIN1V
ldrh r1, [r0]
movs r0, 0x46
bl SetGpuReg
@@ -1387,9 +1387,9 @@ sub_80D833C: @ 80D833C
ldrsh r1, [r4, r0]
cmp r1, 0
bne _080D840C
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
bl sub_80DCD48
ldr r1, =gPlttBufferUnfaded
@@ -1401,7 +1401,7 @@ sub_80D833C: @ 80D833C
str r1, [r0, 0x8]
ldr r0, [r0, 0x8]
ldr r0, =gStringVar1
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r1, [r1]
ldrb r1, [r1, 0x1]
@@ -1517,17 +1517,17 @@ sub_80D8490: @ 80D8490
lsls r0, 24
lsrs r0, 24
mov r9, r0
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
movs r1, 0xA0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
movs r6, 0
ldr r0, =gUnknown_02039F25
mov r8, r0
- ldr r2, =gUnknown_02039E1E
+ ldr r2, =gUnknown_02039E00 + 30
mov r10, r2
- ldr r7, =gUnknown_02039F34
+ ldr r7, =gContestResources
_080D84B8:
lsls r1, r6, 1
mov r0, r8
@@ -1632,7 +1632,7 @@ _080D856C:
lsrs r6, r0, 24
cmp r6, 0x3
bls _080D84B8
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0]
ldrb r0, [r0]
@@ -1738,7 +1738,7 @@ _080D868E:
movs r0, 0
bl sub_80DC490
ldr r0, =gStringVar1
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r1, [r1]
ldrb r1, [r1, 0x1]
@@ -1770,10 +1770,10 @@ _080D86E4:
adds r0, r4, 0
movs r1, 0
bl sub_80DEC30
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
ldr r1, =gTasks
lsls r0, r7, 2
@@ -1785,7 +1785,7 @@ _080D86E4:
b _080D87FA
.pool
_080D8730:
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0]
ldrb r0, [r0]
@@ -1804,7 +1804,7 @@ _080D8754:
subs r0, 0x1
_080D8756:
strb r0, [r1]
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0]
ldrb r0, [r0]
@@ -1831,7 +1831,7 @@ _080D8756:
b _080D87FA
.pool
_080D879C:
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0]
ldrb r0, [r0]
@@ -1851,7 +1851,7 @@ _080D87C0:
adds r0, r2, 0x1
strb r0, [r1]
_080D87C4:
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0]
ldrb r0, [r0]
@@ -1967,7 +1967,7 @@ sub_80D8894: @ 80D8894
ldr r4, =gUnknown_02039F25
ldrb r0, [r4]
bl sub_80DB8B8
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldrb r2, [r4]
ldr r3, [r1, 0x4]
@@ -2020,7 +2020,7 @@ sub_80D892C: @ 80D892C
lsrs r0, 24
bl DestroyTask
ldr r2, =gTasks
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r1, [r0, 0x8]
@@ -2041,10 +2041,10 @@ sub_80D895C: @ 80D895C
lsls r0, 24
lsrs r7, r0, 24
bl sub_80DB89C
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
movs r0, 0
bl sub_80DC490
@@ -2145,7 +2145,7 @@ sub_80D8A50: @ 80D8A50
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrh r1, [r0, 0x6]
@@ -2184,7 +2184,7 @@ sub_80D8A88: @ 80D8A88
asrs r0, 16
cmp r0, 0x13
ble _080D8B18
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r1, [r0]
movs r0, 0
@@ -2217,7 +2217,7 @@ _080D8ADE:
lsls r0, 24
lsrs r0, 24
bl sub_80DB8B8
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldrb r2, [r5]
adds r2, r4
@@ -2259,7 +2259,7 @@ sub_80D8B38: @ 80D8B38
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r0, [r0]
ldrb r6, [r0, 0x11]
@@ -2348,7 +2348,7 @@ _080D8B84:
_080D8C74:
bl sub_80DCD48
movs r7, 0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0]
ldr r0, [r0, 0x8]
@@ -2367,7 +2367,7 @@ _080D8C92:
cmp r1, r0
bne _080D8C92
_080D8C9C:
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0]
strb r7, [r0, 0x11]
@@ -2447,7 +2447,7 @@ _080D8D56:
adds r0, r6, 0
bl sub_80DF080
bl sub_80DF750
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r6, 3
@@ -2624,7 +2624,7 @@ _080D8EF2:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
mov r2, r9
@@ -2678,7 +2678,7 @@ _080D8F84:
beq _080D8F92
bl _080DA100
_080D8F92:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
adds r0, 0x5A
@@ -2719,7 +2719,7 @@ _080D8FB8:
adds r0, r4, 0
bl sub_80DEAA8
adds r0, r4, 0
- bl move_anim_start_t1
+ bl DoMoveAnim
ldr r1, =gTasks
mov r2, r8
lsls r0, r2, 2
@@ -2742,7 +2742,7 @@ _080D9010:
_080D9024:
adds r0, r6, 0
bl sub_80DE9B0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r1, [r0]
ldr r0, [r1]
adds r0, 0x5A
@@ -3173,7 +3173,7 @@ _080D939E:
cmp r7, 0x3
bgt _080D9418
ldr r5, =gUnknown_02039F26
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
_080D93BC:
movs r3, 0
str r3, [sp]
@@ -3488,7 +3488,7 @@ _080D963C:
movs r0, 0x64
bl PlaySE
_080D9642:
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0x4]
lsls r0, r7, 3
@@ -3562,7 +3562,7 @@ _080D96D4:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
@@ -3588,7 +3588,7 @@ _080D971C:
beq _080D9728
bl _080DA100
_080D9728:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r6, 3
@@ -3671,7 +3671,7 @@ _080D97DC:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
@@ -3739,7 +3739,7 @@ _080D9870:
bgt _080D988E
bl _080DA100
_080D988E:
- ldr r7, =gUnknown_02039F34
+ ldr r7, =gContestResources
ldr r0, [r7]
ldr r1, [r0, 0x4]
lsls r0, r6, 3
@@ -3809,7 +3809,7 @@ _080D9904:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
@@ -3866,7 +3866,7 @@ _080D999E:
beq _080D99A8
b _080DA100
_080D99A8:
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0x4]
lsls r4, r6, 3
@@ -3898,7 +3898,7 @@ _080D99A8:
.pool
_080D99EC:
bl sub_80DCD48
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x14]
lsls r0, r6, 2
@@ -3992,7 +3992,7 @@ _080D9AAE:
lsls r0, r5, 24
cmp r0, 0
ble _080D9AD2
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x4]
ldr r2, [sp, 0x4]
@@ -4010,10 +4010,10 @@ _080D9AD2:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r1, [r0]
ldrb r0, [r1, 0x13]
@@ -4374,14 +4374,14 @@ _080D9DC2:
_080D9DD4:
bl sub_80DB89C
ldr r0, =gStringVar3
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r1, [r5]
ldr r1, [r1, 0x10]
ldr r1, [r1]
lsls r1, 20
lsrs r1, 29
lsls r1, 6
- ldr r4, =gUnknown_02039E02
+ ldr r4, =gUnknown_02039E00 + 2
adds r1, r4
bl StringCopy
ldr r0, =gStringVar1
@@ -4476,7 +4476,7 @@ _080D9EDC:
bl sub_80DC9B4
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r0, =gStringVar2
@@ -4626,7 +4626,7 @@ _080DA038:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
@@ -4725,7 +4725,7 @@ sub_80DA110: @ 80DA110
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r3, [r1]
ldrb r2, [r3, 0x7]
@@ -4829,7 +4829,7 @@ _080DA1C6:
ands r0, r1
cmp r0, 0
beq _080DA224
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r0, [r2, 0x7]
@@ -4861,7 +4861,7 @@ _080DA224:
bl sub_80DBA18
b _080DA23E
_080DA22E:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r1, [r0, 0x7]
@@ -4947,7 +4947,7 @@ _080DA2BA:
strh r5, [r4, 0xA]
b _080DA2F6
_080DA2D2:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r1, [r0, 0x7]
@@ -5082,7 +5082,7 @@ sub_80DA3CC: @ 80DA3CC
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080DA448
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r5, =gUnknown_02039F25
ldrb r1, [r5]
@@ -5096,7 +5096,7 @@ sub_80DA3CC: @ 80DA3CC
ldr r0, =gStringVar1
ldrb r1, [r5]
lsls r1, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r5, =gStringVar4
@@ -5255,7 +5255,7 @@ sub_80DA51C: @ 80DA51C
ldrh r1, [r4]
movs r0, 0xC
bl SetGpuReg
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r1, [r0]
ldrb r0, [r1, 0x1]
@@ -5296,7 +5296,7 @@ sub_80DA5B4: @ 80DA5B4
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r1, [r0, 0x6]
@@ -5322,12 +5322,12 @@ sub_80DA5E8: @ 80DA5E8
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
movs r3, 0
ldr r2, =gUnknown_02039F10
movs r1, 0x3
@@ -5350,7 +5350,7 @@ _080DA600:
ands r0, r1
cmp r0, 0
bne _080DA65C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r2, [r0]
ldr r0, =gUnknown_02039F25
ldrb r1, [r0]
@@ -5360,7 +5360,7 @@ _080DA600:
lsls r0, 2
adds r0, r2
ldrh r0, [r0, 0x8]
- bl sub_80ED03C
+ bl BravoTrainerPokemonProfile_BeforeInterview1
b _080DA668
.pool
_080DA65C:
@@ -5404,9 +5404,9 @@ sub_80DA6B4: @ 80DA6B4
cmp r4, 0
bne _080DA6EA
bl sub_80DE224
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r4, [r0]
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
movs r0, 0xA0
strh r0, [r1]
movs r0, 0x62
@@ -5432,7 +5432,7 @@ sub_80DA700: @ 80DA700
push {lr}
lsls r0, 24
lsrs r3, r0, 24
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
ldrh r0, [r1]
subs r0, 0x7
strh r0, [r1]
@@ -5553,7 +5553,7 @@ sub_80DA7EC: @ 80DA7EC
movs r3, 0x10
bl BeginNormalPaletteFade
ldr r2, =gTasks
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r1, [r0, 0x8]
@@ -5587,7 +5587,7 @@ sub_80DA830: @ 80DA830
str r1, [r0]
bl FreeAllWindowBuffers
bl sub_80D7A5C
- bl sub_805F094
+ bl FreeMonSpritesGfx
ldr r0, =c2_exit_to_overworld_2_switch
bl SetMainCallback2
_080DA860:
@@ -5667,7 +5667,7 @@ _080DA8F2:
ldr r5, =gUnknown_02039F25
ldrb r0, [r5]
lsls r0, 6
- ldr r4, =gUnknown_02039E0D
+ ldr r4, =gUnknown_02039E00 + 13
adds r0, r4
mov r1, sp
movs r2, 0x8
@@ -6313,7 +6313,7 @@ _080DAE1E:
movs r0, 0x4
b _080DAE9A
_080DAE2E:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080DAE82
@@ -6451,7 +6451,7 @@ sub_80DAF1C: @ 80DAF1C
add r0, sp, 0x4
bl StringCopy
lsls r1, r5, 6
- ldr r0, =gUnknown_02039E0D
+ ldr r0, =gUnknown_02039E00 + 13
adds r1, r0
add r0, sp, 0x4
bl StringAppend
@@ -6508,7 +6508,7 @@ sub_80DAFA0: @ 80DAFA0
lsls r1, 24
lsrs r1, 24
lsls r0, r4, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r0, r2
bl sub_80DAED4
ldr r0, =gUnknown_02039F26
@@ -6741,7 +6741,7 @@ sub_80DB174: @ 80DB174
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x4]
adds r2, r5, 0
@@ -6753,7 +6753,7 @@ _080DB1B8:
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x4]
adds r2, r5, 0
@@ -6818,7 +6818,7 @@ _080DB1CC:
strh r0, [r4, 0x2E]
strh r5, [r4, 0x32]
adds r0, r5, 0
- bl sub_80DB2A8
+ bl IsSpeciesNotUnown
lsls r0, 24
cmp r0, 0
beq _080DB278
@@ -6851,8 +6851,8 @@ _080DB280:
.pool
thumb_func_end sub_80DB174
- thumb_func_start sub_80DB2A8
-sub_80DB2A8: @ 80DB2A8
+ thumb_func_start IsSpeciesNotUnown
+IsSpeciesNotUnown: @ 80DB2A8
push {lr}
lsls r0, 16
lsrs r0, 16
@@ -6865,12 +6865,12 @@ _080DB2B6:
_080DB2B8:
pop {r1}
bx r1
- thumb_func_end sub_80DB2A8
+ thumb_func_end IsSpeciesNotUnown
thumb_func_start sub_80DB2BC
sub_80DB2BC: @ 80DB2BC
push {r4-r6,lr}
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r0, [r0, 0x24]
movs r4, 0xA0
@@ -7199,7 +7199,7 @@ sub_80DB584: @ 80DB584
movs r4, 0
movs r5, 0
_080DB58A:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x4]
adds r0, r5, r0
@@ -7238,7 +7238,7 @@ sub_80DB5B8: @ 80DB5B8
lsrs r1, 24
mov r8, r1
mov r10, r8
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
mov r9, r0
ldr r0, [r0]
ldr r1, [r0, 0x4]
@@ -7365,7 +7365,7 @@ _080DB6B6:
adds r5, r0, 0
lsls r5, 16
lsrs r5, 16
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x4]
add r0, r8
@@ -7486,7 +7486,7 @@ sub_80DB798: @ 80DB798
adds r1, 0x2
lsls r1, 24
lsrs r7, r1, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r2, [r1, 0x4]
lsls r1, r0, 3
@@ -7647,7 +7647,7 @@ _080DB8D0:
.pool
_080DB8F4:
ldr r2, =gUnknown_02039E00
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r0, [r0]
@@ -7674,7 +7674,7 @@ _080DB91E:
lsls r0, r4, 24
lsrs r0, 24
bl sub_80DB8B8
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r1, [r1, 0x4]
adds r1, r5, r1
@@ -7696,7 +7696,7 @@ sub_80DB944: @ 80DB944
mov r6, r8
push {r6,r7}
sub sp, 0x8
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
mov r4, sp
movs r3, 0
movs r6, 0x3
@@ -7751,7 +7751,7 @@ _080DB9A4:
movs r0, 0x4
negs r0, r0
mov r9, r0
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
mov r8, r1
movs r7, 0x3
mov r12, r7
@@ -7806,7 +7806,7 @@ _080DB9F8:
thumb_func_start sub_80DBA18
sub_80DBA18: @ 80DBA18
push {r4,r5,lr}
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
movs r2, 0
movs r3, 0x3
_080DBA20:
@@ -7854,7 +7854,7 @@ sub_80DBA68: @ 80DBA68
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r2, [r1, 0x4]
lsls r1, r0, 3
@@ -7889,7 +7889,7 @@ sub_80DBAA0: @ 80DBAA0
mov r6, r9
mov r5, r8
push {r5-r7}
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
movs r0, 0
mov r8, r0
movs r1, 0x7
@@ -8092,7 +8092,7 @@ _080DBC1A:
b _080DBAC0
_080DBC34:
movs r6, 0
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
movs r7, 0
movs r4, 0
_080DBC3C:
@@ -8132,7 +8132,7 @@ _080DBC3C:
adds r6, 0x1
cmp r6, 0x3
ble _080DBC3C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0x10]
ldrb r1, [r2, 0x1]
@@ -8155,7 +8155,7 @@ sub_80DBCA8: @ 80DBCA8
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r2, [r1, 0x4]
lsls r1, r0, 3
@@ -8456,7 +8456,7 @@ sub_80DBED4: @ 80DBED4
adds r0, r1
ldrb r1, [r0]
lsls r1, 1
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
lsls r0, 3
adds r1, r0
@@ -8516,10 +8516,10 @@ _080DBF62:
thumb_func_start sub_80DBF68
sub_80DBF68: @ 80DBF68
push {lr}
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
bl sub_80DB89C
ldr r0, =gUnknown_0827E8DA
@@ -8626,7 +8626,7 @@ sub_80DC028: @ 80DC028
lsls r2, 24
lsrs r2, 24
mov r8, r2
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x14]
lsls r1, r2, 2
@@ -8746,7 +8746,7 @@ _080DC126:
bne _080DC15C
adds r0, r7, 0
bl DestroyTask
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x14]
mov r2, r9
@@ -8950,7 +8950,7 @@ _080DC2C8:
movs r1, 0xB4
movs r3, 0x1
bl CreateSprite
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r2, [r1, 0x14]
lsls r1, r4, 2
@@ -8970,7 +8970,7 @@ sub_80DC308: @ 80DC308
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r2, [r0, 0x14]
lsls r3, r6, 2
@@ -9067,7 +9067,7 @@ _080DC3B0:
sub_80DC3C4: @ 80DC3C4
push {r4,lr}
movs r2, 0
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r0, [r3]
ldr r0, [r0, 0x14]
ldrb r1, [r0, 0x2]
@@ -9114,7 +9114,7 @@ sub_80DC408: @ 80DC408
ldrsh r0, [r3, r4]
cmp r1, r0
bne _080DC440
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
movs r2, 0x2E
ldrsh r1, [r3, r2]
@@ -9145,7 +9145,7 @@ sub_80DC44C: @ 80DC44C
push {r4-r6,lr}
movs r2, 0
ldr r6, =gSprites
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r4, =gUnknown_08587A6C
ldr r3, =gUnknown_02039F26
_080DC458:
@@ -9180,7 +9180,7 @@ sub_80DC490: @ 80DC490
movs r3, 0
ldr r7, =gUnknown_02039F26
ldr r5, =gSprites
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
movs r2, 0
_080DC4A0:
adds r0, r3, r7
@@ -9231,7 +9231,7 @@ sub_80DC4F0: @ 80DC4F0
ldr r0, =gUnknown_08587B08
bl LoadSpritePalette
movs r5, 0
- ldr r7, =gUnknown_02039F34
+ ldr r7, =gContestResources
ldr r0, =gSprites
mov r8, r0
movs r6, 0
@@ -9315,7 +9315,7 @@ sub_80DC594: @ 80DC594
movs r3, 0x4
orrs r2, r3
strb r2, [r1]
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r1, [r1]
adds r1, 0x58
@@ -9333,7 +9333,7 @@ sub_80DC5E8: @ 80DC5E8
bl CreateTask
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r1, [r1]
strb r0, [r1, 0xD]
@@ -9365,7 +9365,7 @@ sub_80DC630: @ 80DC630
lsls r0, 24
lsrs r0, 24
ldr r3, =gTasks
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r5, [r1]
ldr r1, [r5]
ldrb r2, [r1, 0xD]
@@ -9430,7 +9430,7 @@ sub_80DC6A4: @ 80DC6A4
adds r0, r2
ldrb r0, [r0, 0x8]
adds r5, r0, 0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r4, [r0]
ldr r0, [r4]
ldrb r1, [r0, 0xD]
@@ -9553,7 +9553,7 @@ _080DC79C:
eors r1, r2
strh r1, [r0]
_080DC7AA:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
adds r0, 0x14
@@ -9590,7 +9590,7 @@ sub_80DC7EC: @ 80DC7EC
ldr r0, =sub_80DC8D0
movs r1, 0x1E
bl CreateTask
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r1, [r1]
strb r0, [r1, 0xE]
@@ -9614,7 +9614,7 @@ sub_80DC81C: @ 80DC81C
lsls r0, 24
lsrs r0, 24
ldr r3, =gTasks
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r4, [r1]
ldr r1, [r4]
ldrb r2, [r1, 0xE]
@@ -9819,7 +9819,7 @@ sub_80DC9B4: @ 80DC9B4
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r2, 3
@@ -9923,7 +9923,7 @@ sub_80DC9EC: @ 80DC9EC
lsls r3, 6
ldr r0, =0x0600e026
adds r3, r0
- ldr r7, =gUnknown_02039F34
+ ldr r7, =gContestResources
ldr r0, [r7]
ldr r0, [r0, 0x34]
str r0, [sp]
@@ -10083,7 +10083,7 @@ sub_80DCBE8: @ 80DCBE8
lsrs r0, 24
mov r9, r0
bl sub_80DCBB4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r1, [r0]
ldr r2, =gSprites
mov r8, r2
@@ -10186,7 +10186,7 @@ _080DCCCC:
thumb_func_start sub_80DCCD8
sub_80DCCD8: @ 80DCCD8
push {lr}
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
movs r3, 0x30
ldrsh r2, [r0, r3]
@@ -10279,7 +10279,7 @@ _080DCD7E:
bls _080DCD7E
movs r5, 0
_080DCD92:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r5, 3
@@ -10322,7 +10322,7 @@ _080DCDBC:
bls _080DCD92
movs r5, 0
_080DCDEA:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r5, 3
@@ -10536,7 +10536,7 @@ _080DCF80:
ldr r3, =gUnknown_02039F26
movs r6, 0
_080DCF90:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x4]
adds r0, r6, r0
@@ -10577,7 +10577,7 @@ _080DCFCC:
add r3, sp, 0x4
mov r12, r3
_080DCFE0:
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
ldr r0, [r6]
ldr r1, [r0, 0x4]
lsls r0, r4, 3
@@ -10667,7 +10667,7 @@ sub_80DD080: @ 80DD080
push {r6,r7}
lsls r0, 24
lsrs r6, r0, 24
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r3, [r4]
ldr r1, [r3, 0x4]
lsls r7, r6, 3
@@ -10731,7 +10731,7 @@ _080DD0B4:
b _080DD12C
.pool
_080DD110:
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0x4]
lsls r3, r6, 3
@@ -10789,7 +10789,7 @@ _080DD166:
adds r2, 0x1
cmp r2, 0x3
ble _080DD166
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0x4]
subs r0, r7, r6
@@ -10819,7 +10819,7 @@ _080DD1B4:
add r0, r9
ldr r0, [r0]
bl _call_via_r0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x4]
subs r0, r7, r6
@@ -10855,7 +10855,7 @@ _080DD204:
_080DD206:
adds r0, r1
strh r0, [r2, 0x2]
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0x4]
subs r0, r7, r6
@@ -10927,7 +10927,7 @@ _080DD206:
.pool
_080DD29C:
ldr r2, =gContestMoves
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0x4]
subs r0, r7, r6
@@ -10960,7 +10960,7 @@ _080DD2D8:
ands r0, r1
strb r0, [r3, 0x15]
_080DD2E2:
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0x4]
subs r0, r7, r6
@@ -11071,7 +11071,7 @@ _080DD3AE:
cmp r0, 0
bne _080DD3A2
_080DD3B6:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x4]
subs r0, r7, r6
@@ -11092,7 +11092,7 @@ _080DD3C4:
sub_80DD3D4: @ 80DD3D4
lsls r0, 24
lsrs r0, 24
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r2, [r2]
ldr r3, [r2, 0x4]
lsls r2, r0, 3
@@ -11108,7 +11108,7 @@ sub_80DD3D4: @ 80DD3D4
sub_80DD3F0: @ 80DD3F0
lsls r0, 24
lsrs r0, 24
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r2, [r2]
ldr r3, [r2, 0x4]
lsls r2, r0, 3
@@ -11173,11 +11173,11 @@ sub_80DD45C: @ 80DD45C
lsrs r6, r1, 24
ldr r0, =gStringVar1
lsls r1, r4, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r0, =gStringVar2
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r1, [r5]
ldr r2, [r1, 0x4]
lsls r1, r4, 3
@@ -11265,7 +11265,7 @@ sub_80DD560: @ 80DD560
push {r4,lr}
lsls r0, 24
lsrs r0, 24
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r1, [r4]
ldr r3, [r1, 0x4]
lsls r1, r0, 3
@@ -11315,7 +11315,7 @@ _080DD5AC:
cmp r4, 0x3
ble _080DD5AC
movs r4, 0
- ldr r7, =gUnknown_02039F34
+ ldr r7, =gContestResources
ldr r1, [r7]
mov r8, r1
adds r5, r2, 0
@@ -11422,7 +11422,7 @@ _080DD684:
cmp r4, 0x3
ble _080DD5CA
movs r4, 0
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
movs r5, 0
_080DD690:
ldr r0, [r6]
@@ -11483,7 +11483,7 @@ sub_80DD6DC: @ 80DD6DC
strb r0, [r3]
ldr r0, =SpriteCallbackDummy
str r0, [r2, 0x1C]
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r1, [r2, 0x6]
@@ -11502,7 +11502,7 @@ sub_80DD720: @ 80DD720
push {r4,r5,lr}
lsls r0, 24
lsrs r1, r0, 24
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r5, [r0, 0x12]
@@ -11700,7 +11700,7 @@ _080DD8F8:
adds r2, r4
ldr r0, =sub_80DD6DC
str r0, [r2]
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r0, [r2, 0x6]
@@ -11720,7 +11720,7 @@ sub_80DD940: @ 80DD940
mov r6, r8
push {r6,r7}
movs r5, 0
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
ldr r0, =gSprites
mov r9, r0
ldr r0, =0x06010000
@@ -11805,7 +11805,7 @@ sub_80DD9F0: @ 80DD9F0
ldrb r1, [r0, 0x1]
lsls r1, 29
lsrs r1, 29
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r2, [r0]
lsls r0, r2, 2
adds r0, r2
@@ -11905,7 +11905,7 @@ _080DDACA:
movs r1, 0x1
eors r0, r1
strh r0, [r4, 0xE]
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r0, [r0, 0x13]
@@ -11939,7 +11939,7 @@ sub_80DDB0C: @ 80DDB0C
movs r1, 0xA
bl CreateTask
ldr r3, =gSprites
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r2, [r4]
ldr r0, [r2]
adds r0, 0x58
@@ -11981,7 +11981,7 @@ sub_80DDB6C: @ 80DDB6C
lsls r0, 24
lsrs r0, 24
adds r3, r0, 0
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0]
adds r0, 0x58
@@ -12040,7 +12040,7 @@ _080DDBD4:
sub_80DDBE8: @ 80DDBE8
push {r4,r5,lr}
ldr r5, =gSprites
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r2, [r0]
adds r0, r2, 0
@@ -12093,7 +12093,7 @@ task08_080CD1CC: @ 80DDC4C
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r0, [r0]
adds r0, 0x58
@@ -12175,7 +12175,7 @@ sub_80DDCDC: @ 80DDCDC
lsls r4, 24
asrs r4, 24
strh r4, [r1, 0x8]
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r0, [r2, 0x6]
@@ -12216,7 +12216,7 @@ _080DDD4E:
bl sub_80DDB0C
b _080DDD64
_080DDD54:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r1, [r0, 0x6]
@@ -12241,7 +12241,7 @@ _080DDD70:
movs r0, 0
strh r0, [r4, 0x1E]
bl sub_80DD940
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r1, [r2, 0x6]
@@ -12261,7 +12261,7 @@ _080DDD9C:
thumb_func_start sub_80DDDA8
sub_80DDDA8: @ 80DDDA8
ldr r3, =gSprites
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r2, [r0]
ldr r0, [r2]
adds r0, 0x58
@@ -12292,7 +12292,7 @@ sub_80DDDA8: @ 80DDDA8
thumb_func_start sub_80DDDE4
sub_80DDDE4: @ 80DDDE4
ldr r2, =gSprites
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
adds r0, 0x58
@@ -12316,7 +12316,7 @@ sub_80DDE0C: @ 80DDE0C
ldr r0, =sub_80DDE30
movs r1, 0xF
bl CreateTask
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r0, [r2, 0x6]
@@ -12383,7 +12383,7 @@ _080DDE8C:
ldrsh r0, [r0, r1]
cmp r0, 0x9
bne _080DDEBA
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r1, [r2, 0x6]
@@ -12421,7 +12421,7 @@ sub_80DDED0: @ 80DDED0
cmp r4, 0
ble _080DDF1C
movs r5, 0
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r0, [r0]
movs r1, 0x13
@@ -12433,7 +12433,7 @@ sub_80DDED0: @ 80DDED0
b _080DDF4E
.pool
_080DDF1C:
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r0, [r0]
movs r1, 0x13
@@ -12458,7 +12458,7 @@ _080DDF48:
movs r5, 0xC
movs r3, 0
_080DDF4C:
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
_080DDF4E:
ldr r1, =gTasks
lsls r0, r6, 2
@@ -12536,7 +12536,7 @@ _080DDFB8:
bne _080DDFFC
adds r0, r5, 0
bl DestroyTask
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r1, [r2, 0x7]
@@ -12562,7 +12562,7 @@ sub_80DE008: @ 80DE008
lsrs r0, 24
mov r10, r0
movs r5, 0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
mov r9, r0
mov r8, r9
ldr r6, =gSprites
@@ -12666,7 +12666,7 @@ sub_80DE0F0: @ 80DE0F0
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r2, [r1, 0x4]
lsls r1, r0, 3
@@ -12708,7 +12708,7 @@ sub_80DE12C: @ 80DE12C
movs r0, 0x11
mov r9, r0
_080DE146:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
adds r0, 0xD
@@ -12789,7 +12789,7 @@ sub_80DE1E8: @ 80DE1E8
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r2, [r1, 0x4]
lsls r1, r0, 3
@@ -12881,10 +12881,10 @@ sub_80DE224: @ 80DE224
ldrh r1, [r5]
movs r0, 0xC
bl SetGpuReg
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
movs r0, 0xF0
strh r0, [r1]
- ldr r4, =gUnknown_02022E1A
+ ldr r4, =gBattle_BG1_Y
movs r0, 0xA0
strh r0, [r4]
movs r0, 0x14
@@ -12896,7 +12896,7 @@ sub_80DE224: @ 80DE224
movs r0, 0
str r0, [sp, 0x8]
add r0, sp, 0x8
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r1, [r4]
ldr r1, [r1, 0x28]
ldr r2, =0x05000400
@@ -12963,7 +12963,7 @@ sub_80DE350: @ 80DE350
bl RequestDma3Fill
movs r5, 0
str r5, [sp]
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
ldr r0, [r6]
ldr r1, [r0, 0x28]
ldr r2, =0x05000400
@@ -13004,9 +13004,9 @@ sub_80DE350: @ 80DE350
ldrh r1, [r3]
movs r0, 0xA
bl SetGpuReg
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r5, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r5, [r0]
ldr r7, =gSprites
_080DE3CA:
@@ -13051,10 +13051,10 @@ sub_80DE424: @ 80DE424
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
movs r0, 0xA0
strh r0, [r1]
movs r0, 0x62
@@ -13078,7 +13078,7 @@ sub_80DE464: @ 80DE464
push {lr}
lsls r0, 24
lsrs r3, r0, 24
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
ldrh r0, [r1]
subs r0, 0x7
strh r0, [r1]
@@ -13136,7 +13136,7 @@ _080DE4D0:
_080DE4DA:
movs r2, 0
adds r6, r3, 0
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r3, =gUnknown_02039F26
_080DE4E2:
ldr r0, [r5]
@@ -13170,7 +13170,7 @@ _080DE52C:
ands r1, r0
cmp r1, 0
beq _080DE584
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r0, [r2, 0x7]
@@ -13201,7 +13201,7 @@ _080DE584:
bl sub_80DBAA0
b _080DE59A
_080DE58A:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
ldrb r1, [r0, 0x7]
@@ -13233,7 +13233,7 @@ sub_80DE5C0: @ 80DE5C0
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
ldrh r0, [r1]
adds r0, 0x7
strh r0, [r1]
@@ -13356,7 +13356,7 @@ sub_80DE69C: @ 80DE69C
mov r8, r0
movs r7, 0
ldr r6, =gSprites
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
_080DE6AE:
bl AllocOamMatrix
ldr r1, [r5]
@@ -13450,7 +13450,7 @@ _080DE74C:
adds r1, r2
mov r0, r8
strh r0, [r1, 0x8]
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0]
ldrb r0, [r2, 0x7]
@@ -13471,7 +13471,7 @@ sub_80DE794: @ 80DE794
lsls r0, 24
lsrs r6, r0, 24
ldr r2, =gSprites
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r0, [r3]
ldr r0, [r0, 0x14]
ldrb r1, [r0]
@@ -13515,7 +13515,7 @@ _080DE7CC:
_080DE7EC:
movs r4, 0
_080DE7EE:
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0x14]
lsls r0, r4, 2
@@ -13583,7 +13583,7 @@ sub_80DE864: @ 80DE864
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r1, [r0, 0x4]
lsls r0, r7, 3
@@ -13606,7 +13606,7 @@ sub_80DE864: @ 80DE864
movs r1, 0
movs r2, 0x14
bl memset
- bl sub_80A3934
+ bl ClearBattleAnimationVars
ldr r1, =gBattleMonForms
movs r2, 0
adds r0, r1, 0x3
@@ -13662,12 +13662,12 @@ _080DE8FA:
cmp r0, 0x7
bne _080DE99C
_080DE910:
- ldr r1, =gUnknown_02038432
+ ldr r1, =gAnimMoveTurn
movs r0, 0
b _080DE9A0
.pool
_080DE920:
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
ldr r0, [r6]
ldr r1, [r0, 0x4]
lsls r0, r7, 3
@@ -13695,17 +13695,17 @@ _080DE920:
b _080DE9A2
.pool
_080DE960:
- ldr r1, =gHappinessMoveAnim
+ ldr r1, =gAnimFriendship
movs r0, 0xFF
b _080DE9A0
.pool
_080DE96C:
- ldr r1, =gHappinessMoveAnim
+ ldr r1, =gAnimFriendship
movs r0, 0
b _080DE9A0
.pool
_080DE978:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0]
adds r2, r0, 0
@@ -13715,12 +13715,12 @@ _080DE978:
bne _080DE99C
movs r0, 0x2
strb r0, [r2]
- ldr r0, =gUnknown_02038432
+ ldr r0, =gAnimMoveTurn
strb r1, [r0]
b _080DE9A2
.pool
_080DE99C:
- ldr r1, =gUnknown_02038432
+ ldr r1, =gAnimMoveTurn
movs r0, 0x1
_080DE9A0:
strb r0, [r1]
@@ -13735,7 +13735,7 @@ _080DE9A2:
thumb_func_start sub_80DE9B0
sub_80DE9B0: @ 80DE9B0
push {r4,lr}
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0x18]
movs r1, 0
@@ -13763,7 +13763,7 @@ sub_80DE9DC: @ 80DE9DC
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
ldr r0, [r6]
ldr r0, [r0, 0x18]
strb r4, [r0, 0x5]
@@ -14260,7 +14260,7 @@ _080DEDE6:
b _080DEF90
.pool
_080DEE00:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080DEE4C
@@ -14383,7 +14383,7 @@ _080DEF02:
mov r2, r9
lsls r1, r2, 5
adds r0, r1
- ldr r1, =gUnknown_02039F2C
+ ldr r1, =gScriptContestCategory
ldrh r1, [r1]
ldr r3, =0x00002e9a
adds r0, r3
@@ -14485,7 +14485,7 @@ _080DEFE6:
b _080DF03A
.pool
_080DEFF8:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080DF038
@@ -14558,7 +14558,7 @@ sub_80DF080: @ 80DF080
push {r4-r7,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r3, [r2]
ldr r5, [r3, 0x10]
ldrb r1, [r5, 0x1]
@@ -14810,7 +14810,7 @@ sub_80DF250: @ 80DF250
movs r0, 0
str r0, [sp, 0x20]
movs r4, 0
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
mov r2, sp
adds r2, 0xC
str r2, [sp, 0x28]
@@ -14871,7 +14871,7 @@ _080DF2C2:
subs r2, r0
cmp r2, 0x32
bgt _080DF2EE
- ldr r7, =gUnknown_02039F34
+ ldr r7, =gContestResources
ldr r0, [r7]
ldr r2, [r0, 0x1C]
add r2, r9
@@ -14880,7 +14880,7 @@ _080DF2C2:
orrs r0, r1
strb r0, [r2, 0xD]
_080DF2EE:
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r0, [r1]
ldr r0, [r0, 0x1C]
mov r3, r9
@@ -14926,7 +14926,7 @@ _080DF336:
ldrb r0, [r0]
cmp r0, 0
beq _080DF354
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r2, [r0, 0x1C]
add r2, r9
@@ -14978,7 +14978,7 @@ _080DF38E:
mov r2, r8
cmp r2, 0
bne _080DF3B4
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r0, [r3]
ldr r2, [r0, 0x1C]
add r2, r9
@@ -14987,7 +14987,7 @@ _080DF38E:
orrs r0, r1
strb r0, [r2, 0xD]
_080DF3B4:
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
ldr r0, [r6]
ldr r0, [r0, 0x1C]
mov r7, r9
@@ -15031,7 +15031,7 @@ _080DF3EA:
ldr r2, [sp, 0x28]
strb r0, [r2, 0x5]
movs r4, 0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
mov r8, r0
ldr r7, [sp, 0x30]
@@ -15046,7 +15046,7 @@ _080DF40E:
mov r12, r4
cmp r0, 0
beq _080DF450
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r6, [r0]
ldr r3, [sp, 0x28]
mov r4, sp
@@ -15123,7 +15123,7 @@ _080DF4B6:
bne _080DF478
_080DF4C0:
bl Random
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r4, [r1, 0x1C]
ldr r1, [sp, 0x30]
@@ -15167,7 +15167,7 @@ sub_80DF4F8: @ 80DF4F8
_080DF514:
movs r7, 0
movs r3, 0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
mov r12, r0
_080DF51C:
adds r0, r3, r1
@@ -15253,7 +15253,7 @@ _080DF5A0:
bl __modsi3
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x1C]
add r0, r8
@@ -15295,7 +15295,7 @@ _080DF5F6:
bne _080DF628
mov r0, sp
strb r1, [r0]
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r0, [r1]
ldr r0, [r0, 0x1C]
ldrb r4, [r0, 0x1D]
@@ -15306,7 +15306,7 @@ _080DF628:
mov r1, sp
movs r0, 0
strb r0, [r1]
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r0, [r1]
ldr r0, [r0, 0x1C]
ldrb r4, [r0, 0xD]
@@ -15360,7 +15360,7 @@ _080DF682:
ldrb r6, [r0]
movs r2, 0x80
movs r3, 0
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r0, [r0, 0x1C]
lsls r1, r6, 4
@@ -15385,21 +15385,21 @@ _080DF6AE:
beq _080DF6AE
_080DF6C4:
mov r0, r9
- bl sub_80ECDA4
+ bl ContestLiveUpdates_BeforeInterview_1
mov r0, r10
- bl sub_80ECDF4
+ bl ContestLiveUpdates_BeforeInterview_2
ldr r5, [sp, 0x4]
lsrs r0, r5, 24
- bl sub_80ECE34
- ldr r0, =gUnknown_02039F34
+ bl ContestLiveUpdates_BeforeInterview_3
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x1C]
add r0, r8
ldrh r0, [r0, 0xA]
- bl sub_80ECE74
+ bl ContestLiveUpdates_BeforeInterview_4
adds r0, r4, 0
adds r1, r6, 0
- bl sub_80ECEB4
+ bl ContestLiveUpdates_BeforeInterview_5
_080DF6EE:
add sp, 0xC
pop {r3-r5}
@@ -15519,7 +15519,7 @@ _080DF7AE:
movs r2, 0x5
movs r3, 0x1
bl sub_80DEBD0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x1C]
lsls r0, r7, 4
@@ -15606,7 +15606,7 @@ _080DF884:
add r0, sp, 0x4
ldr r1, =gText_BDot
bl StringCopy
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x1C]
lsls r0, r7, 4
diff --git a/asm/contest_ai.s b/asm/contest_ai.s
index f28492886..a213c393c 100644
--- a/asm/contest_ai.s
+++ b/asm/contest_ai.s
@@ -10,7 +10,7 @@ sub_81562C4: @ 81562C4
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0xC]
movs r1, 0
@@ -57,7 +57,7 @@ _081562DE:
thumb_func_start sub_8156324
sub_8156324: @ 8156324
push {r4-r6,lr}
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r0, [r1]
ldr r0, [r0, 0xC]
ldr r0, [r0, 0x14]
@@ -98,7 +98,7 @@ _0815636C:
bl Random
adds r5, r0, 0
ands r5, r6
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r1, [r0, 0xC]
adds r0, r1, 0x5
@@ -135,7 +135,7 @@ sub_81563B0: @ 81563B0
push {r4-r7,lr}
mov r7, r8
push {r7}
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r0, [r0, 0xC]
ldrb r0, [r0]
@@ -144,7 +144,7 @@ sub_81563B0: @ 81563B0
beq _081564A0
adds r7, r5, 0
ldr r6, =gAIScriptPtr
- ldr r0, =gUnknown_02039E1E
+ ldr r0, =gUnknown_02039E00 + 30
mov r8, r0
_081563CC:
ldr r0, [r7]
@@ -211,7 +211,7 @@ _08156444:
orrs r0, r1
strb r0, [r2, 0x9]
_08156458:
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r3, [r0, 0xC]
ldrb r1, [r3, 0x9]
@@ -263,7 +263,7 @@ sub_81564AC: @ 81564AC
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r0, [r3]
ldr r0, [r0, 0x8]
b _081564CC
@@ -289,7 +289,7 @@ _081564D2:
thumb_func_start sub_81564DC
sub_81564DC: @ 81564DC
push {r4,lr}
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r0, [r3]
ldr r0, [r0, 0xC]
adds r1, r0, 0x5
@@ -331,7 +331,7 @@ _08156516:
thumb_func_start sub_8156530
sub_8156530: @ 8156530
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
ldr r0, [r0]
@@ -349,7 +349,7 @@ sub_8156530: @ 8156530
sub_8156550: @ 8156550
push {lr}
bl sub_8156530
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -384,7 +384,7 @@ _08156590:
sub_8156594: @ 8156594
push {lr}
bl sub_8156530
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -419,7 +419,7 @@ _081565D4:
sub_81565D8: @ 81565D8
push {lr}
bl sub_8156530
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -454,7 +454,7 @@ _08156618:
sub_815661C: @ 815661C
push {lr}
bl sub_8156530
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -487,7 +487,7 @@ _0815665C:
thumb_func_start sub_8156660
sub_8156660: @ 8156660
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
ldr r0, [r0]
@@ -507,7 +507,7 @@ sub_8156660: @ 8156660
sub_8156684: @ 8156684
push {lr}
bl sub_8156660
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -542,7 +542,7 @@ _081566C4:
sub_81566C8: @ 81566C8
push {lr}
bl sub_8156660
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -577,7 +577,7 @@ _08156708:
sub_815670C: @ 815670C
push {lr}
bl sub_8156660
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -612,7 +612,7 @@ _0815674C:
sub_8156750: @ 8156750
push {lr}
bl sub_8156660
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -645,7 +645,7 @@ _08156790:
thumb_func_start sub_8156794
sub_8156794: @ 8156794
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r0, [r0, 0x8]
@@ -667,7 +667,7 @@ sub_8156794: @ 8156794
sub_81567BC: @ 81567BC
push {lr}
bl sub_8156794
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -702,7 +702,7 @@ _081567FC:
sub_8156800: @ 8156800
push {lr}
bl sub_8156794
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -737,7 +737,7 @@ _08156840:
sub_8156844: @ 8156844
push {lr}
bl sub_8156794
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -772,7 +772,7 @@ _08156884:
sub_8156888: @ 8156888
push {lr}
bl sub_8156794
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -806,7 +806,7 @@ _081568C8:
thumb_func_start sub_81568CC
sub_81568CC: @ 81568CC
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r4, [r0, 0xC]
adds r1, r4, 0
@@ -839,7 +839,7 @@ sub_81568CC: @ 81568CC
sub_815690C: @ 815690C
push {lr}
bl sub_81568CC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -874,7 +874,7 @@ _0815694C:
sub_8156950: @ 8156950
push {lr}
bl sub_81568CC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -909,7 +909,7 @@ _08156990:
sub_8156994: @ 8156994
push {lr}
bl sub_81568CC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -944,7 +944,7 @@ _081569D4:
sub_81569D8: @ 81569D8
push {lr}
bl sub_81568CC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -977,7 +977,7 @@ _08156A18:
thumb_func_start sub_8156A1C
sub_8156A1C: @ 8156A1C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r3, [r0, 0xC]
adds r1, r3, 0
@@ -1002,7 +1002,7 @@ sub_8156A1C: @ 8156A1C
sub_8156A48: @ 8156A48
push {r4,r5,lr}
bl sub_8156A1C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -1043,7 +1043,7 @@ _08156A90:
sub_8156A98: @ 8156A98
push {r4,r5,lr}
bl sub_8156A1C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -1084,7 +1084,7 @@ _08156AE0:
sub_8156AE8: @ 8156AE8
push {r4,r5,lr}
bl sub_8156A1C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -1125,7 +1125,7 @@ _08156B30:
sub_8156B38: @ 8156B38
push {r4,r5,lr}
bl sub_8156A1C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -1164,7 +1164,7 @@ _08156B80:
thumb_func_start sub_8156B88
sub_8156B88: @ 8156B88
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r1, =gUnknown_02039F00
@@ -1187,7 +1187,7 @@ sub_8156B88: @ 8156B88
sub_8156BB4: @ 8156BB4
push {r4,r5,lr}
bl sub_8156B88
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -1228,7 +1228,7 @@ _08156BFC:
sub_8156C04: @ 8156C04
push {r4,r5,lr}
bl sub_8156B88
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -1269,7 +1269,7 @@ _08156C4C:
sub_8156C54: @ 8156C54
push {r4,r5,lr}
bl sub_8156B88
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -1310,7 +1310,7 @@ _08156C9C:
sub_8156CA4: @ 8156CA4
push {r4,r5,lr}
bl sub_8156B88
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -1349,10 +1349,10 @@ _08156CEC:
thumb_func_start sub_8156CF4
sub_8156CF4: @ 8156CF4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
strh r0, [r1, 0x18]
ldr r1, =gAIScriptPtr
@@ -1367,7 +1367,7 @@ sub_8156CF4: @ 8156CF4
sub_8156D18: @ 8156D18
push {lr}
bl sub_8156CF4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -1402,7 +1402,7 @@ _08156D58:
sub_8156D5C: @ 8156D5C
push {lr}
bl sub_8156CF4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -1437,7 +1437,7 @@ _08156D9C:
sub_8156DA0: @ 8156DA0
push {r4,lr}
ldr r2, =gUnknown_02039E00
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0xC]
ldrb r1, [r0, 0x4]
@@ -1469,7 +1469,7 @@ sub_8156DA0: @ 8156DA0
sub_8156DE4: @ 8156DE4
push {r4,lr}
bl sub_8156DA0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
ldr r3, =gAIScriptPtr
@@ -1506,7 +1506,7 @@ _08156E24:
sub_8156E2C: @ 8156E2C
push {r4,lr}
bl sub_8156DA0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
ldr r3, =gAIScriptPtr
@@ -1543,7 +1543,7 @@ _08156E6C:
sub_8156E74: @ 8156E74
push {r4,lr}
bl sub_8156DA0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
ldr r3, =gAIScriptPtr
@@ -1580,7 +1580,7 @@ _08156EB4:
sub_8156EBC: @ 8156EBC
push {r4,lr}
bl sub_8156DA0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
ldr r3, =gAIScriptPtr
@@ -1616,7 +1616,7 @@ _08156EFC:
thumb_func_start sub_8156F04
sub_8156F04: @ 8156F04
ldr r2, =gUnknown_02039E00
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r3, [r0, 0xC]
ldrb r1, [r3, 0x4]
@@ -1646,7 +1646,7 @@ sub_8156F04: @ 8156F04
sub_8156F44: @ 8156F44
push {lr}
bl sub_8156F04
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -1681,7 +1681,7 @@ _08156F84:
sub_8156F88: @ 8156F88
push {lr}
bl sub_8156F04
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -1715,7 +1715,7 @@ _08156FC8:
thumb_func_start sub_8156FCC
sub_8156FCC: @ 8156FCC
ldr r2, =gUnknown_02039E00
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r3, [r0, 0xC]
ldrb r1, [r3, 0x4]
@@ -1749,7 +1749,7 @@ sub_8156FCC: @ 8156FCC
sub_8157018: @ 8157018
push {lr}
bl sub_8156FCC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -1784,7 +1784,7 @@ _08157058:
sub_815705C: @ 815705C
push {lr}
bl sub_8156FCC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -1819,7 +1819,7 @@ _0815709C:
sub_81570A0: @ 81570A0
push {r4-r7,lr}
ldr r2, =gUnknown_02039E00
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0xC]
ldrb r0, [r1, 0x4]
@@ -1887,7 +1887,7 @@ _0815711A:
sub_815712C: @ 815712C
push {lr}
bl sub_81570A0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -1924,7 +1924,7 @@ _0815716C:
sub_8157174: @ 8157174
push {r4-r7,lr}
ldr r2, =gUnknown_02039E00
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0xC]
ldrb r0, [r1, 0x4]
@@ -1992,7 +1992,7 @@ _081571EE:
sub_8157200: @ 8157200
push {lr}
bl sub_8157174
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2029,7 +2029,7 @@ _08157240:
sub_8157248: @ 8157248
push {r4,lr}
ldr r2, =gUnknown_02039E00
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r4, [r0, 0xC]
ldrb r1, [r4, 0x4]
@@ -2069,7 +2069,7 @@ sub_8157248: @ 8157248
sub_81572A4: @ 81572A4
push {lr}
bl sub_8157248
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2104,7 +2104,7 @@ _081572E4:
sub_81572E8: @ 81572E8
push {lr}
bl sub_8157248
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2139,7 +2139,7 @@ _08157328:
sub_815732C: @ 815732C
push {lr}
bl sub_8157248
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2174,7 +2174,7 @@ _0815736C:
sub_8157370: @ 8157370
push {lr}
bl sub_8157248
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2209,7 +2209,7 @@ _081573B0:
sub_81573B4: @ 81573B4
push {r4,lr}
ldr r2, =gUnknown_02039E00
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r4, [r0, 0xC]
ldrb r1, [r4, 0x4]
@@ -2249,7 +2249,7 @@ sub_81573B4: @ 81573B4
sub_8157410: @ 8157410
push {lr}
bl sub_81573B4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2284,7 +2284,7 @@ _08157450:
sub_8157454: @ 8157454
push {lr}
bl sub_81573B4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2319,7 +2319,7 @@ _08157494:
sub_8157498: @ 8157498
push {lr}
bl sub_81573B4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2354,7 +2354,7 @@ _081574D8:
sub_81574DC: @ 81574DC
push {lr}
bl sub_81573B4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2389,7 +2389,7 @@ _0815751C:
sub_8157520: @ 8157520
push {r4,r5,lr}
ldr r3, =gUnknown_02039E00
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r4, [r5]
ldr r1, [r4, 0xC]
ldrb r0, [r1, 0x4]
@@ -2435,7 +2435,7 @@ _08157560:
sub_8157578: @ 8157578
push {lr}
bl sub_8157520
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2470,7 +2470,7 @@ _081575B8:
sub_81575BC: @ 81575BC
push {lr}
bl sub_8157520
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2505,7 +2505,7 @@ _081575FC:
sub_8157600: @ 8157600
push {lr}
bl sub_8157520
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2540,7 +2540,7 @@ _08157640:
sub_8157644: @ 8157644
push {lr}
bl sub_8157520
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2576,7 +2576,7 @@ sub_8157688: @ 8157688
push {r4-r6,lr}
movs r3, 0
ldr r2, =gUnknown_02039E00
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
ldrb r1, [r0, 0x4]
@@ -2592,7 +2592,7 @@ sub_8157688: @ 8157688
adds r6, r2, 0
_081576AA:
lsls r1, r4, 1
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
adds r0, 0x41
@@ -2619,7 +2619,7 @@ _081576D2:
_081576DC:
movs r3, 0x1
_081576DE:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
strh r3, [r0, 0x18]
@@ -2637,7 +2637,7 @@ _081576DE:
sub_8157700: @ 8157700
push {lr}
bl sub_8157688
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2674,7 +2674,7 @@ _08157740:
sub_8157748: @ 8157748
push {lr}
bl sub_8157688
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2712,7 +2712,7 @@ sub_8157790: @ 8157790
push {r4-r6,lr}
movs r3, 0
ldr r2, =gUnknown_02039E00
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
ldrb r1, [r0, 0x4]
@@ -2728,7 +2728,7 @@ sub_8157790: @ 8157790
adds r6, r2, 0
_081577B2:
lsls r1, r4, 1
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
adds r0, 0x41
@@ -2754,7 +2754,7 @@ _081577D8:
_081577E2:
movs r3, 0x1
_081577E4:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
strh r3, [r0, 0x18]
@@ -2772,7 +2772,7 @@ _081577E4:
sub_8157808: @ 8157808
push {lr}
bl sub_8157790
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2809,7 +2809,7 @@ _08157848:
sub_8157850: @ 8157850
push {lr}
bl sub_8157790
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2847,7 +2847,7 @@ sub_8157898: @ 8157898
push {r4-r6,lr}
movs r5, 0
ldr r3, =gUnknown_02039E00
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
ldr r4, [r6]
ldr r1, [r4, 0xC]
ldrb r0, [r1, 0x4]
@@ -2893,7 +2893,7 @@ _081578D6:
sub_81578F8: @ 81578F8
push {lr}
bl sub_8157898
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2930,7 +2930,7 @@ _08157938:
sub_8157940: @ 8157940
push {lr}
bl sub_8157898
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -2972,7 +2972,7 @@ sub_8157988: @ 8157988
bl sub_81564AC
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r5, [r1, 0xC]
ldr r2, [r1, 0x4]
@@ -3000,7 +3000,7 @@ sub_8157988: @ 8157988
sub_81579CC: @ 81579CC
push {lr}
bl sub_8157988
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3035,7 +3035,7 @@ _08157A0C:
sub_8157A10: @ 8157A10
push {lr}
bl sub_8157988
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3070,7 +3070,7 @@ _08157A50:
sub_8157A54: @ 8157A54
push {lr}
bl sub_8157988
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3105,7 +3105,7 @@ _08157A94:
sub_8157A98: @ 8157A98
push {lr}
bl sub_8157988
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3152,7 +3152,7 @@ sub_8157ADC: @ 8157ADC
cmp r0, 0
beq _08157B18
ldr r2, =gContestMoves
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r4, 3
@@ -3167,7 +3167,7 @@ sub_8157ADC: @ 8157ADC
orrs r0, r1
lsrs r6, r0, 31
_08157B18:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
strh r6, [r0, 0x18]
@@ -3184,7 +3184,7 @@ _08157B18:
sub_8157B38: @ 8157B38
push {lr}
bl sub_8157ADC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3219,7 +3219,7 @@ _08157B78:
sub_8157B7C: @ 8157B7C
push {lr}
bl sub_8157ADC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3254,7 +3254,7 @@ _08157BBC:
sub_8157BC0: @ 8157BC0
push {lr}
bl sub_8157ADC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3289,7 +3289,7 @@ _08157C00:
sub_8157C04: @ 8157C04
push {lr}
bl sub_8157ADC
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3333,14 +3333,14 @@ sub_8157C48: @ 8157C48
lsls r0, 24
cmp r0, 0
beq _08157C74
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
movs r0, 0
b _08157C7C
.pool
_08157C74:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
movs r0, 0x1
@@ -3359,7 +3359,7 @@ _08157C7C:
sub_8157C94: @ 8157C94
push {lr}
bl sub_8157C48
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3396,7 +3396,7 @@ _08157CD4:
sub_8157CDC: @ 8157CDC
push {lr}
bl sub_8157C48
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3438,7 +3438,7 @@ sub_8157D24: @ 8157D24
bl sub_81564AC
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r3, [r1, 0xC]
ldr r2, [r1, 0x4]
@@ -3463,7 +3463,7 @@ sub_8157D24: @ 8157D24
sub_8157D60: @ 8157D60
push {lr}
bl sub_8157D24
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3500,7 +3500,7 @@ _08157DA0:
sub_8157DA8: @ 8157DA8
push {lr}
bl sub_8157D24
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3542,7 +3542,7 @@ sub_8157DF0: @ 8157DF0
bl sub_81564AC
lsls r0, 24
lsrs r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r5, [r1, 0xC]
ldr r3, [r1, 0x4]
@@ -3574,7 +3574,7 @@ sub_8157DF0: @ 8157DF0
sub_8157E3C: @ 8157E3C
push {lr}
bl sub_8157DF0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3611,7 +3611,7 @@ _08157E7C:
sub_8157E84: @ 8157E84
push {lr}
bl sub_8157DF0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3648,7 +3648,7 @@ _08157EC4:
sub_8157ECC: @ 8157ECC
push {lr}
bl sub_8157DF0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3685,7 +3685,7 @@ _08157F0C:
sub_8157F14: @ 8157F14
push {lr}
bl sub_8157DF0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3726,7 +3726,7 @@ sub_8157F5C: @ 8157F5C
ldrb r0, [r0, 0x1]
bl sub_81564AC
lsls r0, 24
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r3, [r1, 0xC]
ldr r2, =gUnknown_02039F00
@@ -3754,7 +3754,7 @@ sub_8157F5C: @ 8157F5C
sub_8157FA0: @ 8157FA0
push {lr}
bl sub_8157F5C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3791,7 +3791,7 @@ _08157FE0:
sub_8157FE8: @ 8157FE8
push {lr}
bl sub_8157F5C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3828,7 +3828,7 @@ _08158028:
sub_8158030: @ 8158030
push {lr}
bl sub_8157F5C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3865,7 +3865,7 @@ _08158070:
sub_8158078: @ 8158078
push {lr}
bl sub_8157F5C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3908,7 +3908,7 @@ sub_81580C0: @ 81580C0
lsls r0, 24
ldr r3, [r5]
ldrb r2, [r3, 0x2]
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r4, [r1]
ldr r1, [r4]
lsrs r0, 23
@@ -3935,7 +3935,7 @@ sub_81580C0: @ 81580C0
sub_8158108: @ 8158108
push {lr}
bl sub_81580C0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -3970,7 +3970,7 @@ _08158148:
sub_815814C: @ 815814C
push {lr}
bl sub_81580C0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -4005,7 +4005,7 @@ _0815818C:
sub_8158190: @ 8158190
push {lr}
bl sub_81580C0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -4040,7 +4040,7 @@ _081581D0:
sub_81581D4: @ 81581D4
push {lr}
bl sub_81580C0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -4082,7 +4082,7 @@ sub_8158218: @ 8158218
lsrs r0, 24
ldr r3, [r5]
ldrb r2, [r3, 0x2]
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r4, [r1]
ldr r1, [r4]
lsls r2, 2
@@ -4105,7 +4105,7 @@ sub_8158218: @ 8158218
sub_8158254: @ 8158254
push {lr}
bl sub_8158218
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -4140,7 +4140,7 @@ _08158294:
sub_8158298: @ 8158298
push {lr}
bl sub_8158218
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -4175,7 +4175,7 @@ _081582D8:
sub_81582DC: @ 81582DC
push {lr}
bl sub_8158218
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -4210,7 +4210,7 @@ _0815831C:
sub_8158320: @ 8158320
push {lr}
bl sub_8158218
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -4251,7 +4251,7 @@ sub_8158364: @ 8158364
lsls r0, 24
ldr r3, [r5]
ldrb r2, [r3, 0x2]
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r4, [r1]
ldr r1, [r4]
lsrs r0, 23
@@ -4282,7 +4282,7 @@ sub_8158364: @ 8158364
sub_81583B8: @ 81583B8
push {lr}
bl sub_8158364
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -4317,7 +4317,7 @@ _081583F8:
sub_81583FC: @ 81583FC
push {lr}
bl sub_8158364
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -4351,7 +4351,7 @@ _0815843C:
thumb_func_start sub_8158440
sub_8158440: @ 8158440
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r3, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4374,7 +4374,7 @@ sub_8158440: @ 8158440
thumb_func_start sub_815846C
sub_815846C: @ 815846C
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r3, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4399,7 +4399,7 @@ sub_815846C: @ 815846C
thumb_func_start sub_815849C
sub_815849C: @ 815849C
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4427,7 +4427,7 @@ sub_815849C: @ 815849C
thumb_func_start sub_81584D4
sub_81584D4: @ 81584D4
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4454,7 +4454,7 @@ sub_81584D4: @ 81584D4
thumb_func_start sub_8158508
sub_8158508: @ 8158508
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4481,7 +4481,7 @@ sub_8158508: @ 8158508
thumb_func_start sub_815853C
sub_815853C: @ 815853C
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4524,7 +4524,7 @@ _08158586:
thumb_func_start sub_815858C
sub_815858C: @ 815858C
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4567,7 +4567,7 @@ _081585D6:
thumb_func_start sub_81585DC
sub_81585DC: @ 81585DC
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4610,7 +4610,7 @@ _08158626:
thumb_func_start sub_815862C
sub_815862C: @ 815862C
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4653,7 +4653,7 @@ _08158676:
thumb_func_start sub_815867C
sub_815867C: @ 815867C
push {r4,r5,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4696,7 +4696,7 @@ _081586C8:
thumb_func_start sub_81586D0
sub_81586D0: @ 81586D0
push {r4,r5,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4739,7 +4739,7 @@ _0815871C:
thumb_func_start sub_8158724
sub_8158724: @ 8158724
push {r4,r5,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4782,7 +4782,7 @@ _08158770:
thumb_func_start sub_8158778
sub_8158778: @ 8158778
push {r4,r5,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4828,7 +4828,7 @@ sub_81587CC: @ 81587CC
bl Random
movs r2, 0xFF
ands r2, r0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4869,7 +4869,7 @@ sub_815881C: @ 815881C
bl Random
movs r2, 0xFF
ands r2, r0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0xC]
ldr r4, =gAIScriptPtr
@@ -4955,7 +4955,7 @@ sub_81588BC: @ 81588BC
lsls r0, 24
cmp r0, 0
bne _081588D6
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0xC]
ldrb r1, [r2, 0x9]
@@ -4971,7 +4971,7 @@ _081588D6:
thumb_func_start sub_81588E0
sub_81588E0: @ 81588E0
push {r4,lr}
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r1, [r1]
ldr r3, [r1, 0xC]
adds r4, r3, 0
@@ -4993,7 +4993,7 @@ sub_81588E0: @ 81588E0
thumb_func_start sub_8158908
sub_8158908: @ 8158908
push {lr}
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r0, [r3]
ldr r0, [r0, 0xC]
adds r1, r0, 0
@@ -5030,10 +5030,10 @@ sub_8158948: @ 8158948
push {r4-r6,lr}
movs r5, 0
movs r4, 0
- ldr r6, =gUnknown_02039E1E
+ ldr r6, =gUnknown_02039E00 + 30
_08158950:
lsls r1, r4, 1
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
adds r0, 0x41
@@ -5057,7 +5057,7 @@ _08158980:
cmp r4, 0x3
ble _08158950
_08158986:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
strh r5, [r0, 0x18]
@@ -5075,7 +5075,7 @@ _08158986:
sub_81589A4: @ 81589A4
push {lr}
bl sub_8158948
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -5112,7 +5112,7 @@ _081589E4:
sub_81589EC: @ 81589EC
push {lr}
bl sub_8158948
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -5158,7 +5158,7 @@ sub_8158A34: @ 8158A34
movs r4, 0
ldr r0, =gUnknown_02039E00
mov r12, r0
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r0, [r0, 0xC]
adds r0, 0x41
@@ -5205,7 +5205,7 @@ _08158A8E:
sub_8158AA0: @ 8158AA0
push {lr}
bl sub_8158A34
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
@@ -5242,7 +5242,7 @@ _08158AE0:
sub_8158AE8: @ 8158AE8
push {lr}
bl sub_8158A34
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0xC]
movs r1, 0x18
diff --git a/asm/contest_effect.s b/asm/contest_effect.s
index 09c06b079..f3c234503 100644
--- a/asm/contest_effect.s
+++ b/asm/contest_effect.s
@@ -68,7 +68,7 @@ ContestEffectFunc_080E547C: @ 80E547C
thumb_func_start ContestEffectFunc_080E5480
ContestEffectFunc_080E5480: @ 80E5480
push {lr}
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r1, [r3]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -94,7 +94,7 @@ ContestEffectFunc_080E5480: @ 80E5480
thumb_func_start ContestEffectFunc_080E54B0
ContestEffectFunc_080E54B0: @ 80E54B0
push {lr}
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r1, [r3]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -119,7 +119,7 @@ ContestEffectFunc_080E54B0: @ 80E54B0
thumb_func_start ContestEffectFunc_080E54E0
ContestEffectFunc_080E54E0: @ 80E54E0
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r1, [r3]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -165,7 +165,7 @@ ContestEffectFunc_080E54E0: @ 80E54E0
thumb_func_start ContestEffectFunc_080E5534
ContestEffectFunc_080E5534: @ 80E5534
push {lr}
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r1, [r3]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -189,7 +189,7 @@ ContestEffectFunc_080E5534: @ 80E5534
thumb_func_start ContestEffectFunc_080E5560
ContestEffectFunc_080E5560: @ 80E5560
push {lr}
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r1, [r3]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -215,7 +215,7 @@ ContestEffectFunc_080E5560: @ 80E5560
thumb_func_start ContestEffectFunc_080E5590
ContestEffectFunc_080E5590: @ 80E5590
push {lr}
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r1, [r3]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -239,7 +239,7 @@ ContestEffectFunc_080E5590: @ 80E5590
thumb_func_start ContestEffectFunc_080E55BC
ContestEffectFunc_080E55BC: @ 80E55BC
push {lr}
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r1, [r3]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -266,7 +266,7 @@ ContestEffectFunc_080E55BC: @ 80E55BC
ContestEffectFunc_080E55EC: @ 80E55EC
push {r4,r5,lr}
movs r2, 0
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
ldr r0, [r5]
ldr r1, [r0, 0x8]
ldrb r4, [r1, 0x11]
@@ -293,7 +293,7 @@ _080E560A:
cmp r0, r1
bne _080E560A
_080E5622:
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r0, [r1]
ldr r0, [r0, 0x8]
strb r2, [r0, 0x8]
@@ -307,14 +307,14 @@ _080E5622:
_080E563A:
cmp r2, 0
bne _080E564C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
movs r1, 0x36
bl sub_80DD3F0
_080E564C:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -330,7 +330,7 @@ _080E564C:
ContestEffectFunc_080E5664: @ 80E5664
push {r4-r6,lr}
movs r1, 0
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r0, [r0, 0x8]
ldrb r5, [r0, 0x11]
@@ -359,7 +359,7 @@ _080E5698:
adds r3, 0x1
cmp r3, 0x3
ble _080E567E
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
adds r0, 0x8
@@ -372,14 +372,14 @@ _080E5698:
_080E56B4:
cmp r1, 0
bne _080E56C6
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
movs r1, 0x36
bl sub_80DD3F0
_080E56C6:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -409,7 +409,7 @@ ContestEffectFunc_080E56E0: @ 80E56E0
bhi _080E5702
movs r1, 0x28
_080E5702:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
strh r1, [r0, 0x4]
@@ -425,7 +425,7 @@ ContestEffectFunc_080E5718: @ 80E5718
mov r7, r8
push {r7}
movs r7, 0
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r0, [r1]
ldr r0, [r0, 0x8]
ldrb r5, [r0, 0x11]
@@ -521,7 +521,7 @@ ContestEffectFunc_080E57CC: @ 80E57CC
push {r5-r7}
movs r0, 0
mov r9, r0
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r0, [r1]
ldr r0, [r0, 0x8]
ldrb r2, [r0, 0x11]
@@ -619,7 +619,7 @@ ContestEffectFunc_080E588C: @ 80E588C
push {r6,r7}
movs r0, 0
mov r9, r0
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r0, [r1]
ldr r0, [r0, 0x8]
ldrb r7, [r0, 0x11]
@@ -674,7 +674,7 @@ _080E58DA:
_080E5900:
adds r6, 0x1C
adds r5, 0x1
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
cmp r5, 0x3
ble _080E58B0
_080E590A:
@@ -704,7 +704,7 @@ _080E5928:
thumb_func_start ContestEffectFunc_080E5938
ContestEffectFunc_080E5938: @ 80E5938
push {r4,lr}
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r1, [r4]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -732,7 +732,7 @@ ContestEffectFunc_080E5938: @ 80E5938
thumb_func_start ContestEffectFunc_080E5970
ContestEffectFunc_080E5970: @ 80E5970
push {r4,lr}
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r1, [r4]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -765,7 +765,7 @@ ContestEffectFunc_080E59B0: @ 80E59B0
push {lr}
movs r0, 0
bl sub_80E6934
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -781,7 +781,7 @@ ContestEffectFunc_080E59D0: @ 80E59D0
push {lr}
movs r0, 0x1
bl sub_80E6934
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -797,7 +797,7 @@ ContestEffectFunc_080E59F0: @ 80E59F0
push {lr}
movs r0, 0x2
bl sub_80E6934
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -813,7 +813,7 @@ ContestEffectFunc_080E5A10: @ 80E5A10
push {lr}
movs r0, 0x3
bl sub_80E6934
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -829,7 +829,7 @@ ContestEffectFunc_080E5A30: @ 80E5A30
push {lr}
movs r0, 0x4
bl sub_80E6934
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -844,7 +844,7 @@ ContestEffectFunc_080E5A30: @ 80E5A30
ContestEffectFunc_080E5A50: @ 80E5A50
push {r4-r6,lr}
movs r4, 0
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x11]
@@ -855,7 +855,7 @@ ContestEffectFunc_080E5A50: @ 80E5A50
beq _080E5AB0
movs r5, 0
_080E5A68:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r1, [r0, 0x8]
ldrb r0, [r1, 0x11]
@@ -932,7 +932,7 @@ ContestEffectFunc_080E5AD4: @ 80E5AD4
mov r10, r3
movs r6, 0
_080E5B00:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r2, [r0]
ldr r1, [r2, 0x8]
ldrb r0, [r1, 0x11]
@@ -1000,7 +1000,7 @@ _080E5B76:
bge _080E5B76
_080E5B7E:
movs r5, 0
- ldr r7, =gUnknown_02039F34
+ ldr r7, =gContestResources
movs r6, 0
mov r4, r10
_080E5B86:
@@ -1125,7 +1125,7 @@ _080E5C70:
lsrs r0, 24
mov r9, r0
_080E5C86:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
adds r0, 0xD
@@ -1139,7 +1139,7 @@ _080E5C86:
cmp r0, 0xFF
bne _080E5C16
_080E5CA0:
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
ldr r0, [r6]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -1173,7 +1173,7 @@ ContestEffectFunc_080E5CD4: @ 80E5CD4
movs r0, 0
mov r8, r0
movs r6, 0
- ldr r7, =gUnknown_02039F34
+ ldr r7, =gContestResources
movs r5, 0
_080E5CE4:
ldr r2, [r7]
@@ -1228,7 +1228,7 @@ _080E5D46:
adds r6, 0x1
cmp r6, 0x3
ble _080E5CE4
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -1256,7 +1256,7 @@ ContestEffectFunc_080E5D7C: @ 80E5D7C
push {r4-r7,lr}
movs r7, 0
movs r4, 0
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
movs r6, 0
_080E5D86:
ldr r3, [r5]
@@ -1301,7 +1301,7 @@ _080E5DD2:
adds r4, 0x1
cmp r4, 0x3
ble _080E5D86
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -1325,7 +1325,7 @@ _080E5DF8:
ContestEffectFunc_080E5E04: @ 80E5E04
push {r4,lr}
ldr r1, =gUnknown_02039F26
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r4, [r0]
ldr r0, [r4, 0x8]
ldrb r2, [r0, 0x11]
@@ -1366,7 +1366,7 @@ _080E5E46:
ContestEffectFunc_080E5E5C: @ 80E5E5C
push {r4,lr}
ldr r1, =gUnknown_02039F26
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r4, [r0]
ldr r0, [r4, 0x8]
ldrb r2, [r0, 0x11]
@@ -1408,7 +1408,7 @@ ContestEffectFunc_080E5EB4: @ 80E5EB4
push {r4-r7,lr}
movs r1, 0
movs r5, 0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r4, [r0]
ldr r2, [r4, 0x8]
ldrb r0, [r2, 0x11]
@@ -1434,7 +1434,7 @@ _080E5EDA:
bge _080E5EE8
movs r5, 0
_080E5EE8:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r3, [r0]
ldr r0, [r3, 0x8]
ldrb r2, [r0, 0x11]
@@ -1467,7 +1467,7 @@ _080E5F0C:
movs r1, 0x11
bl sub_80DD3D4
_080E5F2C:
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r1, [r4]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -1498,7 +1498,7 @@ _080E5F2C:
ContestEffectFunc_080E5F64: @ 80E5F64
push {r4-r7,lr}
movs r6, 0
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r4, [r0]
ldr r2, [r4, 0x8]
ldrb r1, [r2, 0x11]
@@ -1567,7 +1567,7 @@ _080E5FDE:
thumb_func_start ContestEffectFunc_080E5FE4
ContestEffectFunc_080E5FE4: @ 80E5FE4
push {r4,r5,lr}
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
ldr r3, [r1]
ldr r0, [r3, 0x8]
ldrb r2, [r0, 0x11]
@@ -1647,7 +1647,7 @@ ContestEffectFunc_080E6068: @ 80E6068
cmp r0, 0x2
bhi _080E6098
movs r4, 0xA
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -1659,7 +1659,7 @@ _080E6098:
cmp r0, 0x5
bhi _080E60B4
movs r4, 0x14
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -1671,7 +1671,7 @@ _080E60B4:
cmp r0, 0x7
bhi _080E60D0
movs r4, 0x28
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -1683,7 +1683,7 @@ _080E60D0:
cmp r1, 0x8
bhi _080E60EC
movs r4, 0x3C
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -1693,14 +1693,14 @@ _080E60D0:
.pool
_080E60EC:
movs r4, 0x50
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
movs r1, 0x1E
bl sub_80DD3D4
_080E60FC:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r1, [r0]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -1721,7 +1721,7 @@ ContestEffectFunc_080E611C: @ 80E611C
push {r4-r7,lr}
mov r7, r8
push {r7}
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r3, [r0, 0x8]
ldrb r0, [r3, 0x11]
@@ -1743,7 +1743,7 @@ _080E6140:
adds r5, r0, 0
cmp r6, r1
beq _080E616A
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
_080E614E:
lsls r0, r2, 24
movs r2, 0x80
@@ -1845,7 +1845,7 @@ ContestEffectFunc_080E620C: @ 80E620C
mov r7, r9
mov r6, r8
push {r6,r7}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r3, [r0]
ldr r1, [r3, 0x8]
ldrb r2, [r1, 0x11]
@@ -1928,7 +1928,7 @@ _080E62AC:
thumb_func_start ContestEffectFunc_080E62B8
ContestEffectFunc_080E62B8: @ 80E62B8
push {r4-r7,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x11]
@@ -1939,7 +1939,7 @@ ContestEffectFunc_080E62B8: @ 80E62B8
movs r5, 0
movs r6, 0
_080E62CE:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r4, [r0]
ldr r1, [r4, 0x8]
ldrb r2, [r1, 0x11]
@@ -1994,7 +1994,7 @@ _080E632E:
thumb_func_start ContestEffectFunc_080E6334
ContestEffectFunc_080E6334: @ 80E6334
push {r4,lr}
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r1, [r4]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -2046,7 +2046,7 @@ _080E6390:
thumb_func_start ContestEffectFunc_080E6398
ContestEffectFunc_080E6398: @ 80E6398
push {lr}
- ldr r3, =gUnknown_02039F34
+ ldr r3, =gContestResources
ldr r1, [r3]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -2090,7 +2090,7 @@ _080E63E4:
ContestEffectFunc_080E63E8: @ 80E63E8
push {r4-r7,lr}
sub sp, 0x4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r2, [r0]
ldr r1, [r2]
ldrb r1, [r1, 0x1]
@@ -2258,7 +2258,7 @@ ContestEffectFunc_080E6520: @ 80E6520
mov r7, r8
push {r7}
sub sp, 0x4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r2, [r0]
ldr r1, [r2]
ldrb r1, [r1, 0x1]
@@ -2434,7 +2434,7 @@ ContestEffectFunc_080E6664: @ 80E6664
ContestEffectFunc_080E6668: @ 80E6668
push {r4-r7,lr}
sub sp, 0x8
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r1, [r0]
ldr r0, [r1]
ldrb r0, [r0, 0x1]
@@ -2517,7 +2517,7 @@ _080E66FC:
cmp r0, 0x3
ble _080E66AA
movs r6, 0
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
adds r4, r5, 0
_080E6712:
ldr r0, [r4]
@@ -2576,7 +2576,7 @@ _080E676C:
ContestEffectFunc_080E6778: @ 80E6778
push {lr}
ldr r3, =gContestMoves
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r1, [r0]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -2590,7 +2590,7 @@ ContestEffectFunc_080E6778: @ 80E6778
adds r0, r3
ldrb r0, [r0, 0x1]
lsls r0, 29
- ldr r1, =gUnknown_02039F2C
+ ldr r1, =gScriptContestCategory
lsrs r0, 29
ldrh r1, [r1]
cmp r0, r1
@@ -2613,7 +2613,7 @@ ContestEffectFunc_080E67BC: @ 80E67BC
movs r0, 0
mov r8, r0
movs r4, 0
- ldr r5, =gUnknown_02039F34
+ ldr r5, =gContestResources
movs r6, 0
_080E67CC:
ldr r3, [r5]
@@ -2672,14 +2672,14 @@ _080E682E:
mov r7, r8
cmp r7, 0
bne _080E684A
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
movs r1, 0x36
bl sub_80DD3F0
_080E684A:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -2696,7 +2696,7 @@ _080E684A:
thumb_func_start ContestEffectFunc_080E6868
ContestEffectFunc_080E6868: @ 80E6868
push {r4,lr}
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r1, [r0]
ldr r0, [r1]
ldrb r0, [r0, 0x13]
@@ -2745,7 +2745,7 @@ _080E68C2:
movs r1, 0x1E
bl sub_80DD3D4
_080E68CE:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r1, [r0]
ldr r0, [r1, 0x8]
ldrb r2, [r0, 0x11]
@@ -2764,7 +2764,7 @@ _080E68CE:
thumb_func_start ContestEffectFunc_080E68EC
ContestEffectFunc_080E68EC: @ 80E68EC
push {r4,lr}
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r2, [r0, 0x10]
ldrb r1, [r2, 0x1]
@@ -2811,7 +2811,7 @@ sub_80E6934: @ 80E6934
mov r8, r0
movs r7, 0
movs r4, 0
- ldr r6, =gUnknown_02039F34
+ ldr r6, =gContestResources
ldr r0, =gContestMoves
mov r9, r0
movs r5, 0
@@ -2861,7 +2861,7 @@ _080E699E:
ble _080E694E
cmp r7, 0
bne _080E69B8
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x11]
@@ -2882,7 +2882,7 @@ sub_80E69C8: @ 80E69C8
push {lr}
lsls r0, 24
lsrs r3, r0, 24
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r0, [r2]
ldr r0, [r0, 0x8]
adds r0, 0xD
@@ -2945,7 +2945,7 @@ sub_80E6A2C: @ 80E6A2C
movs r2, 0x8
bl memset
movs r7, 0
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0x8]
ldrb r0, [r0, 0x8]
@@ -3040,7 +3040,7 @@ _080E6AD6:
strh r0, [r1]
_080E6AFE:
adds r7, 0x1
- ldr r4, =gUnknown_02039F34
+ ldr r4, =gContestResources
ldr r0, [r4]
ldr r0, [r0, 0x8]
adds r0, 0x8
@@ -3081,7 +3081,7 @@ sub_80E6B3C: @ 80E6B3C
lsrs r0, 24
lsls r1, 24
lsrs r1, 24
- ldr r2, =gUnknown_02039F34
+ ldr r2, =gContestResources
ldr r4, [r2]
ldr r3, [r4, 0x4]
lsls r2, r0, 3
diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s
index 864f16c5e..f20070978 100644
--- a/asm/contest_link_80F57C4.s
+++ b/asm/contest_link_80F57C4.s
@@ -92,30 +92,30 @@ _080F57E0:
lsls r1, 8
movs r0, 0
bl SetGpuRegBits
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
strh r1, [r0]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
strh r1, [r0]
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
strh r1, [r0]
- ldr r0, =gUnknown_02022E28
+ ldr r0, =gBattle_WIN1H
strh r1, [r0]
- ldr r0, =gUnknown_02022E2A
+ ldr r0, =gBattle_WIN1V
strh r1, [r0]
pop {r4}
pop {r0}
@@ -387,10 +387,10 @@ sub_80F5B00: @ 80F5B00
strb r0, [r1, 0x2]
ldr r0, =sub_80F5C00
bl SetMainCallback2
- ldr r1, =gUnknown_02022E28
+ ldr r1, =gBattle_WIN1H
movs r0, 0xF0
strh r0, [r1]
- ldr r1, =gUnknown_02022E2A
+ ldr r1, =gBattle_WIN1V
ldr r2, =0x000080a0
adds r0, r2, 0
strh r0, [r1]
@@ -441,51 +441,51 @@ sub_80F5C00: @ 80F5C00
thumb_func_start sub_80F5C24
sub_80F5C24: @ 80F5C24
push {lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r1, [r0]
movs r0, 0x18
bl SetGpuReg
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
ldrh r1, [r0]
movs r0, 0x1A
bl SetGpuReg
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
ldrh r1, [r0]
movs r0, 0x1C
bl SetGpuReg
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
ldrh r1, [r0]
movs r0, 0x1E
bl SetGpuReg
- ldr r0, =gUnknown_02022E24
+ ldr r0, =gBattle_WIN0H
ldrh r1, [r0]
movs r0, 0x40
bl SetGpuReg
- ldr r0, =gUnknown_02022E26
+ ldr r0, =gBattle_WIN0V
ldrh r1, [r0]
movs r0, 0x44
bl SetGpuReg
- ldr r0, =gUnknown_02022E28
+ ldr r0, =gBattle_WIN1H
ldrh r1, [r0]
movs r0, 0x42
bl SetGpuReg
- ldr r0, =gUnknown_02022E2A
+ ldr r0, =gBattle_WIN1V
ldrh r1, [r0]
movs r0, 0x46
bl SetGpuReg
@@ -702,7 +702,7 @@ sub_80F5ED8: @ 80F5ED8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080F5EFC
@@ -1239,7 +1239,7 @@ _080F6334:
ldr r1, =gUnknown_02039F20
ldrb r0, [r1]
ldr r7, =gStringVar1
- ldr r2, =gUnknown_02039E0D
+ ldr r2, =gUnknown_02039E00 + 13
mov r8, r2
cmp r0, 0
beq _080F636E
@@ -1347,10 +1347,10 @@ _080F643C:
.4byte _080F6638
.4byte _080F667C
_080F6454:
- ldr r1, =gUnknown_02022E24
+ ldr r1, =gBattle_WIN0H
movs r0, 0xF0
strh r0, [r1]
- ldr r1, =gUnknown_02022E26
+ ldr r1, =gBattle_WIN0V
ldr r3, =0x00005050
adds r0, r3, 0
strh r0, [r1]
@@ -1364,7 +1364,7 @@ _080F6454:
mov r9, r4
ldr r4, =gMonFrontPicTable
mov r12, r4
- ldr r4, =gBattleSpritesGfx
+ ldr r4, =gMonSpritesGfxPtr
mov r8, r4
cmp r0, 0
beq _080F648C
@@ -1494,7 +1494,7 @@ _080F65A4:
strh r0, [r4, 0xC]
_080F65BA:
ldrb r2, [r4, 0xC]
- ldr r3, =gUnknown_02022E26
+ ldr r3, =gBattle_WIN0V
movs r0, 0x50
subs r0, r2
lsls r0, 8
@@ -1556,7 +1556,7 @@ _080F6638:
ldrb r0, [r0, 0x6]
cmp r0, 0x2
bne _080F669C
- ldr r3, =gUnknown_02022E26
+ ldr r3, =gBattle_WIN0V
ldrh r0, [r3]
lsrs r2, r0, 8
adds r0, r2, 0x2
@@ -1706,7 +1706,7 @@ sub_80F677C: @ 80F677C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080F67AC
@@ -1750,7 +1750,7 @@ task_repel: @ 80F67C4
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
- bl sub_80ED090
+ bl BravoTrainerPokemonProfile_BeforeInterview2
_080F67E6:
movs r0, 0
str r0, [sp]
@@ -1838,11 +1838,11 @@ _080F68A8:
thumb_func_start sub_80F68B4
sub_80F68B4: @ 80F68B4
push {r4,r5,lr}
- ldr r2, =gUnknown_02022E20
+ ldr r2, =gBattle_BG3_X
ldrh r3, [r2]
adds r0, r3, 0x2
strh r0, [r2]
- ldr r4, =gUnknown_02022E22
+ ldr r4, =gBattle_BG3_Y
ldrh r5, [r4]
adds r1, r5, 0x1
strh r1, [r4]
@@ -1989,7 +1989,7 @@ sub_80F69B8: @ 80F69B8
_080F69DE:
adds r0, r7, 0
ldr r1, [sp, 0x28]
- bl sub_80D2EDC
+ bl GetMonIconPtr
adds r3, r0, 0
lsls r0, r5, 9
adds r0, 0x80
@@ -2870,10 +2870,10 @@ _080F70BE:
adds r5, 0x1
cmp r5, 0x2
ble _080F70BE
- ldr r1, =gUnknown_02022E24
+ ldr r1, =gBattle_WIN0H
movs r0, 0xF0
strh r0, [r1]
- ldr r2, =gUnknown_02022E26
+ ldr r2, =gBattle_WIN0V
ldrh r1, [r4, 0x22]
adds r0, r1, 0
subs r0, 0x10
@@ -2910,8 +2910,8 @@ sub_80F7144: @ 80F7144
orrs r0, r1
mov r1, r12
strb r0, [r1]
- ldr r7, =gUnknown_02022E24
- ldr r6, =gUnknown_02022E26
+ ldr r7, =gBattle_WIN0H
+ ldr r6, =gBattle_WIN0V
adds r5, r3, 0
movs r4, 0x4
adds r2, 0x2E
@@ -3008,7 +3008,7 @@ _080F7236:
bl CopyToBgTilemapBufferRect
movs r5, 0xF
_080F7240:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0
bne _080F725C
@@ -4522,7 +4522,7 @@ sub_80F7DF4: @ 80F7DF4
bl AllocZeroed
ldr r1, [r4]
str r0, [r1, 0x1C]
- bl init_uns_table_pokemon_copy
+ bl AllocateMonSpritesGfx
pop {r4,r5}
pop {r0}
bx r0
@@ -4569,7 +4569,7 @@ sub_80F7E64: @ 80F7E64
str r4, [r0, 0x1C]
bl Free
str r4, [r5]
- bl sub_805F094
+ bl FreeMonSpritesGfx
pop {r4,r5}
pop {r0}
bx r0
@@ -4640,7 +4640,7 @@ sub_80F7F30: @ 80F7F30
adds r5, r0, 0
cmp r5, 0
beq _080F7F5E
- ldr r4, =gUnknown_02039F2C
+ ldr r4, =gScriptContestCategory
ldrb r0, [r4]
ldr r1, =gUnknown_02039F2E
ldrb r1, [r1]
@@ -4666,7 +4666,7 @@ sub_80F7F7C: @ 80F7F7C
muls r1, r0
ldr r0, =gPlayerParty
adds r2, r1, r0
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080F7FEE
@@ -4730,7 +4730,7 @@ sub_80F7FFC: @ 80F7FFC
beq _080F8010
b _080F8250
_080F8010:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bls _080F801A
@@ -4785,7 +4785,7 @@ _080F8074:
ldrb r0, [r6]
muls r0, r5
adds r0, r4
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4834,7 +4834,7 @@ _080F80E2:
ldrb r0, [r7]
muls r0, r6
adds r0, r5
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4883,7 +4883,7 @@ _080F814E:
ldrb r0, [r7]
muls r0, r6
adds r0, r5
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4926,7 +4926,7 @@ _080F8190:
ldrb r0, [r7]
muls r0, r6
adds r0, r5
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4969,7 +4969,7 @@ _080F81F8:
ldrb r0, [r7]
muls r0, r6
adds r0, r5
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4994,7 +4994,7 @@ sub_80F8264: @ 80F8264
ldr r0, =gSpecialVar_0x8006
ldrh r1, [r0]
lsls r1, 6
- ldr r0, =gUnknown_02039E0D
+ ldr r0, =gUnknown_02039E00 + 13
adds r1, r0
adds r0, r4, 0
bl StringCopy
@@ -5013,7 +5013,7 @@ sub_80F8290: @ 80F8290
ldr r1, =gSpecialVar_0x8006
ldrh r1, [r1]
lsls r1, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
pop {r0}
@@ -5104,7 +5104,7 @@ sub_80F834C: @ 80F834C
ldr r2, =gUnknown_02039F20
ldrb r0, [r2]
ldr r4, =gStringVar3
- ldr r3, =gUnknown_02039E0D
+ ldr r3, =gUnknown_02039E00 + 13
cmp r0, 0
beq _080F836E
_080F835C:
@@ -5137,7 +5137,7 @@ sub_80F8390: @ 80F8390
ldr r2, =gUnknown_02039F20
ldrb r0, [r2]
ldr r4, =gStringVar1
- ldr r3, =gUnknown_02039E02
+ ldr r3, =gUnknown_02039E00 + 2
cmp r0, 0
beq _080F83B2
_080F83A0:
@@ -5488,7 +5488,7 @@ _080F8678:
bl sub_80F86E0
ldr r1, =gUnknown_02039F2B
strb r0, [r1]
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrb r0, [r0]
bl sub_80DB09C
ldr r1, =sub_80FCF40
@@ -5578,7 +5578,7 @@ sub_80F8714: @ 80F8714
b _080F877E
.pool
_080F8748:
- ldr r5, =gUnknown_02039E02
+ ldr r5, =gUnknown_02039E00 + 2
movs r4, 0x3
_080F874C:
adds r0, r5, 0
@@ -5633,7 +5633,7 @@ sub_80F87B4: @ 80F87B4
push {lr}
lsls r0, 24
lsrs r1, r0, 24
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080F87D0
diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s
index 0d6116766..f1e2019da 100644
--- a/asm/contest_link_80FC4F4.s
+++ b/asm/contest_link_80FC4F4.s
@@ -21,7 +21,7 @@ sub_80FC4F4: @ 80FC4F4
lsrs r0, 24
adds r1, r5, 0
adds r2, r4, 0
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
bne _080FC528
@@ -45,12 +45,12 @@ sub_80FC530: @ 80FC530
lsls r4, 17
lsls r4, r5
lsrs r4, 24
- bl sub_800A550
+ bl GetBlockReceivedStatus
ands r4, r0
cmp r4, 0
beq _080FC552
adds r0, r5, 0
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
movs r0, 0x1
b _080FC554
_080FC552:
@@ -64,7 +64,7 @@ _080FC554:
thumb_func_start sub_80FC55C
sub_80FC55C: @ 80FC55C
push {r4,lr}
- bl sub_800A550
+ bl GetBlockReceivedStatus
adds r4, r0, 0
bl sub_800A9D8
lsls r4, 24
@@ -74,7 +74,7 @@ sub_80FC55C: @ 80FC55C
movs r0, 0
b _080FC57A
_080FC574:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
movs r0, 0x1
_080FC57A:
pop {r4}
@@ -90,7 +90,7 @@ sub_80FC580: @ 80FC580
movs r1, 0
ldr r5, =gTasks
ldr r6, =sub_80FC5C0
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
movs r3, 0xFF
_080FC590:
lsls r0, r1, 8
@@ -134,14 +134,14 @@ sub_80FC5DC: @ 80FC5DC
push {r4-r7,lr}
lsls r0, 24
lsrs r7, r0, 24
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080FC650
bl GetMultiplayerId
ldr r1, =gUnknown_02039F25
strb r0, [r1]
- bl sub_8009FCC
+ bl GetLinkPlayerCount
ldr r4, =gUnknown_02039F30
strb r0, [r4]
ldr r1, =gUnknown_02039F2A
@@ -324,7 +324,7 @@ _080FC770:
ldr r0, =gUnknown_02039E00
adds r4, r0
lsls r1, r5, 8
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
adds r1, r0
adds r0, r4, 0
movs r2, 0x40
@@ -430,7 +430,7 @@ _080FC858:
cmp r0, 0
beq _080FC880
ldr r0, =gRngValue
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
adds r1, r4, 0
movs r2, 0x4
bl memcpy
@@ -517,7 +517,7 @@ _080FC90C:
ldrb r0, [r1]
cmp r3, r0
bge _080FC93A
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
adds r0, r7, 0x2
adds r2, r5, r0
movs r5, 0x80
@@ -657,7 +657,7 @@ _080FCA30:
lsls r0, 24
cmp r0, 0
beq _080FCAB2
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r2, [r0]
ldr r0, =gUnknown_02039F25
ldrb r0, [r0]
@@ -688,9 +688,9 @@ _080FCA68:
ldrb r0, [r6]
cmp r2, r0
bge _080FCAA4
- ldr r1, =gUnknown_02039F34
+ ldr r1, =gContestResources
mov r8, r1
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
movs r3, 0
movs r7, 0x80
lsls r7, 1
@@ -784,7 +784,7 @@ _080FCB50:
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x8
b _080FCC50
@@ -827,7 +827,7 @@ _080FCBA4:
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x8
b _080FCC50
@@ -850,7 +850,7 @@ _080FCBE0:
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x8
b _080FCC50
@@ -885,7 +885,7 @@ _080FCC38:
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x4
_080FCC50:
@@ -955,7 +955,7 @@ _080FCCE8:
bne _080FCCF4
b _080FCE42
_080FCCF4:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x4]
movs r1, 0x70
@@ -968,13 +968,13 @@ _080FCD04:
bne _080FCD10
b _080FCE42
_080FCD10:
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x4]
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x70
b _080FCE10
@@ -1004,7 +1004,7 @@ _080FCD54:
lsls r0, 24
cmp r0, 0
beq _080FCE42
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
movs r1, 0x14
@@ -1015,13 +1015,13 @@ _080FCD6C:
lsls r0, 24
cmp r0, 0
beq _080FCE42
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x14
b _080FCE10
@@ -1031,7 +1031,7 @@ _080FCD98:
lsls r0, 24
cmp r0, 0
beq _080FCE42
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x10]
b _080FCDD4
@@ -1041,7 +1041,7 @@ _080FCDB0:
lsls r0, 24
cmp r0, 0
beq _080FCE42
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x10]
b _080FCE04
@@ -1078,7 +1078,7 @@ _080FCE04:
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x4
_080FCE10:
@@ -1169,7 +1169,7 @@ _080FCEC0:
beq _080FCF2E
mov r1, r8
mov r8, r9
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
adds r0, r7, 0
adds r0, 0xA
adds r2, r5, r0
@@ -1278,7 +1278,7 @@ _080FCF9C:
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x8
bl memcpy
@@ -1344,7 +1344,7 @@ _080FD02C:
ldr r1, =gUnknown_02039F2B
ldrb r1, [r1]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x4
bl memcpy
diff --git a/asm/contest_link_81D9DE4.s b/asm/contest_link_81D9DE4.s
index cec1c6e5d..5f9c25d7c 100755
--- a/asm/contest_link_81D9DE4.s
+++ b/asm/contest_link_81D9DE4.s
@@ -370,7 +370,7 @@ sub_81DA10C: @ 81DA10C
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrb r0, [r0]
bl sub_80DB09C
ldr r1, =sub_80FCF40
@@ -469,7 +469,7 @@ _081DA1EC:
ldr r0, =gUnknown_02039E00
adds r4, r0
lsls r1, r5, 8
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
adds r1, r0
adds r0, r4, 0
movs r2, 0x40
@@ -554,7 +554,7 @@ _081DA2AC:
cmp r0, 0
beq _081DA2D4
ldr r0, =gRngValue
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
adds r1, r4, 0
movs r2, 0x4
bl memcpy
@@ -641,7 +641,7 @@ _081DA35A:
mov r0, r8
adds r0, 0xA
adds r3, r5, r0
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
mov r2, sp
movs r5, 0x80
lsls r5, 1
@@ -744,7 +744,7 @@ _081DA42A:
mov r0, r8
adds r0, 0x2
adds r3, r5, r0
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
mov r2, sp
movs r5, 0x80
lsls r5, 1
@@ -849,7 +849,7 @@ _081DA50C:
lsls r0, r3, 6
ldr r5, =gUnknown_02039E00
adds r0, r5
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
movs r2, 0x4
subs r2, r3
lsls r2, 6
diff --git a/asm/contest_painting.s b/asm/contest_painting.s
index 62359497c..2caf15194 100644
--- a/asm/contest_painting.s
+++ b/asm/contest_painting.s
@@ -72,7 +72,7 @@ sub_812FE0C: @ 812FE0C
movs r0, 0x1
bl GetBgTilemapBuffer
bl Free
- bl sub_805F094
+ bl FreeMonSpritesGfx
pop {r4,r5}
pop {r0}
bx r0
@@ -110,7 +110,7 @@ _0812FE94:
bl remove_some_task
movs r0, 0
bl SetVBlankCallback
- bl init_uns_table_pokemon_copy
+ bl AllocateMonSpritesGfx
ldr r1, =gUnknown_030061C0
ldr r0, =gUnknown_02039F3C
str r0, [r1]
@@ -581,7 +581,7 @@ sub_81302E8: @ 81302E8
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r4, =gBattleSpritesGfx
+ ldr r4, =gMonSpritesGfxPtr
ldr r1, [r4]
ldr r1, [r1, 0x8]
ldr r2, [r6]
@@ -600,7 +600,7 @@ _08130348:
lsls r0, r5, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r4, =gBattleSpritesGfx
+ ldr r4, =gMonSpritesGfxPtr
ldr r1, [r4]
ldr r1, [r1, 0x4]
ldr r2, [r6]
diff --git a/asm/credits.s b/asm/credits.s
index 0a568a3ae..0b2da16b8 100644
--- a/asm/credits.s
+++ b/asm/credits.s
@@ -491,14 +491,14 @@ _08175906:
ldr r1, =gReservedSpritePaletteCount
movs r0, 0x8
strb r0, [r1]
- ldr r0, =gUnknown_085B0E04
+ ldr r0, =gBirchHelpGfx
movs r1, 0xC0
lsls r1, 19
bl LZ77UnCompVram
- ldr r0, =gUnknown_085B0C0C
+ ldr r0, =gBirchGrassTilemap
ldr r1, =0x06003800
bl LZ77UnCompVram
- ldr r0, =gUnknown_085B0A02
+ ldr r0, =gBirchBagGrassPal + 0x2
movs r1, 0x1
movs r2, 0x3E
bl LoadPalette
diff --git a/asm/crt0.s b/asm/crt0.s
index 3ece5c7d0..0b14a1469 100644
--- a/asm/crt0.s
+++ b/asm/crt0.s
@@ -163,7 +163,7 @@ IntrMain: @ 8000248
IntrMain_FoundIntr:
strh r0, [r3, OFFSET_REG_IF - 0x200]
bic r2, r2, r0
- ldr r0, =gUnknown_03007868
+ ldr r0, =gRfuState
ldr r0, [r0]
ldrb r0, [r0, 0xA]
mov r1, 0x8
diff --git a/asm/decoration.s b/asm/decoration.s
deleted file mode 100644
index 9b65c7c79..000000000
--- a/asm/decoration.s
+++ /dev/null
@@ -1,7167 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8126968
-sub_8126968: @ 8126968
- push {lr}
- ldr r3, =gUnknown_0203A173
- ldrb r0, [r3]
- cmp r0, 0x7
- bhi _0812697E
- ldr r2, =gUnknown_0203A14C
- ldr r1, =gDecorationInventories
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
-_0812697E:
- ldr r2, =gUnknown_0203A17C
- ldrb r0, [r2, 0x9]
- cmp r0, 0
- bne _08126996
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x00001aae
- adds r1, r0, r3
- str r1, [r2]
- ldr r1, =0x00001abe
- adds r0, r1
- str r0, [r2, 0x4]
-_08126996:
- ldrb r0, [r2, 0x9]
- cmp r0, 0x1
- bne _081269AC
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x0000271c
- adds r1, r0, r3
- str r1, [r2]
- ldr r1, =0x00002728
- adds r0, r1
- str r0, [r2, 0x4]
-_081269AC:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126968
-
- thumb_func_start sub_81269D4
-sub_81269D4: @ 81269D4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, =gUnknown_0203A188
- adds r4, r1, r0
- cmp r1, 0
- bne _08126A28
- ldr r0, =gUnknown_085A6B90
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- ldr r0, =gUnknown_085A6B48
- movs r1, 0x4
- bl GetMaxWidthInMenuTable
- lsls r0, 24
- ldr r2, =0x00ffffff
- ldr r1, [sp]
- ands r1, r2
- orrs r1, r0
- str r1, [sp]
- lsrs r0, r1, 24
- cmp r0, 0x12
- bls _08126A14
- adds r0, r2, 0
- ands r0, r1
- movs r1, 0x90
- lsls r1, 21
- orrs r0, r1
- str r0, [sp]
-_08126A14:
- mov r0, sp
- b _08126A2E
- .pool
-_08126A28:
- lsls r0, r1, 3
- ldr r1, =gUnknown_085A6B90
- adds r0, r1
-_08126A2E:
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- movs r2, 0x85
- lsls r2, 2
- movs r1, 0
- movs r3, 0xE
- bl SetWindowBorderStyle
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldrb r0, [r4]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81269D4
-
- thumb_func_start sub_8126A58
-sub_8126A58: @ 8126A58
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0203A188
- adds r4, r0
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8198070
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126A58
-
- thumb_func_start sub_8126A88
-sub_8126A88: @ 8126A88
- push {r4,lr}
- movs r0, 0
- bl sub_81269D4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r2, =gUnknown_085A6B48
- adds r0, r4, 0
- movs r1, 0x4
- bl PrintMenuTable
- ldr r0, =gUnknown_0203A150
- ldrb r2, [r0]
- adds r0, r4, 0
- movs r1, 0x4
- bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126A88
-
- thumb_func_start sub_8126ABC
-sub_8126ABC: @ 8126ABC
- push {lr}
- ldr r1, =gUnknown_0203A150
- movs r0, 0
- strb r0, [r1]
- bl ScriptContext2_Enable
- bl sub_8126A88
- bl sub_8126C08
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126ABC
-
- thumb_func_start sub_8126AD8
-sub_8126AD8: @ 8126AD8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8126ABC
- ldr r2, =gUnknown_0203A17C
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x00001aae
- adds r1, r0, r3
- str r1, [r2]
- ldr r1, =0x00001abe
- adds r0, r1
- str r0, [r2, 0x4]
- movs r1, 0
- movs r0, 0x10
- strb r0, [r2, 0x8]
- strb r1, [r2, 0x9]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8126B80
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126AD8
-
- thumb_func_start sub_8126B2C
-sub_8126B2C: @ 8126B2C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8126ABC
- ldr r2, =gUnknown_0203A17C
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x0000271c
- adds r1, r0, r3
- str r1, [r2]
- ldr r1, =0x00002728
- adds r0, r1
- str r0, [r2, 0x4]
- movs r0, 0xC
- strb r0, [r2, 0x8]
- movs r0, 0x1
- strb r0, [r2, 0x9]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8126B80
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126B2C
-
- thumb_func_start sub_8126B80
-sub_8126B80: @ 8126B80
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08126C00
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r4, r0, 24
- bl ProcessMenuInput
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _08126BD8
- adds r0, 0x1
- cmp r1, r0
- beq _08126BF4
- movs r0, 0x5
- bl PlaySE
- ldr r1, =gUnknown_085A6B48
- ldr r0, =gUnknown_0203A150
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- adds r0, r5, 0
- bl _call_via_r1
- b _08126C00
- .pool
-_08126BD8:
- bl GetMenuCursorPos
- ldr r1, =gUnknown_0203A150
- strb r0, [r1]
- lsls r0, r4, 24
- asrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- beq _08126C00
- bl sub_8126C08
- b _08126C00
- .pool
-_08126BF4:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_8126D6C
-_08126C00:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8126B80
-
- thumb_func_start sub_8126C08
-sub_8126C08: @ 8126C08
- push {lr}
- sub sp, 0x10
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r1, =gUnknown_085A6B68
- ldr r0, =gUnknown_0203A150
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl AddTextPrinterParametrized
- add sp, 0x10
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126C08
-
- thumb_func_start sub_8126C48
-sub_8126C48: @ 8126C48
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8161B10
- lsls r0, 24
- cmp r0, 0
- bne _08126C7C
- ldr r4, =gStringVar4
- ldr r1, =gText_NoDecorations
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8126DA4
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _08126C96
- .pool
-_08126C7C:
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0
- strh r1, [r0, 0x1E]
- ldr r0, =gUnknown_0203A173
- strb r2, [r0]
- adds r0, r5, 0
- bl sub_8126DCC
-_08126C96:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126C48
-
- thumb_func_start sub_8126CA4
-sub_8126CA4: @ 8126CA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl sub_81299AC
- lsls r0, 24
- cmp r0, 0
- bne _08126CD8
- ldr r4, =gStringVar4
- ldr r1, =gText_NoDecorationsInUse
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8126DA4
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _08126D00
- .pool
-_08126CD8:
- movs r0, 0
- bl sub_8126A58
- movs r0, 0
- movs r1, 0
- bl sub_8197434
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- ldr r1, =sub_8129ABC
- str r1, [r0]
-_08126D00:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126CA4
-
- thumb_func_start sub_8126D10
-sub_8126D10: @ 8126D10
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_8161B10
- lsls r0, 24
- cmp r0, 0
- bne _08126D44
- ldr r4, =gStringVar4
- ldr r1, =gText_NoDecorations
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8126DA4
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _08126D5E
- .pool
-_08126D44:
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0x1
- strh r1, [r0, 0x1E]
- ldr r0, =gUnknown_0203A173
- strb r2, [r0]
- adds r0, r5, 0
- bl sub_8126DCC
-_08126D5E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126D10
-
- thumb_func_start sub_8126D6C
-sub_8126D6C: @ 8126D6C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- bl sub_8126A58
- ldr r0, =gUnknown_0203A17C
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _08126D98
- ldr r0, =gUnknown_0823B4E8
- bl ScriptContext1_SetupScript
- adds r0, r4, 0
- bl DestroyTask
- b _08126D9E
- .pool
-_08126D98:
- adds r0, r4, 0
- bl sub_816B060
-_08126D9E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8126D6C
-
- thumb_func_start sub_8126DA4
-sub_8126DA4: @ 8126DA4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8126C08
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8126B80
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126DA4
-
- thumb_func_start sub_8126DCC
-sub_8126DCC: @ 8126DCC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_085A6BB0
- movs r1, 0xD0
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0
- movs r1, 0
- bl sub_8197434
- movs r0, 0
- bl sub_8126A58
- adds r0, r4, 0
- bl sub_8126DFC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126DCC
-
- thumb_func_start sub_8126DFC
-sub_8126DFC: @ 8126DFC
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0x1
- bl sub_81269D4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_8126E8C
- ldr r0, =gUnknown_0203A173
- ldrb r2, [r0]
- adds r0, r4, 0
- movs r1, 0x9
- bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8127088
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126DFC
-
- thumb_func_start sub_8126E44
-sub_8126E44: @ 8126E44
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, =gUnknown_0203A188
- ldrb r0, [r5, 0x1]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r4, 0
- bl sub_8126E8C
- ldrb r0, [r5, 0x1]
- ldr r1, =gUnknown_0203A173
- ldrb r2, [r1]
- movs r1, 0x9
- bl InitMenuInUpperLeftCornerPlaySoundWhenAPressed
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8127088
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126E44
-
- thumb_func_start sub_8126E8C
-sub_8126E8C: @ 8126E8C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r1, r0, r1
- ldr r0, =gUnknown_0203A188
- ldrb r5, [r0, 0x1]
- ldr r0, =gUnknown_0203A17C
- ldrb r0, [r0, 0x9]
- movs r2, 0
- mov r8, r2
- cmp r0, 0x1
- bne _08126EC0
- movs r2, 0x16
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08126EC0
- movs r0, 0x1
- mov r8, r0
-_08126EC0:
- movs r4, 0
- lsls r2, r6, 2
- mov r9, r2
- movs r7, 0xFF
-_08126EC8:
- mov r0, r8
- cmp r0, 0x1
- bne _08126EF8
- cmp r4, 0x6
- beq _08126EF8
- cmp r4, 0x7
- beq _08126EF8
- lsls r3, r4, 28
- lsrs r3, 24
- str r0, [sp]
- str r7, [sp, 0x4]
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x8
- bl sub_8126F68
- b _08126F0C
- .pool
-_08126EF8:
- lsls r3, r4, 28
- lsrs r3, 24
- movs r0, 0
- str r0, [sp]
- str r7, [sp, 0x4]
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x8
- bl sub_8126F68
-_08126F0C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08126EC8
- ldr r0, =gTasks
- mov r2, r9
- adds r1, r2, r6
- lsls r1, 3
- adds r1, r0
- movs r2, 0x1E
- ldrsh r0, [r1, r2]
- ldr r2, =gText_Cancel
- cmp r0, 0x2
- bne _08126F2C
- ldr r2, =gText_Exit
-_08126F2C:
- lsls r0, r4, 4
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x1
- movs r3, 0x8
- bl PrintTextOnWindow
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126E8C
-
- thumb_func_start sub_8126F68
-sub_8126F68: @ 8126F68
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- ldr r4, [sp, 0x38]
- ldr r6, [sp, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r5, r3, 24
- lsls r4, 24
- lsrs r1, r4, 24
- lsls r6, 24
- lsrs r6, 24
- mov r9, r6
- movs r0, 0x60
- str r0, [sp, 0x14]
- cmp r7, 0x8
- bne _08126FA2
- movs r2, 0x68
- str r2, [sp, 0x14]
-_08126FA2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, =gStringVar4
- adds r0, r4, 0
- bl sub_8127058
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- adds r6, r0, r4
- ldr r1, =gUnknown_085A6B28
- mov r2, r8
- lsls r0, r2, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl StringCopy
- str r5, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- movs r2, 0
- mov r10, r2
- str r2, [sp, 0x8]
- ldr r0, [sp, 0xC]
- movs r1, 0x1
- adds r2, r4, 0
- adds r3, r7, 0
- bl PrintTextOnWindow
- mov r0, r8
- bl sub_8161AD0
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r6, r0, 0
- movs r0, 0xBA
- strb r0, [r6]
- adds r6, 0x1
- ldr r1, =gDecorationInventories
- mov r2, r8
- lsls r0, r2, 3
- adds r0, r1
- ldrb r1, [r0, 0x4]
- adds r0, r6, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r0, 0x1
- adds r1, r4, 0
- ldr r2, [sp, 0x14]
- bl GetStringRightAlignXOffset
- lsls r0, 24
- lsrs r7, r0, 24
- str r5, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- mov r2, r10
- str r2, [sp, 0x8]
- ldr r0, [sp, 0xC]
- movs r1, 0x1
- adds r2, r4, 0
- adds r3, r7, 0
- bl PrintTextOnWindow
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8126F68
-
- thumb_func_start sub_8127058
-sub_8127058: @ 8127058
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- ldr r1, =gText_Color161Shadow161
- bl StringCopy
- cmp r4, 0x1
- bne _08127078
- movs r0, 0x4
- strb r0, [r5, 0x2]
- movs r0, 0x5
- b _0812707E
- .pool
-_08127078:
- movs r0, 0x2
- strb r0, [r5, 0x2]
- movs r0, 0x3
-_0812707E:
- strb r0, [r5, 0x5]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8127058
-
- thumb_func_start sub_8127088
-sub_8127088: @ 8127088
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081270DE
- bl ProcessMenuInput
- lsls r0, 24
- lsrs r4, r0, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _081270C0
- cmp r1, r0
- bgt _081270BC
- subs r0, 0x1
- cmp r1, r0
- beq _081270DE
- b _081270CE
- .pool
-_081270BC:
- cmp r1, 0x8
- bne _081270CE
-_081270C0:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_812719C
- b _081270DE
-_081270CE:
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203A173
- strb r4, [r0]
- adds r0, r5, 0
- bl sub_81270E8
-_081270DE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127088
-
- thumb_func_start sub_81270E8
-sub_81270E8: @ 81270E8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, =gUnknown_0203A173
- ldrb r0, [r4]
- bl sub_8161AD0
- ldr r1, =gUnknown_0203A151
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- beq _08127154
- ldrb r0, [r4]
- bl sub_8161A38
- ldr r2, =gUnknown_0203A14C
- ldr r1, =gDecorationInventories
- ldrb r0, [r4]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- adds r0, r5, 0
- bl sub_81279B4
- ldr r0, =gUnknown_0203A170
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_0203A16E
- strh r1, [r0]
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8127620
- str r1, [r0]
- b _0812716E
- .pool
-_08127154:
- movs r0, 0x1
- bl sub_8126A58
- ldr r4, =gStringVar4
- ldr r1, =gText_NoDecorations
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8127180
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
-_0812716E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81270E8
-
- thumb_func_start sub_8127180
-sub_8127180: @ 8127180
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- bl sub_8197434
- adds r0, r4, 0
- bl sub_8126DFC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127180
-
- thumb_func_start sub_812719C
-sub_812719C: @ 812719C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1E
- ldrsh r0, [r0, r1]
- cmp r0, 0x2
- beq _081271C0
- adds r0, r2, 0
- bl sub_81271CC
- b _081271C6
- .pool
-_081271C0:
- adds r0, r2, 0
- bl sub_8127268
-_081271C6:
- pop {r0}
- bx r0
- thumb_func_end sub_812719C
-
- thumb_func_start sub_81271CC
-sub_81271CC: @ 81271CC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_8126A58
- bl sub_8126A88
- movs r0, 0
- movs r1, 0
- bl sub_81973C4
- bl sub_8126C08
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8126B80
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81271CC
-
- thumb_func_start sub_8127208
-sub_8127208: @ 8127208
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_085A6BB0
- movs r1, 0xD0
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0
- movs r1, 0
- bl sub_8197434
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0x2
- strh r1, [r0, 0x1E]
- ldr r0, =gUnknown_0203A173
- strb r2, [r0]
- adds r0, r4, 0
- bl sub_8126DFC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127208
-
- thumb_func_start sub_8127250
-sub_8127250: @ 8127250
- push {lr}
- lsls r1, 24
- ldr r2, =gUnknown_085A6B28
- lsrs r1, 22
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127250
-
- thumb_func_start sub_8127268
-sub_8127268: @ 8127268
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_8126A58
- adds r0, r4, 0
- bl sub_8133E1C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127268
-
- thumb_func_start sub_8127284
-sub_8127284: @ 8127284
- push {lr}
- ldr r3, =gUnknown_0203A18C
- ldr r2, [r3]
- ldr r0, =gUnknown_0203A151
- ldrb r0, [r0]
- adds r0, 0x1
- movs r1, 0xA4
- lsls r1, 3
- adds r2, r1
- strb r0, [r2]
- ldr r0, [r3]
- adds r1, r0, r1
- ldrb r1, [r1]
- cmp r1, 0x8
- bls _081272B8
- ldr r2, =0x00000521
- adds r1, r0, r2
- movs r0, 0x8
- strb r0, [r1]
- b _081272BE
- .pool
-_081272B8:
- ldr r2, =0x00000521
- adds r0, r2
- strb r1, [r0]
-_081272BE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127284
-
- thumb_func_start sub_81272C8
-sub_81272C8: @ 81272C8
- push {r4,lr}
- ldr r0, =gUnknown_0203A170
- ldr r1, =gUnknown_0203A16E
- ldr r2, =gUnknown_0203A18C
- ldr r3, [r2]
- ldr r4, =0x00000521
- adds r2, r3, r4
- ldrb r2, [r2]
- subs r4, 0x1
- adds r3, r4
- ldrb r3, [r3]
- bl sub_812225C
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81272C8
-
- thumb_func_start sub_81272F8
-sub_81272F8: @ 81272F8
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gUnknown_0203A170
- ldr r1, =gUnknown_0203A16E
- ldr r2, =gUnknown_0203A18C
- ldr r3, [r2]
- ldr r4, =0x00000521
- adds r2, r3, r4
- ldrb r2, [r2]
- subs r4, 0x1
- adds r3, r4
- ldrb r3, [r3]
- movs r4, 0x8
- str r4, [sp]
- bl sub_8122298
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81272F8
-
- thumb_func_start sub_8127330
-sub_8127330: @ 8127330
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r1, r0
- ldr r0, =gUnknown_0203A173
- ldrb r0, [r0]
- subs r0, 0x6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08127378
- ldr r0, =gUnknown_0203A17C
- ldrb r0, [r0, 0x9]
- cmp r0, 0x1
- bne _08127378
- movs r2, 0x16
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08127378
- ldr r0, =gStringVar1
- movs r1, 0x1
- bl sub_8127058
- b _08127380
- .pool
-_08127378:
- ldr r0, =gStringVar1
- movs r1, 0
- bl sub_8127058
-_08127380:
- movs r6, 0
- ldr r1, =gUnknown_0203A18C
- ldr r0, [r1]
- movs r3, 0xA4
- lsls r3, 3
- adds r0, r3
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r6, r0
- bge _081273D6
- adds r5, r1, 0
-_08127396:
- lsls r4, r6, 1
- adds r4, r6
- lsls r4, 3
- movs r0, 0xA4
- lsls r0, 1
- adds r4, r0
- ldr r0, [r5]
- adds r0, r4
- ldr r1, =gUnknown_0203A14C
- ldr r1, [r1]
- adds r1, r6
- ldrb r1, [r1]
- bl sub_8127454
- ldr r1, [r5]
- lsls r2, r6, 3
- adds r0, r1, r2
- adds r4, r1, r4
- str r4, [r0]
- adds r0, r1, 0x4
- adds r0, r2
- str r6, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- movs r2, 0xA4
- lsls r2, 3
- adds r1, r2
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r6, r0
- blt _08127396
-_081273D6:
- ldr r5, =gUnknown_0203A18C
- lsls r4, r6, 1
- adds r4, r6
- lsls r4, 3
- movs r3, 0xA4
- lsls r3, 1
- adds r4, r3
- ldr r0, [r5]
- adds r0, r4
- ldr r1, =gText_Cancel
- bl StringCopy
- ldr r0, [r5]
- lsls r2, r6, 3
- adds r1, r0, r2
- adds r4, r0, r4
- str r4, [r1]
- adds r0, 0x4
- adds r0, r2
- movs r1, 0x2
- negs r1, r1
- str r1, [r0]
- ldr r2, =gUnknown_03006310
- adds r1, r2, 0
- ldr r0, =gUnknown_085A6BD0
- ldm r0!, {r3,r4,r6}
- stm r1!, {r3,r4,r6}
- ldm r0!, {r3,r4,r6}
- stm r1!, {r3,r4,r6}
- ldr r0, =gUnknown_0203A188
- ldrb r0, [r0, 0x1]
- strb r0, [r2, 0x10]
- ldr r0, [r5]
- movs r4, 0xA4
- lsls r4, 3
- adds r1, r0, r4
- ldrb r1, [r1]
- strh r1, [r2, 0xC]
- str r0, [r2]
- ldr r6, =0x00000521
- adds r0, r6
- ldrb r0, [r0]
- strh r0, [r2, 0xE]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127330
-
- thumb_func_start sub_8127454
-sub_8127454: @ 8127454
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r4, r1, 16
- lsrs r4, 16
- ldr r1, =gStringVar1
- bl StringCopy
- lsls r4, 5
- ldr r0, =gDecorations + 1
- adds r4, r0
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringAppend
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127454
-
- thumb_func_start sub_8127480
-sub_8127480: @ 8127480
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- beq _08127492
- movs r0, 0x5
- bl PlaySE
-_08127492:
- adds r0, r4, 0
- bl sub_8127744
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127480
-
- thumb_func_start sub_81274A0
-sub_81274A0: @ 81274A0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- mov r8, r6
- lsls r2, 24
- lsrs r5, r2, 24
- adds r7, r5, 0
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _081274F6
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_81277BC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081274DC
- adds r3, r5, 0x2
- adds r0, r6, 0
- movs r1, 0x18
- movs r2, 0x5C
- bl blit_move_info_icon
- b _081274F6
-_081274DC:
- adds r0, r4, 0
- bl sub_81277E8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081274F6
- adds r3, r7, 0x2
- mov r0, r8
- movs r1, 0x19
- movs r2, 0x5C
- bl blit_move_info_icon
-_081274F6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81274A0
-
- thumb_func_start sub_8127500
-sub_8127500: @ 8127500
- push {r4,lr}
- sub sp, 0x10
- ldr r4, =gUnknown_0203A18C
- ldr r1, [r4]
- ldr r2, =0x00000522
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08127540
- subs r2, 0x2
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0x1
- adds r1, r2
- ldrb r1, [r1]
- subs r0, r1
- str r0, [sp]
- movs r0, 0x6E
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- ldr r0, =gUnknown_0203A170
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x3C
- movs r2, 0xC
- movs r3, 0x94
- bl AddScrollIndicatorArrowPairParametrized
- ldr r1, [r4]
- ldr r2, =0x00000522
- adds r1, r2
- strb r0, [r1]
-_08127540:
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127500
-
- thumb_func_start sub_8127554
-sub_8127554: @ 8127554
- push {r4,lr}
- ldr r4, =gUnknown_0203A18C
- ldr r0, [r4]
- ldr r2, =0x00000522
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08127572
- bl RemoveScrollIndicatorArrowPair
- ldr r0, [r4]
- ldr r1, =0x00000522
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
-_08127572:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127554
-
- thumb_func_start sub_8127580
-sub_8127580: @ 8127580
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_81269D4
- adds r0, r4, 0
- bl sub_812759C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127580
-
- thumb_func_start sub_812759C
-sub_812759C: @ 812759C
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- ldr r0, =gTasks + 0x8
- adds r5, r0
- movs r0, 0x3
- bl sub_81269D4
- ldr r0, =gUnknown_0203A173
- ldrb r0, [r0]
- bl sub_8127718
- ldr r6, =gUnknown_0203A18C
- ldr r0, =0x00000524
- bl AllocZeroed
- str r0, [r6]
- ldr r1, =0x00000522
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- bl sub_8127284
- bl sub_81272C8
- bl sub_81272F8
- adds r0, r4, 0
- bl sub_8127330
- ldr r0, =gUnknown_03006310
- ldr r1, =gUnknown_0203A170
- ldrh r1, [r1]
- ldr r2, =gUnknown_0203A16E
- ldrh r2, [r2]
- bl ListMenuInit
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x1A]
- bl sub_8127500
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812759C
-
- thumb_func_start sub_8127620
-sub_8127620: @ 8127620
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_812759C
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_812764C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127620
-
- thumb_func_start sub_812764C
-sub_812764C: @ 812764C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r5, r0, r1
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08127700
- ldrb r0, [r5, 0x1A]
- bl ListMenuHandleInput
- adds r4, r0, 0
- ldrb r0, [r5, 0x1A]
- ldr r7, =gUnknown_0203A170
- ldr r1, =gUnknown_0203A16E
- mov r8, r1
- adds r1, r7, 0
- mov r2, r8
- bl get_coro_args_x18_x1A
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _081276A4
- adds r0, 0x1
- cmp r4, r0
- bne _081276C4
- b _08127700
- .pool
-_081276A4:
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_085A6B78
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldr r1, [r1]
- adds r0, r6, 0
- bl _call_via_r1
- b _08127700
- .pool
-_081276C4:
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_0203A172
- strb r4, [r0]
- bl sub_8127554
- ldrb r0, [r5, 0x1A]
- adds r1, r7, 0
- mov r2, r8
- bl sub_81AE6C8
- movs r0, 0x1
- bl sub_8126A58
- bl sub_81277A8
- ldr r0, =gUnknown_0203A18C
- ldr r0, [r0]
- bl Free
- ldr r1, =gUnknown_085A6B78
- movs r2, 0x16
- ldrsh r0, [r5, r2]
- lsls r0, 3
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl _call_via_r1
-_08127700:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812764C
-
- thumb_func_start sub_8127718
-sub_8127718: @ 8127718
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- bl sub_81269D4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl sub_8126F68
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127718
-
- thumb_func_start sub_8127744
-sub_8127744: @ 8127744
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldr r0, =gUnknown_0203A188
- ldrb r5, [r0, 0x3]
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, =gUnknown_0203A151
- ldrb r0, [r0]
- cmp r4, r0
- bcc _08127770
- ldr r2, =gText_GoBackPrevMenu
- b _08127782
- .pool
-_08127770:
- ldr r1, =gDecorations
- ldr r0, =gUnknown_0203A14C
- ldr r0, [r0]
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 5
- adds r1, 0x18
- adds r0, r1
- ldr r2, [r0]
-_08127782:
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127744
-
- thumb_func_start sub_81277A8
-sub_81277A8: @ 81277A8
- push {lr}
- movs r0, 0x3
- bl sub_8126A58
- movs r0, 0x2
- bl sub_8126A58
- pop {r0}
- bx r0
- thumb_func_end sub_81277A8
-
- thumb_func_start sub_81277BC
-sub_81277BC: @ 81277BC
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r3, =gUnknown_0203A152
-_081277C6:
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _081277D8
- movs r0, 0x1
- b _081277E4
- .pool
-_081277D8:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _081277C6
- movs r0, 0
-_081277E4:
- pop {r1}
- bx r1
- thumb_func_end sub_81277BC
-
- thumb_func_start sub_81277E8
-sub_81277E8: @ 81277E8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r3, =gUnknown_0203A162
-_081277F2:
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _08127804
- movs r0, 0x1
- b _08127810
- .pool
-_08127804:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xB
- bls _081277F2
- movs r0, 0
-_08127810:
- pop {r1}
- bx r1
- thumb_func_end sub_81277E8
-
- thumb_func_start sub_8127814
-sub_8127814: @ 8127814
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r5, 0
- ldr r0, =gUnknown_0203A152
- movs r1, 0
- movs r2, 0x10
- bl memset
- ldr r0, =gUnknown_0203A162
- movs r1, 0
- movs r2, 0xC
- bl memset
- movs r6, 0
- ldr r0, =gSaveBlock1Ptr
- mov r10, r0
- ldr r1, =0x00001aae
- mov r9, r1
- ldr r3, =gUnknown_0203A173
- mov r8, r3
-_08127842:
- mov r1, r10
- ldr r0, [r1]
- add r0, r9
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0
- beq _081278E2
- movs r2, 0
- mov r3, r8
- ldrb r0, [r3]
- lsls r0, 3
- ldr r1, =gDecorationInventories
- adds r0, r1
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bcs _081278E2
- ldr r7, =gUnknown_0203A152
- adds r3, r1, 0
- mov r12, r3
-_08127868:
- ldr r0, =gUnknown_0203A14C
- ldr r1, [r0]
- adds r1, r2
- mov r3, r10
- ldr r0, [r3]
- add r0, r9
- adds r0, r6
- ldrb r1, [r1]
- adds r4, r2, 0x1
- ldrb r0, [r0]
- cmp r1, r0
- bne _081278D0
- movs r1, 0
- cmp r1, r5
- bcs _081278A2
- ldrb r0, [r7]
- cmp r0, r4
- beq _081278A2
- ldr r3, =gUnknown_0203A152
- adds r2, r4, 0
-_08127890:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r5
- bcs _081278A2
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _08127890
-_081278A2:
- cmp r1, r5
- bne _081278D0
- adds r0, r5, r7
- strb r4, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- b _081278E2
- .pool
-_081278D0:
- lsls r0, r4, 16
- lsrs r2, r0, 16
- mov r1, r8
- ldrb r0, [r1]
- lsls r0, 3
- add r0, r12
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bcc _08127868
-_081278E2:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0xF
- bls _08127842
- movs r5, 0
- movs r6, 0
- ldr r3, =gDecorationInventories
- mov r8, r3
-_081278F4:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x0000271c
- adds r0, r1
- adds r0, r6
- ldrb r0, [r0]
- adds r7, r6, 0x1
- cmp r0, 0
- beq _0812799A
- movs r2, 0
- b _0812798C
- .pool
-_08127918:
- ldr r0, =gUnknown_0203A14C
- ldr r1, [r0]
- adds r1, r2
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x0000271c
- adds r0, r3
- adds r0, r6
- ldrb r1, [r1]
- adds r4, r2, 0x1
- ldrb r0, [r0]
- cmp r1, r0
- bne _08127988
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_81277BC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08127988
- movs r1, 0
- cmp r1, r5
- bcs _08127966
- ldr r2, =gUnknown_0203A162
- ldrb r0, [r2]
- cmp r0, r4
- beq _08127966
- adds r3, r2, 0
- adds r2, r4, 0
-_08127954:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r5
- bcs _08127966
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _08127954
-_08127966:
- cmp r1, r5
- bne _08127988
- ldr r0, =gUnknown_0203A162
- adds r0, r5, r0
- strb r4, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- b _0812799A
- .pool
-_08127988:
- lsls r0, r4, 16
- lsrs r2, r0, 16
-_0812798C:
- ldr r0, =gUnknown_0203A173
- ldrb r0, [r0]
- lsls r0, 3
- add r0, r8
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bcc _08127918
-_0812799A:
- lsls r0, r7, 16
- lsrs r6, r0, 16
- cmp r6, 0xB
- bls _081278F4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127814
-
- thumb_func_start sub_81279B4
-sub_81279B4: @ 81279B4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_8127814
- pop {r0}
- bx r0
- thumb_func_end sub_81279B4
-
- thumb_func_start sub_81279C4
-sub_81279C4: @ 81279C4
- push {r4,lr}
- movs r2, 0
- ldr r0, =gUnknown_0203A170
- ldrh r0, [r0]
- ldr r1, =gUnknown_0203A16E
- ldrh r1, [r1]
- adds r0, r1
- adds r1, r0, 0x1
- ldr r4, =gUnknown_0203A152
- ldr r3, =gUnknown_0203A162
-_081279D8:
- adds r0, r2, r4
- ldrb r0, [r0]
- cmp r0, r1
- beq _081279EC
- cmp r2, 0xB
- bhi _08127A00
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, r1
- bne _08127A00
-_081279EC:
- movs r0, 0
- b _08127A0C
- .pool
-_08127A00:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xF
- bls _081279D8
- movs r0, 0x1
-_08127A0C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81279C4
-
- thumb_func_start sub_8127A14
-sub_8127A14: @ 8127A14
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_81269D4
- adds r0, r4, 0
- bl sub_8127620
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127A14
-
- thumb_func_start sub_8127A30
-sub_8127A30: @ 8127A30
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- bl sub_8197434
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8127A14
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127A30
-
- thumb_func_start sub_8127A5C
-sub_8127A5C: @ 8127A5C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08127A82
- movs r0, 0
- movs r1, 0
- bl sub_8197434
- movs r0, 0x1
- bl sub_81269D4
- adds r0, r4, 0
- bl sub_8127620
-_08127A82:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127A5C
-
- thumb_func_start sub_8127A8C
-sub_8127A8C: @ 8127A8C
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- ldr r0, =gTasks + 0x8
- adds r4, r0
- bl sub_8127554
- bl sub_81277A8
- ldrb r0, [r4, 0x1A]
- movs r1, 0
- movs r2, 0
- bl sub_81AE6C8
- ldr r0, =gUnknown_0203A18C
- ldr r0, [r0]
- bl Free
- adds r0, r5, 0
- bl sub_8126E44
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127A8C
-
- thumb_func_start sub_8127ACC
-sub_8127ACC: @ 8127ACC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r4, r2, r3
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldrh r0, [r1]
- strh r0, [r4, 0xE]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x10]
- adds r3, 0x8
- adds r2, r3
- adds r1, r2, 0x2
- adds r0, r2, 0
- bl PlayerGetDestCoords
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127ACC
-
- thumb_func_start sub_8127B04
-sub_8127B04: @ 8127B04
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- bl DrawWholeMapView
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- ldr r3, =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r3
- movs r3, 0xE
- ldrsb r3, [r4, r3]
- ldrb r4, [r4, 0x10]
- lsls r4, 24
- asrs r4, 24
- str r4, [sp]
- bl warp1_set
- bl warp_in
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127B04
-
- thumb_func_start sub_8127B54
-sub_8127B54: @ 8127B54
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, =0x0000ffff
- cmp r2, 0x22
- beq _08127B7C
- cmp r2, 0x26
- bne _08127B86
- ldr r0, =gUnknown_085A72E4
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r0, 28
- lsrs r0, 16
- b _08127B86
- .pool
-_08127B7C:
- ldr r0, =gUnknown_085A72EC
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r0, 28
- lsrs r0, 16
-_08127B86:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8127B54
-
- thumb_func_start sub_8127B90
-sub_8127B90: @ 8127B90
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- ldr r4, [sp, 0x54]
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x4]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x8]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0xC]
- lsls r4, 16
- lsrs r4, 16
- str r4, [sp, 0x10]
- movs r2, 0
- lsls r0, r3, 16
- cmp r2, r3
- bcc _08127BC6
- b _08127D28
-_08127BC6:
- ldr r1, [sp, 0x8]
- str r1, [sp, 0x28]
- str r0, [sp, 0x2C]
-_08127BCC:
- ldr r3, [sp, 0x4]
- ldr r4, [sp, 0xC]
- subs r1, r3, r4
- lsls r0, r2, 16
- asrs r0, 16
- adds r0, 0x1
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x14]
- movs r0, 0
- mov r10, r0
- adds r1, r2, 0x1
- str r1, [sp, 0x30]
- ldr r3, [sp, 0x28]
- cmp r10, r3
- bcc _08127BF0
- b _08127D18
-_08127BF0:
- ldr r4, [sp, 0x10]
- lsls r4, 5
- str r4, [sp, 0x18]
- ldr r0, =gUnknown_085A5C24
- adds r0, r4, r0
- str r0, [sp, 0x1C]
- ldr r0, =gDecorations
- adds r0, r4, r0
- str r0, [sp, 0x24]
- ldr r3, [sp, 0x8]
- adds r1, r2, 0
- muls r1, r3
- str r1, [sp, 0x20]
-_08127C0A:
- ldr r0, [sp]
- add r0, r10
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, [sp, 0x20]
- add r1, r10
- ldr r4, [sp, 0x1C]
- ldr r0, [r4]
- lsls r1, 1
- adds r1, r0
- movs r2, 0x80
- lsls r2, 2
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl GetBehaviorByMetatileId
- lsls r4, r0, 16
- lsls r0, r4, 8
- lsrs r0, 24
- bl sub_80892D8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08127C50
- ldr r3, [sp, 0x24]
- ldrb r0, [r3, 0x11]
- cmp r0, 0x1
- beq _08127C60
- lsrs r0, r4, 28
- cmp r0, 0
- beq _08127C60
-_08127C50:
- movs r4, 0xC0
- lsls r4, 4
- mov r8, r4
- b _08127C64
- .pool
-_08127C60:
- movs r0, 0
- mov r8, r0
-_08127C64:
- ldr r1, [sp, 0x24]
- ldrb r0, [r1, 0x11]
- lsls r7, r5, 16
- ldr r2, [sp, 0x14]
- lsls r2, 16
- mov r9, r2
- cmp r0, 0x3
- beq _08127C8E
- asrs r0, r7, 16
- asrs r1, r2, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl sub_8089328
- lsls r0, 24
- lsrs r0, 24
- movs r6, 0x1
- cmp r0, 0x1
- beq _08127C90
-_08127C8E:
- movs r6, 0
-_08127C90:
- ldr r3, [sp, 0x18]
- ldr r4, =gDecorations
- adds r0, r3, r4
- ldrb r0, [r0]
- ldr r4, [sp, 0x20]
- add r4, r10
- lsls r1, r4, 24
- lsrs r1, 24
- bl sub_8127B54
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, =0x0000ffff
- cmp r5, r0
- beq _08127CE0
- asrs r0, r7, 16
- mov r2, r9
- asrs r1, r2, 16
- ldr r3, [sp, 0x1C]
- ldr r2, [r3]
- lsls r3, r4, 1
- adds r3, r2
- movs r4, 0x80
- lsls r4, 2
- adds r2, r4, 0
- orrs r6, r2
- ldrh r3, [r3]
- adds r2, r6, r3
- mov r3, r8
- orrs r3, r2
- orrs r3, r5
- lsls r2, r3, 16
- lsrs r2, 16
- bl MapGridSetMetatileEntryAt
- b _08127D06
- .pool
-_08127CE0:
- asrs r0, r7, 16
- mov r2, r9
- asrs r1, r2, 16
- ldr r3, [sp, 0x1C]
- ldr r2, [r3]
- lsls r3, r4, 1
- adds r3, r2
- movs r4, 0x80
- lsls r4, 2
- adds r2, r4, 0
- orrs r6, r2
- ldrh r3, [r3]
- adds r2, r6, r3
- mov r3, r8
- orrs r3, r2
- lsls r2, r3, 16
- lsrs r2, 16
- bl MapGridSetMetatileIdAt
-_08127D06:
- mov r0, r10
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- ldr r4, [sp, 0x28]
- cmp r10, r4
- bcs _08127D18
- b _08127C0A
-_08127D18:
- ldr r1, [sp, 0x30]
- lsls r0, r1, 16
- lsrs r2, r0, 16
- ldr r3, [sp, 0x2C]
- lsrs r0, r3, 16
- cmp r2, r0
- bcs _08127D28
- b _08127BCC
-_08127D28:
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8127B90
-
- thumb_func_start sub_8127D38
-sub_8127D38: @ 8127D38
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r1, =gDecorations
- lsls r0, r2, 5
- adds r0, r1
- ldrb r0, [r0, 0x12]
- cmp r0, 0x9
- bhi _08127E10
- lsls r0, 2
- ldr r1, =_08127D68
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08127D68:
- .4byte _08127D90
- .4byte _08127D9A
- .4byte _08127DA4
- .4byte _08127DB4
- .4byte _08127DBE
- .4byte _08127DC8
- .4byte _08127DD8
- .4byte _08127DE2
- .4byte _08127DF2
- .4byte _08127E02
-_08127D90:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x1
- b _08127DAC
-_08127D9A:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x2
- b _08127DAC
-_08127DA4:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x3
-_08127DAC:
- movs r3, 0x1
- bl sub_8127B90
- b _08127E10
-_08127DB4:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x4
- b _08127DD0
-_08127DBE:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x2
- b _08127DD0
-_08127DC8:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x1
-_08127DD0:
- movs r3, 0x2
- bl sub_8127B90
- b _08127E10
-_08127DD8:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x1
- b _08127DFA
-_08127DE2:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x2
- movs r3, 0x4
- bl sub_8127B90
- b _08127E10
-_08127DF2:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x3
-_08127DFA:
- movs r3, 0x3
- bl sub_8127B90
- b _08127E10
-_08127E02:
- str r2, [sp]
- adds r0, r3, 0
- adds r1, r4, 0
- movs r2, 0x3
- movs r3, 0x2
- bl sub_8127B90
-_08127E10:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127D38
-
- thumb_func_start sub_8127E18
-sub_8127E18: @ 8127E18
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r6, 0
- ldr r7, =gMapHeader
- ldr r0, =gSpecialVar_0x8005
- mov r8, r0
- ldr r1, =gSpecialVar_0x8006
- mov r10, r1
- ldr r2, =gSaveBlock1Ptr
- mov r9, r2
-_08127E34:
- adds r5, r6, 0
- adds r5, 0xAE
- adds r4, r5, 0
- adds r0, r4, 0
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08127F1C
- adds r0, r4, 0
- bl FlagReset
- movs r2, 0
- ldr r0, [r7, 0x4]
- ldrb r4, [r0]
- cmp r2, r4
- bcs _08127E82
- ldr r0, [r0, 0x4]
- ldrh r0, [r0, 0x14]
- cmp r0, r5
- beq _08127E82
- ldr r0, =gMapHeader
- ldr r3, [r0, 0x4]
- ldrb r6, [r3]
- adds r4, r5, 0
-_08127E68:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r6
- bcs _08127E82
- ldr r0, [r3, 0x4]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x14]
- cmp r0, r4
- bne _08127E68
-_08127E82:
- ldr r0, [r7, 0x4]
- ldr r1, [r0, 0x4]
- lsls r4, r2, 1
- adds r4, r2
- lsls r4, 3
- adds r1, r4, r1
- ldr r5, =0x00003f20
- adds r0, r5, 0
- ldrb r1, [r1, 0x1]
- adds r0, r1
- ldr r1, =gUnknown_0203A190
- ldr r1, [r1]
- ldr r1, [r1, 0x1C]
- ldrh r1, [r1]
- bl VarSet
- ldr r0, [r7, 0x4]
- ldr r0, [r0, 0x4]
- adds r4, r0
- ldrb r0, [r4]
- mov r6, r8
- strh r0, [r6]
- ldr r1, =gUnknown_0203AA34
- ldrh r1, [r1]
- mov r2, r10
- strh r1, [r2]
- ldr r1, =gUnknown_0203AA36
- ldrh r1, [r1]
- ldr r4, =gSpecialVar_0x8007
- strh r1, [r4]
- mov r5, r9
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl show_sprite
- ldrb r0, [r6]
- ldr r2, [r5]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- mov r6, r10
- movs r4, 0
- ldrsh r3, [r6, r4]
- ldr r5, =gSpecialVar_0x8007
- movs r6, 0
- ldrsh r4, [r5, r6]
- str r4, [sp]
- bl sub_808EBA8
- mov r1, r8
- ldrb r0, [r1]
- mov r4, r9
- ldr r2, [r4]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl sub_808F254
- b _08127F26
- .pool
-_08127F1C:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xD
- bls _08127E34
-_08127F26:
- 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_8127E18
-
- thumb_func_start sub_8127F38
-sub_8127F38: @ 8127F38
- push {lr}
- movs r1, 0
- ldr r0, =gUnknown_0203A17C
- ldrb r2, [r0, 0x8]
- cmp r1, r2
- bcs _08127F62
- ldr r3, [r0]
-_08127F46:
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08127F58
- movs r0, 0x1
- b _08127F64
- .pool
-_08127F58:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r2
- bcc _08127F46
-_08127F62:
- movs r0, 0
-_08127F64:
- pop {r1}
- bx r1
- thumb_func_end sub_8127F38
-
- thumb_func_start sub_8127F68
-sub_8127F68: @ 8127F68
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gUnknown_0203A17C
- ldrb r0, [r0, 0x9]
- cmp r0, 0x1
- bne _08127FAC
- ldr r0, =gUnknown_0203A173
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _08127FAC
- cmp r0, 0x7
- beq _08127FAC
- ldr r4, =gStringVar4
- ldr r1, =gText_CantPlaceInRoom
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8127A5C
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _0812804C
- .pool
-_08127FAC:
- bl sub_81279C4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08128038
- bl sub_8127F38
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08127FE8
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- ldr r1, =sub_8128060
- str r1, [r0]
- b _0812804C
- .pool
-_08127FE8:
- ldr r0, =gStringVar1
- ldr r4, =gUnknown_0203A17C
- ldrb r1, [r4, 0x8]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldrb r0, [r4, 0x9]
- cmp r0, 0
- bne _08128018
- ldr r0, =gStringVar4
- ldr r1, =gText_NoMoreDecorations
- bl StringExpandPlaceholders
- b _08128020
- .pool
-_08128018:
- ldr r0, =gStringVar4
- ldr r1, =gText_NoMoreDecorations2
- bl StringExpandPlaceholders
-_08128020:
- ldr r1, =gStringVar4
- ldr r2, =sub_8127A5C
- adds r0, r5, 0
- bl DisplayItemMessageOnField
- b _0812804C
- .pool
-_08128038:
- ldr r4, =gStringVar4
- ldr r1, =gText_InUseAlready
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8127A5C
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
-_0812804C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8127F68
-
- thumb_func_start sub_8128060
-sub_8128060: @ 8128060
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r7, r0, r1
- movs r1, 0xC
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- beq _081280AC
- cmp r0, 0x1
- bgt _08128088
- cmp r0, 0
- beq _0812808E
- b _08128112
- .pool
-_08128088:
- cmp r0, 0x2
- beq _081280FC
- b _08128112
-_0812808E:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08128112
- adds r0, r6, 0
- bl sub_8127ACC
- movs r0, 0x1
- strh r0, [r7, 0xC]
- b _08128112
- .pool
-_081280AC:
- ldr r4, =gPaletteFade
- ldrb r0, [r4, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r4, 0x8]
- ldr r5, =gUnknown_0203A190
- ldr r0, =gUnknown_0203A172
- ldrb r1, [r0]
- ldr r0, =gUnknown_0203A14C
- ldr r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r5, 0
- bl ConfigureCameraObjectForPlacingDecoration
- adds r0, r6, 0
- bl sub_812826C
- adds r0, r6, 0
- adds r1, r5, 0
- bl SetUpPlacingDecorationPlayerAvatar
- bl pal_fill_black
- ldrb r1, [r4, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r4, 0x8]
- movs r0, 0x2
- strh r0, [r7, 0xC]
- b _08128112
- .pool
-_081280FC:
- bl sub_80ABDFC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08128112
- movs r0, 0
- strh r0, [r7, 0x20]
- adds r0, r6, 0
- bl sub_8128FD8
-_08128112:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8128060
-
- thumb_func_start ConfigureCameraObjectForPlacingDecoration
-ConfigureCameraObjectForPlacingDecoration: @ 8128118
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r3, =gUnknown_0203AA38
- ldr r4, =gSprites
- ldr r5, =gUnknown_03005DD0
- ldr r2, [r5, 0x4]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x2E]
- strb r0, [r3]
- adds r0, r6, 0
- bl gpu_pal_decompress_alloc_tag_and_upload
- lsls r0, 24
- lsrs r0, 24
- str r0, [r5, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldr r0, [r5, 0x4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r0, r4, 0
- adds r0, 0x1C
- adds r0, r2, r0
- ldr r1, =sub_81292D0
- str r1, [r0]
- adds r2, r4
- ldr r3, =gUnknown_085A7250
- ldr r0, [r6]
- ldrb r0, [r0, 0x12]
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x2]
- strh r0, [r2, 0x20]
- ldr r0, [r5, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldr r0, [r6]
- ldrb r0, [r0, 0x12]
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x3]
- strh r0, [r1, 0x22]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ConfigureCameraObjectForPlacingDecoration
-
- thumb_func_start SetUpPlacingDecorationPlayerAvatar
-SetUpPlacingDecorationPlayerAvatar: @ 81281A8
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- ldrb r2, [r2, 0x12]
- ldr r3, =gUnknown_085A7250
- ldr r0, [r1]
- ldrb r4, [r0, 0x12]
- lsls r1, r4, 2
- adds r1, r3
- lsls r0, r2, 4
- ldrb r1, [r1, 0x2]
- adds r0, r1
- subs r2, 0x1
- lsls r2, 3
- subs r0, r2
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r4, 0x2
- beq _081281E2
- cmp r4, 0x8
- beq _081281E2
- cmp r4, 0x9
- bne _081281EA
-_081281E2:
- adds r0, r2, 0
- subs r0, 0x8
- lsls r0, 24
- lsrs r2, r0, 24
-_081281EA:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _0812820C
- ldr r1, =SpriteCallbackDummy
- str r0, [sp]
- movs r0, 0xC1
- b _08128214
- .pool
-_0812820C:
- ldr r1, =SpriteCallbackDummy
- movs r0, 0
- str r0, [sp]
- movs r0, 0xC2
-_08128214:
- movs r3, 0x48
- bl AddPseudoFieldObject
- ldr r1, =gUnknown_0203AA39
- strb r0, [r1]
- ldr r3, =gSprites
- ldr r0, =gUnknown_0203AA39
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r4, =gUnknown_0203AA38
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- bl DestroySprite
- ldr r0, =gUnknown_03005DD0
- ldr r0, [r0, 0x4]
- strb r0, [r4]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetUpPlacingDecorationPlayerAvatar
-
- thumb_func_start sub_812826C
-sub_812826C: @ 812826C
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, =gDecorations
- ldr r0, =gUnknown_0203A172
- ldrb r1, [r0]
- ldr r0, =gUnknown_0203A14C
- ldr r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 5
- adds r0, r2
- ldrb r0, [r0, 0x12]
- cmp r0, 0x9
- bls _0812828C
- b _081283B2
-_0812828C:
- lsls r0, 2
- ldr r1, =_081282A8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081282A8:
- .4byte _081282D0
- .4byte _081282E4
- .4byte _081282FC
- .4byte _08128314
- .4byte _08128328
- .4byte _0812833C
- .4byte _08128350
- .4byte _08128370
- .4byte _08128388
- .4byte _081283A0
-_081282D0:
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _08128394
- .pool
-_081282E4:
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0, 0x12]
- movs r1, 0x1
- b _081283B0
- .pool
-_081282FC:
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0x3
- strh r1, [r0, 0x12]
- movs r1, 0x1
- b _081283B0
- .pool
-_08128314:
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0x4
- b _081283AC
- .pool
-_08128328:
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- movs r0, 0x2
- b _08128394
- .pool
-_0812833C:
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- b _081283AC
- .pool
-_08128350:
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x12]
- movs r0, 0x3
- strh r0, [r1, 0x14]
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
- b _081283B2
- .pool
-_08128370:
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0, 0x12]
- movs r1, 0x4
- b _081283B0
- .pool
-_08128388:
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- movs r0, 0x3
-_08128394:
- strh r0, [r1, 0x12]
- strh r0, [r1, 0x14]
- b _081283B2
- .pool
-_081283A0:
- ldr r1, =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- movs r1, 0x3
-_081283AC:
- strh r1, [r0, 0x12]
- movs r1, 0x2
-_081283B0:
- strh r1, [r0, 0x14]
-_081283B2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812826C
-
- thumb_func_start sub_81283BC
-sub_81283BC: @ 81283BC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- ldr r3, =gSprites
- ldr r0, =gUnknown_0203AA38
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r2, 0x1
- strh r2, [r0, 0x3C]
- ldr r0, =gUnknown_0203AA39
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x3C]
- bl sub_8128DE0
- adds r0, r4, 0
- bl sub_8128950
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81283BC
-
- thumb_func_start sub_8128414
-sub_8128414: @ 8128414
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- ldr r3, =gSprites
- ldr r0, =gUnknown_0203AA38
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r2, 0x1
- strh r2, [r0, 0x3C]
- ldr r0, =gUnknown_0203AA39
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x3C]
- bl sub_8128DE0
- ldr r5, =gStringVar4
- ldr r1, =gText_CancelDecorating
- adds r0, r5, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8128B80
- adds r0, r4, 0
- adds r1, r5, 0
- bl DisplayItemMessageOnField
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128414
-
- thumb_func_start sub_8128484
-sub_8128484: @ 8128484
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- bl sub_80892C4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812849E
- cmp r4, 0
- beq _081284A2
-_0812849E:
- movs r0, 0
- b _081284A4
-_081284A2:
- movs r0, 0x1
-_081284A4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8128484
-
- thumb_func_start sub_81284AC
-sub_81284AC: @ 81284AC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r4, r2, 16
- lsls r3, 16
- lsrs r5, r3, 16
- lsls r1, 16
- asrs r1, 16
- ldr r3, =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- adds r0, 0x7
- cmp r1, r0
- bne _081284EC
- lsls r1, r4, 16
- asrs r1, 16
- movs r3, 0x10
- ldrsh r0, [r2, r3]
- adds r0, 0x7
- cmp r1, r0
- bne _081284EC
- cmp r5, 0
- beq _081284EC
- movs r0, 0
- b _081284EE
- .pool
-_081284EC:
- movs r0, 0x1
-_081284EE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81284AC
-
- thumb_func_start sub_81284F4
-sub_81284F4: @ 81284F4
- push {r4-r6,lr}
- adds r5, r1, 0
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r0, r6, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_80892C4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08128534
- ldrb r0, [r5]
- cmp r0, 0x21
- bne _08128522
- adds r0, r4, 0
- bl sub_8089378
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08128530
-_08128522:
- lsls r0, r6, 24
- lsrs r0, 24
- bl sub_8089314
- lsls r0, 24
- cmp r0, 0
- beq _08128534
-_08128530:
- movs r0, 0x1
- b _08128536
-_08128534:
- movs r0, 0
-_08128536:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81284F4
-
- thumb_func_start sub_812853C
-sub_812853C: @ 812853C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- str r1, [sp]
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r1, =gTasks
- lsls r0, 2
- add r0, r10
- lsls r0, 3
- adds r0, r1
- ldrb r2, [r0, 0x14]
- str r2, [sp, 0x4]
- ldrb r0, [r0, 0x12]
- str r0, [sp, 0x8]
- ldr r3, [sp]
- ldrb r0, [r3, 0x11]
- adds r2, r1, 0
- cmp r0, 0x4
- bls _0812856E
- b _0812893C
-_0812856E:
- lsls r0, 2
- ldr r1, =_08128580
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08128580:
- .4byte _08128594
- .4byte _08128594
- .4byte _08128680
- .4byte _08128834
- .4byte _081288B8
-_08128594:
- movs r6, 0
- ldr r0, [sp, 0x4]
- cmp r6, r0
- bcc _0812859E
- b _0812893C
-_0812859E:
- mov r1, r10
- lsls r1, 2
- str r1, [sp, 0x1C]
-_081285A4:
- mov r2, r10
- lsls r0, r2, 2
- add r0, r10
- lsls r0, 3
- ldr r3, =gTasks
- adds r0, r3
- ldrh r0, [r0, 0xA]
- subs r0, r6
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r7, 0
- adds r6, 0x1
- str r6, [sp, 0x14]
- ldr r0, [sp, 0x8]
- cmp r7, r0
- bcs _0812866E
- mov r1, r9
- lsls r1, 16
- str r1, [sp, 0xC]
- asrs r1, 16
- mov r9, r1
-_081285D0:
- ldr r0, [sp, 0x1C]
- add r0, r10
- lsls r0, 3
- ldr r2, =gTasks
- adds r0, r2
- ldrh r0, [r0, 0x8]
- adds r0, r7
- lsls r0, 16
- mov r8, r0
- asrs r6, r0, 16
- adds r0, r6, 0
- mov r1, r9
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r3, [sp, 0x4]
- ldr r1, [sp, 0x14]
- subs r0, r3, r1
- ldr r2, [sp, 0x8]
- adds r1, r0, 0
- muls r1, r2
- adds r1, r7
- ldr r3, [sp]
- ldr r0, [r3, 0x1C]
- lsls r1, 1
- adds r1, r0
- movs r2, 0x80
- lsls r2, 2
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl GetBehaviorByMetatileId
- movs r3, 0xF0
- lsls r3, 8
- adds r1, r3, 0
- adds r5, r1, 0
- ands r5, r0
- adds r0, r4, 0
- ldr r1, [sp]
- bl sub_81284F4
- lsls r0, 24
- cmp r0, 0
- bne _08128632
- b _0812890C
-_08128632:
- mov r0, r10
- adds r1, r6, 0
- mov r2, r9
- adds r3, r5, 0
- bl sub_81284AC
- lsls r0, 24
- cmp r0, 0
- bne _08128646
- b _0812890C
-_08128646:
- mov r1, r8
- lsrs r0, r1, 16
- ldr r2, [sp, 0xC]
- lsrs r1, r2, 16
- movs r2, 0
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _08128662
- cmp r4, 0x10
- beq _08128662
- b _0812890C
-_08128662:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r3, [sp, 0x8]
- cmp r7, r3
- bcc _081285D0
-_0812866E:
- ldr r1, [sp, 0x14]
- lsls r0, r1, 24
- lsrs r6, r0, 24
- ldr r2, [sp, 0x4]
- cmp r6, r2
- bcc _081285A4
- b _0812893C
- .pool
-_08128680:
- movs r6, 0
- mov r3, r10
- lsls r3, 2
- str r3, [sp, 0x1C]
- ldr r0, [sp, 0x4]
- subs r0, 0x1
- str r0, [sp, 0x18]
- cmp r6, r0
- bge _0812876C
- adds r0, r3, 0
- add r0, r10
- lsls r0, 3
- str r0, [sp, 0x10]
-_0812869A:
- ldr r1, [sp, 0x10]
- adds r0, r1, r2
- ldrh r0, [r0, 0xA]
- subs r0, r6
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r7, 0
- adds r6, 0x1
- str r6, [sp, 0x14]
- ldr r3, [sp, 0x8]
- cmp r7, r3
- bcs _08128760
- lsls r0, 16
- str r0, [sp, 0x20]
-_081286B8:
- ldr r1, [sp, 0x10]
- adds r0, r1, r2
- ldrh r0, [r0, 0x8]
- adds r0, r7
- lsls r0, 16
- mov r8, r0
- asrs r6, r0, 16
- mov r2, r9
- lsls r1, r2, 16
- adds r0, r6, 0
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r3, [sp, 0x4]
- ldr r1, [sp, 0x14]
- subs r0, r3, r1
- ldr r2, [sp, 0x8]
- adds r1, r0, 0
- muls r1, r2
- adds r1, r7
- ldr r3, [sp]
- ldr r0, [r3, 0x1C]
- lsls r1, 1
- adds r1, r0
- movs r2, 0x80
- lsls r2, 2
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl GetBehaviorByMetatileId
- movs r3, 0xF0
- lsls r3, 8
- adds r1, r3, 0
- adds r5, r1, 0
- ands r5, r0
- adds r0, r4, 0
- bl sub_8089314
- lsls r0, 24
- cmp r0, 0
- bne _08128724
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8128484
- lsls r0, 24
- cmp r0, 0
- bne _08128724
- b _0812890C
-_08128724:
- mov r0, r10
- adds r1, r6, 0
- ldr r3, [sp, 0x20]
- asrs r2, r3, 16
- adds r3, r5, 0
- bl sub_81284AC
- lsls r0, 24
- cmp r0, 0
- bne _0812873A
- b _0812890C
-_0812873A:
- mov r1, r8
- lsrs r0, r1, 16
- ldr r2, [sp, 0x20]
- lsrs r1, r2, 16
- movs r2, 0
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _08128752
- b _0812890C
-_08128752:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, =gTasks
- ldr r3, [sp, 0x8]
- cmp r7, r3
- bcc _081286B8
-_08128760:
- ldr r1, [sp, 0x14]
- lsls r0, r1, 24
- lsrs r6, r0, 24
- ldr r3, [sp, 0x18]
- cmp r6, r3
- blt _0812869A
-_0812876C:
- ldr r0, [sp, 0x1C]
- add r0, r10
- lsls r0, 3
- adds r0, r2
- ldrh r0, [r0, 0xA]
- ldr r1, [sp, 0x4]
- subs r0, r1
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r7, 0
- ldr r3, [sp, 0x8]
- cmp r7, r3
- bcc _0812878C
- b _0812893C
-_0812878C:
- lsls r0, 16
- str r0, [sp, 0x20]
-_08128790:
- ldr r0, [sp, 0x1C]
- add r0, r10
- lsls r0, 3
- ldr r1, =gTasks
- adds r0, r1
- ldrh r0, [r0, 0x8]
- adds r0, r7
- lsls r0, 16
- mov r8, r0
- asrs r6, r0, 16
- mov r2, r9
- lsls r1, r2, 16
- adds r0, r6, 0
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r3, [sp]
- ldr r0, [r3, 0x1C]
- lsls r1, r7, 1
- adds r1, r0
- movs r2, 0x80
- lsls r2, 2
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl GetBehaviorByMetatileId
- movs r3, 0xF0
- lsls r3, 8
- adds r1, r3, 0
- adds r5, r1, 0
- ands r5, r0
- adds r0, r4, 0
- bl sub_8089314
- lsls r0, 24
- cmp r0, 0
- bne _081287F2
- adds r0, r4, 0
- bl sub_8089328
- lsls r0, 24
- cmp r0, 0
- bne _081287F2
- b _0812890C
-_081287F2:
- mov r0, r10
- adds r1, r6, 0
- ldr r3, [sp, 0x20]
- asrs r2, r3, 16
- adds r3, r5, 0
- bl sub_81284AC
- lsls r0, 24
- cmp r0, 0
- bne _08128808
- b _0812890C
-_08128808:
- mov r1, r8
- lsrs r0, r1, 16
- ldr r2, [sp, 0x20]
- lsrs r1, r2, 16
- movs r2, 0
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _08128822
- cmp r4, 0x10
- bne _0812890C
-_08128822:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r3, [sp, 0x8]
- cmp r7, r3
- bcc _08128790
- b _0812893C
- .pool
-_08128834:
- movs r6, 0
- ldr r0, [sp, 0x4]
- cmp r6, r0
- bcc _0812883E
- b _0812893C
-_0812883E:
- mov r1, r10
- lsls r0, r1, 2
- add r0, r10
- lsls r1, r0, 3
- ldr r2, =gTasks
- adds r0, r1, r2
- ldrh r0, [r0, 0xA]
- subs r0, r6
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r7, 0
- ldr r3, [sp, 0x8]
- cmp r7, r3
- bcs _081288A4
- adds r0, r2, 0
- adds r1, r0
- mov r8, r1
- mov r1, r9
- lsls r0, r1, 16
- asrs r5, r0, 16
-_08128868:
- mov r2, r8
- ldrh r0, [r2, 0x8]
- adds r0, r7
- lsls r0, 16
- asrs r4, r0, 16
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl sub_8089328
- lsls r0, 24
- cmp r0, 0
- beq _0812890C
- adds r0, r4, 0
- adds r1, r5, 0x1
- bl MapGridGetMetatileIdAt
- movs r1, 0xA3
- lsls r1, 2
- cmp r0, r1
- beq _0812890C
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r3, [sp, 0x8]
- cmp r7, r3
- bcc _08128868
-_081288A4:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, [sp, 0x4]
- cmp r6, r0
- bcc _0812883E
- b _0812893C
- .pool
-_081288B8:
- mov r3, r10
- lsls r1, r3, 2
- adds r0, r1, r3
- lsls r0, 3
- adds r0, r2
- ldrh r0, [r0, 0xA]
- mov r9, r0
- movs r7, 0
- str r1, [sp, 0x1C]
- ldr r0, [sp, 0x8]
- cmp r7, r0
- bcs _0812893C
- adds r6, r2, 0
- mov r1, r9
- lsls r1, 16
- str r1, [sp, 0x20]
-_081288D8:
- ldr r0, [sp, 0x1C]
- add r0, r10
- lsls r0, 3
- adds r0, r6
- ldrh r0, [r0, 0x8]
- adds r0, r7
- lsls r0, 16
- lsrs r5, r0, 16
- asrs r0, 16
- mov r2, r9
- lsls r1, r2, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r3, [sp]
- ldrb r0, [r3, 0x12]
- cmp r0, 0x5
- bne _08128910
-_08128900:
- adds r0, r4, 0
- bl sub_8089364
- lsls r0, 24
- cmp r0, 0
- bne _0812891C
-_0812890C:
- movs r0, 0
- b _0812893E
-_08128910:
- adds r0, r4, 0
- bl sub_8089350
- lsls r0, 24
- cmp r0, 0
- beq _08128900
-_0812891C:
- adds r0, r5, 0
- ldr r2, [sp, 0x20]
- lsrs r1, r2, 16
- movs r2, 0
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- bne _0812890C
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r3, [sp, 0x8]
- cmp r7, r3
- bcc _081288D8
-_0812893C:
- movs r0, 0x1
-_0812893E:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_812853C
-
- thumb_func_start sub_8128950
-sub_8128950: @ 8128950
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gUnknown_0203A172
- ldrb r1, [r0]
- ldr r0, =gUnknown_0203A14C
- ldr r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r1, 5
- ldr r0, =gDecorations
- adds r1, r0
- adds r0, r5, 0
- bl sub_812853C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081289A4
- ldr r4, =gStringVar4
- ldr r1, =gText_PlaceItHere
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_81289D0
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _081289BE
- .pool
-_081289A4:
- movs r0, 0x20
- bl PlaySE
- ldr r4, =gStringVar4
- ldr r1, =gText_CantBePlacedHere
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8129020
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
-_081289BE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128950
-
- thumb_func_start sub_81289D0
-sub_81289D0: @ 81289D0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8197930
- ldr r1, =gUnknown_085A72C4
- adds r0, r4, 0
- bl sub_8121F68
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81289D0
-
- thumb_func_start sub_81289F0
-sub_81289F0: @ 81289F0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0
- movs r1, 0
- bl sub_8197434
- adds r0, r4, 0
- bl sub_8128AAC
- ldr r2, =gDecorations
- ldr r0, =gUnknown_0203A172
- ldrb r1, [r0]
- ldr r0, =gUnknown_0203A14C
- ldr r0, [r0]
- adds r0, r1
- ldrb r3, [r0]
- lsls r0, r3, 5
- adds r0, r2
- ldrb r0, [r0, 0x11]
- cmp r0, 0x4
- beq _08128A44
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- ldrh r1, [r1, 0xA]
- adds r2, r3, 0
- bl sub_8127D38
- b _08128A64
- .pool
-_08128A44:
- ldr r2, =gUnknown_0203AA34
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- subs r0, 0x7
- strh r0, [r2]
- ldr r2, =gUnknown_0203AA36
- ldrh r0, [r1, 0xA]
- subs r0, 0x7
- strh r0, [r2]
- ldr r0, =gUnknown_08275D1F
- bl ScriptContext1_SetupScript
-_08128A64:
- ldr r2, =gSprites
- ldr r0, =gUnknown_0203AA38
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- adds r1, 0x2
- strh r1, [r0, 0x22]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- cmp r0, 0x56
- bne _08128A84
- bl sub_80EE104
-_08128A84:
- adds r0, r4, 0
- bl sub_8128BBC
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81289F0
-
- thumb_func_start sub_8128AAC
-sub_8128AAC: @ 8128AAC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r3, 0
- ldr r0, =gUnknown_0203A17C
- ldrb r1, [r0, 0x8]
- adds r5, r0, 0
- cmp r3, r1
- bcs _08128AD2
- ldr r4, [r5]
-_08128AC0:
- adds r2, r4, r3
- ldrb r0, [r2]
- cmp r0, 0
- beq _08128AF0
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r1
- bcc _08128AC0
-_08128AD2:
- ldrb r0, [r5, 0x9]
- cmp r0, 0
- bne _08128B3C
- movs r3, 0
- ldr r0, =gUnknown_0203A152
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0
- bne _08128B28
- b _08128B48
- .pool
-_08128AF0:
- ldr r0, =gUnknown_0203A172
- ldrb r1, [r0]
- ldr r0, =gUnknown_0203A14C
- ldr r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r2, [r5, 0x4]
- adds r2, r3
- ldr r0, =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldrb r0, [r1, 0x8]
- subs r0, 0x7
- lsls r0, 4
- ldrb r1, [r1, 0xA]
- subs r1, 0x7
- adds r0, r1
- strb r0, [r2]
- b _08128AD2
- .pool
-_08128B28:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0xF
- bhi _08128B76
- adds r1, r3, r2
- ldrb r0, [r1]
- cmp r0, 0
- bne _08128B28
- b _08128B6E
-_08128B3C:
- movs r3, 0
- ldr r0, =gUnknown_0203A162
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0
- bne _08128B5C
-_08128B48:
- ldr r0, =gUnknown_0203A172
- ldrb r0, [r0]
- adds r0, 0x1
- strb r0, [r2]
- b _08128B76
- .pool
-_08128B5C:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0xB
- bhi _08128B76
- adds r1, r3, r2
- ldrb r0, [r1]
- cmp r0, 0
- bne _08128B5C
-_08128B6E:
- ldr r0, =gUnknown_0203A172
- ldrb r0, [r0]
- adds r0, 0x1
- strb r0, [r1]
-_08128B76:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128AAC
-
- thumb_func_start sub_8128B80
-sub_8128B80: @ 8128B80
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8197930
- ldr r1, =gUnknown_085A72CC
- adds r0, r4, 0
- bl sub_8121F68
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128B80
-
- thumb_func_start sub_8128BA0
-sub_8128BA0: @ 8128BA0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- bl sub_8197434
- adds r0, r4, 0
- bl sub_8128BBC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8128BA0
-
- thumb_func_start sub_8128BBC
-sub_8128BBC: @ 8128BBC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- ldr r1, =c1_overworld_prev_quest
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128BBC
-
- thumb_func_start c1_overworld_prev_quest
-c1_overworld_prev_quest: @ 8128BEC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08128C10
- cmp r0, 0x1
- beq _08128C30
- b _08128C4C
- .pool
-_08128C10:
- bl ScriptContext2_Enable
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08128C4C
- adds r0, r4, 0
- bl sub_8127B04
- movs r0, 0x1
- strh r0, [r5, 0xC]
- b _08128C4C
- .pool
-_08128C30:
- bl sub_812A3C8
- ldr r0, =0x00000be5
- bl FreeSpritePaletteByTag
- ldr r1, =gFieldCallback
- ldr r0, =sub_8128CD4
- str r0, [r1]
- ldr r0, =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08128C4C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c1_overworld_prev_quest
-
- thumb_func_start sub_8128C64
-sub_8128C64: @ 8128C64
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r5, r1, 3
- ldr r6, =gTasks + 0x8
- adds r4, r5, r6
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08128C9C
- cmp r0, 0x1
- bgt _08128C8C
- cmp r0, 0
- beq _08128C96
- b _08128CCA
- .pool
-_08128C8C:
- cmp r0, 0x2
- beq _08128CA8
- cmp r0, 0x3
- beq _08128CB4
- b _08128CCA
-_08128C96:
- bl sub_80E9578
- b _08128CAC
-_08128C9C:
- ldr r0, =gUnknown_08275D0C
- bl ScriptContext1_SetupScript
- b _08128CAC
- .pool
-_08128CA8:
- bl ScriptContext2_Enable
-_08128CAC:
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- b _08128CCA
-_08128CB4:
- bl sub_80ABDFC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08128CCA
- adds r0, r6, 0
- subs r0, 0x8
- adds r0, r5, r0
- ldr r1, =sub_812764C
- str r1, [r0]
-_08128CCA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128C64
-
- thumb_func_start sub_8128CD4
-sub_8128CD4: @ 8128CD4
- push {r4,lr}
- bl ScriptContext2_Enable
- bl pal_fill_black
- ldr r0, =sub_8128C64
- movs r1, 0x8
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_8127580
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128CD4
-
- thumb_func_start sub_8128D10
-sub_8128D10: @ 8128D10
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r2, r1, r0
- ldr r0, =gUnknown_0203AA3A
- ldrb r1, [r0]
- adds r3, r0, 0
- cmp r1, 0x1
- bne _08128D48
- movs r1, 0x2
- ldrsh r0, [r2, r1]
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- subs r0, r1
- subs r0, 0x6
- cmp r0, 0
- bge _08128D48
- ldrh r0, [r2, 0x2]
- adds r0, 0x1
- b _08128D62
- .pool
-_08128D48:
- ldrb r0, [r3]
- cmp r0, 0x2
- bne _08128D6C
- movs r0, 0x2
- ldrsh r1, [r2, r0]
- subs r1, 0x7
- ldr r0, =gMapHeader
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- cmp r1, r0
- blt _08128D6C
- ldrh r0, [r2, 0x2]
- subs r0, 0x1
-_08128D62:
- strh r0, [r2, 0x2]
- movs r0, 0
- b _08128DAE
- .pool
-_08128D6C:
- ldrb r0, [r3]
- cmp r0, 0x3
- bne _08128D82
- movs r1, 0
- ldrsh r0, [r2, r1]
- subs r0, 0x7
- cmp r0, 0
- bge _08128D82
- ldrh r0, [r2]
- adds r0, 0x1
- b _08128DA2
-_08128D82:
- ldrb r0, [r3]
- cmp r0, 0x4
- bne _08128DAC
- movs r3, 0
- ldrsh r1, [r2, r3]
- movs r4, 0xA
- ldrsh r0, [r2, r4]
- adds r1, r0
- subs r1, 0x8
- ldr r0, =gMapHeader
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r1, r0
- blt _08128DAC
- ldrh r0, [r2]
- subs r0, 0x1
-_08128DA2:
- strh r0, [r2]
- movs r0, 0
- b _08128DAE
- .pool
-_08128DAC:
- movs r0, 0x1
-_08128DAE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8128D10
-
- thumb_func_start sub_8128DB4
-sub_8128DB4: @ 8128DB4
- push {lr}
- ldr r0, =gMain
- ldrh r0, [r0, 0x2C]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- beq _08128DD8
- cmp r1, 0x80
- beq _08128DD8
- cmp r1, 0x20
- beq _08128DD8
- cmp r1, 0x10
- beq _08128DD8
- movs r0, 0
- b _08128DDA
- .pool
-_08128DD8:
- movs r0, 0x1
-_08128DDA:
- pop {r1}
- bx r1
- thumb_func_end sub_8128DB4
-
- thumb_func_start sub_8128DE0
-sub_8128DE0: @ 8128DE0
- push {r4,lr}
- ldr r1, =gUnknown_0203AA3A
- movs r0, 0
- strb r0, [r1]
- ldr r4, =gSprites
- ldr r3, =gUnknown_0203AA38
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r2, 0
- strh r2, [r0, 0x32]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x34]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128DE0
-
- thumb_func_start sub_8128E18
-sub_8128E18: @ 8128E18
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r2, r0, 24
- mov r8, r2
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldr r5, =gSprites
- ldr r3, =gUnknown_0203AA38
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x36
- ldrsh r6, [r0, r1]
- cmp r6, 0
- beq _08128E46
- b _08128F66
-_08128E46:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _08128E68
- ldr r0, =gUnknown_085A72D4
- movs r3, 0x18
- ldrsh r1, [r4, r3]
- lsls r1, 3
- b _08128E76
- .pool
-_08128E68:
- cmp r0, 0x2
- bne _08128E88
- ldr r0, =gUnknown_085A72D4
- movs r3, 0x18
- ldrsh r1, [r4, r3]
- lsls r1, 3
- adds r0, 0x4
-_08128E76:
- adds r1, r0
- ldr r1, [r1]
- adds r0, r2, 0
- bl _call_via_r1
- b _08128FBA
- .pool
-_08128E88:
- ldr r2, =gMain
- ldrh r1, [r2, 0x2C]
- movs r7, 0xF0
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0x40
- bne _08128EBC
- ldr r1, =gUnknown_0203AA3A
- movs r0, 0x1
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r6, [r0, 0x32]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, =0x0000fffe
- strh r1, [r0, 0x34]
- ldrh r0, [r4, 0x2]
- subs r0, 0x1
- strh r0, [r4, 0x2]
-_08128EBC:
- ldrh r1, [r2, 0x2C]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0x80
- bne _08128EEC
- ldr r1, =gUnknown_0203AA3A
- movs r0, 0x2
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r6, [r0, 0x32]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x2
- strh r1, [r0, 0x34]
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
-_08128EEC:
- ldrh r1, [r2, 0x2C]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0x20
- bne _08128F1C
- ldr r1, =gUnknown_0203AA3A
- movs r0, 0x3
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, =0x0000fffe
- strh r1, [r0, 0x32]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r6, [r0, 0x34]
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
-_08128F1C:
- ldrh r1, [r2, 0x2C]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0x10
- bne _08128F4C
- ldr r1, =gUnknown_0203AA3A
- movs r0, 0x4
- strb r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x2
- strh r1, [r0, 0x32]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r6, [r0, 0x34]
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_08128F4C:
- bl sub_8128DB4
- lsls r0, 24
- cmp r0, 0
- beq _08128F62
- mov r0, r8
- bl sub_8128D10
- lsls r0, 24
- cmp r0, 0
- bne _08128F66
-_08128F62:
- bl sub_8128DE0
-_08128F66:
- ldr r0, =gUnknown_0203AA3A
- ldrb r0, [r0]
- cmp r0, 0
- beq _08128F94
- ldr r3, =gSprites
- ldr r2, =gUnknown_0203AA38
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x36]
- adds r1, 0x1
- strh r1, [r0, 0x36]
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r2, [r1, 0x36]
- movs r0, 0x7
- ands r0, r2
- strh r0, [r1, 0x36]
-_08128F94:
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08128FBA
- ldr r3, =gMain
- ldrh r1, [r3, 0x2E]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08128FAC
- strh r2, [r4, 0x14]
-_08128FAC:
- ldrh r1, [r3, 0x2E]
- movs r2, 0x2
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08128FBA
- strh r2, [r4, 0x14]
-_08128FBA:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128E18
-
- thumb_func_start sub_8128FD8
-sub_8128FD8: @ 8128FD8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0x1
- bl sub_8197434
- ldr r2, =gSprites
- ldr r0, =gUnknown_0203AA38
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r2, 0
- strh r2, [r0, 0x3C]
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0x1C]
- ldr r1, =sub_8128E18
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8128FD8
-
- thumb_func_start sub_8129020
-sub_8129020: @ 8129020
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0812903A
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08129040
-_0812903A:
- adds r0, r2, 0
- bl sub_8128FD8
-_08129040:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129020
-
- thumb_func_start sub_8129048
-sub_8129048: @ 8129048
- push {lr}
- sub sp, 0x4
- adds r1, r0, 0
- mov r2, sp
- movs r0, 0
- strh r0, [r2]
- ldr r2, =0x01000452
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129048
-
- thumb_func_start sub_8129068
-sub_8129068: @ 8129068
- push {lr}
- adds r2, r0, 0
- lsls r1, 16
- ldr r0, =gTilesetPointer_SecretBase
- ldr r0, [r0]
- lsrs r1, 11
- ldr r0, [r0, 0x8]
- adds r0, r1
- adds r1, r2, 0
- movs r2, 0x8
- bl CpuFastSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129068
-
- thumb_func_start sub_8129088
-sub_8129088: @ 8129088
- push {r4-r7,lr}
- sub sp, 0x20
- adds r7, r0, 0
- lsls r1, 16
- lsrs r2, r1, 16
- lsrs r4, r1, 26
- adds r5, r4, 0
- cmp r2, 0
- beq _0812909E
- ldr r0, =0x000003ff
- ands r2, r0
-_0812909E:
- ldr r0, =gTilesetPointer_SecretBase
- ldr r0, [r0]
- lsls r1, r2, 5
- ldr r0, [r0, 0x4]
- adds r0, r1
- mov r1, sp
- movs r2, 0x8
- bl CpuFastSet
- cmp r4, 0x1
- beq _081290DE
- cmp r4, 0x1
- bgt _081290C8
- cmp r4, 0
- beq _081290D2
- b _0812919A
- .pool
-_081290C8:
- cmp r5, 0x2
- beq _0812913E
- cmp r5, 0x3
- beq _08129176
- b _0812919A
-_081290D2:
- mov r0, sp
- adds r1, r7, 0
- movs r2, 0x8
- bl CpuFastSet
- b _0812919A
-_081290DE:
- movs r5, 0
- movs r6, 0xF
-_081290E2:
- lsls r4, r5, 2
- adds r4, r7
- adds r5, 0x1
- lsls r3, r5, 2
- subs r0, r3, 0x1
- add r0, sp
- ldrb r2, [r0]
- lsrs r1, r2, 4
- adds r0, r6, 0
- ands r0, r2
- lsls r0, 4
- adds r1, r0
- strb r1, [r4]
- subs r0, r3, 0x2
- add r0, sp
- ldrb r2, [r0]
- lsrs r1, r2, 4
- adds r0, r6, 0
- ands r0, r2
- lsls r0, 4
- adds r1, r0
- strb r1, [r4, 0x1]
- subs r0, r3, 0x3
- add r0, sp
- ldrb r2, [r0]
- lsrs r1, r2, 4
- adds r0, r6, 0
- ands r0, r2
- lsls r0, 4
- adds r1, r0
- strb r1, [r4, 0x2]
- subs r3, 0x4
- mov r1, sp
- adds r0, r1, r3
- ldrb r2, [r0]
- lsrs r1, r2, 4
- adds r0, r6, 0
- ands r0, r2
- lsls r0, 4
- adds r1, r0
- strb r1, [r4, 0x3]
- lsls r5, 16
- lsrs r5, 16
- cmp r5, 0x7
- bls _081290E2
- b _0812919A
-_0812913E:
- movs r5, 0
- movs r3, 0x7
-_08129142:
- lsls r2, r5, 2
- adds r2, r7
- subs r1, r3, r5
- lsls r1, 2
- mov r4, sp
- adds r0, r4, r1
- ldrb r0, [r0]
- strb r0, [r2]
- adds r0, r1, 0x1
- add r0, sp
- ldrb r0, [r0]
- strb r0, [r2, 0x1]
- adds r0, r1, 0x2
- add r0, sp
- ldrb r0, [r0]
- strb r0, [r2, 0x2]
- adds r1, 0x3
- adds r0, r4, r1
- ldrb r0, [r0]
- strb r0, [r2, 0x3]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x7
- bls _08129142
- b _0812919A
-_08129176:
- movs r5, 0
- movs r4, 0x1F
- movs r6, 0xF
-_0812917C:
- adds r3, r7, r5
- subs r0, r4, r5
- add r0, sp
- ldrb r2, [r0]
- lsrs r1, r2, 4
- adds r0, r6, 0
- ands r0, r2
- lsls r0, 4
- adds r1, r0
- strb r1, [r3]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1F
- bls _0812917C
-_0812919A:
- add sp, 0x20
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8129088
-
- thumb_func_start sub_81291A4
-sub_81291A4: @ 81291A4
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r4, 0
-_081291AA:
- lsls r0, r4, 5
- adds r0, 0x84
- adds r0, r5, r0
- lsls r2, r4, 1
- adds r1, r5, 0x4
- adds r1, r2
- ldrh r1, [r1]
- bl sub_8129088
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3F
- bls _081291AA
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81291A4
-
- thumb_func_start sub_81291CC
-sub_81291CC: @ 81291CC
- lsls r0, 16
- ldr r1, =gTilesetPointer_SecretBaseRedCave
- ldr r1, [r1]
- ldr r1, [r1, 0xC]
- lsrs r0, 15
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, =0x00000fff
- ands r0, r1
- bx lr
- .pool
- thumb_func_end sub_81291CC
-
- thumb_func_start sub_81291E8
-sub_81291E8: @ 81291E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- ldr r0, [r0]
- ldrb r0, [r0, 0x12]
- movs r6, 0
- ldr r1, =gUnknown_085A71B0
- lsls r5, r0, 4
- adds r0, r5, r1
- ldrb r0, [r0, 0xC]
- cmp r6, r0
- bcs _0812924C
- adds r7, r1, 0
-_08129204:
- mov r4, r8
- ldm r4!, {r1}
- adds r0, r7, 0x4
- adds r0, r5, r0
- ldr r0, [r0]
- adds r0, r6
- ldrb r0, [r0]
- ldr r1, [r1, 0x1C]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- adds r1, r7, 0
- adds r1, 0x8
- adds r1, r5, r1
- ldr r1, [r1]
- adds r1, r6
- lsls r0, 3
- ldrb r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bl sub_81291CC
- adds r2, r5, r7
- ldr r1, [r2]
- adds r1, r6
- ldrb r1, [r1]
- lsls r1, 1
- adds r4, r1
- strh r0, [r4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r2, [r2, 0xC]
- cmp r6, r2
- bcc _08129204
-_0812924C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81291E8
-
- thumb_func_start sub_812925C
-sub_812925C: @ 812925C
- push {r4,r5,lr}
- lsls r0, 24
- ldr r3, =gUnknown_0203AA3C
- movs r1, 0
- strb r1, [r3]
- ldrb r2, [r3, 0x1]
- subs r1, 0x4
- ands r1, r2
- movs r5, 0xD
- negs r5, r5
- ands r1, r5
- movs r2, 0x11
- negs r2, r2
- ands r1, r2
- subs r2, 0x10
- ands r1, r2
- strb r1, [r3, 0x1]
- ldr r1, =gUnknown_085A7250
- lsrs r0, 22
- adds r0, r1
- ldrb r1, [r0]
- movs r4, 0x3F
- lsls r1, 6
- strb r1, [r3, 0x1]
- ldrh r2, [r3, 0x2]
- ldr r1, =0xfffffe00
- ands r1, r2
- strh r1, [r3, 0x2]
- ldrb r2, [r3, 0x3]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r2
- strb r1, [r3, 0x3]
- ldrb r0, [r0, 0x1]
- lsls r0, 6
- ands r4, r1
- orrs r4, r0
- strb r4, [r3, 0x3]
- ldrh r1, [r3, 0x4]
- ldr r0, =0xfffffc00
- ands r0, r1
- strh r0, [r3, 0x4]
- ldrb r0, [r3, 0x5]
- ands r5, r0
- movs r0, 0xF
- ands r5, r0
- strb r5, [r3, 0x5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812925C
-
- thumb_func_start sub_81292D0
-sub_81292D0: @ 81292D0
- movs r1, 0
- strh r1, [r0, 0x32]
- strh r1, [r0, 0x34]
- strh r1, [r0, 0x36]
- strh r1, [r0, 0x38]
- strh r1, [r0, 0x3A]
- strh r1, [r0, 0x3C]
- ldr r1, =sub_81292E8
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_81292D0
-
- thumb_func_start sub_81292E8
-sub_81292E8: @ 81292E8
- push {lr}
- adds r2, r0, 0
- movs r1, 0x3C
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _08129322
- movs r1, 0x3A
- ldrsh r0, [r2, r1]
- cmp r0, 0xE
- bgt _0812930A
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- b _08129314
-_0812930A:
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
-_08129314:
- strb r0, [r3]
- ldrh r0, [r2, 0x3A]
- adds r0, 0x1
- movs r1, 0x1F
- ands r0, r1
- strh r0, [r2, 0x3A]
- b _0812932E
-_08129322:
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_0812932E:
- pop {r0}
- bx r0
- thumb_func_end sub_81292E8
-
- thumb_func_start gpu_pal_decompress_alloc_tag_and_upload
-gpu_pal_decompress_alloc_tag_and_upload: @ 8129334
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- bl sub_8129048
- lsls r4, 5
- ldr r0, =gDecorations
- adds r4, r0
- str r4, [r5]
- ldrb r0, [r4, 0x11]
- cmp r0, 0x4
- beq _081293B4
- ldr r0, =0x00000be5
- bl FreeSpritePaletteByTag
- adds r0, r5, 0
- bl sub_81291E8
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- bl sub_812925C
- adds r0, r5, 0
- bl sub_81291A4
- ldr r1, =0x00000884
- adds r0, r5, r1
- ldr r1, =gTilesetPointer_SecretBaseRedCave
- ldr r2, [r1]
- ldr r1, [r5]
- ldr r1, [r1, 0x1C]
- ldrh r1, [r1]
- ldr r2, [r2, 0xC]
- lsls r1, 4
- adds r1, r2
- ldrh r1, [r1, 0xE]
- lsrs r1, 12
- bl sub_8129068
- ldr r0, =gUnknown_085A72BC
- bl LoadSpritePalette
- ldr r0, =gUnknown_085A728C
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- b _081293C6
- .pool
-_081293B4:
- ldr r0, [r4, 0x1C]
- ldrh r0, [r0]
- ldr r1, =SpriteCallbackDummy
- movs r2, 0x1
- str r2, [sp]
- movs r2, 0
- movs r3, 0
- bl AddPseudoFieldObject
-_081293C6:
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end gpu_pal_decompress_alloc_tag_and_upload
-
- thumb_func_start AddDecorationIconObjectFromIconTable
-@ u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decorationId)
-AddDecorationIconObjectFromIconTable: @ 81293D8
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 24
- lsrs r5, r2, 24
- bl AllocItemIconTemporaryBuffers
- lsls r0, 24
- cmp r0, 0
- beq _08129490
- adds r0, r5, 0
- movs r1, 0
- bl GetDecorationIconPicOrPalette
- ldr r4, =gUnknown_0203CEBC
- ldr r1, [r4]
- bl LZDecompressWram
- ldr r0, [r4]
- ldr r4, =gUnknown_0203CEC0
- ldr r1, [r4]
- bl CopyItemIconPicTo4x4Buffer
- ldr r0, [r4]
- str r0, [sp]
- ldr r4, =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r4
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- lsls r2, r7, 16
- ldr r1, =0x0000ffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- adds r0, r5, 0
- movs r1, 0x1
- bl GetDecorationIconPicOrPalette
- str r0, [sp, 0x8]
- add r0, sp, 0x8
- ldr r1, [r0, 0x4]
- ands r1, r4
- orrs r1, r6
- str r1, [r0, 0x4]
- bl LoadCompressedObjectPalette
- movs r0, 0x18
- bl Alloc
- adds r5, r0, 0
- adds r1, r5, 0
- ldr r0, =gUnknown_08614FF4
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- strh r7, [r5]
- strh r6, [r5, 0x2]
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl FreeItemIconTemporaryBuffers
- adds r0, r5, 0
- bl Free
- adds r0, r4, 0
- b _08129492
- .pool
-_08129490:
- movs r0, 0x40
-_08129492:
- add sp, 0x10
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end AddDecorationIconObjectFromIconTable
-
- thumb_func_start GetDecorationIconPicOrPalette
-@ u32 GetDecorationIconPicOrPalette(u16 decorationId, u8 which)
-GetDecorationIconPicOrPalette: @ 812949C
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 24
- lsrs r0, r1, 24
- cmp r3, 0x78
- bls _081294AC
- movs r3, 0
-_081294AC:
- ldr r2, =gUnknown_085A6BE8
- lsls r0, 2
- lsls r1, r3, 3
- adds r0, r1
- adds r0, r2
- ldr r0, [r0]
- pop {r1}
- bx r1
- .pool
- thumb_func_end GetDecorationIconPicOrPalette
-
- thumb_func_start AddDecorationIconObjectFromFieldObject
-@ u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decorationId)
-AddDecorationIconObjectFromFieldObject: @ 81294C0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r4, r2, 0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r4, 24
- lsrs r4, 24
- ldr r6, =gUnknown_0203A190
- adds r0, r6, 0
- bl sub_8129048
- lsls r4, 5
- ldr r0, =gDecorations
- adds r4, r0
- str r4, [r6]
- ldrb r0, [r4, 0x11]
- cmp r0, 0x4
- beq _081295A4
- adds r0, r6, 0
- bl sub_81291E8
- ldr r0, [r6]
- ldrb r0, [r0, 0x12]
- bl sub_812925C
- adds r0, r6, 0
- bl sub_81291A4
- ldr r0, =0x00000884
- adds r5, r6, r0
- ldr r0, =gTilesetPointer_SecretBaseRedCave
- ldr r1, [r0]
- ldr r0, [r6]
- ldr r0, [r0, 0x1C]
- ldrh r0, [r0]
- ldr r1, [r1, 0xC]
- lsls r0, 4
- adds r0, r1
- ldrh r1, [r0, 0xE]
- lsrs r1, 12
- adds r0, r5, 0
- bl sub_8129068
- adds r0, r6, 0
- adds r0, 0x84
- str r0, [sp, 0x4]
- ldr r1, =gUnknown_085A72F4
- ldr r0, [r6]
- ldrb r0, [r0, 0x12]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 21
- ldr r4, =0xffff0000
- mov r2, r8
- lsls r1, r2, 16
- lsrs r0, 16
- orrs r0, r1
- str r0, [sp, 0x8]
- add r0, sp, 0x4
- bl LoadSpriteSheet
- str r5, [sp, 0xC]
- add r0, sp, 0xC
- ldr r1, [r0, 0x4]
- ands r1, r4
- orrs r1, r7
- str r1, [r0, 0x4]
- bl LoadSpritePalette
- movs r0, 0x18
- bl Alloc
- adds r4, r0, 0
- adds r1, r4, 0
- ldr r0, =gUnknown_085A72A4
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- ldm r0!, {r2,r3,r5}
- stm r1!, {r2,r3,r5}
- mov r3, r8
- strh r3, [r4]
- strh r7, [r4, 0x2]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- bl Free
- b _081295BA
- .pool
-_081295A4:
- ldr r0, [r4, 0x1C]
- ldrh r0, [r0]
- ldr r1, =SpriteCallbackDummy
- movs r2, 0x1
- str r2, [sp]
- movs r2, 0
- movs r3, 0
- bl AddPseudoFieldObject
- lsls r0, 24
- lsrs r5, r0, 24
-_081295BA:
- adds r0, r5, 0
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end AddDecorationIconObjectFromFieldObject
-
- thumb_func_start AddDecorationIconObject
-@ u8 AddDecorationIconObject(u8 decorationId, u16 x, u16 y, u8 priority, u16 tilesTag, u16 paletteTag)
-AddDecorationIconObject: @ 81295CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- ldr r5, [sp, 0x28]
- lsls r0, 24
- lsrs r6, r0, 24
- mov r12, r6
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- mov r9, r8
- lsls r2, 16
- lsrs r7, r2, 16
- mov r10, r7
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp]
- lsls r4, 16
- lsrs r4, 16
- adds r3, r4, 0
- lsls r5, 16
- lsrs r5, 16
- adds r2, r5, 0
- cmp r6, 0x78
- bls _08129634
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl AddDecorationIconObjectFromIconTable
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _08129696
- ldr r2, =gSprites
- lsls r3, r4, 4
- adds r1, r3, r4
- lsls r1, 2
- adds r1, r2
- mov r5, r8
- lsls r0, r5, 16
- asrs r0, 16
- adds r0, 0x4
- strh r0, [r1, 0x24]
- lsls r0, r7, 16
- b _081296B2
- .pool
-_08129634:
- ldr r0, =gUnknown_085A6BE8
- lsls r1, r6, 3
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _08129684
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl AddDecorationIconObjectFromFieldObject
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _08129696
- ldr r1, =gSprites
- lsls r2, r4, 4
- adds r0, r2, r4
- lsls r0, 2
- adds r5, r0, r1
- mov r0, r8
- strh r0, [r5, 0x24]
- adds r0, r6, 0
- subs r0, 0x2A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08129680
- lsls r0, r7, 16
- asrs r0, 16
- subs r0, 0x4
- strh r0, [r5, 0x26]
- b _081296BC
- .pool
-_08129680:
- strh r7, [r5, 0x26]
- b _081296BC
-_08129684:
- adds r0, r3, 0
- adds r1, r2, 0
- mov r2, r12
- bl AddDecorationIconObjectFromIconTable
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- bne _0812969A
-_08129696:
- movs r0, 0x40
- b _081296D8
-_0812969A:
- ldr r2, =gSprites
- lsls r3, r4, 4
- adds r1, r3, r4
- lsls r1, 2
- adds r1, r2
- mov r5, r9
- lsls r0, r5, 16
- asrs r0, 16
- adds r0, 0x4
- strh r0, [r1, 0x24]
- mov r5, r10
- lsls r0, r5, 16
-_081296B2:
- asrs r0, 16
- adds r0, 0x4
- strh r0, [r1, 0x26]
- adds r1, r2, 0
- adds r2, r3, 0
-_081296BC:
- adds r2, r4
- lsls r2, 2
- adds r2, r1
- movs r0, 0x3
- ldr r1, [sp]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- adds r0, r4, 0
-_081296D8:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end AddDecorationIconObject
-
- thumb_func_start sub_81296EC
-sub_81296EC: @ 81296EC
- lsls r0, 24
- lsrs r0, 24
- ldr r3, =gUnknown_0203A17C
- ldr r1, [r3]
- adds r1, r0
- movs r2, 0
- strb r2, [r1]
- ldr r1, [r3, 0x4]
- adds r1, r0
- strb r2, [r1]
- bx lr
- .pool
- thumb_func_end sub_81296EC
-
- thumb_func_start sub_8129708
-sub_8129708: @ 8129708
- push {r4-r6,lr}
- ldr r6, =gSpecialVar_0x8005
- movs r0, 0
- strh r0, [r6]
- ldr r2, =gScriptResult
- strh r0, [r2]
- ldr r4, =gSpecialVar_0x8004
- ldr r1, =gUnknown_0203AAC4
- ldrh r0, [r4]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08129744
- movs r0, 0x1
- strh r0, [r2]
- b _08129796
- .pool
-_08129738:
- ldr r1, =gSpecialVar_0x8006
- ldrb r0, [r2]
- strh r0, [r1]
- b _08129796
- .pool
-_08129744:
- ldr r3, =gDecorations
- ldr r2, =gUnknown_0203A17C
- ldr r1, =gUnknown_0203AA44
- ldrh r0, [r4]
- lsls r0, 3
- adds r4, r0, r1
- ldrb r1, [r4]
- ldr r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 5
- adds r0, r3
- ldrb r0, [r0, 0x11]
- cmp r0, 0x4
- bne _08129796
- ldrh r0, [r4, 0x4]
- strh r0, [r6]
- ldrb r0, [r4]
- bl sub_81296EC
- movs r1, 0
- ldr r0, =gMapHeader
- ldr r0, [r0, 0x4]
- ldrb r2, [r0]
- cmp r1, r2
- bcs _08129796
- ldr r5, [r0, 0x4]
- ldrh r4, [r6]
- adds r3, r2, 0
-_0812977E:
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r2, r0, r5
- ldrh r0, [r2, 0x14]
- cmp r0, r4
- beq _08129738
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r3
- bcc _0812977E
-_08129796:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129708
-
- thumb_func_start sub_81297AC
-sub_81297AC: @ 81297AC
- push {r4-r6,lr}
- movs r2, 0
- ldr r0, =gMapHeader
- ldr r0, [r0, 0x4]
- ldrb r1, [r0]
- cmp r2, r1
- bcs _081297F0
- adds r3, r0, 0
- ldr r5, [r3, 0x4]
- ldr r0, =gSpecialVar_0x8004
- ldrh r4, [r0]
- ldr r6, =gSpecialVar_0x8005
-_081297C4:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r5
- ldrh r0, [r1, 0x14]
- cmp r0, r4
- bne _081297E4
- ldrb r0, [r1]
- strh r0, [r6]
- b _081297F0
- .pool
-_081297E4:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r3]
- cmp r2, r0
- bcc _081297C4
-_081297F0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81297AC
-
- thumb_func_start sub_81297F8
-sub_81297F8: @ 81297F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r6, 0
- b _081298BE
-_08129808:
- ldr r3, =gUnknown_0203AA44
- lsls r5, r6, 3
- adds r4, r5, r3
- ldrb r1, [r4]
- ldr r2, =gUnknown_0203A17C
- ldr r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 5
- ldr r7, =gDecorations
- adds r0, r7
- ldrb r2, [r0, 0x11]
- ldr r7, =gUnknown_0203A17C
- ldr r0, [r7, 0x4]
- adds r0, r1
- ldrb r0, [r0]
- lsrs r1, r0, 4
- mov r8, r1
- movs r7, 0xF
- adds r1, r7, 0
- ands r1, r0
- str r1, [sp]
- adds r7, r5, 0
- adds r6, 0x1
- str r6, [sp, 0x4]
- cmp r2, 0x4
- beq _081298B8
- movs r6, 0
- ldrb r4, [r4, 0x2]
- cmp r6, r4
- bcs _081298AE
-_08129846:
- movs r4, 0
- adds r0, r5, r3
- adds r2, r6, 0x1
- mov r10, r2
- ldrb r0, [r0, 0x1]
- cmp r4, r0
- bcs _0812989C
- ldr r3, =gUnknown_0203AA44
- adds r3, r7
- mov r9, r3
- subs r5, r6, 0x7
- str r5, [sp, 0x8]
-_0812985E:
- adds r0, r4, 0x7
- add r0, r8
- ldr r1, =gMapHeader
- ldr r3, [r1]
- ldr r1, [sp]
- subs r2, r1, r6
- ldr r1, [r3]
- muls r2, r1
- mov r5, r8
- adds r1, r5, r4
- adds r1, r2
- ldr r2, [r3, 0xC]
- lsls r1, 1
- adds r1, r2
- ldrh r1, [r1]
- movs r3, 0xC0
- lsls r3, 6
- adds r2, r3, 0
- orrs r2, r1
- ldr r5, [sp]
- ldr r3, [sp, 0x8]
- subs r1, r5, r3
- bl MapGridSetMetatileEntryAt
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- mov r5, r9
- ldrb r5, [r5, 0x1]
- cmp r4, r5
- bcc _0812985E
-_0812989C:
- mov r1, r10
- lsls r0, r1, 24
- lsrs r6, r0, 24
- ldr r3, =gUnknown_0203AA44
- adds r5, r7, 0
- adds r0, r7, r3
- ldrb r0, [r0, 0x2]
- cmp r6, r0
- bcc _08129846
-_081298AE:
- ldr r2, =gUnknown_0203AA44
- adds r0, r7, r2
- ldrb r0, [r0]
- bl sub_81296EC
-_081298B8:
- ldr r3, [sp, 0x4]
- lsls r0, r3, 24
- lsrs r6, r0, 24
-_081298BE:
- ldr r0, =gUnknown_0203AAC4
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08129808
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81297F8
-
- thumb_func_start sub_81298EC
-sub_81298EC: @ 81298EC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08129928
- cmp r0, 0x1
- bgt _08129914
- cmp r0, 0
- beq _0812991E
- b _08129994
- .pool
-_08129914:
- cmp r0, 0x2
- beq _08129954
- cmp r0, 0x3
- beq _08129968
- b _08129994
-_0812991E:
- bl sub_81297F8
- movs r0, 0x1
- strh r0, [r4, 0xC]
- b _08129994
-_08129928:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08129994
- bl DrawWholeMapView
- ldr r0, =gUnknown_08275D2E
- bl ScriptContext1_SetupScript
- movs r0, 0
- movs r1, 0x1
- bl sub_8197434
- movs r0, 0x2
- strh r0, [r4, 0xC]
- b _08129994
- .pool
-_08129954:
- bl ScriptContext2_Enable
- adds r0, r5, 0
- bl sub_8127814
- bl pal_fill_black
- movs r0, 0x3
- strh r0, [r4, 0xC]
- b _08129994
-_08129968:
- bl sub_80ABDFC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08129994
- ldr r4, =gStringVar4
- ldr r1, =gText_DecorationReturnedToPC
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8129D64
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- cmp r0, 0x56
- bne _08129994
- bl sub_80EE104
-_08129994:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81298EC
-
- thumb_func_start sub_81299AC
-sub_81299AC: @ 81299AC
- push {lr}
- movs r1, 0
- ldr r0, =gUnknown_0203A17C
- ldrb r2, [r0, 0x8]
- cmp r1, r2
- bcs _081299D6
- ldr r3, [r0]
-_081299BA:
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _081299CC
- movs r0, 0x1
- b _081299D8
- .pool
-_081299CC:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r2
- bcc _081299BA
-_081299D6:
- movs r0, 0
-_081299D8:
- pop {r1}
- bx r1
- thumb_func_end sub_81299AC
-
- thumb_func_start SetUpPuttingAwayDecorationPlayerAvatar
-SetUpPuttingAwayDecorationPlayerAvatar: @ 81299DC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- bl player_get_direction_lower_nybble
- ldr r3, =gUnknown_0203AA38
- ldr r2, =gSprites
- ldr r4, =gUnknown_03005DD0
- ldr r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strb r0, [r3]
- bl sub_812A39C
- ldr r0, =gUnknown_085A7404
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- str r0, [r4, 0x4]
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _08129A3C
- ldr r1, =SpriteCallbackDummy
- str r0, [sp]
- movs r0, 0xC1
- b _08129A44
- .pool
-_08129A3C:
- ldr r1, =SpriteCallbackDummy
- movs r0, 0
- str r0, [sp]
- movs r0, 0xC2
-_08129A44:
- movs r2, 0x88
- movs r3, 0x48
- bl AddPseudoFieldObject
- ldr r1, =gUnknown_0203AA39
- strb r0, [r1]
- ldr r6, =gSprites
- ldr r0, =gUnknown_0203AA39
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x5]
- movs r4, 0xD
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- movs r2, 0x4
- mov r8, r2
- mov r2, r8
- orrs r0, r2
- strb r0, [r1, 0x5]
- ldr r5, =gUnknown_0203AA38
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- ldr r0, =gUnknown_03005DD0
- ldr r0, [r0, 0x4]
- strb r0, [r5]
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0, 0x5]
- ands r4, r1
- mov r1, r8
- orrs r4, r1
- strb r4, [r0, 0x5]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetUpPuttingAwayDecorationPlayerAvatar
-
- thumb_func_start sub_8129ABC
-sub_8129ABC: @ 8129ABC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08129B0C
- cmp r0, 0x1
- bgt _08129AE4
- cmp r0, 0
- beq _08129AEA
- b _08129B2E
- .pool
-_08129AE4:
- cmp r0, 0x2
- beq _08129B1A
- b _08129B2E
-_08129AEA:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08129B2E
- adds r0, r5, 0
- bl sub_8127ACC
- movs r0, 0x1
- strh r0, [r4, 0x4]
- strh r0, [r4, 0xC]
- strh r0, [r4, 0xA]
- b _08129B2E
- .pool
-_08129B0C:
- bl SetUpPuttingAwayDecorationPlayerAvatar
- bl pal_fill_black
- movs r0, 0x2
- strh r0, [r4, 0x4]
- b _08129B2E
-_08129B1A:
- bl sub_80ABDFC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08129B2E
- strh r0, [r4, 0x18]
- adds r0, r5, 0
- bl sub_8129B34
-_08129B2E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8129ABC
-
- thumb_func_start sub_8129B34
-sub_8129B34: @ 8129B34
- push {r4-r6,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0
- movs r1, 0x1
- bl sub_8197434
- ldr r4, =gSprites
- ldr r3, =gUnknown_0203AA38
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r6, 0
- strh r6, [r0, 0x3C]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_812A36C
- str r1, [r0]
- ldr r2, =gUnknown_0203AA39
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x88
- strh r1, [r0, 0x20]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x48
- strh r1, [r0, 0x22]
- ldr r1, =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r6, [r0, 0x1C]
- ldr r1, =sub_8128E18
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129B34
-
- thumb_func_start sub_8129BCC
-sub_8129BCC: @ 8129BCC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- bl sub_8128DE0
- adds r0, r4, 0
- bl sub_8129C74
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129BCC
-
- thumb_func_start sub_8129BF8
-sub_8129BF8: @ 8129BF8
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x1C]
- bl sub_8128DE0
- ldr r3, =gSprites
- ldr r5, =gUnknown_0203AA38
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, 0x1C
- adds r0, r3
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- ldr r5, =gStringVar4
- ldr r1, =gText_StopPuttingAwayDecorations
- adds r0, r5, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_812A1F0
- adds r0, r4, 0
- adds r1, r5, 0
- bl DisplayItemMessageOnField
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129BF8
-
- thumb_func_start sub_8129C74
-sub_8129C74: @ 8129C74
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r5, 0
- bl sub_812A0E8
- ldr r0, =gUnknown_0203AAC4
- ldrb r0, [r0]
- cmp r0, 0
- beq _08129CA8
- ldr r4, =gStringVar4
- ldr r1, =gText_ReturnDecorationToPC
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_812A1A0
- b _08129D14
- .pool
-_08129CA8:
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r1, r0
- movs r2, 0
- ldrsh r0, [r1, r2]
- movs r2, 0x2
- ldrsh r1, [r1, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_8089288
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08129CDE
- adds r0, r4, 0
- bl sub_8089404
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08129D3C
-_08129CDE:
- ldr r3, =gSprites
- ldr r4, =gUnknown_0203AA38
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, 0x1C
- adds r0, r3
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- ldr r4, =gStringVar4
- ldr r1, =gText_StopPuttingAwayDecorations
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_812A1F0
-_08129D14:
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _08129D50
- .pool
-_08129D3C:
- ldr r4, =gStringVar4
- ldr r1, =gText_NoDecorationHere
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8129D64
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
-_08129D50:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129C74
-
- thumb_func_start sub_8129D64
-sub_8129D64: @ 8129D64
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08129D7E
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08129D84
-_08129D7E:
- adds r0, r2, 0
- bl sub_8129B34
-_08129D84:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129D64
-
- thumb_func_start sub_8129D8C
-sub_8129D8C: @ 8129D8C
- push {lr}
- adds r2, r1, 0
- lsls r0, 24
- ldr r1, =gDecorations
- lsrs r0, 19
- adds r0, r1
- ldrb r1, [r0, 0x12]
- cmp r1, 0
- bne _08129DA8
- movs r0, 0x1
- strb r0, [r2, 0x1]
- b _08129E06
- .pool
-_08129DA8:
- cmp r1, 0x1
- bne _08129DB4
- movs r0, 0x2
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- b _08129E08
-_08129DB4:
- cmp r1, 0x2
- bne _08129DC0
- movs r0, 0x3
- strb r0, [r2, 0x1]
- movs r0, 0x1
- b _08129E06
-_08129DC0:
- cmp r1, 0x3
- bne _08129DC8
- movs r0, 0x4
- b _08129E02
-_08129DC8:
- cmp r1, 0x4
- bne _08129DD2
- movs r0, 0x2
- strb r0, [r2, 0x1]
- b _08129E06
-_08129DD2:
- cmp r1, 0x5
- bne _08129DDA
- movs r0, 0x1
- b _08129E02
-_08129DDA:
- cmp r1, 0x6
- bne _08129DE6
- movs r0, 0x1
- strb r0, [r2, 0x1]
- movs r0, 0x3
- b _08129E06
-_08129DE6:
- cmp r1, 0x7
- bne _08129DF2
- movs r0, 0x2
- strb r0, [r2, 0x1]
- movs r0, 0x4
- b _08129E06
-_08129DF2:
- cmp r1, 0x8
- bne _08129DFC
- movs r0, 0x3
- strb r0, [r2, 0x1]
- b _08129E06
-_08129DFC:
- cmp r1, 0x9
- bne _08129E08
- movs r0, 0x3
-_08129E02:
- strb r0, [r2, 0x1]
- movs r0, 0x2
-_08129E06:
- strb r0, [r2, 0x2]
-_08129E08:
- pop {r0}
- bx r0
- thumb_func_end sub_8129D8C
-
- thumb_func_start sub_8129E0C
-sub_8129E0C: @ 8129E0C
- push {r4-r6,lr}
- lsls r0, 24
- lsls r1, 24
- ldr r5, =gSprites
- ldr r6, =gUnknown_0203AA38
- ldrb r3, [r6]
- lsls r2, r3, 4
- adds r2, r3
- lsls r2, 2
- adds r2, r5
- adds r2, 0x3E
- ldrb r3, [r2]
- movs r4, 0x4
- orrs r3, r4
- strb r3, [r2]
- ldrb r3, [r6]
- lsls r2, r3, 4
- adds r2, r3
- lsls r2, 2
- adds r3, r5, 0
- adds r3, 0x1C
- adds r2, r3
- ldr r3, =SpriteCallbackDummy
- str r3, [r2]
- ldr r4, =gUnknown_0203AA39
- ldrb r3, [r4]
- lsls r2, r3, 4
- adds r2, r3
- lsls r2, 2
- adds r2, r5
- lsrs r0, 20
- adds r0, 0x88
- strh r0, [r2, 0x20]
- ldrb r2, [r4]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r5
- lsrs r1, 20
- adds r1, 0x48
- strh r1, [r0, 0x22]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8129E0C
-
- thumb_func_start sub_8129E74
-sub_8129E74: @ 8129E74
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r2
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r3, =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r2, r3
- ldrb r0, [r2, 0x8]
- subs r0, 0x7
- lsls r0, 24
- lsrs r7, r0, 24
- ldrb r0, [r2, 0xA]
- subs r0, 0x7
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r2, =gUnknown_0203A17C
- ldr r0, [r2, 0x4]
- adds r0, r1
- ldrb r0, [r0]
- lsrs r5, r0, 4
- movs r6, 0xF
- ands r6, r0
- mov r0, r9
- ldrb r4, [r0, 0x2]
- ldr r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _08129ED4
- adds r0, r5, 0x7
- adds r1, r6, 0x7
- bl MapGridGetMetatileIdAt
- movs r1, 0xA3
- lsls r1, 2
- cmp r0, r1
- bne _08129ED4
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_08129ED4:
- cmp r7, r5
- bcc _08129F10
- mov r0, r9
- ldrb r2, [r0, 0x1]
- adds r0, r5, r2
- cmp r7, r0
- bge _08129F10
- subs r0, r6, r4
- cmp r8, r0
- ble _08129F10
- cmp r8, r6
- bhi _08129F10
- subs r0, r7, r5
- adds r0, 0x1
- subs r0, r2, r0
- lsls r0, 24
- lsrs r0, 24
- mov r2, r8
- subs r1, r6, r2
- lsls r1, 24
- lsrs r1, 24
- bl sub_8129E0C
- movs r0, 0x1
- b _08129F12
- .pool
-_08129F10:
- movs r0, 0
-_08129F12:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8129E74
-
- thumb_func_start sub_8129F20
-sub_8129F20: @ 8129F20
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r2, =gUnknown_0203A17C
- ldr r3, =gUnknown_0203AA44
- ldr r0, =gUnknown_0203AAC4
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r3
- ldrb r1, [r0]
- ldr r0, [r2, 0x4]
- adds r0, r1
- ldrb r0, [r0]
- lsrs r1, r0, 4
- mov r8, r1
- movs r6, 0xF
- ands r6, r0
- movs r4, 0
- ldr r7, =gSaveBlock1Ptr
- mov r9, r3
-_08129F4A:
- ldr r1, [r7]
- lsls r0, r4, 1
- adds r0, r4
- lsls r5, r0, 3
- adds r1, r5
- ldr r2, =0x00000c74
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, r8
- bne _08129FB0
- ldr r2, =0x00000c76
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, r6
- bne _08129FB0
- ldr r2, =0x00000c84
- adds r0, r1, r2
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08129FB0
- ldr r0, =gUnknown_0203AAC4
- ldrb r1, [r0]
- lsls r1, 3
- add r1, r9
- ldr r0, [r7]
- adds r0, r5
- ldr r2, =0x00000c84
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1, 0x4]
- b _08129FBA
- .pool
-_08129FB0:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3F
- bls _08129F4A
-_08129FBA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8129F20
-
- thumb_func_start sub_8129FC8
-sub_8129FC8: @ 8129FC8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r6, 0
- b _0812A02A
-_08129FD2:
- ldr r0, [r0]
- adds r1, r0, r6
- ldrb r0, [r1]
- cmp r0, 0
- beq _0812A024
- ldr r0, =gDecorations
- ldrb r2, [r1]
- lsls r1, r2, 5
- adds r1, r0
- ldrb r0, [r1, 0x11]
- cmp r0, 0x4
- bne _0812A024
- ldr r5, =gUnknown_0203AA44
- adds r0, r2, 0
- adds r1, r5, 0
- bl sub_8129D8C
- lsls r1, r6, 24
- lsrs r1, 24
- adds r0, r7, 0
- adds r2, r5, 0
- bl sub_8129E74
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bne _0812A024
- strb r6, [r5]
- bl sub_8129F20
- ldr r0, =gUnknown_0203AAC4
- strb r4, [r0]
- movs r0, 0x1
- b _0812A034
- .pool
-_0812A024:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_0812A02A:
- ldr r0, =gUnknown_0203A17C
- ldrb r1, [r0, 0x8]
- cmp r6, r1
- bcc _08129FD2
- movs r0, 0
-_0812A034:
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8129FC8
-
- thumb_func_start sub_812A040
-sub_812A040: @ 812A040
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- movs r4, 0
- ldr r7, =gUnknown_0203A17C
- ldrb r0, [r7, 0x8]
- cmp r4, r0
- bcs _0812A0C6
- adds r6, r7, 0
- ldr r5, =gUnknown_0203AAC4
-_0812A072:
- ldr r0, [r6]
- adds r0, r4
- ldrb r1, [r0]
- ldr r0, [r6, 0x4]
- adds r0, r4
- ldrb r0, [r0]
- lsrs r3, r0, 4
- movs r2, 0xF
- ands r2, r0
- cmp r1, 0
- beq _0812A0BA
- ldr r0, =gDecorations
- lsls r1, 5
- adds r1, r0
- ldrb r0, [r1, 0x11]
- cmp r0, 0x4
- bne _0812A0BA
- ldr r0, [sp]
- cmp r0, r3
- bhi _0812A0BA
- cmp r10, r2
- bhi _0812A0BA
- cmp r9, r3
- bcc _0812A0BA
- cmp r8, r2
- bcc _0812A0BA
- ldr r0, =gUnknown_0203AA44
- ldrb r1, [r5]
- lsls r1, 3
- adds r1, r0
- strb r4, [r1]
- bl sub_8129F20
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
-_0812A0BA:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r7, 0x8]
- cmp r4, r0
- bcc _0812A072
-_0812A0C6:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A040
-
- thumb_func_start sub_812A0E8
-sub_812A0E8: @ 812A0E8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, =gUnknown_0203AAC4
- movs r0, 0
- strb r0, [r4]
- adds r0, r6, 0
- bl sub_8129FC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812A18C
- movs r5, 0
- ldr r0, =gUnknown_0203A17C
- ldrb r1, [r0, 0x8]
- cmp r5, r1
- bcs _0812A15A
- adds r7, r4, 0
-_0812A10E:
- ldr r0, [r0]
- adds r0, r5
- ldrb r1, [r0]
- cmp r1, 0
- beq _0812A14C
- ldr r4, =gUnknown_0203AA44
- adds r0, r1, 0
- adds r1, r4, 0
- bl sub_8129D8C
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_8129E74
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812A14C
- strb r5, [r4]
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- b _0812A15A
- .pool
-_0812A14C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gUnknown_0203A17C
- ldrb r1, [r0, 0x8]
- cmp r5, r1
- bcc _0812A10E
-_0812A15A:
- ldr r0, =gUnknown_0203AAC4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0812A18C
- ldr r0, =gUnknown_0203A17C
- ldr r2, =gUnknown_0203AA44
- ldrb r1, [r2]
- ldr r0, [r0, 0x4]
- adds r0, r1
- ldrb r1, [r0]
- lsrs r0, r1, 4
- movs r3, 0xF
- ands r3, r1
- ldrb r1, [r2, 0x2]
- subs r1, r3, r1
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r2, 0x1]
- adds r2, r0
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- bl sub_812A040
-_0812A18C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A0E8
-
- thumb_func_start sub_812A1A0
-sub_812A1A0: @ 812A1A0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8197930
- ldr r1, =gUnknown_085A7348
- adds r0, r4, 0
- bl sub_8121F68
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A1A0
-
- thumb_func_start sub_812A1C0
-sub_812A1C0: @ 812A1C0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- ldr r1, =sub_81298EC
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A1C0
-
- thumb_func_start sub_812A1F0
-sub_812A1F0: @ 812A1F0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8197930
- ldr r1, =gUnknown_085A7350
- adds r0, r4, 0
- bl sub_8121F68
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A1F0
-
- thumb_func_start sub_812A210
-sub_812A210: @ 812A210
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- bl sub_8197434
- adds r0, r4, 0
- bl sub_812A22C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812A210
-
- thumb_func_start sub_812A22C
-sub_812A22C: @ 812A22C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- ldr r1, =sub_812A25C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A22C
-
- thumb_func_start sub_812A25C
-sub_812A25C: @ 812A25C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0812A280
- cmp r0, 0x1
- beq _0812A29C
- b _0812A2B2
- .pool
-_0812A280:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812A2B2
- adds r0, r4, 0
- bl sub_8127B04
- movs r0, 0x1
- strh r0, [r5, 0xC]
- b _0812A2B2
- .pool
-_0812A29C:
- bl sub_812A3C8
- ldr r0, =gFieldCallback
- ldr r1, =sub_812A334
- str r1, [r0]
- ldr r0, =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0812A2B2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A25C
-
- thumb_func_start sub_812A2C4
-sub_812A2C4: @ 812A2C4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r5, r1, 3
- ldr r6, =gTasks + 0x8
- adds r4, r5, r6
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0812A2FC
- cmp r0, 0x1
- bgt _0812A2EC
- cmp r0, 0
- beq _0812A2F6
- b _0812A32A
- .pool
-_0812A2EC:
- cmp r0, 0x2
- beq _0812A308
- cmp r0, 0x3
- beq _0812A314
- b _0812A32A
-_0812A2F6:
- bl sub_80E9578
- b _0812A30C
-_0812A2FC:
- ldr r0, =gUnknown_08275D0C
- bl ScriptContext1_SetupScript
- b _0812A30C
- .pool
-_0812A308:
- bl ScriptContext2_Enable
-_0812A30C:
- ldrh r0, [r4, 0x4]
- adds r0, 0x1
- strh r0, [r4, 0x4]
- b _0812A32A
-_0812A314:
- bl sub_80ABDFC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812A32A
- adds r0, r6, 0
- subs r0, 0x8
- adds r0, r5, r0
- ldr r1, =sub_8126B80
- str r1, [r0]
-_0812A32A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A2C4
-
- thumb_func_start sub_812A334
-sub_812A334: @ 812A334
- push {lr}
- bl pal_fill_black
- movs r0, 0
- movs r1, 0x1
- bl sub_81973C4
- bl sub_8126ABC
- ldr r0, =sub_812A2C4
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0xC]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A334
-
- thumb_func_start sub_812A36C
-sub_812A36C: @ 812A36C
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- movs r1, 0x1F
- ands r0, r1
- strh r0, [r2, 0x2E]
- cmp r0, 0xF
- ble _0812A38C
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _0812A398
-_0812A38C:
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_0812A398:
- pop {r0}
- bx r0
- thumb_func_end sub_812A36C
-
- thumb_func_start sub_812A39C
-sub_812A39C: @ 812A39C
- push {lr}
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _0812A3B8
- ldr r0, =gUnknown_085A73D8
- bl LoadSpritePalette
- b _0812A3BE
- .pool
-_0812A3B8:
- ldr r0, =gUnknown_085A73E0
- bl LoadSpritePalette
-_0812A3BE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A39C
-
- thumb_func_start sub_812A3C8
-sub_812A3C8: @ 812A3C8
- push {lr}
- movs r0, 0x8
- bl FreeSpritePaletteByTag
- pop {r0}
- bx r0
- thumb_func_end sub_812A3C8
-
- thumb_func_start sub_812A3D4
-sub_812A3D4: @ 812A3D4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_81279C4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812A430
- ldr r0, =gStringVar1
- ldr r1, =gUnknown_0203A172
- ldrb r2, [r1]
- ldr r1, =gUnknown_0203A14C
- ldr r1, [r1]
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 5
- ldr r2, =gDecorations + 1
- adds r1, r2
- bl StringCopy
- ldr r4, =gStringVar4
- ldr r1, =gText_DecorationWillBeDiscarded
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_812A458
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _0812A444
- .pool
-_0812A430:
- ldr r4, =gStringVar4
- ldr r1, =gText_CantThrowAwayInUse
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8127A5C
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
-_0812A444:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A3D4
-
- thumb_func_start sub_812A458
-sub_812A458: @ 812A458
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8197930
- ldr r1, =gUnknown_085A741C
- adds r0, r4, 0
- bl sub_8121F68
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A458
-
- thumb_func_start sub_812A478
-sub_812A478: @ 812A478
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0203A172
- ldrb r1, [r0]
- ldr r0, =gUnknown_0203A14C
- ldr r0, [r0]
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r5, =gUnknown_0203A173
- ldrb r0, [r5]
- bl sub_8161AD0
- ldr r1, =gUnknown_0203A151
- strb r0, [r1]
- ldrb r0, [r5]
- bl sub_8161A38
- adds r0, r4, 0
- bl sub_8127814
- ldr r5, =gStringVar4
- ldr r1, =gText_DecorationThrownAway
- adds r0, r5, 0
- bl StringExpandPlaceholders
- ldr r2, =sub_8127A5C
- adds r0, r4, 0
- adds r1, r5, 0
- bl DisplayItemMessageOnField
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_812A478
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/decoration_inventory.s b/asm/decoration_inventory.s
deleted file mode 100644
index 52d490c20..000000000
--- a/asm/decoration_inventory.s
+++ /dev/null
@@ -1,459 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start SetDecorationInventoriesPointers
-SetDecorationInventoriesPointers: @ 81617F4
- push {r4,lr}
- ldr r0, =gDecorationInventories
- mov r12, r0
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r2, =0x00002734
- adds r0, r1, r2
- mov r4, r12
- str r0, [r4]
- movs r3, 0xA
- strb r3, [r4, 0x4]
- adds r2, 0xA
- adds r0, r1, r2
- str r0, [r4, 0x8]
- strb r3, [r4, 0xC]
- ldr r4, =0x00002748
- adds r0, r1, r4
- mov r2, r12
- str r0, [r2, 0x10]
- strb r3, [r2, 0x14]
- adds r4, 0xA
- adds r0, r1, r4
- str r0, [r2, 0x18]
- movs r2, 0x1E
- mov r0, r12
- strb r2, [r0, 0x1C]
- adds r4, 0x1E
- adds r0, r1, r4
- mov r4, r12
- str r0, [r4, 0x20]
- mov r0, r12
- adds r0, 0x24
- strb r2, [r0]
- ldr r2, =0x0000278e
- adds r0, r1, r2
- str r0, [r4, 0x28]
- mov r0, r12
- adds r0, 0x2C
- strb r3, [r0]
- ldr r4, =0x00002798
- adds r0, r1, r4
- mov r2, r12
- str r0, [r2, 0x30]
- adds r2, 0x34
- movs r0, 0x28
- strb r0, [r2]
- adds r4, 0x28
- adds r1, r4
- mov r0, r12
- str r1, [r0, 0x38]
- adds r0, 0x3C
- strb r3, [r0]
- bl sub_8126968
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetDecorationInventoriesPointers
-
- thumb_func_start ClearDecorationInventory
-ClearDecorationInventory: @ 8161880
- push {r4,r5,lr}
- lsls r0, 24
- movs r3, 0
- ldr r1, =gDecorationInventories
- lsrs r2, r0, 21
- adds r0, r2, r1
- ldrb r0, [r0, 0x4]
- cmp r3, r0
- bcs _081618AA
- adds r5, r1, 0
- movs r4, 0
-_08161896:
- adds r0, r2, r5
- ldr r1, [r0]
- adds r1, r3
- strb r4, [r1]
- adds r1, r3, 0x1
- lsls r1, 24
- lsrs r3, r1, 24
- ldrb r0, [r0, 0x4]
- cmp r3, r0
- bcc _08161896
-_081618AA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ClearDecorationInventory
-
- thumb_func_start ClearDecorationInventories
-ClearDecorationInventories: @ 81618B4
- push {r4,lr}
- movs r4, 0
-_081618B8:
- adds r0, r4, 0
- bl ClearDecorationInventory
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _081618B8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ClearDecorationInventories
-
- thumb_func_start sub_81618D0
-sub_81618D0: @ 81618D0
- push {r4,lr}
- lsls r0, 24
- movs r2, 0
- ldr r1, =gDecorationInventories
- lsrs r0, 21
- adds r0, r1
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- cmp r2, r1
- bge _0816190C
- adds r4, r0, 0
- adds r3, r1, 0
-_081618E8:
- lsls r0, r2, 24
- asrs r1, r0, 24
- ldr r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08161900
- adds r0, r1, 0
- b _08161910
- .pool
-_08161900:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- asrs r0, 24
- cmp r0, r3
- blt _081618E8
-_0816190C:
- movs r0, 0x1
- negs r0, r0
-_08161910:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81618D0
-
- thumb_func_start sub_8161918
-sub_8161918: @ 8161918
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =gDecorations
- lsls r0, r3, 5
- adds r0, r1
- ldrb r0, [r0, 0x13]
- movs r2, 0
- ldr r1, =gDecorationInventories
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x4]
- cmp r2, r1
- bcs _08161956
- ldr r4, [r0]
-_08161936:
- adds r0, r4, r2
- ldrb r0, [r0]
- cmp r0, r3
- bne _0816194C
- movs r0, 0x1
- b _08161958
- .pool
-_0816194C:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r1
- bcc _08161936
-_08161956:
- movs r0, 0
-_08161958:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8161918
-
- thumb_func_start DecorationAdd
-DecorationAdd: @ 8161960
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- cmp r4, 0
- beq _081619A0
- ldr r1, =gDecorations
- lsls r0, r4, 5
- adds r0, r1
- ldrb r5, [r0, 0x13]
- adds r0, r5, 0
- bl sub_81618D0
- lsls r0, 24
- asrs r2, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- beq _081619A0
- ldr r0, =gDecorationInventories
- lsls r1, r5, 3
- adds r1, r0
- ldr r0, [r1]
- adds r0, r2
- strb r4, [r0]
- movs r0, 0x1
- b _081619A2
- .pool
-_081619A0:
- movs r0, 0
-_081619A2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end DecorationAdd
-
- thumb_func_start DecorationCheckSpace
-DecorationCheckSpace: @ 81619A8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081619D4
- ldr r1, =gDecorations
- lsls r0, 5
- adds r0, r1
- ldrb r0, [r0, 0x13]
- bl sub_81618D0
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _081619D4
- movs r0, 0x1
- b _081619D6
- .pool
-_081619D4:
- movs r0, 0
-_081619D6:
- pop {r1}
- bx r1
- thumb_func_end DecorationCheckSpace
-
- thumb_func_start DecorationRemove
-DecorationRemove: @ 81619DC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- cmp r5, 0
- bne _081619F8
- b _08161A26
-_081619EA:
- movs r0, 0
- strb r0, [r1]
- adds r0, r6, 0
- bl sub_8161A38
- movs r0, 0x1
- b _08161A28
-_081619F8:
- ldr r2, =gDecorationInventories
- ldr r1, =gDecorations
- lsls r0, r5, 5
- adds r0, r1
- ldrb r4, [r0, 0x13]
- lsls r0, r4, 3
- adds r0, r2
- ldrb r1, [r0, 0x4]
- cmp r3, r1
- bcs _08161A26
- adds r6, r4, 0
- adds r4, r0, 0
- adds r2, r1, 0
-_08161A12:
- ldr r0, [r4]
- adds r1, r0, r3
- ldrb r0, [r1]
- cmp r0, r5
- beq _081619EA
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r2
- bcc _08161A12
-_08161A26:
- movs r0, 0
-_08161A28:
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end DecorationRemove
-
- thumb_func_start sub_8161A38
-sub_8161A38: @ 8161A38
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- movs r6, 0
- ldr r2, =gDecorationInventories
- lsrs r0, 21
- adds r1, r0, r2
- ldrb r3, [r1, 0x4]
- cmp r6, r3
- bcs _08161ABC
- adds r7, r0, 0
- mov r10, r1
- mov r0, r10
- str r0, [sp]
-_08161A5C:
- adds r1, r6, 0x1
- lsls r0, r1, 24
- lsrs r3, r0, 24
- adds r2, r7, 0
- mov r12, r1
- mov r1, r10
- ldrb r1, [r1, 0x4]
- cmp r3, r1
- bcs _08161AAE
- ldr r0, =gDecorationInventories
- mov r9, r0
- adds r1, r0, 0
- mov r8, r1
-_08161A76:
- mov r0, r9
- adds r5, r2, r0
- ldr r1, [r5]
- adds r0, r1, r3
- ldrb r4, [r0]
- adds r2, r4, 0
- cmp r2, 0
- beq _08161A9C
- adds r0, r1, r6
- ldrb r1, [r0]
- cmp r1, 0
- beq _08161A92
- cmp r1, r2
- bls _08161A9C
-_08161A92:
- ldrb r1, [r0]
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, r3
- strb r1, [r0]
-_08161A9C:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r2, r7, 0
- mov r1, r8
- adds r0, r2, r1
- ldrb r0, [r0, 0x4]
- cmp r3, r0
- bcc _08161A76
-_08161AAE:
- mov r3, r12
- lsls r0, r3, 24
- lsrs r6, r0, 24
- ldr r0, [sp]
- ldrb r0, [r0, 0x4]
- cmp r6, r0
- bcc _08161A5C
-_08161ABC:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8161A38
-
- thumb_func_start sub_8161AD0
-sub_8161AD0: @ 8161AD0
- push {r4,r5,lr}
- lsls r0, 24
- movs r4, 0
- movs r3, 0
- ldr r2, =gDecorationInventories
- lsrs r1, r0, 21
- adds r0, r1, r2
- ldrb r0, [r0, 0x4]
- cmp r4, r0
- bcs _08161B04
- adds r5, r2, 0
-_08161AE6:
- adds r2, r1, r5
- ldr r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0
- beq _08161AF8
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_08161AF8:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- ldrb r2, [r2, 0x4]
- cmp r3, r2
- bcc _08161AE6
-_08161B04:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8161AD0
-
- thumb_func_start sub_8161B10
-sub_8161B10: @ 8161B10
- push {r4,r5,lr}
- movs r5, 0
- movs r4, 0
-_08161B16:
- adds r0, r4, 0
- bl sub_8161AD0
- adds r0, r5, r0
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08161B16
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8161B10
-
- .align 2, 0 @ Don't pad with nop.
- \ No newline at end of file
diff --git a/asm/dewford_trend.s b/asm/dewford_trend.s
index c3a7b192c..40df2d6a0 100644
--- a/asm/dewford_trend.s
+++ b/asm/dewford_trend.s
@@ -492,7 +492,7 @@ sub_812287C: @ 812287C
bl Free
b _08122980
_081228B0:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
mov r9, r0
diff --git a/asm/diploma.s b/asm/diploma.s
deleted file mode 100644
index 4f21fe39d..000000000
--- a/asm/diploma.s
+++ /dev/null
@@ -1,387 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8177874
-sub_8177874: @ 8177874
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8177874
-
- thumb_func_start sub_8177888
-sub_8177888: @ 8177888
- push {r4,r5,lr}
- sub sp, 0xC
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xE
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- add r1, sp, 0x4
- movs r0, 0
- strh r0, [r1]
- ldr r1, =0x040000d4
- add r0, sp, 0x4
- str r0, [r1]
- movs r0, 0xC0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, =0x8100c000
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r5, 0
- str r5, [sp, 0x8]
- add r0, sp, 0x8
- str r0, [r1]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, =0x85000100
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- add r0, sp, 0x4
- strh r5, [r0]
- str r0, [r1]
- movs r0, 0xA0
- lsls r0, 19
- str r0, [r1, 0x4]
- ldr r0, =0x81000200
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl remove_some_task
- bl ResetTasks
- bl ResetSpriteData
- bl ResetPaletteFade
- bl FreeAllSpritePalettes
- ldr r0, =gUnknown_085E7088
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
- ldr r4, =gUnknown_0203BCF0
- movs r0, 0x80
- lsls r0, 5
- bl Alloc
- str r0, [r4]
- bl sub_8177B44
- bl sub_8177B9C
- bl reset_temp_tile_data_buffers
- ldr r1, =gUnknown_085E7804
- str r5, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
-_0817797C:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0817797C
- ldr r0, =gUnknown_085E70C8
- ldr r1, =gUnknown_0203BCF0
- ldr r1, [r1]
- bl LZDecompressWram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- bl pokedex_diploma_something
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- str r5, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, =sub_8177874
- bl SetVBlankCallback
- ldr r0, =sub_8177A08
- bl SetMainCallback2
- ldr r0, =sub_8177A20
- movs r1, 0
- bl CreateTask
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8177888
-
- thumb_func_start sub_8177A08
-sub_8177A08: @ 8177A08
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8177A08
-
- thumb_func_start sub_8177A20
-sub_8177A20: @ 8177A20
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08177A40
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8177A50
- str r0, [r1]
-_08177A40:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8177A20
-
- thumb_func_start sub_8177A50
-sub_8177A50: @ 8177A50
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08177A82
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8177A98
- str r1, [r0]
-_08177A82:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8177A50
-
- thumb_func_start sub_8177A98
-sub_8177A98: @ 8177A98
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08177AC2
- ldr r0, =gUnknown_0203BCF0
- ldr r0, [r0]
- bl Free
- bl FreeAllWindowBuffers
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, =sub_80861E8
- bl SetMainCallback2
-_08177AC2:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8177A98
-
- thumb_func_start pokedex_diploma_something
-pokedex_diploma_something: @ 8177AD4
- push {r4,lr}
- bl sub_80C0944
- lsls r0, 16
- cmp r0, 0
- beq _08177AFC
- movs r1, 0x80
- lsls r1, 1
- movs r0, 0x14
- bl SetGpuReg
- ldr r0, =gStringVar1
- ldr r1, =gText_DexNational
- bl StringCopy
- b _08177B0C
- .pool
-_08177AFC:
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gStringVar1
- ldr r1, =gText_DexHoenn
- bl StringCopy
-_08177B0C:
- ldr r4, =gStringVar4
- ldr r1, =gText_PokedexDiploma
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x1
- bl sub_8177BCC
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end pokedex_diploma_something
-
- thumb_func_start sub_8177B44
-sub_8177B44: @ 8177B44
- push {lr}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085E81FC
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- ldr r0, =gUnknown_0203BCF0
- ldr r1, [r0]
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8177B44
-
- thumb_func_start sub_8177B9C
-sub_8177B9C: @ 8177B9C
- push {lr}
- ldr r0, =gUnknown_085E8204
- bl InitWindows
- bl DeactivateAllTextPrinters
- ldr r0, =gUnknown_0860F074
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0
- bl PutWindowTilemap
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8177B9C
-
- thumb_func_start sub_8177BCC
-sub_8177BCC: @ 8177BCC
- push {r4-r6,lr}
- sub sp, 0x18
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gUnknown_085E8214
- add r0, sp, 0x14
- movs r2, 0x3
- bl memcpy
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- add r0, sp, 0x14
- str r0, [sp, 0x8]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0xC]
- str r6, [sp, 0x10]
- movs r0, 0
- movs r1, 0x1
- adds r2, r4, 0
- adds r3, r5, 0
- bl AddTextPrinterParametrized2
- add sp, 0x18
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8177BCC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index 8455decfe..4b83db729 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -214,7 +214,7 @@ _0811A72C:
ldr r4, =gStringVar3
adds r0, r4, 0
movs r1, 0x2
- bl sub_811F88C
+ bl InitializeEasyChatWordArray
b _0811A7C2
.pool
_0811A73C:
@@ -3353,7 +3353,7 @@ sub_811BDF0: @ 811BDF0
ldrb r2, [r0]
mov r0, sp
adds r1, r5, 0
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
movs r0, 0
mov r1, sp
bl sub_81AFC0C
@@ -9563,7 +9563,7 @@ _0811EF48:
adds r1, r5, 0
bl ConvertEasyChatWordsToString
adds r0, r4, 0
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
_0811EF58:
pop {r4,r5}
pop {r0}
@@ -10758,8 +10758,8 @@ _0811F886:
bx r1
thumb_func_end sub_811F860
- thumb_func_start sub_811F88C
-sub_811F88C: @ 811F88C
+ thumb_func_start InitializeEasyChatWordArray
+InitializeEasyChatWordArray: @ 811F88C
push {lr}
adds r2, r0, 0
lsls r1, 16
@@ -10782,7 +10782,7 @@ _0811F8AE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_811F88C
+ thumb_func_end InitializeEasyChatWordArray
thumb_func_start sub_811F8BC
sub_811F8BC: @ 811F8BC
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index efae2f07c..e5e9aaab9 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -68,7 +68,7 @@ _0813DA00:
adds r1, r4, 0
adds r2, r5, 0
adds r3, r6, 0
- bl evolution_cutscene
+ bl EvolutionScene
_0813DA30:
add sp, 0x4
pop {r4-r7}
@@ -77,8 +77,8 @@ _0813DA30:
.pool
thumb_func_end sub_813D9C0
- thumb_func_start sub_813DA40
-sub_813DA40: @ 813DA40
+ thumb_func_start BeginEvolutionScene
+BeginEvolutionScene: @ 813DA40
push {r4-r6,lr}
adds r4, r1, 0
adds r5, r2, 0
@@ -110,10 +110,10 @@ sub_813DA40: @ 813DA40
pop {r0}
bx r0
.pool
- thumb_func_end sub_813DA40
+ thumb_func_end BeginEvolutionScene
- thumb_func_start evolution_cutscene
-evolution_cutscene: @ 813DA8C
+ thumb_func_start EvolutionScene
+EvolutionScene: @ 813DA8C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -165,32 +165,32 @@ evolution_cutscene: @ 813DA8C
movs r1, 0
bl SetGpuReg
bl ResetPaletteFade
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r2, 0
strh r2, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r2, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r2, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r2, [r0]
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r2, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r2, [r0]
- ldr r1, =gUnknown_02022E20
+ ldr r1, =gBattle_BG3_X
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
movs r1, 0
strh r1, [r0]
- ldr r1, =gUnknown_02022FF0
+ ldr r1, =gBattleTerrain
movs r0, 0x9
strb r0, [r1]
- bl c2_berry_program_update_menu
- bl sub_8035AA4
+ bl sub_80356D0
+ bl LoadBattleTextboxAndBackground
bl ResetSpriteData
bl remove_some_task
bl ResetTasks
@@ -202,7 +202,7 @@ evolution_cutscene: @ 813DA8C
bl AllocZeroed
ldr r1, =gUnknown_0203AB80
str r0, [r1]
- bl init_uns_table_pokemon_copy
+ bl AllocateMonSpritesGfx
adds r0, r4, 0
movs r1, 0x2
mov r2, sp
@@ -235,7 +235,7 @@ evolution_cutscene: @ 813DA8C
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r2, =gBattleSpritesGfx
+ ldr r2, =gMonSpritesGfxPtr
ldr r1, [r2]
ldr r1, [r1, 0x8]
adds r2, r5, 0
@@ -291,7 +291,7 @@ evolution_cutscene: @ 813DA8C
lsls r0, r1, 3
ldr r2, =gMonFrontPicTable
adds r0, r2
- ldr r2, =gBattleSpritesGfx
+ ldr r2, =gMonSpritesGfxPtr
ldr r1, [r2]
ldr r1, [r1, 0x10]
mov r2, r10
@@ -393,7 +393,7 @@ evolution_cutscene: @ 813DA8C
pop {r0}
bx r0
.pool
- thumb_func_end evolution_cutscene
+ thumb_func_end EvolutionScene
thumb_func_start sub_813DD7C
sub_813DD7C: @ 813DD7C
@@ -460,30 +460,30 @@ sub_813DD7C: @ 813DD7C
movs r1, 0
bl SetGpuReg
bl ResetPaletteFade
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r4, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r4, [r0]
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r4, [r0]
- ldr r1, =gUnknown_02022E20
+ ldr r1, =gBattle_BG3_X
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
strh r4, [r0]
- ldr r1, =gUnknown_02022FF0
+ ldr r1, =gBattleTerrain
movs r0, 0x9
strb r0, [r1]
- bl c2_berry_program_update_menu
- bl sub_8035AA4
+ bl sub_80356D0
+ bl LoadBattleTextboxAndBackground
bl ResetSpriteData
bl FreeAllSpritePalettes
ldr r1, =gReservedSpritePaletteCount
@@ -492,7 +492,7 @@ sub_813DD7C: @ 813DD7C
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x10]
adds r2, r5, 0
@@ -629,25 +629,25 @@ _0813DFE0:
ldr r1, =gReservedSpritePaletteCount
movs r0, 0x4
strb r0, [r1]
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r1, [r0]
- ldr r2, =gUnknown_02022E20
+ ldr r2, =gBattle_BG3_X
movs r3, 0x80
lsls r3, 1
adds r0, r3, 0
strh r0, [r2]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
strh r1, [r0]
b _0813E180
.pool
@@ -697,7 +697,7 @@ _0813E0A8:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x10]
adds r2, r6, 0
@@ -867,7 +867,7 @@ sub_813E1D4: @ 813E1D4
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r5, 0
@@ -941,24 +941,24 @@ sub_813E1D4: @ 813E1D4
mov r1, sp
ldrh r1, [r1, 0x14]
strh r1, [r0, 0x1C]
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
strh r4, [r0]
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r4, [r0]
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r4, [r0]
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
strh r4, [r0]
- ldr r1, =gUnknown_02022E20
+ ldr r1, =gBattle_BG3_X
movs r2, 0x80
lsls r2, 1
adds r0, r2, 0
strh r0, [r1]
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
strh r4, [r0]
ldr r2, =gTextFlags
ldrb r0, [r2]
@@ -1338,7 +1338,7 @@ _0813E6E4:
bl StringExpandPlaceholders
adds r0, r4, 0
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gTasks
mov r2, r8
adds r1, r2, r7
@@ -1626,7 +1626,7 @@ _0813E99E:
bl StringExpandPlaceholders
adds r0, r4, 0
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =0x00000173
bl PlayBGM
ldr r2, =gTasks
@@ -1775,7 +1775,7 @@ _0813EAF6:
_0813EB06:
adds r0, r7, 0
bl DestroyTask
- bl sub_805F094
+ bl FreeMonSpritesGfx
ldr r4, =gUnknown_0203AB80
ldr r0, [r4]
bl Free
@@ -1868,7 +1868,7 @@ _0813EBE4:
_0813EBEC:
ldr r0, =gStringVar4
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gTasks
mov r2, r8
adds r0, r2, r7
@@ -1892,15 +1892,15 @@ _0813EC1E:
beq _0813EC2A
b _0813F1A4
_0813EC2A:
- bl sub_804F574
+ bl BufferMoveToLearnIntoBattleTextBuff2
ldr r0, =0x0000016f
bl PlayFanfare
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0xC]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gTasks
mov r3, r8
adds r1, r3, r7
@@ -1991,13 +1991,13 @@ _0813ED0A:
beq _0813ED16
b _0813F1A4
_0813ED16:
- bl sub_804F574
+ bl BufferMoveToLearnIntoBattleTextBuff2
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x10]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gTasks
mov r2, r8
adds r1, r2, r7
@@ -2023,10 +2023,10 @@ _0813ED56:
_0813ED62:
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x14]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gTasks
mov r3, r8
adds r1, r3, r7
@@ -2048,10 +2048,10 @@ _0813ED90:
bne _0813EDCE
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x18]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gTasks
mov r2, r8
adds r1, r2, r7
@@ -2087,7 +2087,7 @@ _0813EDEA:
bl sub_8056A3C
ldr r0, =gText_BattleYesNoChoice
movs r1, 0xC
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gTasks
mov r3, r8
adds r1, r3, r7
@@ -2100,7 +2100,7 @@ _0813EDEA:
ldr r0, =gBattleCommunication
strb r2, [r0, 0x1]
movs r0, 0
- bl sub_8056B74
+ bl BattleCreateCursorAt
b _0813F1A4
.pool
_0813EE34:
@@ -2117,10 +2117,10 @@ _0813EE34:
movs r0, 0x5
bl PlaySE
ldrb r0, [r4, 0x1]
- bl sub_8056BAC
+ bl BattleDestroyCursorAt
movs r0, 0
strb r0, [r4, 0x1]
- bl sub_8056B74
+ bl BattleCreateCursorAt
_0813EE5C:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
@@ -2135,10 +2135,10 @@ _0813EE5C:
movs r0, 0x5
bl PlaySE
ldrb r0, [r4, 0x1]
- bl sub_8056BAC
+ bl BattleDestroyCursorAt
movs r0, 0x1
strb r0, [r4, 0x1]
- bl sub_8056B74
+ bl BattleCreateCursorAt
_0813EE84:
ldr r0, =gMain
ldrh r1, [r0, 0x2E]
@@ -2289,10 +2289,10 @@ _0813EFC8:
ldr r3, =0x000004cc
adds r0, r3
ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gTasks
mov r2, r8
adds r0, r2, r7
@@ -2338,10 +2338,10 @@ _0813F05C:
lsls r1, 2
adds r0, r1
ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gTasks
mov r2, r8
adds r1, r2, r7
@@ -2367,10 +2367,10 @@ _0813F09E:
_0813F0AA:
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x1C]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r0, =gTasks
mov r3, r8
adds r1, r3, r7
@@ -2395,10 +2395,10 @@ _0813F0D8:
lsls r1, 2
adds r0, r1
ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gTasks
mov r2, r8
adds r0, r2, r7
@@ -2411,10 +2411,10 @@ _0813F0D8:
_0813F120:
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x20]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gTasks
mov r3, r8
adds r0, r3, r7
@@ -2431,10 +2431,10 @@ _0813F120:
_0813F154:
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x24]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
movs r1, 0
- bl battle_show_message_maybe
+ bl sub_814F9EC
ldr r1, =gTasks
mov r2, r8
adds r0, r2, r7
@@ -3059,12 +3059,12 @@ _0813F756:
beq _0813F762
b _0813FCC4
_0813F762:
- bl sub_804F574
+ bl BufferMoveToLearnIntoBattleTextBuff2
ldr r0, =0x0000016f
bl PlayFanfare
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0xC]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3160,10 +3160,10 @@ _0813F846:
beq _0813F852
b _0813FCC4
_0813F852:
- bl sub_804F574
+ bl BufferMoveToLearnIntoBattleTextBuff2
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x10]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3193,7 +3193,7 @@ _0813F892:
_0813F89E:
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x14]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3219,7 +3219,7 @@ _0813F8CC:
bne _0813F90C
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x18]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3299,7 +3299,7 @@ _0813F98C:
lsls r1, 3
adds r0, r1
ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3336,7 +3336,7 @@ _0813F9E4:
lsls r1, 3
adds r0, r1
ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3441,7 +3441,7 @@ _0813FAEC:
ldr r1, =0x000004cc
adds r0, r1
ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3481,7 +3481,7 @@ _0813FB3C:
lsls r1, 2
adds r0, r1
ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3511,7 +3511,7 @@ _0813FBB2:
_0813FBBE:
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x1C]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3540,7 +3540,7 @@ _0813FBEC:
lsls r1, 2
adds r0, r1
ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3557,7 +3557,7 @@ _0813FBEC:
_0813FC38:
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x20]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3578,7 +3578,7 @@ _0813FC38:
_0813FC70:
ldr r0, =gBattleStringsTable
ldr r0, [r0, 0x24]
- bl StrCpyDecodeToDisplayedStringBattle
+ bl BattleStringExpandPlaceholdersToDisplayedString
ldr r1, =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
@@ -3630,35 +3630,35 @@ nullsub_83: @ 813FCD8
thumb_func_start sub_813FCDC
sub_813FCDC: @ 813FCDC
push {lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r1, [r0]
movs r0, 0x18
bl SetGpuReg
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
ldrh r1, [r0]
movs r0, 0x1A
bl SetGpuReg
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
ldrh r1, [r0]
movs r0, 0x1C
bl SetGpuReg
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
ldrh r1, [r0]
movs r0, 0x1E
bl SetGpuReg
@@ -3674,35 +3674,35 @@ sub_813FCDC: @ 813FCDC
thumb_func_start sub_813FD64
sub_813FD64: @ 813FD64
push {lr}
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
ldrh r1, [r0]
movs r0, 0x10
bl SetGpuReg
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
ldrh r1, [r0]
movs r0, 0x12
bl SetGpuReg
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
ldrh r1, [r0]
movs r0, 0x14
bl SetGpuReg
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
ldrh r1, [r0]
movs r0, 0x18
bl SetGpuReg
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
ldrh r1, [r0]
movs r0, 0x1A
bl SetGpuReg
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
ldrh r1, [r0]
movs r0, 0x1C
bl SetGpuReg
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
ldrh r1, [r0]
movs r0, 0x1E
bl SetGpuReg
@@ -3852,9 +3852,9 @@ sub_813FEE8: @ 813FEE8
push {r6,r7}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
mov r8, r0
- ldr r1, =gUnknown_02022E1A
+ ldr r1, =gBattle_BG1_Y
mov r9, r1
ldr r1, =gTasks
lsls r0, r5, 2
@@ -3865,13 +3865,13 @@ sub_813FEE8: @ 813FEE8
ldrsh r0, [r0, r2]
cmp r0, 0
bne _0813FF28
- ldr r7, =gUnknown_02022E1C
- ldr r6, =gUnknown_02022E1E
+ ldr r7, =gBattle_BG2_X
+ ldr r6, =gBattle_BG2_Y
b _0813FF2C
.pool
_0813FF28:
- ldr r7, =gUnknown_02022E20
- ldr r6, =gUnknown_02022E22
+ ldr r7, =gBattle_BG3_X
+ ldr r6, =gBattle_BG3_Y
_0813FF2C:
lsls r4, r5, 2
adds r4, r5
@@ -4130,12 +4130,12 @@ sub_8140174: @ 8140174
movs r0, 0x50
movs r1, 0
bl SetGpuReg
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
movs r1, 0
strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
strh r1, [r0]
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
strh r1, [r0]
movs r0, 0x1
movs r1, 0x5
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 5c515ae3d..fa923d94b 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -51,7 +51,7 @@ process_overworld_input: @ 809BF08
bl cur_mapdata_block_role_at_player_pos
lsls r0, 24
lsrs r0, 24
- bl sub_808904C
+ bl MetatileBehavior_IsMoveTile
lsls r0, 24
lsrs r7, r0, 24
cmp r6, 0x2
@@ -831,7 +831,7 @@ _0809C55C:
.pool
_0809C574:
adds r0, r5, 0
- bl is_tile_x8B
+ bl MetatileBehavior_IsClosedSootopolisGymDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -841,7 +841,7 @@ _0809C574:
.pool
_0809C58C:
adds r0, r5, 0
- bl is_tile_xEA
+ bl MetatileBehavior_IsUnknownClosedDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -851,7 +851,7 @@ _0809C58C:
.pool
_0809C5A4:
adds r0, r5, 0
- bl is_tile_x84
+ bl MetatileBehavior_IsCableBoxResults1
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -859,7 +859,7 @@ _0809C5A4:
b _0809C6E4
_0809C5B4:
adds r0, r5, 0
- bl is_tile_x87
+ bl MetatileBehavior_IsPokeblockFeeder
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -869,7 +869,7 @@ _0809C5B4:
.pool
_0809C5CC:
adds r0, r5, 0
- bl is_tile_x8C
+ bl MetatileBehavior_IsTrickHousePuzzleDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -879,7 +879,7 @@ _0809C5CC:
.pool
_0809C5E4:
adds r0, r5, 0
- bl is_tile_x85
+ bl MetatileBehavior_IsRegionMap
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -889,7 +889,7 @@ _0809C5E4:
.pool
_0809C5FC:
adds r0, r5, 0
- bl sub_8089A1C
+ bl MetatileBehavior_IsRunningShoesInstruction
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -899,7 +899,7 @@ _0809C5FC:
.pool
_0809C614:
adds r0, r5, 0
- bl sub_8089A30
+ bl MetatileBehavior_IsPictureBookShelf
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -909,7 +909,7 @@ _0809C614:
.pool
_0809C62C:
adds r0, r5, 0
- bl sub_8089A44
+ bl MetatileBehavior_IsBookShelf
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -919,7 +919,7 @@ _0809C62C:
.pool
_0809C644:
adds r0, r5, 0
- bl sub_8089A58
+ bl MetatileBehavior_IsPokeCenterBookShelf
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -929,7 +929,7 @@ _0809C644:
.pool
_0809C65C:
adds r0, r5, 0
- bl sub_8089A6C
+ bl MetatileBehavior_IsVase
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -939,7 +939,7 @@ _0809C65C:
.pool
_0809C674:
adds r0, r5, 0
- bl sub_8089A80
+ bl MetatileBehavior_IsTrashCan
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -949,7 +949,7 @@ _0809C674:
.pool
_0809C68C:
adds r0, r5, 0
- bl sub_8089A94
+ bl MetatileBehavior_IsShopShelf
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -959,7 +959,7 @@ _0809C68C:
.pool
_0809C6A4:
adds r0, r5, 0
- bl sub_8089AA8
+ bl MetatileBehavior_IsBlueprint
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -970,7 +970,7 @@ _0809C6A4:
_0809C6BC:
adds r0, r5, 0
adds r1, r4, 0
- bl sub_8089AD0
+ bl MetatileBehavior_IsPlayerFacingWirelessBoxResults
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -981,7 +981,7 @@ _0809C6BC:
_0809C6D4:
adds r0, r5, 0
adds r1, r4, 0
- bl sub_8089AEC
+ bl MetatileBehavior_IsCableBoxResults2
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1023,7 +1023,7 @@ _0809C71C:
cmp r4, r0
bne _0809C7D0
adds r0, r5, 0
- bl sub_8089288
+ bl MetatileBehavior_IsSecretBasePC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1033,7 +1033,7 @@ _0809C71C:
.pool
_0809C74C:
adds r0, r5, 0
- bl sub_808929C
+ bl MetatileBehavior_IsSecretBaseRegisterPC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1043,7 +1043,7 @@ _0809C74C:
.pool
_0809C764:
adds r0, r5, 0
- bl sub_80893DC
+ bl MetatileBehavior_IsMB_BF
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1053,7 +1053,7 @@ _0809C764:
.pool
_0809C77C:
adds r0, r5, 0
- bl sub_80893F0
+ bl MetatileBehavior_IsSecretBaseTvOrShield
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1063,7 +1063,7 @@ _0809C77C:
.pool
_0809C794:
adds r0, r5, 0
- bl sub_80892EC
+ bl MetatileBehavior_IsMB_C6
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1072,7 +1072,7 @@ _0809C794:
b _0809C7E2
_0809C7A8:
adds r0, r5, 0
- bl sub_8089364
+ bl MetatileBehavior_IsMB_C3
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1081,7 +1081,7 @@ _0809C7A8:
b _0809C7E2
_0809C7BC:
adds r0, r5, 0
- bl sub_8089350
+ bl MetatileBehavior_IsMB_B5
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1090,7 +1090,7 @@ _0809C7BC:
b _0809C7E2
_0809C7D0:
adds r0, r5, 0
- bl sub_8089300
+ bl MetatileBehavior_IsSecretBasePoster
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1297,7 +1297,7 @@ sub_809C96C: @ 809C96C
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_8089918
+ bl MetatileBehavior_IsCrackedFloorHole
lsls r0, 24
cmp r0, 0
beq _0809C988
@@ -1306,7 +1306,7 @@ sub_809C96C: @ 809C96C
.pool
_0809C988:
adds r0, r4, 0
- bl sub_8089ABC
+ bl MetatileBehavior_IsBattlePyramidWarp
lsls r0, 24
cmp r0, 0
beq _0809C9A4
@@ -1318,7 +1318,7 @@ _0809C996:
.pool
_0809C9A4:
adds r0, r4, 0
- bl sub_80893C8
+ bl MetatileBehavior_IsSecretBaseGlitterMat
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1327,7 +1327,7 @@ _0809C9A4:
b _0809C9E8
_0809C9B8:
adds r0, r4, 0
- bl sub_80893B4
+ bl MetatileBehavior_IsSecretBaseSoundMat
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1376,7 +1376,7 @@ _0809CA04:
bne _0809CAF8
lsls r0, r4, 24
lsrs r0, 24
- bl sub_808904C
+ bl MetatileBehavior_IsMoveTile
lsls r0, 24
cmp r0, 0
bne _0809CAF8
@@ -1411,7 +1411,7 @@ _0809CA64:
b _0809CB28
.pool
_0809CA7C:
- bl sub_8179A04
+ bl ShouldDoBrailleRegicePuzzle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1467,7 +1467,7 @@ _0809CAF8:
cmp r0, 0x1
beq _0809CB28
movs r0, 0x1
- bl sub_8137FC0
+ bl CountSSTidalStep
cmp r0, 0x1
bne _0809CB1C
ldr r0, =gUnknown_0823C050
@@ -1719,7 +1719,7 @@ sub_809CC9C: @ 809CC9C
.pool
_0809CCF8:
adds r0, r4, 0
- bl sub_8089870
+ bl MetatileBehavior_IsLavaridgeB1FWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1729,7 +1729,7 @@ _0809CCF8:
b _0809CD8C
_0809CD0E:
adds r0, r4, 0
- bl is_role_x68
+ bl MetatileBehavior_IsLavaridge1FWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1749,7 +1749,7 @@ _0809CD24:
b _0809CD8C
_0809CD3A:
adds r0, r4, 0
- bl sub_80898AC
+ bl MetatileBehavior_IsWarpOrBridge
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1759,7 +1759,7 @@ _0809CD3A:
b _0809CD8C
_0809CD50:
adds r0, r4, 0
- bl sub_8089904
+ bl MetatileBehavior_IsMtPyreHole
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1771,7 +1771,7 @@ _0809CD50:
.pool
_0809CD6C:
adds r0, r4, 0
- bl sub_80898C0
+ bl MetatileBehavior_IsMossdeepGymWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1797,7 +1797,7 @@ is_warp_tile: @ 809CD94
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl is_tile_x69_2_warp_door
+ bl MetatileBehavior_IsWarpDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1815,19 +1815,19 @@ is_warp_tile: @ 809CD94
cmp r0, 0x1
beq _0809CE2A
adds r0, r4, 0
- bl sub_8088F58
+ bl MetatileBehavior_IsNonAnimDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0809CE2A
adds r0, r4, 0
- bl sub_8089870
+ bl MetatileBehavior_IsLavaridgeB1FWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0809CE2A
adds r0, r4, 0
- bl is_role_x68
+ bl MetatileBehavior_IsLavaridge1FWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1839,19 +1839,19 @@ is_warp_tile: @ 809CD94
cmp r0, 0x1
beq _0809CE2A
adds r0, r4, 0
- bl sub_8089904
+ bl MetatileBehavior_IsMtPyreHole
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0809CE2A
adds r0, r4, 0
- bl sub_80898C0
+ bl MetatileBehavior_IsMossdeepGymWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _0809CE2A
adds r0, r4, 0
- bl sub_80898AC
+ bl MetatileBehavior_IsWarpOrBridge
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2048,7 +2048,7 @@ map_warp_consider_2_to_inside: @ 809CF78
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_8089210
+ bl MetatileBehavior_IsSecretBaseOpen
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2062,7 +2062,7 @@ map_warp_consider_2_to_inside: @ 809CF78
.pool
_0809CFB0:
adds r0, r4, 0
- bl is_tile_x69_2_warp_door
+ bl MetatileBehavior_IsWarpDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2322,7 +2322,7 @@ dive_warp: @ 809D16C
bne _0809D1A4
lsls r0, r5, 24
lsrs r0, 24
- bl sub_80895D0
+ bl MetatileBehavior_IsUnableToEmerge
lsls r0, 24
cmp r0, 0
bne _0809D1A4
@@ -2340,7 +2340,7 @@ dive_warp: @ 809D16C
_0809D1A4:
lsls r0, r5, 24
lsrs r0, 24
- bl sub_80895B0
+ bl MetatileBehavior_IsDiveable
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2394,7 +2394,7 @@ sub_809D1E8: @ 809D1E8
cmp r0, 0x5
bne _0809D244
adds r0, r5, 0
- bl sub_80895D0
+ bl MetatileBehavior_IsUnableToEmerge
lsls r0, 24
cmp r0, 0
bne _0809D244
@@ -2417,7 +2417,7 @@ sub_809D1E8: @ 809D1E8
.pool
_0809D244:
adds r0, r5, 0
- bl sub_80895B0
+ bl MetatileBehavior_IsDiveable
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asm/field_door.s b/asm/field_door.s
index 987f0bd8c..037c76566 100644
--- a/asm/field_door.s
+++ b/asm/field_door.s
@@ -581,15 +581,15 @@ sub_808A83C: @ 808A83C
.pool
thumb_func_end sub_808A83C
- thumb_func_start sub_808A854
-sub_808A854: @ 808A854
+ thumb_func_start FieldSetDoorOpened
+FieldSetDoorOpened: @ 808A854
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl sub_8088EFC
+ bl MetatileBehavior_IsDoor
lsls r0, 24
cmp r0, 0
beq _0808A876
@@ -602,17 +602,17 @@ _0808A876:
pop {r0}
bx r0
.pool
- thumb_func_end sub_808A854
+ thumb_func_end FieldSetDoorOpened
- thumb_func_start sub_808A880
-sub_808A880: @ 808A880
+ thumb_func_start FieldSetDoorClosed
+FieldSetDoorClosed: @ 808A880
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl sub_8088EFC
+ bl MetatileBehavior_IsDoor
lsls r0, 24
cmp r0, 0
beq _0808A8A2
@@ -625,17 +625,17 @@ _0808A8A2:
pop {r0}
bx r0
.pool
- thumb_func_end sub_808A880
+ thumb_func_end FieldSetDoorClosed
- thumb_func_start sub_808A8AC
-sub_808A8AC: @ 808A8AC
+ thumb_func_start FieldAnimateDoorClose
+FieldAnimateDoorClose: @ 808A8AC
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl sub_8088EFC
+ bl MetatileBehavior_IsDoor
lsls r0, 24
cmp r0, 0
beq _0808A8D8
@@ -654,17 +654,17 @@ _0808A8DC:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_808A8AC
+ thumb_func_end FieldAnimateDoorClose
- thumb_func_start task_overworld_door_add_if_role_69_for_opening_door_at
-task_overworld_door_add_if_role_69_for_opening_door_at: @ 808A8E4
+ thumb_func_start FieldAnimateDoorOpen
+FieldAnimateDoorOpen: @ 808A8E4
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl sub_8088EFC
+ bl MetatileBehavior_IsDoor
lsls r0, 24
cmp r0, 0
beq _0808A910
@@ -683,10 +683,10 @@ _0808A914:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end task_overworld_door_add_if_role_69_for_opening_door_at
+ thumb_func_end FieldAnimateDoorOpen
- thumb_func_start sub_808A91C
-sub_808A91C: @ 808A91C
+ thumb_func_start FieldIsDoorAnimationRunning
+FieldIsDoorAnimationRunning: @ 808A91C
push {lr}
ldr r0, =task50_overworld_door
bl FuncIsActiveTask
@@ -695,10 +695,10 @@ sub_808A91C: @ 808A91C
pop {r1}
bx r1
.pool
- thumb_func_end sub_808A91C
+ thumb_func_end FieldIsDoorAnimationRunning
- thumb_func_start cur_mapdata_get_door_sound_at
-cur_mapdata_get_door_sound_at: @ 808A930
+ thumb_func_start GetDoorSoundEffect
+GetDoorSoundEffect: @ 808A930
push {lr}
adds r3, r0, 0
adds r2, r1, 0
@@ -725,7 +725,7 @@ _0808A95C:
_0808A95E:
pop {r1}
bx r1
- thumb_func_end cur_mapdata_get_door_sound_at
+ thumb_func_end GetDoorSoundEffect
thumb_func_start sub_808A964
sub_808A964: @ 808A964
diff --git a/asm/field_effect.s b/asm/field_effect.s
index c8ccc49b4..323e56bfe 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -1989,7 +1989,7 @@ task00_8084310: @ 80B6A24
cmp r0, 0
beq _080B6A8A
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -2100,7 +2100,7 @@ _080B6B3E:
cmp r0, 0
bne _080B6B58
bl ScriptContext2_Disable
- bl sub_809757C
+ bl UnfreezeMapObjects
adds r0, r5, 0
bl DestroyTask
_080B6B58:
@@ -2459,7 +2459,7 @@ sub_80B6E18: @ 80B6E18
strb r0, [r1, 0x6]
bl ScriptContext2_Disable
bl CameraObjectReset1
- bl sub_809757C
+ bl UnfreezeMapObjects
bl InstallCameraPanAheadCallback
ldr r0, =sub_80B6B94
bl FindTaskIdByFunc
@@ -3111,7 +3111,7 @@ oei_waterfall: @ 80B734C
adds r1, r0
lsls r1, 3
adds r1, r2
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
ldr r2, [r2]
strh r2, [r1, 0xA]
bl _call_via_r4
@@ -3188,7 +3188,7 @@ waterfall_1_do_anim_probably: @ 80B73F0
bne _080B7420
adds r0, r5, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0xA
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -3304,7 +3304,7 @@ sub_80B74D0: @ 80B74D0
adds r1, r0
lsls r1, 3
adds r1, r2
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
ldr r2, [r3]
strh r2, [r1, 0x26]
ldr r2, [r3, 0x4]
@@ -3363,7 +3363,7 @@ dive_2_unknown: @ 80B7558
push {r4,lr}
adds r4, r0, 0
bl ScriptContext2_Enable
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x26
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -3536,7 +3536,7 @@ sub_80B76B8: @ 80B76B8
strh r0, [r2, 0x26]
movs r0, 0x1
strh r0, [r4, 0xE]
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r5, 0x10
ldrsh r0, [r1, r5]
str r0, [r3]
@@ -3835,7 +3835,7 @@ sub_80B791C: @ 80B791C
lsls r0, 24
cmp r0, 0
beq _080B795C
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x10
ldrsh r0, [r5, r2]
str r0, [r1]
@@ -3919,7 +3919,7 @@ sub_80B79BC: @ 80B79BC
movs r0, 0
strb r0, [r1, 0x6]
bl ScriptContext2_Disable
- bl sub_809757C
+ bl UnfreezeMapObjects
ldr r0, =sub_80B7890
bl FindTaskIdByFunc
lsls r0, 24
@@ -3935,7 +3935,7 @@ _080B79E6:
thumb_func_start sub_80B79F4
sub_80B79F4: @ 80B79F4
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -4090,7 +4090,7 @@ sub_80B7B18: @ 80B7B18
ldrsh r0, [r5, r2]
cmp r0, 0x3
ble _080B7B6C
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x10
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -4222,7 +4222,7 @@ _080B7C2C:
thumb_func_start sub_80B7C48
sub_80B7C48: @ 80B7C48
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -4583,7 +4583,7 @@ _080B7F32:
ands r0, r1
strb r0, [r6, 0x1]
bl ScriptContext2_Disable
- bl sub_809757C
+ bl UnfreezeMapObjects
ldr r0, =sub_80B7E94
bl FindTaskIdByFunc
lsls r0, 24
@@ -5194,7 +5194,7 @@ sub_80B8410: @ 80B8410
bne _080B8484
bl ScriptContext2_Disable
bl CameraObjectReset1
- bl sub_809757C
+ bl UnfreezeMapObjects
ldr r0, =sub_80B8250
bl FindTaskIdByFunc
lsls r0, 24
@@ -5229,7 +5229,7 @@ _080B84BE:
bl CreateTask
lsls r0, 24
lsrs r4, r0, 24
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
ldr r0, [r2]
ldr r1, [r2, 0x4]
ldr r2, [r2, 0x8]
@@ -5252,7 +5252,7 @@ _080B84BE:
thumb_func_start sub_80B84F8
sub_80B84F8: @ 80B84F8
push {r4-r6,lr}
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldr r0, [r5]
movs r6, 0x80
lsls r6, 24
@@ -6292,12 +6292,12 @@ sub_80B8D44: @ 80B8D44
adds r1, r0
lsls r1, 3
adds r1, r2
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r0, [r0]
strh r0, [r1, 0x26]
bl sav1_reset_battle_music_maybe
ldr r0, =0x0000016d
- bl sub_80858C4
+ bl Overworld_ChangeMusicTo
movs r0, 0
pop {r1}
bx r1
@@ -6421,7 +6421,7 @@ sub_80B8E60: @ 80B8E60
lsls r0, 24
cmp r0, 0
beq _080B8E96
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r1, 0x26
ldrsh r0, [r4, r1]
movs r1, 0x80
@@ -6473,7 +6473,7 @@ sub_80B8EA8: @ 80B8EA8
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0xA
ldrsh r0, [r6, r2]
str r0, [r1]
@@ -6527,7 +6527,7 @@ sub_80B8F24: @ 80B8F24
ldrb r0, [r4, 0x1A]
movs r1, 0x1
bl sub_81555AC
- bl sub_809757C
+ bl UnfreezeMapObjects
bl ScriptContext2_Disable
movs r0, 0x9
bl FieldEffectActiveListRemove
@@ -6704,7 +6704,7 @@ sub_80B90CC: @ 80B90CC
strb r0, [r2, 0x5]
ldr r0, =sub_80B9128
str r0, [r2, 0x1C]
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r0, [r0]
strh r0, [r2, 0x30]
movs r0, 0x9E
@@ -6793,7 +6793,7 @@ sub_80B91A4: @ 80B91A4
adds r1, r0
lsls r1, 3
adds r1, r2
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r0, [r0]
strh r0, [r1, 0xA]
movs r0, 0
@@ -6884,7 +6884,7 @@ sub_80B925C: @ 80B925C
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0xA
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -7922,7 +7922,7 @@ _080B9ACA:
sub_80B9ADC: @ 80B9ADC
push {r4,lr}
sub sp, 0x4
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldrb r0, [r4]
ldrb r1, [r4, 0x4]
ldrb r2, [r4, 0x8]
@@ -8343,7 +8343,7 @@ _080B9E24:
sub_80B9E28: @ 80B9E28
push {r4-r7,lr}
sub sp, 0x4
- ldr r7, =gFieldEffectSpawnParams
+ ldr r7, =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index 76ba35fd2..754a8f7ff 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -130,13 +130,13 @@ npc_pal_op: @ 8153FAC
cmp r0, 0
bne _08154008
ldrb r0, [r5, 0x1F]
- bl sub_80894D4
+ bl MetatileBehavior_GetBridgeSth
lsls r0, 24
lsrs r0, 24
cmp r0, 0
bne _08153FEE
ldrb r0, [r5, 0x1E]
- bl sub_80894D4
+ bl MetatileBehavior_GetBridgeSth
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -574,7 +574,7 @@ _0815432E:
thumb_func_start oei_shadow
oei_shadow: @ 8154340
push {r4,r5,lr}
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrb r0, [r5]
ldrb r1, [r5, 0x4]
ldrb r2, [r5, 0x8]
@@ -702,7 +702,7 @@ _08154412:
cmp r0, r1
bne _08154490
ldrb r0, [r4, 0x1E]
- bl sub_8088E64
+ bl MetatileBehavior_IsPokeGrass
lsls r0, 24
cmp r0, 0
bne _08154490
@@ -742,7 +742,7 @@ _08154498:
oei_grass_normal: @ 81544AC
push {r4,r5,lr}
sub sp, 0x4
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrh r1, [r5]
mov r0, sp
strh r1, [r0]
@@ -951,7 +951,7 @@ _08154648:
thumb_func_start sub_8154658
sub_8154658: @ 8154658
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1080,7 +1080,7 @@ _0815474C:
sub_8154758: @ 8154758
push {r4,r5,lr}
sub sp, 0x4
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrh r1, [r5]
mov r0, sp
strh r1, [r0]
@@ -1282,7 +1282,7 @@ _081548EA:
thumb_func_start sub_81548FC
sub_81548FC: @ 81548FC
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1336,7 +1336,7 @@ _08154958:
thumb_func_start sub_815496C
sub_815496C: @ 815496C
push {r4-r6,lr}
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
@@ -1537,7 +1537,7 @@ _08154AF2:
thumb_func_start sub_8154B04
sub_8154B04: @ 8154B04
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1591,7 +1591,7 @@ _08154B62:
thumb_func_start sub_8154B78
sub_8154B78: @ 8154B78
push {r4,r5,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1646,7 +1646,7 @@ _08154BD8:
thumb_func_start sub_8154BEC
sub_8154BEC: @ 8154BEC
push {r4,r5,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1777,7 +1777,7 @@ _08154CE4:
thumb_func_start sub_8154CEC
sub_8154CEC: @ 8154CEC
push {r4-r6,lr}
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
@@ -1922,7 +1922,7 @@ _08154E0A:
thumb_func_start sub_8154E1C
sub_8154E1C: @ 8154E1C
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1976,7 +1976,7 @@ _08154E78:
thumb_func_start oei_water_drop_tall
oei_water_drop_tall: @ 8154E8C
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2030,7 +2030,7 @@ _08154EE8:
thumb_func_start sub_8154EFC
sub_8154EFC: @ 8154EFC
push {r4-r7,lr}
- ldr r7, =gFieldEffectSpawnParams
+ ldr r7, =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
@@ -2193,7 +2193,7 @@ oei_ripples: @ 8155054
push {r4,lr}
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x14]
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
@@ -2238,7 +2238,7 @@ _081550A0:
thumb_func_start sub_81550B4
sub_81550B4: @ 81550B4
push {r4-r6,lr}
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
@@ -2393,7 +2393,7 @@ _081551E4:
thumb_func_start sub_81551F0
sub_81551F0: @ 81551F0
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2445,7 +2445,7 @@ _08155248:
thumb_func_start sub_815525C
sub_815525C: @ 815525C
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2497,7 +2497,7 @@ _081552B4:
thumb_func_start sub_81552C8
sub_81552C8: @ 81552C8
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2549,7 +2549,7 @@ _08155320:
thumb_func_start sub_8155334
sub_8155334: @ 8155334
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2603,7 +2603,7 @@ ash: @ 81553A0
push {r4,lr}
lsls r2, 16
lsrs r2, 16
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
lsls r0, 16
asrs r0, 16
str r0, [r4]
@@ -2630,7 +2630,7 @@ ash: @ 81553A0
oei_ash: @ 81553D4
push {r4,r5,lr}
sub sp, 0x4
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrh r1, [r5]
mov r0, sp
strh r1, [r0]
@@ -2809,7 +2809,7 @@ _0815552C:
thumb_func_start sub_8155534
sub_8155534: @ 8155534
push {r4,r5,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -3261,7 +3261,7 @@ _08155888:
thumb_func_start sub_8155890
sub_8155890: @ 8155890
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -3315,7 +3315,7 @@ _081558EC:
thumb_func_start sub_8155900
sub_8155900: @ 8155900
push {r4-r7,lr}
- ldr r7, =gFieldEffectSpawnParams
+ ldr r7, =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
@@ -3505,7 +3505,7 @@ _08155A76:
thumb_func_start sub_8155A88
sub_8155A88: @ 8155A88
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -3586,7 +3586,7 @@ _08155B20:
thumb_func_start sub_8155B2C
sub_8155B2C: @ 8155B2C
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -3689,7 +3689,7 @@ ShowDisguiseFieldEffect: @ 8155BD0
lsrs r6, r1, 24
lsls r2, 24
lsrs r7, r2, 24
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrb r0, [r5]
ldrb r1, [r5, 0x4]
ldrb r2, [r5, 0x8]
@@ -3950,7 +3950,7 @@ _08155DD8:
thumb_func_start sub_8155DDC
sub_8155DDC: @ 8155DDC
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r0, [r4]
adds r0, 0x7
str r0, [r4]
diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s
index 7d05dbd98..2152a5c5b 100644
--- a/asm/field_ground_effect.s
+++ b/asm/field_ground_effect.s
@@ -1166,7 +1166,7 @@ _08096E8C:
@ void GroundEffect_SpawnOnTallGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_SpawnOnTallGrass: @ 8096E90
push {lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r2, 0x10
ldrsh r1, [r0, r2]
str r1, [r3]
@@ -1205,7 +1205,7 @@ GroundEffect_SpawnOnTallGrass: @ 8096E90
@ void GroundEffect_StepOnTallGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_StepOnTallGrass: @ 8096EDC
push {lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r2, 0x10
ldrsh r1, [r0, r2]
str r1, [r3]
@@ -1244,7 +1244,7 @@ GroundEffect_StepOnTallGrass: @ 8096EDC
@ void GroundEffect_SpawnOnLongGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_SpawnOnLongGrass: @ 8096F28
push {lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r2, 0x10
ldrsh r1, [r0, r2]
str r1, [r3]
@@ -1283,7 +1283,7 @@ GroundEffect_SpawnOnLongGrass: @ 8096F28
@ void GroundEffect_StepOnLongGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_StepOnLongGrass: @ 8096F74
push {lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r2, 0x10
ldrsh r1, [r0, r2]
str r1, [r3]
@@ -1413,7 +1413,7 @@ DoTracksGroundEffect_Footprints: @ 8097044
mov r0, sp
movs r2, 0x4
bl memcpy
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x14
ldrsh r0, [r5, r2]
str r0, [r1]
@@ -1449,7 +1449,7 @@ DoTracksGroundEffect_BikeTireTracks: @ 8097094
ldr r0, [r4, 0x14]
cmp r1, r0
beq _080970D6
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r1, 0x14
ldrsh r0, [r4, r1]
str r0, [r2]
@@ -1520,7 +1520,7 @@ GroundEffect_JumpOnTallGrass: @ 8097110
sub sp, 0x4
adds r5, r0, 0
adds r6, r1, 0
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x10
ldrsh r0, [r5, r2]
str r0, [r1]
@@ -1562,7 +1562,7 @@ _0809715A:
@ void GroundEffect_JumpOnLongGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_JumpOnLongGrass: @ 8097168
push {lr}
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r3, 0x10
ldrsh r1, [r0, r3]
str r1, [r2]
@@ -1585,7 +1585,7 @@ GroundEffect_JumpOnLongGrass: @ 8097168
@ void GroundEffect_JumpOnShallowWater(struct npc_state *fieldObject, struct obj *object)
GroundEffect_JumpOnShallowWater: @ 8097190
push {r4,lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r4, 0x10
ldrsh r2, [r0, r4]
str r2, [r3]
@@ -1611,7 +1611,7 @@ GroundEffect_JumpOnShallowWater: @ 8097190
@ void GroundEffect_JumpOnWater(struct npc_state *fieldObject, struct obj *object)
GroundEffect_JumpOnWater: @ 80971C0
push {r4,lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r4, 0x10
ldrsh r2, [r0, r4]
str r2, [r3]
@@ -1637,7 +1637,7 @@ GroundEffect_JumpOnWater: @ 80971C0
@ void GroundEffect_JumpLandingDust(struct npc_state *fieldObject, struct obj *object)
GroundEffect_JumpLandingDust: @ 80971F0
push {r4,lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r4, 0x10
ldrsh r2, [r0, r4]
str r2, [r3]
@@ -1685,7 +1685,7 @@ GroundEffect_HotSprings: @ 8097230
@ void GroundEffect_Seaweed(struct npc_state *fieldObject, struct obj *object)
GroundEffect_Seaweed: @ 8097240
push {lr}
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r3, 0x10
ldrsh r1, [r0, r3]
str r1, [r2]
diff --git a/asm/field_message_box.s b/asm/field_message_box.s
index 35267e8d4..0c1fae6de 100644
--- a/asm/field_message_box.s
+++ b/asm/field_message_box.s
@@ -108,8 +108,8 @@ _080981E4:
.pool
thumb_func_end task_del_textbox
- thumb_func_start box_related_two__2
-box_related_two__2: @ 80981EC
+ thumb_func_start ShowFieldMessage
+ShowFieldMessage: @ 80981EC
push {r4,lr}
adds r1, r0, 0
ldr r4, =gUnknown_020375BC
@@ -130,7 +130,7 @@ _0809820E:
pop {r4}
pop {r1}
bx r1
- thumb_func_end box_related_two__2
+ thumb_func_end ShowFieldMessage
thumb_func_start sub_8098214
sub_8098214: @ 8098214
@@ -181,8 +181,8 @@ _08098272:
bx r1
thumb_func_end sub_8098238
- thumb_func_start box_related_two__3
-box_related_two__3: @ 8098278
+ thumb_func_start ShowFieldAutoScrollMessage
+ShowFieldAutoScrollMessage: @ 8098278
push {lr}
adds r1, r0, 0
ldr r2, =gUnknown_020375BC
@@ -202,7 +202,7 @@ _08098298:
_0809829A:
pop {r1}
bx r1
- thumb_func_end box_related_two__3
+ thumb_func_end ShowFieldAutoScrollMessage
thumb_func_start sub_80982A0
sub_80982A0: @ 80982A0
@@ -267,8 +267,8 @@ textbox_auto_and_task_add: @ 8098304
bx r0
thumb_func_end textbox_auto_and_task_add
- thumb_func_start textbox_close
-textbox_close: @ 8098314
+ thumb_func_start HideFieldMessageBox
+HideFieldMessageBox: @ 8098314
push {lr}
bl task_del_textbox
movs r0, 0
@@ -280,7 +280,7 @@ textbox_close: @ 8098314
pop {r0}
bx r0
.pool
- thumb_func_end textbox_close
+ thumb_func_end HideFieldMessageBox
thumb_func_start textbox_any_visible
textbox_any_visible: @ 8098330
@@ -290,8 +290,8 @@ textbox_any_visible: @ 8098330
.pool
thumb_func_end textbox_any_visible
- thumb_func_start sub_809833C
-sub_809833C: @ 809833C
+ thumb_func_start IsFieldMessageBoxHidden
+IsFieldMessageBoxHidden: @ 809833C
push {lr}
ldr r0, =gUnknown_020375BC
ldrb r0, [r0]
@@ -305,7 +305,7 @@ _08098350:
_08098352:
pop {r1}
bx r1
- thumb_func_end sub_809833C
+ thumb_func_end IsFieldMessageBoxHidden
thumb_func_start sub_8098358
sub_8098358: @ 8098358
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index aaca9b2ba..34ff54f61 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -1223,7 +1223,7 @@ sub_808B238: @ 808B238
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl sub_8088F58
+ bl MetatileBehavior_IsNonAnimDoor
lsls r0, 24
cmp r0, 0
bne _0808B2D8
@@ -1522,7 +1522,7 @@ PlayerAvatarTransition_Surfing: @ 808B4D8
bl FieldObjectTurn
movs r0, 0x8
bl SetPlayerAvatarStateMask
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x10
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -2255,7 +2255,7 @@ PlayCollisionSoundIfNotFacingWarp: @ 808B9EC
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl is_tile_x69_2_warp_door
+ bl MetatileBehavior_IsWarpDoor
lsls r0, 24
cmp r0, 0
bne _0808BA54
@@ -3517,7 +3517,7 @@ _0808C3F0:
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r1, 0x10
ldrsh r0, [r4, r1]
str r0, [r2]
@@ -3897,7 +3897,7 @@ sub_808C750: @ 808C750
lsrs r4, 24
bl ScriptContext2_Enable
bl sav1_reset_battle_music_maybe
- bl sub_8085898
+ bl Overworld_ChangeMusicToDefault
ldr r2, =gPlayerAvatar
ldrb r1, [r2]
movs r0, 0xF7
@@ -4858,7 +4858,7 @@ fishF: @ 808CF2C
ldr r0, =gPlayerAvatar
strb r1, [r0, 0x6]
bl ScriptContext2_Disable
- bl sub_809757C
+ bl UnfreezeMapObjects
movs r0, 0
movs r1, 0x1
bl sub_8197434
diff --git a/asm/field_poison.s b/asm/field_poison.s
index 5b1e24719..652026523 100644
--- a/asm/field_poison.s
+++ b/asm/field_poison.s
@@ -178,7 +178,7 @@ _080F96A8:
strh r0, [r4]
b _080F9722
_080F96AE:
- bl sub_809833C
+ bl IsFieldMessageBoxHidden
lsls r0, 24
cmp r0, 0
beq _080F9722
@@ -217,7 +217,7 @@ _080F96FC:
ldrb r0, [r4, 0x2]
bl sub_80F95C0
ldr r0, =gText_PkmnFainted3
- bl box_related_two__2
+ bl ShowFieldMessage
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
diff --git a/asm/field_screen.s b/asm/field_screen.s
index 13f418f17..4ab8a5a53 100644
--- a/asm/field_screen.s
+++ b/asm/field_screen.s
@@ -7503,8 +7503,8 @@ _080AED78:
bx r0
thumb_func_end bag_add_task0_by_acit
- thumb_func_start sub_80AED7C
-sub_80AED7C: @ 80AED7C
+ thumb_func_start SetSav1Weather
+SetSav1Weather: @ 80AED7C
push {r4,r5,lr}
ldr r4, =gSaveBlock1Ptr
ldr r1, [r4]
@@ -7525,7 +7525,7 @@ sub_80AED7C: @ 80AED7C
pop {r0}
bx r0
.pool
- thumb_func_end sub_80AED7C
+ thumb_func_end SetSav1Weather
thumb_func_start sav1_get_weather_probably
sav1_get_weather_probably: @ 80AEDAC
@@ -7564,7 +7564,7 @@ sub_80AEDBC: @ 80AEDBC
thumb_func_start sub_80AEDF0
sub_80AEDF0: @ 80AEDF0
push {lr}
- bl sub_80AED7C
+ bl SetSav1Weather
bl sav1_get_weather_probably
lsls r0, 24
lsrs r0, 24
@@ -7576,7 +7576,7 @@ sub_80AEDF0: @ 80AEDF0
thumb_func_start sub_80AEE08
sub_80AEE08: @ 80AEE08
push {lr}
- bl sub_80AED7C
+ bl SetSav1Weather
bl sav1_get_weather_probably
lsls r0, 24
lsrs r0, 24
@@ -7585,8 +7585,8 @@ sub_80AEE08: @ 80AEE08
bx r0
thumb_func_end sub_80AEE08
- thumb_func_start sub_80AEE20
-sub_80AEE20: @ 80AEE20
+ thumb_func_start DoCurrentWeather
+DoCurrentWeather: @ 80AEE20
push {r4,r5,lr}
bl sav1_get_weather_probably
lsls r0, 24
@@ -7627,7 +7627,7 @@ _080AEE6E:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80AEE20
+ thumb_func_end DoCurrentWeather
thumb_func_start sub_80AEE84
sub_80AEE84: @ 80AEE84
@@ -8248,7 +8248,7 @@ sub_80AF334: @ 80AF334
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_8088EFC
+ bl MetatileBehavior_IsDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -8258,7 +8258,7 @@ sub_80AF334: @ 80AF334
.pool
_080AF36C:
adds r0, r4, 0
- bl sub_8088F58
+ bl MetatileBehavior_IsNonAnimDoor
lsls r0, 24
lsrs r0, 24
ldr r1, =task_map_chg_seq_0807E2CC
@@ -8390,7 +8390,7 @@ _080AF480:
ldrsh r0, [r6, r1]
movs r2, 0
ldrsh r1, [r7, r2]
- bl sub_808A854
+ bl FieldSetDoorOpened
movs r0, 0x1
strh r0, [r5, 0x8]
b _080AF54A
@@ -8427,7 +8427,7 @@ _080AF4DC:
ldrsh r0, [r6, r1]
movs r2, 0
ldrsh r1, [r7, r2]
- bl sub_808A8AC
+ bl FieldAnimateDoorClose
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0xA]
@@ -8461,7 +8461,7 @@ _080AF520:
cmp r0, 0x1
beq _080AF54A
_080AF536:
- bl sub_809757C
+ bl UnfreezeMapObjects
movs r0, 0x4
strh r0, [r5, 0x8]
b _080AF54A
@@ -8550,7 +8550,7 @@ _080AF5EC:
lsls r0, 24
cmp r0, 0
beq _080AF60A
- bl sub_809757C
+ bl UnfreezeMapObjects
movs r0, 0x3
strh r0, [r5, 0x8]
b _080AF60A
@@ -8593,7 +8593,7 @@ _080AF644:
bl sub_80AF71C
cmp r0, 0
beq _080AF65A
- bl sub_809757C
+ bl UnfreezeMapObjects
bl ScriptContext2_Disable
adds r0, r5, 0
bl DestroyTask
@@ -9010,7 +9010,7 @@ _080AF9C8:
strh r0, [r4]
b _080AF9E8
_080AF9D0:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080AF9E8
@@ -9142,7 +9142,7 @@ _080AFAD4:
movs r2, 0
ldrsh r1, [r6, r2]
subs r1, 0x1
- bl cur_mapdata_get_door_sound_at
+ bl GetDoorSoundEffect
lsls r0, 16
lsrs r0, 16
bl PlaySE
@@ -9151,7 +9151,7 @@ _080AFAD4:
movs r2, 0
ldrsh r1, [r6, r2]
subs r1, 0x1
- bl task_overworld_door_add_if_role_69_for_opening_door_at
+ bl FieldAnimateDoorOpen
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0xA]
@@ -9211,7 +9211,7 @@ _080AFB6C:
movs r2, 0
ldrsh r1, [r6, r2]
subs r1, 0x1
- bl sub_808A8AC
+ bl FieldAnimateDoorClose
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0xA]
@@ -9996,7 +9996,7 @@ _080B0198:
bl sub_808D1B4
cmp r0, 0x1
beq _080B01B6
- bl sub_809757C
+ bl UnfreezeMapObjects
bl ScriptContext2_Disable
adds r0, r5, 0
bl DestroyTask
diff --git a/asm/field_tasks.s b/asm/field_tasks.s
index 26761b8d1..39bd3b545 100644
--- a/asm/field_tasks.s
+++ b/asm/field_tasks.s
@@ -46,7 +46,7 @@ _0809D8CA:
ands r0, r1
cmp r0, 0
beq _0809D8FC
- bl sub_809E7B0
+ bl DoTimeBasedEvents
ldrh r0, [r4]
adds r0, 0x1
b _0809D8FA
@@ -144,8 +144,8 @@ _0809D992:
.pool
thumb_func_end overworld_ensure_per_step_coros_running
- thumb_func_start activate_per_step_callback
-activate_per_step_callback: @ 809D9A8
+ thumb_func_start ActivatePerStepCallback
+ActivatePerStepCallback: @ 809D9A8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -180,7 +180,7 @@ _0809D9EA:
pop {r4}
pop {r0}
bx r0
- thumb_func_end activate_per_step_callback
+ thumb_func_end ActivatePerStepCallback
thumb_func_start wild_encounter_reset_coro_args
wild_encounter_reset_coro_args: @ 809D9F0
@@ -221,7 +221,7 @@ sub_809DA30: @ 809DA30
lsls r1, 24
lsrs r4, r1, 24
adds r0, r4, 0
- bl sub_8089764
+ bl MetatileBehavior_IsPacifilogVerticalLog1
lsls r0, 24
cmp r0, 0
beq _0809DA48
@@ -229,7 +229,7 @@ sub_809DA30: @ 809DA30
b _0809DA80
_0809DA48:
adds r0, r4, 0
- bl sub_8089778
+ bl MetatileBehavior_IsPacifilogVerticalLog2
lsls r0, 24
cmp r0, 0
beq _0809DA5A
@@ -238,7 +238,7 @@ _0809DA48:
b _0809DA80
_0809DA5A:
adds r0, r4, 0
- bl sub_808978C
+ bl MetatileBehavior_IsPacifilogHorizontalLog1
lsls r0, 24
cmp r0, 0
beq _0809DA6C
@@ -247,7 +247,7 @@ _0809DA5A:
b _0809DA80
_0809DA6C:
adds r0, r4, 0
- bl sub_80897A0
+ bl MetatileBehavior_IsPacifilogHorizontalLog2
lsls r0, 24
cmp r0, 0
bne _0809DA7C
@@ -414,7 +414,7 @@ sub_809DB7C: @ 809DB7C
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_8089764
+ bl MetatileBehavior_IsPacifilogVerticalLog1
lsls r0, 24
cmp r0, 0
beq _0809DBC0
@@ -427,7 +427,7 @@ _0809DBBC:
b _0809DC08
_0809DBC0:
adds r0, r4, 0
- bl sub_8089778
+ bl MetatileBehavior_IsPacifilogVerticalLog2
lsls r0, 24
cmp r0, 0
beq _0809DBD8
@@ -439,7 +439,7 @@ _0809DBC0:
b _0809DBBC
_0809DBD8:
adds r0, r4, 0
- bl sub_808978C
+ bl MetatileBehavior_IsPacifilogHorizontalLog1
lsls r0, 24
cmp r0, 0
beq _0809DBF0
@@ -451,7 +451,7 @@ _0809DBD8:
b _0809DBBC
_0809DBF0:
adds r0, r4, 0
- bl sub_80897A0
+ bl MetatileBehavior_IsPacifilogHorizontalLog2
lsls r0, 24
cmp r0, 0
beq _0809DC06
@@ -496,7 +496,7 @@ sub_809DC18: @ 809DC18
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_8089764
+ bl MetatileBehavior_IsPacifilogVerticalLog1
lsls r0, 24
cmp r0, 0
beq _0809DC5C
@@ -509,7 +509,7 @@ _0809DC58:
b _0809DCA4
_0809DC5C:
adds r0, r4, 0
- bl sub_8089778
+ bl MetatileBehavior_IsPacifilogVerticalLog2
lsls r0, 24
cmp r0, 0
beq _0809DC74
@@ -521,7 +521,7 @@ _0809DC5C:
b _0809DC58
_0809DC74:
adds r0, r4, 0
- bl sub_808978C
+ bl MetatileBehavior_IsPacifilogHorizontalLog1
lsls r0, 24
cmp r0, 0
beq _0809DC8C
@@ -533,7 +533,7 @@ _0809DC74:
b _0809DC58
_0809DC8C:
adds r0, r4, 0
- bl sub_80897A0
+ bl MetatileBehavior_IsPacifilogHorizontalLog2
lsls r0, 24
cmp r0, 0
beq _0809DCA2
@@ -1326,7 +1326,7 @@ _0809E29A:
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
- bl sub_8089604
+ bl MetatileBehavior_IsThinIce
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1341,7 +1341,7 @@ _0809E29A:
.pool
_0809E2E0:
adds r0, r4, 0
- bl sub_8089618
+ bl MetatileBehavior_IsCrackedIce
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1630,7 +1630,7 @@ _0809E53E:
lsls r0, r6, 24
lsrs r6, r0, 24
adds r0, r6, 0
- bl sub_8089918
+ bl MetatileBehavior_IsCrackedFloorHole
lsls r0, 24
cmp r0, 0
beq _0809E556
@@ -1658,7 +1658,7 @@ _0809E572:
ldrh r0, [r4]
strh r0, [r5, 0x6]
adds r0, r6, 0
- bl sub_808992C
+ bl MetatileBehavior_IsCrackedFloor
lsls r0, 24
cmp r0, 0
beq _0809E5D2
diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s
index 3bc667754..63acc9982 100644
--- a/asm/fldeff_80F9BCC.s
+++ b/asm/fldeff_80F9BCC.s
@@ -486,7 +486,7 @@ sub_80F9F78: @ 80F9F78
ands r0, r1
cmp r0, 0
beq _080F9FC0
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
ldr r0, [r1, 0x4]
cmp r0, 0x2
beq _080F9FAE
@@ -517,7 +517,7 @@ _080F9FB6:
movs r0, 0x18
b _080F9FFC
_080F9FC0:
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
ldr r0, [r1, 0x4]
cmp r0, 0x2
beq _080F9FEA
@@ -584,7 +584,7 @@ sub_80FA004: @ 80FA004
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_808923C
+ bl MetatileBehavior_IsSecretBaseCave
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -599,7 +599,7 @@ sub_80FA004: @ 80FA004
.pool
_080FA070:
adds r0, r4, 0
- bl sub_808925C
+ bl MetatileBehavior_IsSecretBaseTree
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -614,7 +614,7 @@ _080FA070:
.pool
_080FA0A0:
adds r0, r4, 0
- bl is_tile_x98
+ bl MetatileBehavior_IsSecretBaseShrub
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -643,7 +643,7 @@ _080FA0C4:
sub_80FA0DC: @ 80FA0DC
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -701,7 +701,7 @@ sub_80FA13C: @ 80FA13C
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -778,7 +778,7 @@ sub_80FA1D8: @ 80FA1D8
sub_80FA1E8: @ 80FA1E8
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -836,13 +836,13 @@ sub_80FA248: @ 80FA248
ands r2, r0
cmp r2, 0x96
bne _080FA26A
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r0, 0
str r0, [r1, 0x1C]
_080FA26A:
cmp r2, 0x9C
bne _080FA274
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r0, 0x2
str r0, [r1, 0x1C]
_080FA274:
@@ -858,7 +858,7 @@ _080FA274:
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -891,7 +891,7 @@ sub_80FA2D8: @ 80FA2D8
adds r4, r0, 0
movs r0, 0x9B
bl PlaySE
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r1, [r0, 0x1C]
adds r2, r4, 0
adds r2, 0x2A
@@ -917,7 +917,7 @@ sub_80FA304: @ 80FA304
asrs r0, 16
cmp r0, 0x27
ble _080FA32E
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r0, [r0, 0x1C]
cmp r0, 0
beq _080FA322
@@ -951,7 +951,7 @@ sub_80FA33C: @ 80FA33C
sub_80FA34C: @ 80FA34C
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -1009,7 +1009,7 @@ sub_80FA3AC: @ 80FA3AC
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -1807,7 +1807,7 @@ sub_80FAA7C: @ 80FAA7C
mov r0, sp
adds r1, r4, 0
bl GetXYCoordsOneStepInFrontOfPlayer
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
mov r0, sp
movs r2, 0
ldrsh r0, [r0, r2]
@@ -1930,7 +1930,7 @@ door_restore_tilemap: @ 80FABA4
adds r5, r0, 0
movs r0, 0x83
bl PlaySE
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
subs r1, 0x1
@@ -1953,7 +1953,7 @@ _080FABDC:
lsls r2, 2
bl MapGridSetMetatileIdAt
_080FABEA:
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
ldr r2, =0x0000020a
@@ -1988,7 +1988,7 @@ sub_80FAC24: @ 80FAC24
strh r0, [r5, 0x2E]
b _080FAC54
_080FAC38:
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
ldr r2, =0x00000e8c
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
index ce7e79de8..e31bf22e2 100755
--- a/asm/fldeff_cut.s
+++ b/asm/fldeff_cut.s
@@ -130,7 +130,7 @@ _080D37F6:
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_8088E64
+ bl MetatileBehavior_IsPokeGrass
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -175,7 +175,7 @@ _080D3890:
movs r0, 0x1
strb r0, [r1]
adds r0, r4, 0
- bl sub_80899F8
+ bl MetatileBehavior_IsCuttableGrass
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x1
@@ -309,7 +309,7 @@ _080D395A:
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_8088E64
+ bl MetatileBehavior_IsPokeGrass
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -339,7 +339,7 @@ _080D39F4:
b _080D395A
_080D39F8:
adds r0, r4, 0
- bl sub_80899F8
+ bl MetatileBehavior_IsCuttableGrass
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x1
@@ -385,7 +385,7 @@ hm2_ruin_valley: @ 80D3A50
movs r0, 0x1
bl FieldEffectStart
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -421,7 +421,7 @@ sub_80D3A6C: @ 80D3A6C
sub_80D3A9C: @ 80D3A9C
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -1344,7 +1344,7 @@ sub_80D423C: @ 80D423C
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl MetatileBehavior_IsLongGrass2
+ bl MetatileBehavior_IsLongGrass_Duplicate
lsls r0, 24
cmp r0, 0
beq _080D42AE
diff --git a/asm/fldeff_emotion.s b/asm/fldeff_emotion.s
deleted file mode 100644
index 37096a438..000000000
--- a/asm/fldeff_emotion.s
+++ /dev/null
@@ -1,328 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start oei_exclamation_mark
-oei_exclamation_mark: @ 80B4620
- push {lr}
- ldr r0, =gUnknown_085507B4
- movs r1, 0
- movs r2, 0
- movs r3, 0x53
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080B4648
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0
- movs r2, 0
- bl sub_80B46D8
-_080B4648:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end oei_exclamation_mark
-
- thumb_func_start sub_80B4658
-sub_80B4658: @ 80B4658
- push {lr}
- ldr r0, =gUnknown_085507B4
- movs r1, 0
- movs r2, 0
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080B4680
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x21
- movs r2, 0x1
- bl sub_80B46D8
-_080B4680:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B4658
-
- thumb_func_start sub_80B4690
-sub_80B4690: @ 80B4690
- push {r4,lr}
- ldr r0, =gUnknown_085507CC
- movs r1, 0
- movs r2, 0
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080B46C6
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x2E
- movs r2, 0
- bl sub_80B46D8
- ldrb r1, [r4, 0x5]
- movs r0, 0xF
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x5]
-_080B46C6:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B4690
-
- thumb_func_start sub_80B46D8
-@ void sub_80B46D8(struct obj *object, s16 a2, u8 a3)
-sub_80B46D8: @ 80B46D8
- push {r4,lr}
- lsls r2, 24
- lsrs r2, 24
- ldrb r4, [r0, 0x5]
- movs r3, 0xD
- negs r3, r3
- ands r3, r4
- movs r4, 0x4
- orrs r3, r4
- strb r3, [r0, 0x5]
- movs r3, 0x3E
- adds r3, r0
- mov r12, r3
- ldrb r3, [r3]
- movs r4, 0x2
- orrs r3, r4
- mov r4, r12
- strb r3, [r4]
- ldr r4, =gFieldEffectSpawnParams
- ldr r3, [r4]
- strh r3, [r0, 0x2E]
- ldr r3, [r4, 0x4]
- strh r3, [r0, 0x30]
- ldr r3, [r4, 0x8]
- strh r3, [r0, 0x32]
- ldr r3, =0x0000fffb
- strh r3, [r0, 0x34]
- strh r1, [r0, 0x3C]
- adds r1, r2, 0
- bl StartSpriteAnim
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B46D8
-
- thumb_func_start objc_exclamation_mark_probably
-objc_exclamation_mark_probably: @ 80B4724
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _080B4756
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B4764
-_080B4756:
- ldrh r1, [r4, 0x3C]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldEffectStop
- b _080B47B2
-_080B4764:
- ldr r2, =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- ldrh r3, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r2, r3, r0
- strh r2, [r4, 0x36]
- ldrh r0, [r1, 0x20]
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x22]
- subs r0, 0x10
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x24]
- strh r0, [r4, 0x24]
- ldrh r0, [r1, 0x26]
- adds r0, r2
- strh r0, [r4, 0x26]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _080B47B0
- adds r0, r3, 0x1
- strh r0, [r4, 0x34]
- b _080B47B2
- .pool
-_080B47B0:
- strh r2, [r4, 0x34]
-_080B47B2:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end objc_exclamation_mark_probably
-
- thumb_func_start sub_80B47BC
-sub_80B47BC: @ 80B47BC
- push {lr}
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B47D4
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0, 0xC]
- b _080B47D8
- .pool
-_080B47D4:
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0]
-_080B47D8:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B47BC
-
- thumb_func_start sub_80B47E0
-sub_80B47E0: @ 80B47E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080B47EE
- movs r0, 0
- b _080B4800
-_080B47EE:
- cmp r0, 0
- beq _080B47FC
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0, 0xC]
- b _080B4800
- .pool
-_080B47FC:
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0]
-_080B4800:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B47E0
-
- thumb_func_start sub_80B4808
-sub_80B4808: @ 80B4808
- push {lr}
- ldr r0, =gUnknown_030060AC
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B4870
- ldr r2, =gUnknown_03006090
- ldr r0, =gUnknown_03006080
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- ldrb r0, [r0, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetOppositeDirection
- lsls r0, 24
- lsrs r0, 24
- bl GetFaceDirectionAnimId
- ldr r3, =gUnknown_03006084
- strb r0, [r3]
- movs r0, 0xFE
- strb r0, [r3, 0x1]
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0xFF
- bl exec_movement
- b _080B489E
- .pool
-_080B4870:
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- ldrb r0, [r0, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- ldr r3, =gUnknown_03006084
- strb r0, [r3]
- movs r0, 0xFE
- strb r0, [r3, 0x1]
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0xFF
- bl exec_movement
-_080B489E:
- movs r0, 0xFF
- bl sub_809BE48
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B4808
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_groundshake.s b/asm/fldeff_groundshake.s
index cb0d2e2d8..81d92430e 100755
--- a/asm/fldeff_groundshake.s
+++ b/asm/fldeff_groundshake.s
@@ -161,7 +161,7 @@ sub_81BE79C: @ 81BE79C
beq _081BE7B8
movs r0, 0xA7
lsls r0, 1
- bl FlagReset
+ bl FlagClear
b _081BE7EE
.pool
_081BE7B8:
@@ -188,7 +188,7 @@ _081BE7D4:
_081BE7E6:
movs r0, 0xA7
lsls r0, 1
- bl FlagReset
+ bl FlagClear
_081BE7EE:
pop {r4}
pop {r0}
diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s
index 98764625e..947517ed5 100644
--- a/asm/fldeff_strength.s
+++ b/asm/fldeff_strength.s
@@ -40,7 +40,7 @@ _08145DF2:
sub_8145E0C: @ 8145E0C
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -66,7 +66,7 @@ sub_8145E2C: @ 8145E2C
lsrs r0, r2, 16
strh r0, [r1, 0x18]
strh r2, [r1, 0x1A]
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r1, [r0]
movs r0, 0x64
muls r0, r1
diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s
index 5c83b455d..ea7b2653a 100644
--- a/asm/fldeff_sweetscent.s
+++ b/asm/fldeff_sweetscent.s
@@ -24,7 +24,7 @@ hm2_sweet_scent: @ 8159F10
movs r0, 0x33
bl FieldEffectStart
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s
index e4f4bce42..d77e29dd2 100644
--- a/asm/fldeff_teleport.s
+++ b/asm/fldeff_teleport.s
@@ -39,7 +39,7 @@ hm_teleport_run_dp02scr: @ 817C8FC
movs r0, 0x3F
bl FieldEffectStart
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
diff --git a/asm/international_string_util.s b/asm/international_string_util.s
index 7c52fc41a..817a1d5e4 100755
--- a/asm/international_string_util.s
+++ b/asm/international_string_util.s
@@ -5,127 +5,6 @@
.text
- thumb_func_start GetStringCenterAlignXOffset
-@ s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth)
-GetStringCenterAlignXOffset: @ 81DB35C
- push {lr}
- movs r3, 0
- bl GetStringCenterAlignXOffsetWithLetterSpacing
- pop {r1}
- bx r1
- thumb_func_end GetStringCenterAlignXOffset
-
- thumb_func_start GetStringRightAlignXOffset
-@ s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth)
-GetStringRightAlignXOffset: @ 81DB368
- push {lr}
- movs r3, 0
- bl GetStringWidthDifference
- pop {r1}
- bx r1
- thumb_func_end GetStringRightAlignXOffset
-
- thumb_func_start GetStringCenterAlignXOffsetWithLetterSpacing
-@ s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, u8 *str, s32 totalWidth, s16 letterSpacing)
-GetStringCenterAlignXOffsetWithLetterSpacing: @ 81DB374
- push {lr}
- bl GetStringWidthDifference
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- pop {r1}
- bx r1
- thumb_func_end GetStringCenterAlignXOffsetWithLetterSpacing
-
- thumb_func_start GetStringWidthDifference
-@ s32 GetStringWidthDifference(u8 fontId, u8 *str, s32 totalWidth, s16 letterSpacing)
-GetStringWidthDifference: @ 81DB384
- push {r4,lr}
- adds r4, r2, 0
- adds r2, r3, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- asrs r2, 16
- bl GetStringWidth
- cmp r4, r0
- bgt _081DB39E
- movs r0, 0
- b _081DB3A0
-_081DB39E:
- subs r0, r4, r0
-_081DB3A0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetStringWidthDifference
-
- thumb_func_start GetMaxWidthInMenuTable
-GetMaxWidthInMenuTable: @ 81DB3A8
- push {r4-r6,lr}
- movs r6, 0
- cmp r6, r1
- bge _081DB3CC
- adds r5, r0, 0
- adds r4, r1, 0
-_081DB3B4:
- ldr r1, [r5]
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- cmp r0, r6
- ble _081DB3C4
- adds r6, r0, 0
-_081DB3C4:
- adds r5, 0x8
- subs r4, 0x1
- cmp r4, 0
- bne _081DB3B4
-_081DB3CC:
- adds r0, r6, 0
- bl convert_pixel_width_to_tile_width
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetMaxWidthInMenuTable
-
- thumb_func_start sub_81DB3D8
-sub_81DB3D8: @ 81DB3D8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- adds r7, r1, 0
- adds r5, r2, 0
- movs r6, 0
- movs r4, 0
- cmp r6, r5
- bge _081DB40A
-_081DB3EC:
- adds r0, r7, r4
- ldrb r0, [r0]
- lsls r0, 3
- add r0, r8
- ldr r1, [r0]
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- cmp r0, r6
- ble _081DB404
- adds r6, r0, 0
-_081DB404:
- adds r4, 0x1
- cmp r4, r5
- blt _081DB3EC
-_081DB40A:
- adds r0, r6, 0
- bl convert_pixel_width_to_tile_width
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81DB3D8
thumb_func_start sub_81DB41C
sub_81DB41C: @ 81DB41C
@@ -389,8 +268,8 @@ _081DB5E4:
bx r0
thumb_func_end sub_81DB5AC
- thumb_func_start sub_81DB5E8
-sub_81DB5E8: @ 81DB5E8
+ thumb_func_start TVShowConvertInternationalString
+TVShowConvertInternationalString: @ 81DB5E8
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r2, 0
@@ -403,7 +282,7 @@ sub_81DB5E8: @ 81DB5E8
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_81DB5E8
+ thumb_func_end TVShowConvertInternationalString
thumb_func_start sub_81DB604
sub_81DB604: @ 81DB604
diff --git a/asm/intro.s b/asm/intro.s
index efd52e7fd..32b52ed06 100644
--- a/asm/intro.s
+++ b/asm/intro.s
@@ -376,11 +376,11 @@ task_intro_1: @ 816CF18
movs r0, 0x12
movs r1, 0x28
bl SetGpuReg
- ldr r0, =gUnknown_085E13B4
+ ldr r0, =gIntro1BGLeavesGfx
movs r1, 0xC0
lsls r1, 19
bl LZ77UnCompVram
- ldr r0, =gUnknown_085E07C4
+ ldr r0, =gIntro1BG0_Tilemap
ldr r1, =0x06008000
bl LZ77UnCompVram
ldr r1, =0x06008800
@@ -393,7 +393,7 @@ task_intro_1: @ 816CF18
ldr r5, =0x81000400
str r5, [r4, 0x8]
ldr r0, [r4, 0x8]
- ldr r0, =gUnknown_085E0B78
+ ldr r0, =gIntro1BG1_Tilemap
ldr r1, =0x06009000
bl LZ77UnCompVram
ldr r1, =0x06009800
@@ -403,7 +403,7 @@ task_intro_1: @ 816CF18
str r1, [r4, 0x4]
str r5, [r4, 0x8]
ldr r0, [r4, 0x8]
- ldr r0, =gUnknown_085E0EAC
+ ldr r0, =gIntro1BG2_Tilemap
ldr r1, =0x0600a000
bl LZ77UnCompVram
ldr r1, =0x0600a800
@@ -413,7 +413,7 @@ task_intro_1: @ 816CF18
str r1, [r4, 0x4]
str r5, [r4, 0x8]
ldr r0, [r4, 0x8]
- ldr r0, =gUnknown_085E119C
+ ldr r0, =gIntro1BG3_Tilemap
ldr r1, =0x0600b000
bl LZ77UnCompVram
ldr r1, =0x0600b800
@@ -423,7 +423,7 @@ task_intro_1: @ 816CF18
str r1, [r4, 0x4]
str r5, [r4, 0x8]
ldr r0, [r4, 0x8]
- ldr r0, =gUnknown_085E05C4
+ ldr r0, =gIntro1BGPals
movs r5, 0x80
lsls r5, 2
movs r1, 0
@@ -1779,14 +1779,14 @@ task_intro_10: @ 816DBAC
lsls r5, 24
lsrs r5, 24
bl intro_reset_and_hide_bgs
- ldr r0, =gUnknown_085E3854
+ ldr r0, =gIntro3Pokeball_Gfx
movs r1, 0xC0
lsls r1, 19
bl LZ77UnCompVram
- ldr r0, =gUnknown_085E3724
+ ldr r0, =gIntro3Pokeball_Tilemap
ldr r1, =0x06004000
bl LZ77UnCompVram
- ldr r0, =gUnknown_085E3524
+ ldr r0, =gIntro3PokeballPal
movs r2, 0x80
lsls r2, 2
movs r1, 0
@@ -1958,9 +1958,9 @@ task_intro_13: @ 816DD28
ldr r0, =gUnknown_08D8A818
ldr r1, =0x0600e000
bl LZDecompressVram
- ldr r0, =gUnknown_08524D14
+ ldr r0, =gBattleAnimPicTable + 0x1D0
bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_0852561C
+ ldr r0, =gBattleAnimPaletteTable + 0x1D0
bl LoadCompressedObjectPaletteUsingHeap
ldr r0, =gUnknown_08D85CD0
ldr r1, =gPlttBufferUnfaded
diff --git a/asm/item.s b/asm/item.s
index 97582e190..89177c5d4 100644
--- a/asm/item.s
+++ b/asm/item.s
@@ -676,8 +676,8 @@ _080D6D04:
.pool
thumb_func_end sub_80D6CE4
- thumb_func_start sub_80D6D1C
-sub_80D6D1C: @ 80D6D1C
+ thumb_func_start CheckPCHasItem
+CheckPCHasItem: @ 80D6D1C
push {r4-r6,lr}
lsls r0, 16
lsrs r6, r0, 16
@@ -717,10 +717,10 @@ _080D6D68:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_80D6D1C
+ thumb_func_end CheckPCHasItem
- thumb_func_start sub_80D6D70
-sub_80D6D70: @ 80D6D70
+ thumb_func_start AddPCItem
+AddPCItem: @ 80D6D70
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -819,7 +819,7 @@ _080D6E3A:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80D6D70
+ thumb_func_end AddPCItem
thumb_func_start sub_80D6E48
sub_80D6E48: @ 80D6E48
diff --git a/asm/item_menu.s b/asm/item_menu.s
index abac409bc..1e4dfca49 100755
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -5388,7 +5388,7 @@ _081ADB6C:
ldrh r0, [r4]
mov r3, r8
ldrh r1, [r3, 0x10]
- bl sub_80D6D70
+ bl AddPCItem
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x1
@@ -6237,7 +6237,7 @@ bag_menu_AddMoney_window: @ 81AE268
adds r0, r4, 0
movs r1, 0x1
movs r2, 0xE
- bl set_window_border_style_and_print_money_box
+ bl PrintMoneyAmountInMoneyBoxWithBorder
movs r0, 0x13
movs r1, 0xB
bl AddMoneyLabelObject
diff --git a/asm/item_use.s b/asm/item_use.s
index 200b0e62f..d3c724166 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -464,7 +464,7 @@ _080FD3EC:
_080FD40C:
lsls r0, r6, 24
lsrs r0, 24
- bl sub_8089510
+ bl MetatileBehavior_8089510
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2215,7 +2215,7 @@ ItemUseOutOfBattle_BlackWhiteFlute: @ 80FE234
ldr r0, =0x000008ad
bl FlagSet
ldr r0, =0x000008ae
- bl FlagReset
+ bl FlagClear
ldr r0, =gStringVar4
ldr r1, =gText_UsedVar2WildLured
bl StringExpandPlaceholders
@@ -2225,7 +2225,7 @@ _080FE278:
ldr r0, =0x000008ae
bl FlagSet
ldr r0, =0x000008ad
- bl FlagReset
+ bl FlagClear
ldr r0, =gStringVar4
ldr r1, =gText_UsedVar2WildRepelled
bl StringExpandPlaceholders
diff --git a/asm/librfu.s b/asm/librfu.s
index d8ca7538c..5fc1b0d6f 100644
--- a/asm/librfu.s
+++ b/asm/librfu.s
@@ -4,2251 +4,6 @@
.text
- thumb_func_start STWI_init_all
-STWI_init_all: @ 82E2A18
- push {r4,lr}
- adds r3, r0, 0
- lsls r2, 24
- lsrs r2, 24
- cmp r2, 0x1
- bne _082E2A54
- adds r2, r3, 0
- adds r2, 0xE8
- str r2, [r1]
- ldr r1, _082E2A40
- ldr r0, _082E2A44
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _082E2A48
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _082E2A4C
- ldr r2, _082E2A50
- adds r0, r3, r2
- b _082E2A5E
- .align 2, 0
-_082E2A40: .4byte 0x040000d4
-_082E2A44: .4byte IntrSIO32
-_082E2A48: .4byte 0x800004b0
-_082E2A4C: .4byte gUnknown_03007868
-_082E2A50: .4byte 0x00000a48
-_082E2A54:
- ldr r0, _082E2AD8
- str r0, [r1]
- ldr r1, _082E2ADC
- adds r0, r3, 0
- adds r0, 0xE8
-_082E2A5E:
- str r0, [r1]
- adds r2, r1, 0
- ldr r1, [r2]
- str r3, [r1, 0x28]
- adds r0, r3, 0
- adds r0, 0x74
- str r0, [r1, 0x24]
- ldrb r0, [r1, 0x14]
- movs r4, 0
- movs r0, 0x1
- strb r0, [r1, 0x14]
- ldr r0, [r2]
- str r4, [r0]
- strb r4, [r0, 0x4]
- ldr r0, [r2]
- strb r4, [r0, 0x5]
- ldr r0, [r2]
- strb r4, [r0, 0x7]
- ldr r0, [r2]
- strb r4, [r0, 0x8]
- ldr r0, [r2]
- strb r4, [r0, 0x9]
- ldr r0, [r2]
- str r4, [r0, 0xC]
- ldrb r1, [r0, 0x10]
- strb r4, [r0, 0x10]
- ldr r0, [r2]
- ldrh r1, [r0, 0x12]
- movs r1, 0
- strh r4, [r0, 0x12]
- strb r1, [r0, 0x15]
- ldr r0, [r2]
- adds r0, 0x2C
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r1, _082E2AE0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xC
- ldr r2, _082E2AE4
- adds r0, r2, 0
- strh r0, [r1]
- bl STWI_init_Callback_M
- bl STWI_init_Callback_S
- ldr r3, _082E2AE8
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _082E2AEC
- ldrh r0, [r4]
- movs r1, 0x80
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_082E2AD8: .4byte IntrSIO32
-_082E2ADC: .4byte gUnknown_03007868
-_082E2AE0: .4byte 0x04000134
-_082E2AE4: .4byte 0x00005003
-_082E2AE8: .4byte 0x04000208
-_082E2AEC: .4byte 0x04000200
- thumb_func_end STWI_init_all
-
- thumb_func_start STWI_init_timer
-STWI_init_timer: @ 82E2AF0
- push {r4,r5,lr}
- ldr r2, _082E2B1C
- str r2, [r0]
- ldr r5, _082E2B20
- ldr r0, [r5]
- movs r4, 0
- strb r1, [r0, 0xA]
- ldr r3, _082E2B24
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _082E2B28
- ldr r1, [r5]
- movs r0, 0x8
- ldrb r1, [r1, 0xA]
- lsls r0, r1
- ldrh r1, [r4]
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_082E2B1C: .4byte STWI_intr_timer
-_082E2B20: .4byte gUnknown_03007868
-_082E2B24: .4byte 0x04000208
-_082E2B28: .4byte 0x04000200
- thumb_func_end STWI_init_timer
-
- thumb_func_start AgbRFU_SoftReset
-AgbRFU_SoftReset: @ 82E2B2C
- push {r4,r5,lr}
- ldr r5, _082E2BC4
- movs r1, 0x80
- lsls r1, 8
- adds r0, r1, 0
- strh r0, [r5]
- ldr r2, _082E2BC8
- adds r0, r2, 0
- strh r0, [r5]
- ldr r1, _082E2BCC
- ldr r0, [r1]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r3, _082E2BD0
- adds r2, r0, r3
- ldr r4, _082E2BD4
- adds r3, r0, r4
- movs r0, 0
- strh r0, [r3]
- strh r0, [r2]
- movs r0, 0x83
- strh r0, [r3]
- ldrh r0, [r2]
- adds r4, r1, 0
- cmp r0, 0x11
- bhi _082E2B6C
- ldr r0, _082E2BD8
- adds r1, r0, 0
-_082E2B64:
- strh r1, [r5]
- ldrh r0, [r2]
- cmp r0, 0x11
- bls _082E2B64
-_082E2B6C:
- movs r0, 0x3
- strh r0, [r3]
- ldr r1, _082E2BC4
- ldr r2, _082E2BC8
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xC
- ldr r3, _082E2BDC
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, [r4]
- movs r2, 0
- str r2, [r0]
- strb r2, [r0, 0x4]
- ldr r0, [r4]
- strb r2, [r0, 0x5]
- ldr r0, [r4]
- strb r2, [r0, 0x6]
- ldr r0, [r4]
- strb r2, [r0, 0x7]
- ldr r0, [r4]
- strb r2, [r0, 0x8]
- ldr r0, [r4]
- strb r2, [r0, 0x9]
- ldr r0, [r4]
- str r2, [r0, 0xC]
- ldrb r1, [r0, 0x10]
- strb r2, [r0, 0x10]
- ldr r1, [r4]
- ldrh r0, [r1, 0x12]
- movs r3, 0
- strh r2, [r1, 0x12]
- ldrb r0, [r1, 0x14]
- movs r0, 0x1
- strb r0, [r1, 0x14]
- ldr r0, [r4]
- strb r3, [r0, 0x15]
- ldr r0, [r4]
- adds r0, 0x2C
- ldrb r1, [r0]
- strb r3, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_082E2BC4: .4byte 0x04000134
-_082E2BC8: .4byte 0x000080a0
-_082E2BCC: .4byte gUnknown_03007868
-_082E2BD0: .4byte 0x04000100
-_082E2BD4: .4byte 0x04000102
-_082E2BD8: .4byte 0x000080a2
-_082E2BDC: .4byte 0x00005003
- thumb_func_end AgbRFU_SoftReset
-
- thumb_func_start STWI_set_MS_mode
-STWI_set_MS_mode: @ 82E2BE0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _082E2BF0
- ldr r1, [r1]
- ldrb r2, [r1, 0x14]
- strb r0, [r1, 0x14]
- bx lr
- .align 2, 0
-_082E2BF0: .4byte gUnknown_03007868
- thumb_func_end STWI_set_MS_mode
-
- thumb_func_start STWI_read_status
-STWI_read_status: @ 82E2BF4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x1
- beq _082E2C20
- cmp r0, 0x1
- bgt _082E2C0A
- cmp r0, 0
- beq _082E2C14
- b _082E2C48
-_082E2C0A:
- cmp r1, 0x2
- beq _082E2C2C
- cmp r1, 0x3
- beq _082E2C3C
- b _082E2C48
-_082E2C14:
- ldr r0, _082E2C1C
- ldr r0, [r0]
- ldrh r0, [r0, 0x12]
- b _082E2C4A
- .align 2, 0
-_082E2C1C: .4byte gUnknown_03007868
-_082E2C20:
- ldr r0, _082E2C28
- ldr r0, [r0]
- ldrb r0, [r0, 0x14]
- b _082E2C4A
- .align 2, 0
-_082E2C28: .4byte gUnknown_03007868
-_082E2C2C:
- ldr r0, _082E2C38
- ldr r0, [r0]
- ldr r0, [r0]
- lsls r0, 16
- lsrs r0, 16
- b _082E2C4A
- .align 2, 0
-_082E2C38: .4byte gUnknown_03007868
-_082E2C3C:
- ldr r0, _082E2C44
- ldr r0, [r0]
- ldrb r0, [r0, 0x6]
- b _082E2C4A
- .align 2, 0
-_082E2C44: .4byte gUnknown_03007868
-_082E2C48:
- ldr r0, _082E2C50
-_082E2C4A:
- pop {r1}
- bx r1
- .align 2, 0
-_082E2C50: .4byte 0x0000ffff
- thumb_func_end STWI_read_status
-
- thumb_func_start STWI_init_Callback_M
-STWI_init_Callback_M: @ 82E2C54
- push {lr}
- movs r0, 0
- bl STWI_set_Callback_M
- pop {r0}
- bx r0
- thumb_func_end STWI_init_Callback_M
-
- thumb_func_start STWI_init_Callback_S
-STWI_init_Callback_S: @ 82E2C60
- push {lr}
- movs r0, 0
- bl STWI_set_Callback_S
- pop {r0}
- bx r0
- thumb_func_end STWI_init_Callback_S
-
- thumb_func_start STWI_set_Callback_M
-STWI_set_Callback_M: @ 82E2C6C
- ldr r1, _082E2C74
- ldr r1, [r1]
- str r0, [r1, 0x18]
- bx lr
- .align 2, 0
-_082E2C74: .4byte gUnknown_03007868
- thumb_func_end STWI_set_Callback_M
-
- thumb_func_start STWI_set_Callback_S
-STWI_set_Callback_S: @ 82E2C78
- ldr r1, _082E2C80
- ldr r1, [r1]
- str r0, [r1, 0x1C]
- bx lr
- .align 2, 0
-_082E2C80: .4byte gUnknown_03007868
- thumb_func_end STWI_set_Callback_S
-
- thumb_func_start STWI_set_Callback_ID
-STWI_set_Callback_ID: @ 82E2C84
- ldr r1, _082E2C8C
- ldr r1, [r1]
- str r0, [r1, 0x20]
- bx lr
- .align 2, 0
-_082E2C8C: .4byte gUnknown_03007868
- thumb_func_end STWI_set_Callback_ID
-
- thumb_func_start STWI_poll_CommandEnd
-STWI_poll_CommandEnd: @ 82E2C90
- push {lr}
- ldr r0, _082E2CB4
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- adds r3, r0, 0
- cmp r1, 0x1
- bne _082E2CAA
- adds r1, r2, 0
-_082E2CA4:
- ldrb r0, [r1]
- cmp r0, 0x1
- beq _082E2CA4
-_082E2CAA:
- ldr r0, [r3]
- ldrh r0, [r0, 0x12]
- pop {r1}
- bx r1
- .align 2, 0
-_082E2CB4: .4byte gUnknown_03007868
- thumb_func_end STWI_poll_CommandEnd
-
- thumb_func_start STWI_send_ResetREQ
-STWI_send_ResetREQ: @ 82E2CB8
- push {lr}
- movs r0, 0x10
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2CD2
- ldr r0, _082E2CD8
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2CD2:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2CD8: .4byte gUnknown_03007868
- thumb_func_end STWI_send_ResetREQ
-
- thumb_func_start STWI_send_LinkStatusREQ
-STWI_send_LinkStatusREQ: @ 82E2CDC
- push {lr}
- movs r0, 0x11
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2CF6
- ldr r0, _082E2CFC
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2CF6:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2CFC: .4byte gUnknown_03007868
- thumb_func_end STWI_send_LinkStatusREQ
-
- thumb_func_start STWI_send_VersionStatusREQ
-STWI_send_VersionStatusREQ: @ 82E2D00
- push {lr}
- movs r0, 0x12
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2D1A
- ldr r0, _082E2D20
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2D1A:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2D20: .4byte gUnknown_03007868
- thumb_func_end STWI_send_VersionStatusREQ
-
- thumb_func_start STWI_send_SystemStatusREQ
-STWI_send_SystemStatusREQ: @ 82E2D24
- push {lr}
- movs r0, 0x13
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2D3E
- ldr r0, _082E2D44
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2D3E:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2D44: .4byte gUnknown_03007868
- thumb_func_end STWI_send_SystemStatusREQ
-
- thumb_func_start STWI_send_SlotStatusREQ
-STWI_send_SlotStatusREQ: @ 82E2D48
- push {lr}
- movs r0, 0x14
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2D62
- ldr r0, _082E2D68
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2D62:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2D68: .4byte gUnknown_03007868
- thumb_func_end STWI_send_SlotStatusREQ
-
- thumb_func_start STWI_send_ConfigStatusREQ
-STWI_send_ConfigStatusREQ: @ 82E2D6C
- push {lr}
- movs r0, 0x15
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2D86
- ldr r0, _082E2D8C
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2D86:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2D8C: .4byte gUnknown_03007868
- thumb_func_end STWI_send_ConfigStatusREQ
-
- thumb_func_start STWI_send_GameConfigREQ
-STWI_send_GameConfigREQ: @ 82E2D90
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x16
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _082E2DDC
- ldr r2, _082E2DE4
- ldr r1, [r2]
- movs r0, 0x6
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r1, [r0, 0x24]
- adds r1, 0x4
- ldrh r0, [r4]
- strh r0, [r1]
- adds r1, 0x2
- adds r4, 0x2
- movs r2, 0xD
-_082E2DBA:
- ldrb r0, [r4]
- strb r0, [r1]
- adds r1, 0x1
- adds r4, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _082E2DBA
- movs r2, 0x7
-_082E2DCA:
- ldrb r0, [r5]
- strb r0, [r1]
- adds r1, 0x1
- adds r5, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _082E2DCA
- bl STWI_start_Command
-_082E2DDC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_082E2DE4: .4byte gUnknown_03007868
- thumb_func_end STWI_send_GameConfigREQ
-
- thumb_func_start STWI_send_SystemConfigREQ
-STWI_send_SystemConfigREQ: @ 82E2DE8
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- movs r0, 0x17
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _082E2E1E
- ldr r2, _082E2E24
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- adds r0, 0x4
- strb r4, [r0]
- adds r0, 0x1
- strb r5, [r0]
- adds r0, 0x1
- strh r6, [r0]
- bl STWI_start_Command
-_082E2E1E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_082E2E24: .4byte gUnknown_03007868
- thumb_func_end STWI_send_SystemConfigREQ
-
- thumb_func_start STWI_send_SC_StartREQ
-STWI_send_SC_StartREQ: @ 82E2E28
- push {lr}
- movs r0, 0x19
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2E42
- ldr r0, _082E2E48
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2E42:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2E48: .4byte gUnknown_03007868
- thumb_func_end STWI_send_SC_StartREQ
-
- thumb_func_start STWI_send_SC_PollingREQ
-STWI_send_SC_PollingREQ: @ 82E2E4C
- push {lr}
- movs r0, 0x1A
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2E66
- ldr r0, _082E2E6C
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2E66:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2E6C: .4byte gUnknown_03007868
- thumb_func_end STWI_send_SC_PollingREQ
-
- thumb_func_start STWI_send_SC_EndREQ
-STWI_send_SC_EndREQ: @ 82E2E70
- push {lr}
- movs r0, 0x1B
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2E8A
- ldr r0, _082E2E90
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2E8A:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2E90: .4byte gUnknown_03007868
- thumb_func_end STWI_send_SC_EndREQ
-
- thumb_func_start STWI_send_SP_StartREQ
-STWI_send_SP_StartREQ: @ 82E2E94
- push {lr}
- movs r0, 0x1C
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2EAE
- ldr r0, _082E2EB4
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2EAE:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2EB4: .4byte gUnknown_03007868
- thumb_func_end STWI_send_SP_StartREQ
-
- thumb_func_start STWI_send_SP_PollingREQ
-STWI_send_SP_PollingREQ: @ 82E2EB8
- push {lr}
- movs r0, 0x1D
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2ED2
- ldr r0, _082E2ED8
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2ED2:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2ED8: .4byte gUnknown_03007868
- thumb_func_end STWI_send_SP_PollingREQ
-
- thumb_func_start STWI_send_SP_EndREQ
-STWI_send_SP_EndREQ: @ 82E2EDC
- push {lr}
- movs r0, 0x1E
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2EF6
- ldr r0, _082E2EFC
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2EF6:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2EFC: .4byte gUnknown_03007868
- thumb_func_end STWI_send_SP_EndREQ
-
- thumb_func_start STWI_send_CP_StartREQ
-STWI_send_CP_StartREQ: @ 82E2F00
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0x1F
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _082E2F24
- ldr r2, _082E2F2C
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- str r4, [r0, 0x4]
- bl STWI_start_Command
-_082E2F24:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_082E2F2C: .4byte gUnknown_03007868
- thumb_func_end STWI_send_CP_StartREQ
-
- thumb_func_start STWI_send_CP_PollingREQ
-STWI_send_CP_PollingREQ: @ 82E2F30
- push {lr}
- movs r0, 0x20
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2F4A
- ldr r0, _082E2F50
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2F4A:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2F50: .4byte gUnknown_03007868
- thumb_func_end STWI_send_CP_PollingREQ
-
- thumb_func_start STWI_send_CP_EndREQ
-STWI_send_CP_EndREQ: @ 82E2F54
- push {lr}
- movs r0, 0x21
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E2F6E
- ldr r0, _082E2F74
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E2F6E:
- pop {r0}
- bx r0
- .align 2, 0
-_082E2F74: .4byte gUnknown_03007868
- thumb_func_end STWI_send_CP_EndREQ
-
- thumb_func_start STWI_send_DataTxREQ
-STWI_send_DataTxREQ: @ 82E2F78
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r5, r4, 24
- movs r0, 0x24
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _082E2FB6
- lsrs r2, r4, 26
- movs r0, 0x3
- ands r0, r5
- cmp r0, 0
- beq _082E2F98
- adds r2, 0x1
-_082E2F98:
- ldr r1, _082E2FBC
- ldr r0, [r1]
- strb r2, [r0, 0x4]
- ldr r0, [r1]
- ldr r1, [r0, 0x24]
- adds r1, 0x4
- ldrb r2, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 19
- orrs r2, r0
- adds r0, r6, 0
- bl CpuSet
- bl STWI_start_Command
-_082E2FB6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_082E2FBC: .4byte gUnknown_03007868
- thumb_func_end STWI_send_DataTxREQ
-
- thumb_func_start STWI_send_DataTxAndChangeREQ
-STWI_send_DataTxAndChangeREQ: @ 82E2FC0
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r5, r4, 24
- movs r0, 0x25
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _082E2FFE
- lsrs r2, r4, 26
- movs r0, 0x3
- ands r0, r5
- cmp r0, 0
- beq _082E2FE0
- adds r2, 0x1
-_082E2FE0:
- ldr r1, _082E3004
- ldr r0, [r1]
- strb r2, [r0, 0x4]
- ldr r0, [r1]
- ldr r1, [r0, 0x24]
- adds r1, 0x4
- ldrb r2, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 19
- orrs r2, r0
- adds r0, r6, 0
- bl CpuSet
- bl STWI_start_Command
-_082E2FFE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_082E3004: .4byte gUnknown_03007868
- thumb_func_end STWI_send_DataTxAndChangeREQ
-
- thumb_func_start STWI_send_DataRxREQ
-STWI_send_DataRxREQ: @ 82E3008
- push {lr}
- movs r0, 0x26
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E3022
- ldr r0, _082E3028
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E3022:
- pop {r0}
- bx r0
- .align 2, 0
-_082E3028: .4byte gUnknown_03007868
- thumb_func_end STWI_send_DataRxREQ
-
- thumb_func_start STWI_send_MS_ChangeREQ
-STWI_send_MS_ChangeREQ: @ 82E302C
- push {lr}
- movs r0, 0x27
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E3046
- ldr r0, _082E304C
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E3046:
- pop {r0}
- bx r0
- .align 2, 0
-_082E304C: .4byte gUnknown_03007868
- thumb_func_end STWI_send_MS_ChangeREQ
-
- thumb_func_start STWI_send_DataReadyAndChangeREQ
-STWI_send_DataReadyAndChangeREQ: @ 82E3050
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- movs r0, 0x28
- bl STWI_init
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _082E3096
- cmp r4, 0
- bne _082E3078
- ldr r0, _082E3074
- ldr r0, [r0]
- strb r3, [r0, 0x4]
- b _082E3092
- .align 2, 0
-_082E3074: .4byte gUnknown_03007868
-_082E3078:
- ldr r2, _082E309C
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- adds r0, 0x4
- strb r5, [r0]
- adds r0, 0x1
- strb r3, [r0]
- adds r0, 0x1
- strb r3, [r0]
- strb r3, [r0, 0x1]
-_082E3092:
- bl STWI_start_Command
-_082E3096:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_082E309C: .4byte gUnknown_03007868
- thumb_func_end STWI_send_DataReadyAndChangeREQ
-
- thumb_func_start STWI_send_DisconnectedAndChangeREQ
-STWI_send_DisconnectedAndChangeREQ: @ 82E30A0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0x29
- bl STWI_init
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- bne _082E30D6
- ldr r2, _082E30DC
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- adds r0, 0x4
- strb r4, [r0]
- adds r0, 0x1
- strb r5, [r0]
- adds r0, 0x1
- strb r3, [r0]
- strb r3, [r0, 0x1]
- bl STWI_start_Command
-_082E30D6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_082E30DC: .4byte gUnknown_03007868
- thumb_func_end STWI_send_DisconnectedAndChangeREQ
-
- thumb_func_start STWI_send_ResumeRetransmitAndChangeREQ
-STWI_send_ResumeRetransmitAndChangeREQ: @ 82E30E0
- push {lr}
- movs r0, 0x37
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E30FA
- ldr r0, _082E3100
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E30FA:
- pop {r0}
- bx r0
- .align 2, 0
-_082E3100: .4byte gUnknown_03007868
- thumb_func_end STWI_send_ResumeRetransmitAndChangeREQ
-
- thumb_func_start STWI_send_DisconnectREQ
-STWI_send_DisconnectREQ: @ 82E3104
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x30
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _082E3128
- ldr r2, _082E3130
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r0, [r0, 0x24]
- str r4, [r0, 0x4]
- bl STWI_start_Command
-_082E3128:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_082E3130: .4byte gUnknown_03007868
- thumb_func_end STWI_send_DisconnectREQ
-
- thumb_func_start STWI_send_TestModeREQ
-STWI_send_TestModeREQ: @ 82E3134
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- movs r0, 0x31
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _082E3160
- ldr r2, _082E3168
- ldr r1, [r2]
- movs r0, 0x1
- strb r0, [r1, 0x4]
- ldr r0, [r2]
- ldr r1, [r0, 0x24]
- lsls r0, r4, 8
- orrs r0, r5
- str r0, [r1, 0x4]
- bl STWI_start_Command
-_082E3160:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_082E3168: .4byte gUnknown_03007868
- thumb_func_end STWI_send_TestModeREQ
-
- thumb_func_start STWI_send_CPR_StartREQ
-STWI_send_CPR_StartREQ: @ 82E316C
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 24
- lsrs r6, r2, 24
- movs r0, 0x32
- bl STWI_init
- lsls r0, 16
- cmp r0, 0
- bne _082E319E
- ldr r2, _082E31A4
- ldr r1, [r2]
- movs r0, 0x2
- strb r0, [r1, 0x4]
- lsls r0, r5, 16
- orrs r0, r4
- ldr r1, [r2]
- ldr r1, [r1, 0x24]
- str r0, [r1, 0x4]
- str r6, [r1, 0x8]
- bl STWI_start_Command
-_082E319E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_082E31A4: .4byte gUnknown_03007868
- thumb_func_end STWI_send_CPR_StartREQ
-
- thumb_func_start STWI_send_CPR_PollingREQ
-STWI_send_CPR_PollingREQ: @ 82E31A8
- push {lr}
- movs r0, 0x33
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E31C2
- ldr r0, _082E31C8
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E31C2:
- pop {r0}
- bx r0
- .align 2, 0
-_082E31C8: .4byte gUnknown_03007868
- thumb_func_end STWI_send_CPR_PollingREQ
-
- thumb_func_start STWI_send_CPR_EndREQ
-STWI_send_CPR_EndREQ: @ 82E31CC
- push {lr}
- movs r0, 0x34
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E31E6
- ldr r0, _082E31EC
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E31E6:
- pop {r0}
- bx r0
- .align 2, 0
-_082E31EC: .4byte gUnknown_03007868
- thumb_func_end STWI_send_CPR_EndREQ
-
- thumb_func_start STWI_send_StopModeREQ
-STWI_send_StopModeREQ: @ 82E31F0
- push {lr}
- movs r0, 0x3D
- bl STWI_init
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _082E320A
- ldr r0, _082E3210
- ldr r0, [r0]
- strb r1, [r0, 0x4]
- bl STWI_start_Command
-_082E320A:
- pop {r0}
- bx r0
- .align 2, 0
-_082E3210: .4byte gUnknown_03007868
- thumb_func_end STWI_send_StopModeREQ
-
- thumb_func_start STWI_intr_timer
-STWI_intr_timer: @ 82E3214
- push {r4,lr}
- ldr r4, _082E322C
- ldr r1, [r4]
- ldr r0, [r1, 0xC]
- cmp r0, 0x2
- beq _082E323A
- cmp r0, 0x2
- bgt _082E3230
- cmp r0, 0x1
- beq _082E3248
- b _082E3270
- .align 2, 0
-_082E322C: .4byte gUnknown_03007868
-_082E3230:
- cmp r0, 0x3
- beq _082E3252
- cmp r0, 0x4
- beq _082E3248
- b _082E3270
-_082E323A:
- ldrb r0, [r1, 0x10]
- movs r0, 0x1
- strb r0, [r1, 0x10]
- movs r0, 0x32
- bl STWI_set_timer
- b _082E3270
-_082E3248:
- bl STWI_stop_timer
- bl STWI_restart_Command
- b _082E3270
-_082E3252:
- ldrb r0, [r1, 0x10]
- movs r0, 0x1
- strb r0, [r1, 0x10]
- bl STWI_stop_timer
- bl STWI_reset_ClockCounter
- ldr r0, [r4]
- ldr r2, [r0, 0x18]
- cmp r2, 0
- beq _082E3270
- movs r0, 0xFF
- movs r1, 0
- bl _call_via_r2
-_082E3270:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end STWI_intr_timer
-
- thumb_func_start STWI_set_timer
-STWI_set_timer: @ 82E3278
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- adds r5, r3, 0
- ldr r2, _082E32A8
- ldr r0, [r2]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r1, _082E32AC
- adds r4, r0, r1
- adds r1, 0x2
- adds r7, r0, r1
- ldr r1, _082E32B0
- movs r0, 0
- strh r0, [r1]
- adds r6, r2, 0
- cmp r3, 0x50
- beq _082E32D0
- cmp r3, 0x50
- bgt _082E32B4
- cmp r3, 0x32
- beq _082E32BE
- b _082E32FC
- .align 2, 0
-_082E32A8: .4byte gUnknown_03007868
-_082E32AC: .4byte 0x04000100
-_082E32B0: .4byte 0x04000208
-_082E32B4:
- cmp r5, 0x64
- beq _082E32E0
- cmp r5, 0x82
- beq _082E32F0
- b _082E32FC
-_082E32BE:
- ldr r1, _082E32CC
- adds r0, r1, 0
- strh r0, [r4]
- ldr r1, [r6]
- movs r0, 0x1
- b _082E32FA
- .align 2, 0
-_082E32CC: .4byte 0x0000fccb
-_082E32D0:
- ldr r1, _082E32DC
- adds r0, r1, 0
- strh r0, [r4]
- ldr r1, [r6]
- movs r0, 0x2
- b _082E32FA
- .align 2, 0
-_082E32DC: .4byte 0x0000fae0
-_082E32E0:
- ldr r1, _082E32EC
- adds r0, r1, 0
- strh r0, [r4]
- ldr r1, [r6]
- movs r0, 0x3
- b _082E32FA
- .align 2, 0
-_082E32EC: .4byte 0x0000f996
-_082E32F0:
- ldr r1, _082E3318
- adds r0, r1, 0
- strh r0, [r4]
- ldr r1, [r6]
- movs r0, 0x4
-_082E32FA:
- str r0, [r1, 0xC]
-_082E32FC:
- movs r0, 0xC3
- strh r0, [r7]
- ldr r2, _082E331C
- ldr r1, [r6]
- movs r0, 0x8
- ldrb r1, [r1, 0xA]
- lsls r0, r1
- strh r0, [r2]
- ldr r1, _082E3320
- movs r0, 0x1
- strh r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_082E3318: .4byte 0x0000f7ad
-_082E331C: .4byte 0x04000202
-_082E3320: .4byte 0x04000208
- thumb_func_end STWI_set_timer
-
- thumb_func_start STWI_stop_timer
-STWI_stop_timer: @ 82E3324
- ldr r2, _082E3344
- ldr r0, [r2]
- movs r1, 0
- str r1, [r0, 0xC]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r3, _082E3348
- adds r0, r3
- strh r1, [r0]
- ldr r0, [r2]
- ldrb r0, [r0, 0xA]
- lsls r0, 2
- ldr r2, _082E334C
- adds r0, r2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_082E3344: .4byte gUnknown_03007868
-_082E3348: .4byte 0x04000100
-_082E334C: .4byte 0x04000102
- thumb_func_end STWI_stop_timer
-
- thumb_func_start STWI_init
-STWI_init: @ 82E3350
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- ldr r0, _082E337C
- ldrh r0, [r0]
- cmp r0, 0
- bne _082E3384
- ldr r0, _082E3380
- ldr r1, [r0]
- ldrh r0, [r1, 0x12]
- movs r0, 0x6
- strh r0, [r1, 0x12]
- ldr r2, [r1, 0x18]
- cmp r2, 0
- beq _082E33CE
- ldrh r1, [r1, 0x12]
- adds r0, r5, 0
- bl _call_via_r2
- b _082E33CE
- .align 2, 0
-_082E337C: .4byte 0x04000208
-_082E3380: .4byte gUnknown_03007868
-_082E3384:
- ldr r4, _082E33B0
- ldr r2, [r4]
- adds r3, r2, 0
- adds r3, 0x2C
- ldrb r0, [r3]
- cmp r0, 0x1
- bne _082E33B4
- ldrh r0, [r2, 0x12]
- movs r1, 0
- movs r0, 0x2
- strh r0, [r2, 0x12]
- ldrb r0, [r3]
- strb r1, [r3]
- ldr r0, [r4]
- ldr r2, [r0, 0x18]
- cmp r2, 0
- beq _082E33CE
- ldrh r1, [r0, 0x12]
- adds r0, r5, 0
- bl _call_via_r2
- b _082E33CE
- .align 2, 0
-_082E33B0: .4byte gUnknown_03007868
-_082E33B4:
- ldrb r0, [r2, 0x14]
- cmp r0, 0
- bne _082E33D2
- ldrh r0, [r2, 0x12]
- movs r0, 0x4
- strh r0, [r2, 0x12]
- ldr r3, [r2, 0x18]
- cmp r3, 0
- beq _082E33CE
- ldrh r1, [r2, 0x12]
- adds r0, r5, 0
- bl _call_via_r3
-_082E33CE:
- movs r0, 0x1
- b _082E341A
-_082E33D2:
- ldrb r0, [r3]
- movs r1, 0
- movs r0, 0x1
- strb r0, [r3]
- ldr r0, [r4]
- strb r6, [r0, 0x6]
- ldr r0, [r4]
- str r1, [r0]
- strb r1, [r0, 0x4]
- ldr r0, [r4]
- strb r1, [r0, 0x5]
- ldr r0, [r4]
- strb r1, [r0, 0x7]
- ldr r0, [r4]
- strb r1, [r0, 0x8]
- ldr r0, [r4]
- strb r1, [r0, 0x9]
- ldr r0, [r4]
- str r1, [r0, 0xC]
- ldrb r2, [r0, 0x10]
- strb r1, [r0, 0x10]
- ldr r0, [r4]
- ldrh r2, [r0, 0x12]
- movs r2, 0
- strh r1, [r0, 0x12]
- strb r2, [r0, 0x15]
- ldr r1, _082E3420
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xC
- ldr r2, _082E3424
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
-_082E341A:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_082E3420: .4byte 0x04000134
-_082E3424: .4byte 0x00005003
- thumb_func_end STWI_init
-
- thumb_func_start STWI_start_Command
-STWI_start_Command: @ 82E3428
- push {r4,r5,lr}
- ldr r5, _082E3480
- ldr r0, [r5]
- ldr r3, [r0, 0x24]
- ldrb r1, [r0, 0x4]
- lsls r1, 8
- ldrb r0, [r0, 0x6]
- ldr r2, _082E3484
- orrs r0, r2
- orrs r1, r0
- str r1, [r3]
- ldr r2, _082E3488
- ldr r1, [r5]
- ldr r0, [r1, 0x24]
- ldr r0, [r0]
- str r0, [r2]
- movs r2, 0
- str r2, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x5]
- ldr r4, _082E348C
- ldrh r3, [r4]
- strh r2, [r4]
- ldr r2, _082E3490
- ldr r1, [r5]
- movs r0, 0x8
- ldrb r1, [r1, 0xA]
- lsls r0, r1
- ldrh r1, [r2]
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strh r0, [r2]
- strh r3, [r4]
- ldr r1, _082E3494
- ldr r2, _082E3498
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_082E3480: .4byte gUnknown_03007868
-_082E3484: .4byte 0x99660000
-_082E3488: .4byte 0x04000120
-_082E348C: .4byte 0x04000208
-_082E3490: .4byte 0x04000200
-_082E3494: .4byte 0x04000128
-_082E3498: .4byte 0x00005083
- thumb_func_end STWI_start_Command
-
- thumb_func_start STWI_restart_Command
-STWI_restart_Command: @ 82E349C
- push {r4,lr}
- ldr r4, _082E34B4
- ldr r2, [r4]
- ldrb r0, [r2, 0x15]
- adds r3, r4, 0
- cmp r0, 0x1
- bhi _082E34B8
- adds r0, 0x1
- strb r0, [r2, 0x15]
- bl STWI_start_Command
- b _082E3512
- .align 2, 0
-_082E34B4: .4byte gUnknown_03007868
-_082E34B8:
- ldrb r0, [r2, 0x6]
- cmp r0, 0x27
- beq _082E34CA
- cmp r0, 0x25
- beq _082E34CA
- cmp r0, 0x35
- beq _082E34CA
- cmp r0, 0x37
- bne _082E34EC
-_082E34CA:
- ldr r0, [r3]
- ldrh r1, [r0, 0x12]
- movs r2, 0
- movs r1, 0x1
- strh r1, [r0, 0x12]
- adds r0, 0x2C
- ldrb r1, [r0]
- strb r2, [r0]
- ldr r1, [r3]
- ldr r2, [r1, 0x18]
- cmp r2, 0
- beq _082E3512
- ldrb r0, [r1, 0x6]
- ldrh r1, [r1, 0x12]
- bl _call_via_r2
- b _082E3512
-_082E34EC:
- ldrh r0, [r2, 0x12]
- movs r1, 0
- movs r0, 0x1
- strh r0, [r2, 0x12]
- adds r0, r2, 0
- adds r0, 0x2C
- ldrb r2, [r0]
- strb r1, [r0]
- ldr r1, [r4]
- ldr r2, [r1, 0x18]
- cmp r2, 0
- beq _082E350C
- ldrb r0, [r1, 0x6]
- ldrh r1, [r1, 0x12]
- bl _call_via_r2
-_082E350C:
- ldr r1, [r4]
- movs r0, 0x4
- str r0, [r1]
-_082E3512:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end STWI_restart_Command
-
- thumb_func_start STWI_reset_ClockCounter
-STWI_reset_ClockCounter: @ 82E351C
- ldr r3, _082E3548
- ldr r1, [r3]
- movs r0, 0x5
- str r0, [r1]
- movs r2, 0
- strb r2, [r1, 0x4]
- ldr r0, [r3]
- strb r2, [r0, 0x5]
- ldr r1, _082E354C
- movs r0, 0x80
- lsls r0, 24
- str r0, [r1]
- adds r1, 0x8
- strh r2, [r1]
- ldr r2, _082E3550
- adds r0, r2, 0
- strh r0, [r1]
- adds r2, 0x7F
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- bx lr
- .align 2, 0
-_082E3548: .4byte gUnknown_03007868
-_082E354C: .4byte 0x04000120
-_082E3550: .4byte 0x00005003
- thumb_func_end STWI_reset_ClockCounter
-
- arm_func_start IntrSIO32
-IntrSIO32: @ 82E3554
- mov r12, sp
- stmdb sp!, {r11,r12,lr,pc}
- ldr r3, _082E35B4
- ldr r0, [r3]
- ldr r2, [r0]
- sub r11, r12, 0x4
- cmp r2, 0xA
- bne _082E3590
- ldr r0, [r0, 0x20]
- cmp r0, 0
- ldmdbeq r11, {r11,sp,lr}
- bxeq lr
- bl sub_82E3EB0
- ldmdb r11, {r11,sp,lr}
- bx lr
-_082E3590:
- ldrb r3, [r0, 0x14]
- cmp r3, 0x1
- bne _082E35A8
- bl sio32intr_clock_master
- ldmdb r11, {r11,sp,lr}
- bx lr
-_082E35A8:
- bl sio32intr_clock_slave
- ldmdb r11, {r11,sp,lr}
- bx lr
- .align 2, 0
-_082E35B4: .4byte gUnknown_03007868
- arm_func_end IntrSIO32
-
- arm_func_start sio32intr_clock_master
-sio32intr_clock_master: @ 82E35B8
- mov r12, sp
- stmdb sp!, {r4-r6,r11,r12,lr,pc}
- mov r0, 0x50
- sub r11, r12, 0x4
- bl STWI_set_timer_in_RAM
- mov r4, 0x120
- ldr r2, _082E382C
- add r4, r4, 0x4000000
- ldr lr, [r4]
- ldr r12, [r2]
- ldr r3, [r12]
- mov r6, r2
- cmp r3, 0
- bne _082E3638
- cmp lr, 0x80000000
- bne _082E36B8
- ldrb r2, [r12, 0x5]
- ldrb r3, [r12, 0x4]
- cmp r2, r3
- bhi _082E3628
- ldr r3, [r12, 0x24]
- mov r1, r2
- ldr r2, [r3, r1, lsl 2]
- str r2, [r4]
- ldrb r3, [r12, 0x5]
- add r3, r3, 0x1
- strb r3, [r12, 0x5]
- b _082E3714
-_082E3628:
- mov r3, 0x1
- str r3, [r12]
- str lr, [r4]
- b _082E3714
-_082E3638:
- ldr r3, [r12]
- cmp r3, 0x1
- bne _082E36C8
- mov r3, 0x99000000
- add r3, r3, 0x660000
- mov r5, 0x80000000
- and r2, lr, r5, asr 15
- cmp r2, r3
- bne _082E36B8
- mov r3, 0
- strb r3, [r12, 0x8]
- ldr r1, [r6]
- ldrb r0, [r1, 0x8]
- ldr r2, [r1, 0x28]
- str lr, [r2, r0, lsl 2]
- ldrb r3, [r1, 0x8]
- add r3, r3, 0x1
- strb r3, [r1, 0x8]
- ldr r2, [r6]
- strb lr, [r2, 0x9]
- ldr r3, [r6]
- mov r2, lr, lsr 8
- strb r2, [r3, 0x7]
- ldr r1, [r6]
- ldrb r2, [r1, 0x7]
- ldrb r3, [r1, 0x8]
- cmp r2, r3
- bcc _082E3700
- mov r3, 0x2
- str r3, [r1]
- str r5, [r4]
- b _082E3714
-_082E36B8:
- bl STWI_stop_timer_in_RAM
- mov r0, 0x82
- bl STWI_set_timer_in_RAM
- b _082E3840
-_082E36C8:
- ldr r3, [r12]
- cmp r3, 0x2
- bne _082E3714
- ldrb r1, [r12, 0x8]
- ldr r2, [r12, 0x28]
- str lr, [r2, r1, lsl 2]
- ldrb r3, [r12, 0x8]
- add r3, r3, 0x1
- strb r3, [r12, 0x8]
- ldr r1, [r6]
- ldrb r2, [r1, 0x7]
- ldrb r3, [r1, 0x8]
- cmp r2, r3
- bcs _082E370C
-_082E3700:
- mov r3, 0x3
- str r3, [r1]
- b _082E3714
-_082E370C:
- mov r3, 0x80000000
- str r3, [r4]
-_082E3714:
- mov r0, 0x1
- bl handshake_wait
- mov r0, r0, lsl 16
- cmp r0, 0x10000
- beq _082E3840
- mov r4, 0x128
- add r4, r4, 0x4000000
- mov r5, 0x5000
- add r3, r5, 0xB
- strh r3, [r4]
- mov r0, 0
- bl handshake_wait
- mov r0, r0, lsl 16
- cmp r0, 0x10000
- beq _082E3840
- bl STWI_stop_timer_in_RAM
- ldr r1, [r6]
- ldr r0, [r1]
- cmp r0, 0x3
- bne _082E3830
- ldrb r3, [r1, 0x9]
- cmp r3, 0xA5
- cmpne r3, 0xA7
- beq _082E3788
- and r3, r3, 0xFF
- cmp r3, 0xB5
- beq _082E3788
- cmp r3, 0xB7
- bne _082E37D0
-_082E3788:
- mov r1, 0x120
- add r1, r1, 0x4000000
- mov r12, 0x128
- add r12, r12, 0x4000000
- ldr r0, [r6]
- mov r3, 0
- strb r3, [r0, 0x14]
- mov r2, 0x80000000
- str r2, [r1]
- add r3, r3, 0x5000
- add r2, r3, 0x2
- strh r2, [r12]
- add r3, r3, 0x82
- strh r3, [r12]
- ldr r2, [r6]
- mov r3, 0x5
- str r3, [r2]
- b _082E3800
-_082E37D0:
- cmp r3, 0xEE
- bne _082E37F0
- add r3, r5, 0x3
- strh r3, [r4]
- mov r2, 0x4
- str r2, [r1]
- strh r0, [r1, 0x12]
- b _082E3800
-_082E37F0:
- add r3, r5, 0x3
- strh r3, [r4]
- mov r2, 0x4
- str r2, [r1]
-_082E3800:
- ldr r2, [r6]
- mov r3, 0
- strb r3, [r2, 0x2C]
- ldr r0, [r6]
- ldr r2, [r0, 0x18]
- cmp r2, r3
- beq _082E3840
- ldrh r1, [r0, 0x12]
- ldrb r0, [r0, 0x6]
- bl sub_82E3EA8
- b _082E3840
- .align 2, 0
-_082E382C: .4byte gUnknown_03007868
-_082E3830:
- add r3, r5, 0x3
- strh r3, [r4]
- add r2, r5, 0x83
- strh r2, [r4]
-_082E3840:
- ldmdb r11, {r4-r6,r11,sp,lr}
- bx lr
- arm_func_end sio32intr_clock_master
-
- arm_func_start sio32intr_clock_slave
-sio32intr_clock_slave: @ 82E3848
- mov r12, sp
- stmdb sp!, {r4-r6,r11,r12,lr,pc}
- ldr r4, _082E3BF4
- mov r0, 0x64
- ldr r3, [r4]
- mov r6, 0
- strb r6, [r3, 0x10]
- sub r11, r12, 0x4
- bl STWI_set_timer_in_RAM
- mov r0, r6
- bl handshake_wait
- mov r0, r0, lsl 16
- cmp r0, 0x10000
- mov r5, r4
- beq _082E3C4C
- mov r3, 0x128
- add r3, r3, 0x4000000
- mov r2, 0x5000
- add r2, r2, 0xA
- strh r2, [r3]
- mov lr, 0x120
- ldr r0, [r5]
- add lr, lr, 0x4000000
- ldr r12, [lr]
- ldr r3, [r0]
- cmp r3, 0x5
- bne _082E3978
- ldr r3, [r0, 0x28]
- mov r4, 0x1
- mov r0, 0x99000000
- str r12, [r3]
- add r0, r0, 0x660000
- ldr r2, [r5]
- mov r3, r0, lsr 16
- strb r4, [r2, 0x5]
- cmp r3, r12, lsr 16
- bne _082E3AC4
- ldr r3, [r5]
- mov r2, r12, lsr 8
- strb r2, [r3, 0x4]
- ldr r2, [r5]
- strb r12, [r2, 0x6]
- ldr r1, [r5]
- ldrb r3, [r1, 0x4]
- cmp r3, r6
- bne _082E395C
- ldrb r2, [r1, 0x6]
- sub r3, r2, 0x27
- cmp r2, 0x36
- cmpne r3, 0x2
- bhi _082E3930
- add r3, r2, 0x80
- strb r3, [r1, 0x9]
- ldr r2, [r5]
- ldrb r3, [r2, 0x9]
- ldr r1, [r2, 0x24]
- add r3, r3, r0
- b _082E39E0
-_082E3930:
- ldr r2, [r1, 0x24]
- ldr r3, _082E3BF8
- str r3, [r2]
- ldr r2, [r5]
- ldrb r3, [r2, 0x6]
- sub r3, r3, 0x10
- cmp r3, 0x2D
- bhi _082E3A18
- ldr r3, [r2, 0x24]
- str r4, [r3, 0x4]
- b _082E3A24
-_082E395C:
- mov r3, 0x80000000
- str r3, [lr]
- strb r4, [r1, 0x5]
- ldr r2, [r5]
- add r3, r3, 0x80000006
- str r3, [r2]
- b _082E3AD4
-_082E3978:
- ldr r3, [r0]
- cmp r3, 0x6
- bne _082E3A78
- ldrb r1, [r0, 0x5]
- ldr r2, [r0, 0x28]
- str r12, [r2, r1, lsl 2]
- ldrb r3, [r0, 0x5]
- add r3, r3, 0x1
- strb r3, [r0, 0x5]
- ldr r1, [r5]
- ldrb r2, [r1, 0x4]
- ldrb r3, [r1, 0x5]
- cmp r2, r3
- bcs _082E3A6C
- ldrb r2, [r1, 0x6]
- sub r3, r2, 0x28
- cmp r2, 0x36
- cmpne r3, 0x1
- bhi _082E39F0
- add r3, r2, 0x80
- strb r3, [r1, 0x9]
- ldr r2, [r5]
- ldrb r3, [r2, 0x9]
- ldr r1, [r2, 0x24]
- orr r3, r3, 0x99000000
- orr r3, r3, 0x660000
-_082E39E0:
- str r3, [r1]
- ldr r2, [r5]
- strb r6, [r2, 0x7]
- b _082E3A3C
-_082E39F0:
- ldr r2, [r1, 0x24]
- ldr r3, _082E3BF8
- str r3, [r2]
- ldr r2, [r5]
- ldrb r3, [r2, 0x6]
- sub r3, r3, 0x10
- cmp r3, 0x2D
- ldrls r2, [r2, 0x24]
- movls r3, 0x1
- bls _082E3A20
-_082E3A18:
- ldr r2, [r2, 0x24]
- mov r3, 0x2
-_082E3A20:
- str r3, [r2, 0x4]
-_082E3A24:
- ldr r2, [r5]
- mov r3, 0x1
- strb r3, [r2, 0x7]
- ldr r1, [r5]
- add r3, r3, 0x2
- strh r3, [r1, 0x12]
-_082E3A3C:
- ldr r0, [r5]
- ldr r2, [r0, 0x24]
- mov r3, 0x120
- ldr r1, [r2]
- add r3, r3, 0x4000000
- str r1, [r3]
- mov r2, 0x1
- strb r2, [r0, 0x8]
- ldr r1, [r5]
- mov r3, 0x7
- str r3, [r1]
- b _082E3AD4
-_082E3A6C:
- mov r3, 0x80000000
- str r3, [lr]
- b _082E3AD4
-_082E3A78:
- ldr r3, [r0]
- cmp r3, 0x7
- bne _082E3AD4
- cmp r12, 0x80000000
- bne _082E3AC4
- ldrb r2, [r0, 0x7]
- ldrb r3, [r0, 0x8]
- cmp r2, r3
- movcc r3, 0x8
- strcc r3, [r0]
- bcc _082E3AD4
- ldrb r1, [r0, 0x8]
- ldr r3, [r0, 0x24]
- ldr r2, [r3, r1, lsl 2]
- str r2, [lr]
- ldrb r3, [r0, 0x8]
- add r3, r3, 0x1
- strb r3, [r0, 0x8]
- b _082E3AD4
-_082E3AC4:
- bl STWI_stop_timer_in_RAM
- mov r0, 0x64
- bl STWI_set_timer_in_RAM
- b _082E3C4C
-_082E3AD4:
- mov r0, 0x1
- bl handshake_wait
- mov r0, r0, lsl 16
- cmp r0, 0x10000
- beq _082E3C4C
- mov r6, r5
- ldr r3, [r6]
- ldr r2, [r3]
- cmp r2, 0x8
- bne _082E3B9C
- mov r4, 0x128
- add r4, r4, 0x4000000
- mov r3, 0x5000
- add r3, r3, 0x2
- strh r3, [r4]
- bl STWI_stop_timer_in_RAM
- ldr r0, [r6]
- ldrh r3, [r0, 0x12]
- cmp r3, 0x3
- bne _082E3B48
- bl STWI_init_slave
- ldr r3, [r6]
- ldr r1, [r3, 0x1C]
- cmp r1, 0
- beq _082E3C4C
- mov r0, 0x1EC
- add r0, r0, 0x2
- bl sub_82E3EAC
- b _082E3C4C
-_082E3B48:
- mov r3, 0x120
- add r3, r3, 0x4000000
- mov r1, 0
- str r1, [r3]
- mov r2, 0x5000
- strh r1, [r4]
- add r2, r2, 0x3
- strh r2, [r4]
- mov r3, 0x1
- strb r3, [r0, 0x14]
- ldr r0, [r5]
- ldr r2, [r0, 0x1C]
- str r1, [r0]
- cmp r2, r1
- beq _082E3C4C
- ldrb r3, [r0, 0x4]
- ldrb r0, [r0, 0x6]
- mov r1, r2
- orr r0, r0, r3, lsl 8
- bl sub_82E3EAC
- b _082E3C4C
-_082E3B9C:
- mov r3, 0x208
- add r3, r3, 0x4000000
- mov r2, 0
- strh r2, [r3]
- mov r1, 0x100
- add r2, r1, 0x4000002
- ldrh r3, [r2]
- tst r3, 0x80
- beq _082E3C20
- ldrh r3, [r2]
- tst r3, 0x3
- bne _082E3BFC
- mov r2, 0xFF00
- add r1, r1, 0x4000000
- ldrh r3, [r1]
- add r2, r2, 0x9B
- cmp r3, r2
- bls _082E3C20
-_082E3BE4:
- ldrh r3, [r1]
- cmp r3, r2
- bhi _082E3BE4
- b _082E3C20
- .align 2, 0
-_082E3BF4: .4byte gUnknown_03007868
-_082E3BF8: .4byte 0x996601ee
-_082E3BFC:
- mov r2, 0xFF00
- add r1, r1, 0x4000000
- ldrh r3, [r1]
- add r2, r2, 0xFE
- cmp r3, r2
- bls _082E3C20
-_082E3C14:
- ldrh r3, [r1]
- cmp r3, r2
- bhi _082E3C14
-_082E3C20:
- mov r1, 0x128
- add r1, r1, 0x4000000
- mov r0, 0x208
- add r0, r0, 0x4000000
- mov r3, 0x5000
- add r2, r3, 0x2
- strh r2, [r1]
- add r3, r3, 0x82
- strh r3, [r1]
- mov r2, 0x1
- strh r2, [r0]
-_082E3C4C:
- ldmdb r11, {r4-r6,r11,sp,lr}
- bx lr
- arm_func_end sio32intr_clock_slave
-
- arm_func_start handshake_wait
-handshake_wait: @ 82E3C54
- mov r12, sp
- stmdb sp!, {r11,r12,lr,pc}
- mov r1, 0x128
- add r1, r1, 0x4000000
- mov r0, r0, lsl 16
- ldr r2, _082E3CB8
- sub r11, r12, 0x4
- mov lr, r0, lsr 14
- ldr r12, [r2]
-_082E3C78:
- ldrb r3, [r12, 0x10]
- and r0, r3, 0xFF
- cmp r0, 0x1
- beq _082E3CA4
- ldrh r3, [r1]
- and r3, r3, 0x4
- cmp r3, lr
- bne _082E3C78
- mov r0, 0
- ldmdb r11, {r11,sp,lr}
- bx lr
-_082E3CA4:
- ldr r2, [r2]
- mov r3, 0
- strb r3, [r2, 0x10]
- ldmdb r11, {r11,sp,lr}
- bx lr
- .align 2, 0
-_082E3CB8: .4byte gUnknown_03007868
- arm_func_end handshake_wait
-
- arm_func_start STWI_set_timer_in_RAM
-STWI_set_timer_in_RAM: @ 82E3CBC
- mov r12, sp
- stmdb sp!, {r4,r5,r11,r12,lr,pc}
- mov r1, 0x208
- add r1, r1, 0x4000000
- mov r3, 0
- sub r11, r12, 0x4
- ldr r12, _082E3D74
- and lr, r0, 0xFF
- ldr r2, [r12]
- cmp lr, 0x50
- ldrb r0, [r2, 0xA]
- mov r4, r12
- mov r2, lr
- strh r3, [r1]
- mov r0, r0, lsl 2
- add r3, r3, 0x100
- add r1, r3, 0x4000000
- add r3, r3, 0x4000002
- add r5, r0, r3
- beq _082E3D44
- bgt _082E3D1C
- cmp lr, 0x32
- beq _082E3D30
- b _082E3D90
-_082E3D1C:
- cmp r2, 0x64
- beq _082E3D5C
- cmp r2, 0x82
- beq _082E3D78
- b _082E3D90
-_082E3D30:
- mvn r3, 0x334
- strh r3, [r0, r1]
- ldr r2, [r4]
- mov r3, 0x1
- b _082E3D8C
-_082E3D44:
- mov r3, 0xAE000000
- mov r3, r3, asr 20
- strh r3, [r0, r1]
- ldr r2, [r4]
- mov r3, 0x2
- b _082E3D8C
-_082E3D5C:
- mvn r3, 0x660
- sub r3, r3, 0x9
- strh r3, [r0, r1]
- ldr r2, [r4]
- mov r3, 0x3
- b _082E3D8C
- .align 2, 0
-_082E3D74: .4byte gUnknown_03007868
-_082E3D78:
- mvn r3, 0x850
- sub r3, r3, 0x2
- strh r3, [r0, r1]
- ldr r2, [r4]
- mov r3, 0x4
-_082E3D8C:
- str r3, [r2, 0xC]
-_082E3D90:
- mov r12, 0x200
- add r12, r12, 0x4000002
- mov r3, 0xC3
- strh r3, [r5]
- mov r1, 0x208
- ldr r2, [r4]
- add r1, r1, 0x4000000
- ldrb r0, [r2, 0xA]
- sub r3, r3, 0xBB
- mov r3, r3, lsl r0
- strh r3, [r12]
- mov r2, 0x1
- strh r2, [r1]
- ldmdb r11, {r4,r5,r11,sp,lr}
- bx lr
- arm_func_end STWI_set_timer_in_RAM
-
- arm_func_start STWI_stop_timer_in_RAM
-STWI_stop_timer_in_RAM: @ 82E3DCC
- mov r12, sp
- stmdb sp!, {r11,r12,lr,pc}
- mov r1, 0x100
- ldr lr, _082E3E18
- add r0, r1, 0x4000000
- ldr r2, [lr]
- sub r11, r12, 0x4
- ldrb r3, [r2, 0xA]
- mov r12, 0
- str r12, [r2, 0xC]
- mov r3, r3, lsl 2
- strh r12, [r3, r0]
- ldr r2, [lr]
- ldrb r3, [r2, 0xA]
- add r1, r1, 0x4000002
- mov r3, r3, lsl 2
- strh r12, [r3, r1]
- ldmdb r11, {r11,sp,lr}
- bx lr
- .align 2, 0
-_082E3E18: .4byte gUnknown_03007868
- arm_func_end STWI_stop_timer_in_RAM
-
- arm_func_start STWI_init_slave
-STWI_init_slave: @ 82E3E1C
- mov r12, sp
- stmdb sp!, {r11,r12,lr,pc}
- ldr r0, _082E3EA4
- ldr r2, [r0]
- mov r3, 0x5
- str r3, [r2]
- mov r1, 0
- strb r1, [r2, 0x14]
- ldr r3, [r0]
- strb r1, [r3, 0x4]
- ldr r2, [r0]
- strb r1, [r2, 0x5]
- ldr r3, [r0]
- strb r1, [r3, 0x6]
- ldr r2, [r0]
- strb r1, [r2, 0x7]
- ldr r3, [r0]
- strb r1, [r3, 0x8]
- ldr r2, [r0]
- strb r1, [r2, 0x9]
- ldr r3, [r0]
- str r1, [r3, 0xC]
- sub r11, r12, 0x4
- strb r1, [r3, 0x10]
- mov r2, 0x128
- ldr r12, [r0]
- add r2, r2, 0x4000000
- strh r1, [r12, 0x12]
- mov r3, 0x5000
- strb r1, [r12, 0x15]
- add r3, r3, 0x82
- strh r3, [r2]
- ldmdb r11, {r11,sp,lr}
- bx lr
- .align 2, 0
-_082E3EA4: .4byte gUnknown_03007868
- arm_func_end STWI_init_slave
-
- arm_func_start sub_82E3EA8
-sub_82E3EA8: @ 82E3EA8
- bx r2
- arm_func_end sub_82E3EA8
-
- arm_func_start sub_82E3EAC
-sub_82E3EAC: @ 82E3EAC
- bx r1
- arm_func_end sub_82E3EAC
-
- arm_func_start sub_82E3EB0
-sub_82E3EB0: @ 82E3EB0
- bx r0
- arm_func_end sub_82E3EB0
-
thumb_func_start rfu_initializeAPI
rfu_initializeAPI: @ 82E3EB4
push {r4-r7,lr}
@@ -2762,7 +517,7 @@ sub_82E424C: @ 82E424C
b _082E4266
.align 2, 0
_082E4254: .4byte gUnknown_089A324C
-_082E4258: .4byte gUnknown_030000F0
+_082E4258: .4byte gDma3Requests + 0xE0
thumb_func_end sub_82E424C
thumb_func_start sub_82E425C
@@ -2810,7 +565,7 @@ _082E4274:
movs r0, 0
b _082E42BE
.align 2, 0
-_082E42B0: .4byte gUnknown_030000FA
+_082E42B0: .4byte gDma3Requests + 0xEA
_082E42B4: .4byte gUnknown_03007890
_082E42B8: .4byte gUnknown_03007894
_082E42BC:
@@ -2838,7 +593,7 @@ rfu_REQ_stopMode: @ 82E42C4
b _082E4362
.align 2, 0
_082E42E4: .4byte 0x04000208
-_082E42E8: .4byte gUnknown_03007868
+_082E42E8: .4byte gRfuState
_082E42EC:
bl AgbRFU_SoftReset
bl rfu_STC_clearAPIVariables
@@ -2878,7 +633,7 @@ _082E432A:
b _082E4362
.align 2, 0
_082E433C: .4byte 0x00008001
-_082E4340: .4byte gUnknown_03007868
+_082E4340: .4byte gRfuState
_082E4344: .4byte 0x04000100
_082E4348: .4byte 0x0105ffff
_082E434C: .4byte rfu_CB_stopMode
@@ -3156,7 +911,7 @@ rfu_CB_configGameData: @ 82E4500
movs r0, 0x1
b _082E4552
.align 2, 0
-_082E4544: .4byte gUnknown_03007868
+_082E4544: .4byte gRfuState
_082E4548: .4byte gUnknown_03007890
_082E454C:
adds r1, r6, 0
@@ -4225,7 +1980,7 @@ _082E4D18:
b _082E4D88
.align 2, 0
_082E4D20: .4byte gUnknown_03007890
-_082E4D24: .4byte gUnknown_03007868
+_082E4D24: .4byte gRfuState
_082E4D28: .4byte gUnknown_03007894
_082E4D2C: .4byte gUnknown_03007898
_082E4D30:
@@ -5195,7 +2950,7 @@ _082E547E:
pop {r1}
bx r1
.align 2, 0
-_082E5484: .4byte gUnknown_03007868
+_082E5484: .4byte gRfuState
thumb_func_end rfu_getMasterSlave
thumb_func_start rfu_clearAllSlot
@@ -6506,7 +4261,7 @@ _082E5E12:
_082E5E34: .4byte gUnknown_03007898
_082E5E38: .4byte gUnknown_03007894
_082E5E3C: .4byte gUnknown_03007890
-_082E5E40: .4byte gUnknown_03007868
+_082E5E40: .4byte gRfuState
_082E5E44:
ldr r0, _082E5E54
bl STWI_set_Callback_M
@@ -8564,7 +6319,7 @@ _082E6D88:
b _082E6DD6
.align 2, 0
_082E6DB4: .4byte 0x04000200
-_082E6DB8: .4byte gUnknown_03007868
+_082E6DB8: .4byte gRfuState
_082E6DBC: .4byte sub_82E6F88
_082E6DC0: .4byte 0x04000100
_082E6DC4:
@@ -8612,7 +6367,7 @@ _082E6E08:
.align 2, 0
_082E6E14: .4byte 0x04000208
_082E6E18: .4byte 0x04000200
-_082E6E1C: .4byte gUnknown_03007868
+_082E6E1C: .4byte gRfuState
thumb_func_end sub_82E6D6C
thumb_func_start sub_82E6E20
@@ -8663,7 +6418,7 @@ sub_82E6E20: @ 82E6E20
.align 2, 0
_082E6E78: .4byte 0x04000208
_082E6E7C: .4byte 0x04000200
-_082E6E80: .4byte gUnknown_03007868
+_082E6E80: .4byte gRfuState
_082E6E84: .4byte 0x04000134
_082E6E88: .4byte gUnknown_030078A0
_082E6E8C: .4byte 0x05000003
diff --git a/asm/librfu_intr.s b/asm/librfu_intr.s
new file mode 100644
index 000000000..7f375e419
--- /dev/null
+++ b/asm/librfu_intr.s
@@ -0,0 +1,696 @@
+ .include "asm/macros.inc"
+
+ .syntax unified
+
+ .text
+
+ arm_func_start IntrSIO32
+IntrSIO32: @ 82E3554
+ mov r12, sp
+ stmdb sp!, {r11,r12,lr,pc}
+ ldr r3, _082E35B4
+ ldr r0, [r3]
+ ldr r2, [r0]
+ sub r11, r12, 0x4
+ cmp r2, 0xA
+ bne _082E3590
+ ldr r0, [r0, 0x20]
+ cmp r0, 0
+ ldmdbeq r11, {r11,sp,lr}
+ bxeq lr
+ bl sub_82E3EB0
+ ldmdb r11, {r11,sp,lr}
+ bx lr
+_082E3590:
+ ldrb r3, [r0, 0x14]
+ cmp r3, 0x1
+ bne _082E35A8
+ bl sio32intr_clock_master
+ ldmdb r11, {r11,sp,lr}
+ bx lr
+_082E35A8:
+ bl sio32intr_clock_slave
+ ldmdb r11, {r11,sp,lr}
+ bx lr
+ .align 2, 0
+_082E35B4: .4byte gRfuState
+ arm_func_end IntrSIO32
+
+ arm_func_start sio32intr_clock_master
+sio32intr_clock_master: @ 82E35B8
+ mov r12, sp
+ stmdb sp!, {r4-r6,r11,r12,lr,pc}
+ mov r0, 0x50
+ sub r11, r12, 0x4
+ bl STWI_set_timer_in_RAM
+ mov r4, 0x120
+ ldr r2, _082E382C
+ add r4, r4, 0x4000000
+ ldr lr, [r4]
+ ldr r12, [r2]
+ ldr r3, [r12]
+ mov r6, r2
+ cmp r3, 0
+ bne _082E3638
+ cmp lr, 0x80000000
+ bne _082E36B8
+ ldrb r2, [r12, 0x5]
+ ldrb r3, [r12, 0x4]
+ cmp r2, r3
+ bhi _082E3628
+ ldr r3, [r12, 0x24]
+ mov r1, r2
+ ldr r2, [r3, r1, lsl 2]
+ str r2, [r4]
+ ldrb r3, [r12, 0x5]
+ add r3, r3, 0x1
+ strb r3, [r12, 0x5]
+ b _082E3714
+_082E3628:
+ mov r3, 0x1
+ str r3, [r12]
+ str lr, [r4]
+ b _082E3714
+_082E3638:
+ ldr r3, [r12]
+ cmp r3, 0x1
+ bne _082E36C8
+ mov r3, 0x99000000
+ add r3, r3, 0x660000
+ mov r5, 0x80000000
+ and r2, lr, r5, asr 15
+ cmp r2, r3
+ bne _082E36B8
+ mov r3, 0
+ strb r3, [r12, 0x8]
+ ldr r1, [r6]
+ ldrb r0, [r1, 0x8]
+ ldr r2, [r1, 0x28]
+ str lr, [r2, r0, lsl 2]
+ ldrb r3, [r1, 0x8]
+ add r3, r3, 0x1
+ strb r3, [r1, 0x8]
+ ldr r2, [r6]
+ strb lr, [r2, 0x9]
+ ldr r3, [r6]
+ mov r2, lr, lsr 8
+ strb r2, [r3, 0x7]
+ ldr r1, [r6]
+ ldrb r2, [r1, 0x7]
+ ldrb r3, [r1, 0x8]
+ cmp r2, r3
+ bcc _082E3700
+ mov r3, 0x2
+ str r3, [r1]
+ str r5, [r4]
+ b _082E3714
+_082E36B8:
+ bl STWI_stop_timer_in_RAM
+ mov r0, 0x82
+ bl STWI_set_timer_in_RAM
+ b _082E3840
+_082E36C8:
+ ldr r3, [r12]
+ cmp r3, 0x2
+ bne _082E3714
+ ldrb r1, [r12, 0x8]
+ ldr r2, [r12, 0x28]
+ str lr, [r2, r1, lsl 2]
+ ldrb r3, [r12, 0x8]
+ add r3, r3, 0x1
+ strb r3, [r12, 0x8]
+ ldr r1, [r6]
+ ldrb r2, [r1, 0x7]
+ ldrb r3, [r1, 0x8]
+ cmp r2, r3
+ bcs _082E370C
+_082E3700:
+ mov r3, 0x3
+ str r3, [r1]
+ b _082E3714
+_082E370C:
+ mov r3, 0x80000000
+ str r3, [r4]
+_082E3714:
+ mov r0, 0x1
+ bl handshake_wait
+ mov r0, r0, lsl 16
+ cmp r0, 0x10000
+ beq _082E3840
+ mov r4, 0x128
+ add r4, r4, 0x4000000
+ mov r5, 0x5000
+ add r3, r5, 0xB
+ strh r3, [r4]
+ mov r0, 0
+ bl handshake_wait
+ mov r0, r0, lsl 16
+ cmp r0, 0x10000
+ beq _082E3840
+ bl STWI_stop_timer_in_RAM
+ ldr r1, [r6]
+ ldr r0, [r1]
+ cmp r0, 0x3
+ bne _082E3830
+ ldrb r3, [r1, 0x9]
+ cmp r3, 0xA5
+ cmpne r3, 0xA7
+ beq _082E3788
+ and r3, r3, 0xFF
+ cmp r3, 0xB5
+ beq _082E3788
+ cmp r3, 0xB7
+ bne _082E37D0
+_082E3788:
+ mov r1, 0x120
+ add r1, r1, 0x4000000
+ mov r12, 0x128
+ add r12, r12, 0x4000000
+ ldr r0, [r6]
+ mov r3, 0
+ strb r3, [r0, 0x14]
+ mov r2, 0x80000000
+ str r2, [r1]
+ add r3, r3, 0x5000
+ add r2, r3, 0x2
+ strh r2, [r12]
+ add r3, r3, 0x82
+ strh r3, [r12]
+ ldr r2, [r6]
+ mov r3, 0x5
+ str r3, [r2]
+ b _082E3800
+_082E37D0:
+ cmp r3, 0xEE
+ bne _082E37F0
+ add r3, r5, 0x3
+ strh r3, [r4]
+ mov r2, 0x4
+ str r2, [r1]
+ strh r0, [r1, 0x12]
+ b _082E3800
+_082E37F0:
+ add r3, r5, 0x3
+ strh r3, [r4]
+ mov r2, 0x4
+ str r2, [r1]
+_082E3800:
+ ldr r2, [r6]
+ mov r3, 0
+ strb r3, [r2, 0x2C]
+ ldr r0, [r6]
+ ldr r2, [r0, 0x18]
+ cmp r2, r3
+ beq _082E3840
+ ldrh r1, [r0, 0x12]
+ ldrb r0, [r0, 0x6]
+ bl sub_82E3EA8
+ b _082E3840
+ .align 2, 0
+_082E382C: .4byte gRfuState
+_082E3830:
+ add r3, r5, 0x3
+ strh r3, [r4]
+ add r2, r5, 0x83
+ strh r2, [r4]
+_082E3840:
+ ldmdb r11, {r4-r6,r11,sp,lr}
+ bx lr
+ arm_func_end sio32intr_clock_master
+
+ arm_func_start sio32intr_clock_slave
+sio32intr_clock_slave: @ 82E3848
+ mov r12, sp
+ stmdb sp!, {r4-r6,r11,r12,lr,pc}
+ ldr r4, _082E3BF4
+ mov r0, 0x64
+ ldr r3, [r4]
+ mov r6, 0
+ strb r6, [r3, 0x10]
+ sub r11, r12, 0x4
+ bl STWI_set_timer_in_RAM
+ mov r0, r6
+ bl handshake_wait
+ mov r0, r0, lsl 16
+ cmp r0, 0x10000
+ mov r5, r4
+ beq _082E3C4C
+ mov r3, 0x128
+ add r3, r3, 0x4000000
+ mov r2, 0x5000
+ add r2, r2, 0xA
+ strh r2, [r3]
+ mov lr, 0x120
+ ldr r0, [r5]
+ add lr, lr, 0x4000000
+ ldr r12, [lr]
+ ldr r3, [r0]
+ cmp r3, 0x5
+ bne _082E3978
+ ldr r3, [r0, 0x28]
+ mov r4, 0x1
+ mov r0, 0x99000000
+ str r12, [r3]
+ add r0, r0, 0x660000
+ ldr r2, [r5]
+ mov r3, r0, lsr 16
+ strb r4, [r2, 0x5]
+ cmp r3, r12, lsr 16
+ bne _082E3AC4
+ ldr r3, [r5]
+ mov r2, r12, lsr 8
+ strb r2, [r3, 0x4]
+ ldr r2, [r5]
+ strb r12, [r2, 0x6]
+ ldr r1, [r5]
+ ldrb r3, [r1, 0x4]
+ cmp r3, r6
+ bne _082E395C
+ ldrb r2, [r1, 0x6]
+ sub r3, r2, 0x27
+ cmp r2, 0x36
+ cmpne r3, 0x2
+ bhi _082E3930
+ add r3, r2, 0x80
+ strb r3, [r1, 0x9]
+ ldr r2, [r5]
+ ldrb r3, [r2, 0x9]
+ ldr r1, [r2, 0x24]
+ add r3, r3, r0
+ b _082E39E0
+_082E3930:
+ ldr r2, [r1, 0x24]
+ ldr r3, _082E3BF8
+ str r3, [r2]
+ ldr r2, [r5]
+ ldrb r3, [r2, 0x6]
+ sub r3, r3, 0x10
+ cmp r3, 0x2D
+ bhi _082E3A18
+ ldr r3, [r2, 0x24]
+ str r4, [r3, 0x4]
+ b _082E3A24
+_082E395C:
+ mov r3, 0x80000000
+ str r3, [lr]
+ strb r4, [r1, 0x5]
+ ldr r2, [r5]
+ add r3, r3, 0x80000006
+ str r3, [r2]
+ b _082E3AD4
+_082E3978:
+ ldr r3, [r0]
+ cmp r3, 0x6
+ bne _082E3A78
+ ldrb r1, [r0, 0x5]
+ ldr r2, [r0, 0x28]
+ str r12, [r2, r1, lsl 2]
+ ldrb r3, [r0, 0x5]
+ add r3, r3, 0x1
+ strb r3, [r0, 0x5]
+ ldr r1, [r5]
+ ldrb r2, [r1, 0x4]
+ ldrb r3, [r1, 0x5]
+ cmp r2, r3
+ bcs _082E3A6C
+ ldrb r2, [r1, 0x6]
+ sub r3, r2, 0x28
+ cmp r2, 0x36
+ cmpne r3, 0x1
+ bhi _082E39F0
+ add r3, r2, 0x80
+ strb r3, [r1, 0x9]
+ ldr r2, [r5]
+ ldrb r3, [r2, 0x9]
+ ldr r1, [r2, 0x24]
+ orr r3, r3, 0x99000000
+ orr r3, r3, 0x660000
+_082E39E0:
+ str r3, [r1]
+ ldr r2, [r5]
+ strb r6, [r2, 0x7]
+ b _082E3A3C
+_082E39F0:
+ ldr r2, [r1, 0x24]
+ ldr r3, _082E3BF8
+ str r3, [r2]
+ ldr r2, [r5]
+ ldrb r3, [r2, 0x6]
+ sub r3, r3, 0x10
+ cmp r3, 0x2D
+ ldrls r2, [r2, 0x24]
+ movls r3, 0x1
+ bls _082E3A20
+_082E3A18:
+ ldr r2, [r2, 0x24]
+ mov r3, 0x2
+_082E3A20:
+ str r3, [r2, 0x4]
+_082E3A24:
+ ldr r2, [r5]
+ mov r3, 0x1
+ strb r3, [r2, 0x7]
+ ldr r1, [r5]
+ add r3, r3, 0x2
+ strh r3, [r1, 0x12]
+_082E3A3C:
+ ldr r0, [r5]
+ ldr r2, [r0, 0x24]
+ mov r3, 0x120
+ ldr r1, [r2]
+ add r3, r3, 0x4000000
+ str r1, [r3]
+ mov r2, 0x1
+ strb r2, [r0, 0x8]
+ ldr r1, [r5]
+ mov r3, 0x7
+ str r3, [r1]
+ b _082E3AD4
+_082E3A6C:
+ mov r3, 0x80000000
+ str r3, [lr]
+ b _082E3AD4
+_082E3A78:
+ ldr r3, [r0]
+ cmp r3, 0x7
+ bne _082E3AD4
+ cmp r12, 0x80000000
+ bne _082E3AC4
+ ldrb r2, [r0, 0x7]
+ ldrb r3, [r0, 0x8]
+ cmp r2, r3
+ movcc r3, 0x8
+ strcc r3, [r0]
+ bcc _082E3AD4
+ ldrb r1, [r0, 0x8]
+ ldr r3, [r0, 0x24]
+ ldr r2, [r3, r1, lsl 2]
+ str r2, [lr]
+ ldrb r3, [r0, 0x8]
+ add r3, r3, 0x1
+ strb r3, [r0, 0x8]
+ b _082E3AD4
+_082E3AC4:
+ bl STWI_stop_timer_in_RAM
+ mov r0, 0x64
+ bl STWI_set_timer_in_RAM
+ b _082E3C4C
+_082E3AD4:
+ mov r0, 0x1
+ bl handshake_wait
+ mov r0, r0, lsl 16
+ cmp r0, 0x10000
+ beq _082E3C4C
+ mov r6, r5
+ ldr r3, [r6]
+ ldr r2, [r3]
+ cmp r2, 0x8
+ bne _082E3B9C
+ mov r4, 0x128
+ add r4, r4, 0x4000000
+ mov r3, 0x5000
+ add r3, r3, 0x2
+ strh r3, [r4]
+ bl STWI_stop_timer_in_RAM
+ ldr r0, [r6]
+ ldrh r3, [r0, 0x12]
+ cmp r3, 0x3
+ bne _082E3B48
+ bl STWI_init_slave
+ ldr r3, [r6]
+ ldr r1, [r3, 0x1C]
+ cmp r1, 0
+ beq _082E3C4C
+ mov r0, 0x1EC
+ add r0, r0, 0x2
+ bl sub_82E3EAC
+ b _082E3C4C
+_082E3B48:
+ mov r3, 0x120
+ add r3, r3, 0x4000000
+ mov r1, 0
+ str r1, [r3]
+ mov r2, 0x5000
+ strh r1, [r4]
+ add r2, r2, 0x3
+ strh r2, [r4]
+ mov r3, 0x1
+ strb r3, [r0, 0x14]
+ ldr r0, [r5]
+ ldr r2, [r0, 0x1C]
+ str r1, [r0]
+ cmp r2, r1
+ beq _082E3C4C
+ ldrb r3, [r0, 0x4]
+ ldrb r0, [r0, 0x6]
+ mov r1, r2
+ orr r0, r0, r3, lsl 8
+ bl sub_82E3EAC
+ b _082E3C4C
+_082E3B9C:
+ mov r3, 0x208
+ add r3, r3, 0x4000000
+ mov r2, 0
+ strh r2, [r3]
+ mov r1, 0x100
+ add r2, r1, 0x4000002
+ ldrh r3, [r2]
+ tst r3, 0x80
+ beq _082E3C20
+ ldrh r3, [r2]
+ tst r3, 0x3
+ bne _082E3BFC
+ mov r2, 0xFF00
+ add r1, r1, 0x4000000
+ ldrh r3, [r1]
+ add r2, r2, 0x9B
+ cmp r3, r2
+ bls _082E3C20
+_082E3BE4:
+ ldrh r3, [r1]
+ cmp r3, r2
+ bhi _082E3BE4
+ b _082E3C20
+ .align 2, 0
+_082E3BF4: .4byte gRfuState
+_082E3BF8: .4byte 0x996601ee
+_082E3BFC:
+ mov r2, 0xFF00
+ add r1, r1, 0x4000000
+ ldrh r3, [r1]
+ add r2, r2, 0xFE
+ cmp r3, r2
+ bls _082E3C20
+_082E3C14:
+ ldrh r3, [r1]
+ cmp r3, r2
+ bhi _082E3C14
+_082E3C20:
+ mov r1, 0x128
+ add r1, r1, 0x4000000
+ mov r0, 0x208
+ add r0, r0, 0x4000000
+ mov r3, 0x5000
+ add r2, r3, 0x2
+ strh r2, [r1]
+ add r3, r3, 0x82
+ strh r3, [r1]
+ mov r2, 0x1
+ strh r2, [r0]
+_082E3C4C:
+ ldmdb r11, {r4-r6,r11,sp,lr}
+ bx lr
+ arm_func_end sio32intr_clock_slave
+
+ arm_func_start handshake_wait
+handshake_wait: @ 82E3C54
+ mov r12, sp
+ stmdb sp!, {r11,r12,lr,pc}
+ mov r1, 0x128
+ add r1, r1, 0x4000000
+ mov r0, r0, lsl 16
+ ldr r2, _082E3CB8
+ sub r11, r12, 0x4
+ mov lr, r0, lsr 14
+ ldr r12, [r2]
+_082E3C78:
+ ldrb r3, [r12, 0x10]
+ and r0, r3, 0xFF
+ cmp r0, 0x1
+ beq _082E3CA4
+ ldrh r3, [r1]
+ and r3, r3, 0x4
+ cmp r3, lr
+ bne _082E3C78
+ mov r0, 0
+ ldmdb r11, {r11,sp,lr}
+ bx lr
+_082E3CA4:
+ ldr r2, [r2]
+ mov r3, 0
+ strb r3, [r2, 0x10]
+ ldmdb r11, {r11,sp,lr}
+ bx lr
+ .align 2, 0
+_082E3CB8: .4byte gRfuState
+ arm_func_end handshake_wait
+
+ arm_func_start STWI_set_timer_in_RAM
+STWI_set_timer_in_RAM: @ 82E3CBC
+ mov r12, sp
+ stmdb sp!, {r4,r5,r11,r12,lr,pc}
+ mov r1, 0x208
+ add r1, r1, 0x4000000
+ mov r3, 0
+ sub r11, r12, 0x4
+ ldr r12, _082E3D74
+ and lr, r0, 0xFF
+ ldr r2, [r12]
+ cmp lr, 0x50
+ ldrb r0, [r2, 0xA]
+ mov r4, r12
+ mov r2, lr
+ strh r3, [r1]
+ mov r0, r0, lsl 2
+ add r3, r3, 0x100
+ add r1, r3, 0x4000000
+ add r3, r3, 0x4000002
+ add r5, r0, r3
+ beq _082E3D44
+ bgt _082E3D1C
+ cmp lr, 0x32
+ beq _082E3D30
+ b _082E3D90
+_082E3D1C:
+ cmp r2, 0x64
+ beq _082E3D5C
+ cmp r2, 0x82
+ beq _082E3D78
+ b _082E3D90
+_082E3D30:
+ mvn r3, 0x334
+ strh r3, [r0, r1]
+ ldr r2, [r4]
+ mov r3, 0x1
+ b _082E3D8C
+_082E3D44:
+ mov r3, 0xAE000000
+ mov r3, r3, asr 20
+ strh r3, [r0, r1]
+ ldr r2, [r4]
+ mov r3, 0x2
+ b _082E3D8C
+_082E3D5C:
+ mvn r3, 0x660
+ sub r3, r3, 0x9
+ strh r3, [r0, r1]
+ ldr r2, [r4]
+ mov r3, 0x3
+ b _082E3D8C
+ .align 2, 0
+_082E3D74: .4byte gRfuState
+_082E3D78:
+ mvn r3, 0x850
+ sub r3, r3, 0x2
+ strh r3, [r0, r1]
+ ldr r2, [r4]
+ mov r3, 0x4
+_082E3D8C:
+ str r3, [r2, 0xC]
+_082E3D90:
+ mov r12, 0x200
+ add r12, r12, 0x4000002
+ mov r3, 0xC3
+ strh r3, [r5]
+ mov r1, 0x208
+ ldr r2, [r4]
+ add r1, r1, 0x4000000
+ ldrb r0, [r2, 0xA]
+ sub r3, r3, 0xBB
+ mov r3, r3, lsl r0
+ strh r3, [r12]
+ mov r2, 0x1
+ strh r2, [r1]
+ ldmdb r11, {r4,r5,r11,sp,lr}
+ bx lr
+ arm_func_end STWI_set_timer_in_RAM
+
+ arm_func_start STWI_stop_timer_in_RAM
+STWI_stop_timer_in_RAM: @ 82E3DCC
+ mov r12, sp
+ stmdb sp!, {r11,r12,lr,pc}
+ mov r1, 0x100
+ ldr lr, _082E3E18
+ add r0, r1, 0x4000000
+ ldr r2, [lr]
+ sub r11, r12, 0x4
+ ldrb r3, [r2, 0xA]
+ mov r12, 0
+ str r12, [r2, 0xC]
+ mov r3, r3, lsl 2
+ strh r12, [r3, r0]
+ ldr r2, [lr]
+ ldrb r3, [r2, 0xA]
+ add r1, r1, 0x4000002
+ mov r3, r3, lsl 2
+ strh r12, [r3, r1]
+ ldmdb r11, {r11,sp,lr}
+ bx lr
+ .align 2, 0
+_082E3E18: .4byte gRfuState
+ arm_func_end STWI_stop_timer_in_RAM
+
+ arm_func_start STWI_init_slave
+STWI_init_slave: @ 82E3E1C
+ mov r12, sp
+ stmdb sp!, {r11,r12,lr,pc}
+ ldr r0, _082E3EA4
+ ldr r2, [r0]
+ mov r3, 0x5
+ str r3, [r2]
+ mov r1, 0
+ strb r1, [r2, 0x14]
+ ldr r3, [r0]
+ strb r1, [r3, 0x4]
+ ldr r2, [r0]
+ strb r1, [r2, 0x5]
+ ldr r3, [r0]
+ strb r1, [r3, 0x6]
+ ldr r2, [r0]
+ strb r1, [r2, 0x7]
+ ldr r3, [r0]
+ strb r1, [r3, 0x8]
+ ldr r2, [r0]
+ strb r1, [r2, 0x9]
+ ldr r3, [r0]
+ str r1, [r3, 0xC]
+ sub r11, r12, 0x4
+ strb r1, [r3, 0x10]
+ mov r2, 0x128
+ ldr r12, [r0]
+ add r2, r2, 0x4000000
+ strh r1, [r12, 0x12]
+ mov r3, 0x5000
+ strb r1, [r12, 0x15]
+ add r3, r3, 0x82
+ strh r3, [r2]
+ ldmdb r11, {r11,sp,lr}
+ bx lr
+ .align 2, 0
+_082E3EA4: .4byte gRfuState
+ arm_func_end STWI_init_slave
+
+ arm_func_start sub_82E3EA8
+sub_82E3EA8: @ 82E3EA8
+ bx r2
+ arm_func_end sub_82E3EA8
+
+ arm_func_start sub_82E3EAC
+sub_82E3EAC: @ 82E3EAC
+ bx r1
+ arm_func_end sub_82E3EAC
+
+ arm_func_start sub_82E3EB0
+sub_82E3EB0: @ 82E3EB0
+ bx r0
+ arm_func_end sub_82E3EB0
diff --git a/asm/link.s b/asm/link.s
index d1c8d0542..291f71a57 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -402,7 +402,7 @@ sub_8009734: @ 8009734
strb r4, [r0]
ldr r0, =gUnknown_030030F8
strb r4, [r0]
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
bl sub_800A2E0
ldr r0, =gUnknown_03000D54
str r4, [r0]
@@ -420,7 +420,7 @@ sub_8009734: @ 8009734
_080097A8:
bl sub_800E700
_080097AC:
- ldr r1, =gUnknown_03003124
+ ldr r1, =gReceivedRemoteLinkPlayers
movs r0, 0
strb r0, [r1]
movs r1, 0
@@ -448,7 +448,7 @@ _080097BE:
thumb_func_start sub_80097E8
sub_80097E8: @ 80097E8
push {r4,lr}
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
movs r4, 0
strb r4, [r0]
ldr r0, =gLinkVSyncDisabled
@@ -514,7 +514,7 @@ _08009868:
lsrs r5, r0, 24
cmp r5, 0x3
bls _08009840
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0xF
@@ -532,7 +532,7 @@ _08009888:
cmp r0, 0
beq _080098C4
lsls r0, r5, 8
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
adds r0, r1
lsls r4, r5, 1
adds r1, r4, r5
@@ -545,7 +545,7 @@ _08009888:
movs r6, 0
strh r0, [r4]
adds r0, r5, 0
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
ldrh r0, [r4]
cmp r0, r8
beq _080098C4
@@ -752,7 +752,7 @@ _08009A78:
blt _08009A70
cmp r5, 0
bne _08009A94
- ldr r1, =gUnknown_03003124
+ ldr r1, =gReceivedRemoteLinkPlayers
ldrb r0, [r1]
cmp r0, 0
bne _08009A94
@@ -952,7 +952,7 @@ _08009C14:
.pool
_08009C40:
movs r2, 0
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
mov r9, r1
adds r7, r3, 0
ldr r3, =gUnknown_03003090
@@ -996,7 +996,7 @@ _08009C70:
cmp r0, 0x1
bne _08009D16
lsls r1, r6, 8
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
adds r1, r0
mov r8, r1
lsls r0, r6, 3
@@ -1080,7 +1080,7 @@ _08009D3E:
adds r2, r3
ldrh r2, [r2]
movs r0, 0
- bl link_0800A448
+ bl SendBlock
b _08009D6E
.pool
_08009D64:
@@ -1321,7 +1321,7 @@ _08009F6A:
thumb_func_start sub_8009F70
sub_8009F70: @ 8009F70
push {lr}
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _08009F80
@@ -1371,8 +1371,8 @@ _08009FC4:
.pool
thumb_func_end sub_8009FAC
- thumb_func_start sub_8009FCC
-sub_8009FCC: @ 8009FCC
+ thumb_func_start GetLinkPlayerCount
+GetLinkPlayerCount: @ 8009FCC
push {lr}
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
@@ -1392,14 +1392,14 @@ _08009FEC:
_08009FF4:
pop {r1}
bx r1
- thumb_func_end sub_8009FCC
+ thumb_func_end GetLinkPlayerCount
thumb_func_start sub_8009FF8
sub_8009FF8: @ 8009FF8
push {r4-r7,lr}
adds r6, r0, 0
adds r5, r1, 0
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r4, r0, 24
movs r2, 0
@@ -1442,7 +1442,7 @@ sub_800A03C: @ 800A03C
thumb_func_start sub_800A040
sub_800A040: @ 800A040
push {lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -1526,7 +1526,7 @@ sub_800A0C8: @ 800A0C8
adds r5, r0, 0
adds r6, r1, 0
movs r7, 0
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r4, [r0]
cmp r4, 0x1
beq _0800A0DA
@@ -1546,7 +1546,7 @@ _0800A0EA:
b _0800A22E
.pool
_0800A0FC:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
cmp r0, 0
bne _0800A10E
@@ -1572,12 +1572,12 @@ _0800A130:
adds r5, 0x1C
adds r6, 0x1
_0800A134:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r6, r0
blt _0800A120
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r7, r0
@@ -1714,12 +1714,12 @@ _0800A266:
lsls r0, 24
lsrs r4, r0, 24
_0800A26C:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bcc _0800A24C
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r6, r0
@@ -1742,8 +1742,8 @@ _0800A298:
.pool
thumb_func_end sub_800A23C
- thumb_func_start sub_800A2A4
-sub_800A2A4: @ 800A2A4
+ thumb_func_start GetLinkPlayerTrainerId
+GetLinkPlayerTrainerId: @ 800A2A4
lsls r0, 24
lsrs r0, 24
ldr r2, =gLinkPlayers
@@ -1755,7 +1755,7 @@ sub_800A2A4: @ 800A2A4
ldr r0, [r1]
bx lr
.pool
- thumb_func_end sub_800A2A4
+ thumb_func_end GetLinkPlayerTrainerId
thumb_func_start sub_800A2BC
sub_800A2BC: @ 800A2BC
@@ -2008,8 +2008,8 @@ bitmask_all_link_players_but_self: @ 800A490
bx r1
thumb_func_end bitmask_all_link_players_but_self
- thumb_func_start link_0800A448
-link_0800A448: @ 800A4AC
+ thumb_func_start SendBlock
+SendBlock: @ 800A4AC
push {lr}
adds r3, r1, 0
lsls r2, 16
@@ -2030,7 +2030,7 @@ _0800A4CE:
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end link_0800A448
+ thumb_func_end SendBlock
thumb_func_start sub_800A4D8
sub_800A4D8: @ 800A4D8
@@ -2095,8 +2095,8 @@ _0800A546:
.pool
thumb_func_end sub_800A520
- thumb_func_start sub_800A550
-sub_800A550: @ 800A550
+ thumb_func_start GetBlockReceivedStatus
+GetBlockReceivedStatus: @ 800A550
push {lr}
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
@@ -2122,7 +2122,7 @@ _0800A580:
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end sub_800A550
+ thumb_func_end GetBlockReceivedStatus
thumb_func_start sub_800A588
sub_800A588: @ 800A588
@@ -2148,8 +2148,8 @@ _0800A5AC:
.pool
thumb_func_end sub_800A588
- thumb_func_start sub_800A5B4
-sub_800A5B4: @ 800A5B4
+ thumb_func_start ResetBlockReceivedFlags
+ResetBlockReceivedFlags: @ 800A5B4
push {r4,lr}
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
@@ -2179,10 +2179,10 @@ _0800A5E2:
pop {r0}
bx r0
.pool
- thumb_func_end sub_800A5B4
+ thumb_func_end ResetBlockReceivedFlags
- thumb_func_start sub_800A5EC
-sub_800A5EC: @ 800A5EC
+ thumb_func_start ResetBlockReceivedFlag
+ResetBlockReceivedFlag: @ 800A5EC
push {lr}
lsls r0, 24
lsrs r1, r0, 24
@@ -2206,7 +2206,7 @@ _0800A616:
pop {r0}
bx r0
.pool
- thumb_func_end sub_800A5EC
+ thumb_func_end ResetBlockReceivedFlag
thumb_func_start sub_800A620
sub_800A620: @ 800A620
@@ -2573,7 +2573,7 @@ task00_link_test: @ 800A850
movs r2, 0x2
movs r3, 0x2
bl sub_800A6E8
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
movs r1, 0xF
@@ -2697,7 +2697,7 @@ _0800A9E2:
lsrs r4, r0, 24
adds r5, 0x1
_0800A9EE:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -3044,7 +3044,7 @@ _0800AC96:
thumb_func_start sub_800ACAC
sub_800ACAC: @ 800ACAC
push {r4,lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r3, 0
@@ -3142,7 +3142,7 @@ _0800AD72:
thumb_func_start sub_800AD88
sub_800AD88: @ 800AD88
push {r4,r5,lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r3, r0, 24
movs r1, 0
@@ -3239,7 +3239,7 @@ _0800AE46:
thumb_func_start sub_800AE5C
sub_800AE5C: @ 800AE5C
push {r4,lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
@@ -3813,7 +3813,7 @@ sub_800B3A4: @ 800B3A4
lsls r0, 24
lsrs r0, 24
lsls r2, r0, 8
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
adds r4, r2, r1
lsls r2, r0, 3
subs r2, r0
@@ -3907,7 +3907,7 @@ _0800B482:
thumb_func_start sub_800B488
sub_800B488: @ 800B488
push {lr}
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0800B498
@@ -3923,7 +3923,7 @@ _0800B498:
thumb_func_start sub_800B4A4
sub_800B4A4: @ 800B4A4
push {lr}
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r1, [r0]
cmp r1, 0
bne _0800B4B2
@@ -3938,7 +3938,7 @@ _0800B4B2:
thumb_func_start sub_800B4C0
sub_800B4C0: @ 800B4C0
push {lr}
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r1, [r0]
cmp r1, 0
bne _0800B4CE
@@ -9671,7 +9671,7 @@ _0800E1C8:
lsls r0, 24
lsrs r5, r0, 24
_0800E1E6:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
subs r0, 0x1
@@ -9965,7 +9965,7 @@ _0800E428:
ble _0800E3FC
mov r4, r9
_0800E434:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -10019,7 +10019,7 @@ _0800E4A6:
adds r5, 0x1C
adds r4, 0x1
_0800E4AC:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -11500,7 +11500,7 @@ _0800F18C:
cmp r4, 0
bne _0800F1A8
bl sub_800EDD4
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
strb r4, [r0]
b _0800F1D2
.pool
@@ -11976,7 +11976,7 @@ _0800F514:
bl sub_8011A64
_0800F58C:
bl rfu_clearAllSlot
- ldr r1, =gUnknown_03003124
+ ldr r1, =gReceivedRemoteLinkPlayers
movs r0, 0
strb r0, [r1]
ldr r0, =gUnknown_03005000
@@ -12224,7 +12224,7 @@ _0800F786:
thumb_func_start rfu_func_080F97B8
rfu_func_080F97B8: @ 800F794
push {lr}
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0800F7C6
@@ -12430,7 +12430,7 @@ _0800F90E:
ldrb r0, [r4, 0xC]
cmp r0, 0
bne _0800F920
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0800F920
@@ -12536,7 +12536,7 @@ _0800F9EA:
orrs r0, r3
str r0, [r1]
movs r4, 0
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
mov r9, r0
mov r12, r2
mov r1, r8
@@ -12599,7 +12599,7 @@ _0800FA5C:
beq _0800FA7E
b _0800FC08
_0800FA7E:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0800FA88
@@ -12610,7 +12610,7 @@ _0800FA88:
beq _0800FA90
b _0800FC08
_0800FA90:
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
bl sub_8010A70
b _0800FC08
.pool
@@ -12662,7 +12662,7 @@ _0800FB10:
ldrb r2, [r7, 0xC]
cmp r2, 0
bne _0800FB78
- ldr r3, =gUnknown_03003124
+ ldr r3, =gReceivedRemoteLinkPlayers
ldrb r0, [r3]
mov r6, r8
adds r6, 0x1
@@ -13410,7 +13410,7 @@ sub_801011C: @ 801011C
push {lr}
bl rfu_clearAllSlot
bl sub_800C048
- ldr r1, =gUnknown_03003124
+ ldr r1, =gReceivedRemoteLinkPlayers
movs r0, 0
strb r0, [r1]
ldr r2, =gUnknown_03005000
@@ -13627,7 +13627,7 @@ sub_80102B8: @ 80102B8
bl sub_800FD14
strh r4, [r5]
_080102E6:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
@@ -13734,7 +13734,7 @@ sub_8010390: @ 8010390
b _0801041C
.pool
_080103CC:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0x1
@@ -14374,14 +14374,14 @@ _080108B6:
bne _080108C2
b _080109D2
_080108C2:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
bl sub_800B348
b _08010948
_080108CC:
ldrb r0, [r5, 0xC]
cmp r0, 0x1
bne _0801090C
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080108E8
@@ -14471,7 +14471,7 @@ _0801096E:
_08010984:
adds r0, r6, 0
bl DestroyTask
- ldr r1, =gUnknown_03003124
+ ldr r1, =gReceivedRemoteLinkPlayers
movs r0, 0x1
strb r0, [r1]
ldr r0, =0x00000ce8
@@ -14607,7 +14607,7 @@ sub_8010A70: @ 8010A70
adds r1, r4, 0
bl CpuSet
movs r0, 0
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
_08010A9C:
add sp, 0x4
pop {r4,r5}
@@ -14683,7 +14683,7 @@ _08010B40:
b _08010CF0
_08010B4A:
adds r0, r4, 0
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
movs r0, 0xF0
lsls r0, 7
bl sub_800FD14
@@ -14702,7 +14702,7 @@ _08010B6A:
b _08010C52
.pool
_08010B78:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
asrs r0, r4
@@ -14713,9 +14713,9 @@ _08010B78:
b _08010CF0
_08010B8C:
adds r0, r4, 0
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
lsls r2, r4, 8
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
adds r2, r0
ldr r1, =gLinkPlayers
lsls r0, r4, 3
@@ -14799,7 +14799,7 @@ _08010C20:
ldr r1, =gUnknown_020228C4
movs r0, 0
movs r2, 0xA0
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _08010CF0
@@ -14833,7 +14833,7 @@ _08010C94:
lsls r0, 24
cmp r0, 0
beq _08010CF0
- bl sub_800A550
+ bl GetBlockReceivedStatus
movs r1, 0x1
ands r1, r0
cmp r1, 0
@@ -14841,11 +14841,11 @@ _08010C94:
mov r0, sp
movs r4, 0
strh r4, [r0]
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
ldr r2, =0x0100007e
bl CpuSet
movs r0, 0
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
ldr r1, =gUnknown_03005000
ldr r5, =0x00000ce8
adds r0, r1, r5
@@ -14924,7 +14924,7 @@ _08010D56:
ldr r1, =gUnknown_020228C4
movs r0, 0
movs r2, 0x3C
- bl link_0800A448
+ bl SendBlock
b _08010D7A
.pool
_08010D70:
@@ -14938,17 +14938,17 @@ _08010D7A:
strh r0, [r4, 0x8]
b _08010DA6
_08010D82:
- bl sub_800A550
+ bl GetBlockReceivedStatus
movs r4, 0x1
adds r1, r4, 0
ands r1, r0
cmp r1, 0
beq _08010DA6
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
bl sub_8010A14
movs r0, 0
- bl sub_800A5EC
- ldr r0, =gUnknown_03003124
+ bl ResetBlockReceivedFlag
+ ldr r0, =gReceivedRemoteLinkPlayers
strb r4, [r0]
adds r0, r5, 0
bl DestroyTask
@@ -15290,7 +15290,7 @@ _08011048:
strb r0, [r1, 0x3]
adds r4, 0x1
_08011054:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -15701,7 +15701,7 @@ _0801136C:
bics r3, r2
adds r2, r3, 0
strb r2, [r1]
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _080113B0
@@ -15912,7 +15912,7 @@ _08011544:
movs r1, 0x5
movs r2, 0x5
bl nullsub_5
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _080115DE
@@ -16397,7 +16397,7 @@ _08011958:
ldrb r0, [r2, 0xC]
cmp r0, 0x1
bne _08011996
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _080119B4
@@ -16423,7 +16423,7 @@ _08011996:
ldrb r0, [r0]
cmp r0, 0x2
beq _080119B4
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _080119B4
@@ -17502,7 +17502,7 @@ sub_801229C: @ 801229C
push {r4-r7,lr}
mov r7, r8
push {r7}
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
movs r1, 0x1C
@@ -18913,7 +18913,7 @@ _08012F14:
strb r0, [r6, 0xC]
b _08012F50
_08012F22:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08012F50
@@ -19861,7 +19861,7 @@ _080137A6:
b _08013A86
.pool
_080137C4:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0801387A
@@ -20806,11 +20806,11 @@ _08013FDE:
adds r1, r0
movs r0, 0
movs r2, 0x64
- bl link_0800A448
+ bl SendBlock
b _080140BC
.pool
_08013FFC:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
@@ -20822,13 +20822,13 @@ _08013FFC:
eors r1, r2
lsls r1, 24
lsrs r1, 16
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0x64
bl memcpy
movs r0, 0x32
bl IncrementGameStat
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
b _0801405A
.pool
_08014038:
@@ -20843,7 +20843,7 @@ _08014038:
movs r0, 0
adds r1, r4, 0
movs r2, 0xDC
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _080140BC
@@ -20854,7 +20854,7 @@ _0801405A:
b _080140BC
.pool
_08014070:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
@@ -20866,12 +20866,12 @@ _08014070:
eors r1, r0
lsls r1, 24
lsrs r1, 16
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
adds r1, r0
adds r0, r4, 0
movs r2, 0xD8
bl memcpy
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
ldr r1, =gUnknown_02032298
strb r7, [r1]
movs r0, 0x6
@@ -20925,7 +20925,7 @@ _08014114:
strh r0, [r4, 0x8]
b _0801419E
_0801411C:
- bl sub_800A550
+ bl GetBlockReceivedStatus
adds r4, r0, 0
bl sub_800A9D8
lsls r4, 24
@@ -20938,7 +20938,7 @@ _0801411C:
.pool
_08014138:
lsls r1, r4, 8
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
adds r3, r1, r0
movs r0, 0x64
muls r0, r4
@@ -20950,12 +20950,12 @@ _08014138:
adds r5, 0x1C
adds r4, 0x1
_08014152:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
blt _08014138
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -20965,7 +20965,7 @@ _08014152:
eors r0, r1
lsls r0, 24
lsrs r0, 16
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
adds r3, r0, r1
adds r0, r3, 0
adds r0, 0x60
@@ -20976,7 +20976,7 @@ _08014152:
_08014190:
bl sub_801B940
_08014194:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
adds r0, r6, 0
bl DestroyTask
_0801419E:
@@ -21117,7 +21117,7 @@ sub_8014290: @ 8014290
asrs r5, 24
str r5, [sp]
adds r3, r4, 0
- bl warp1_set
+ bl Overworld_SetWarpDestination
ldr r0, [r6]
movs r1, 0x4
ldrsb r1, [r0, r1]
@@ -21159,7 +21159,7 @@ sub_8014304: @ 8014304
strh r1, [r0]
ldr r0, =0x00004087
bl VarSet
- bl sub_8009FCC
+ bl GetLinkPlayerCount
ldr r1, =gUnknown_03005DB8
strb r0, [r1]
bl GetMultiplayerId
@@ -21182,7 +21182,7 @@ sub_8014304: @ 8014304
adds r0, r4, 0
adds r1, r5, 0
mov r3, r8
- bl warp1_set
+ bl Overworld_SetWarpDestination
bl warp_in
add sp, 0x4
pop {r3}
@@ -21665,7 +21665,7 @@ _08014854:
movs r0, 0x4
strh r0, [r7]
bl sub_800E3A8
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
b _080149B2
.pool
_080148B8:
@@ -21723,7 +21723,7 @@ _08014934:
movs r0, 0
adds r1, r2, 0
movs r2, 0xE
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _080149B2
@@ -21731,13 +21731,13 @@ _08014934:
strh r0, [r7]
b _080149B2
_0801494A:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
bne _080149B2
- bl sub_800A5B4
- ldr r0, =gUnknown_020223C4
+ bl ResetBlockReceivedFlags
+ ldr r0, =gBlockRecvBuffer
movs r2, 0x80
lsls r2, 1
adds r1, r0, r2
@@ -21766,7 +21766,7 @@ _08014992:
strh r0, [r7]
b _080149B2
_0801499C:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080149B2
@@ -22316,7 +22316,7 @@ _08014E8C:
strb r0, [r5, 0xC]
b _08014EF2
_08014E92:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08014EF2
@@ -22636,7 +22636,7 @@ _08015180:
b _080152A0
.pool
_080151A4:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080151C2
@@ -23002,7 +23002,7 @@ _080154E0:
b _08015604
.pool
_08015504:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08015522
@@ -23714,7 +23714,7 @@ _08015BB8:
movs r0, 0x40
strb r0, [r1]
_08015BBE:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08015BCA
@@ -23750,7 +23750,7 @@ _08015C24:
movs r0, 0x5
bl _08016876
_08015C2A:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08015C36
@@ -23785,7 +23785,7 @@ _08015C54:
bne _08015C78
bl _08016878
_08015C78:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08015C94
@@ -23918,7 +23918,7 @@ _08015DA6:
bl _08016876
.pool
_08015DD0:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08015DF4
@@ -24212,7 +24212,7 @@ _08016084:
movs r0, 0x1E
bl sub_8015664
_08016092:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801609E
@@ -24241,7 +24241,7 @@ _080160C6:
movs r0, 0x2
bl _08016876
_080160DA:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080160E4
@@ -24452,7 +24452,7 @@ _080162D4:
movs r0, 0x24
b _08016876
_080162DC:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r4, [r0]
cmp r4, 0
beq _080162E6
@@ -28312,7 +28312,7 @@ _080181BC:
sub_80181CC: @ 80181CC
push {lr}
bl ScriptContext2_Enable
- bl sub_80983E8
+ bl ScriptFreezeMapObjects
pop {r0}
bx r0
thumb_func_end sub_80181CC
@@ -30478,7 +30478,7 @@ _08019406:
strb r0, [r5, 0x8]
b _08019922
_0801940C:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0801942C
@@ -30646,7 +30646,7 @@ _0801956A:
strb r0, [r5, 0x8]
b _08019922
_08019574:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0801957E
@@ -30981,7 +30981,7 @@ _080197EE:
strb r0, [r5, 0x8]
b _08019922
_080197F8:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08019810
@@ -31050,7 +31050,7 @@ _08019884:
b _08019922
.pool
_080198A0:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08019922
@@ -31292,7 +31292,7 @@ flag_clear_x63: @ 8019A64
adds r0, r1
lsls r0, 16
lsrs r0, 16
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
@@ -33417,7 +33417,7 @@ _0801AB1E:
lsls r2, 4
adds r1, r2, 0
strh r1, [r0]
- ldr r0, =sub_8036760
+ ldr r0, =CB2_InitBattle
bl SetMainCallback2
pop {r4-r7}
pop {r0}
@@ -33741,7 +33741,7 @@ _0801AE7A:
ldr r1, =gUnknown_020228C4
movs r0, 0
movs r2, 0x20
- bl link_0800A448
+ bl SendBlock
ldr r1, =gMain
movs r2, 0x87
lsls r2, 3
@@ -33749,14 +33749,14 @@ _0801AE7A:
b _0801AF8A
.pool
_0801AE98:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
beq _0801AEA6
b _0801AFAE
_0801AEA6:
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
ldrh r0, [r1]
cmp r0, 0x51
bne _0801AEE0
@@ -33782,7 +33782,7 @@ _0801AEA6:
.pool
_0801AEE0:
bl sub_800AC34
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
bl GetMultiplayerId
lsls r0, 24
lsrs r0, 16
@@ -33805,7 +33805,7 @@ _0801AF0C:
movs r1, 0x8
_0801AF16:
strb r1, [r0]
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
b _0801AFAE
.pool
_0801AF24:
@@ -33842,7 +33842,7 @@ _0801AF58:
b _0801AFAE
.pool
_0801AF7C:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801AFAE
@@ -39072,7 +39072,7 @@ sub_801D938: @ 801D938
adds r3, r0, 0
adds r0, r1, 0
lsls r3, 8
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
adds r3, r1
adds r1, r3, 0
bl memcpy
@@ -39085,7 +39085,7 @@ sub_801D938: @ 801D938
sub_801D954: @ 801D954
push {r4,lr}
adds r4, r0, 0
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
asrs r0, r4
@@ -39108,7 +39108,7 @@ sub_801D978: @ 801D978
push {lr}
lsls r0, 24
lsrs r0, 24
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
pop {r0}
bx r0
thumb_func_end sub_801D978
@@ -39273,7 +39273,7 @@ _0801DA7C:
movs r0, 0
mov r1, sp
movs r2, 0x8
- bl link_0800A448
+ bl SendBlock
b _0801DB3E
.pool
_0801DAC8:
@@ -39300,7 +39300,7 @@ _0801DAC8:
lsls r2, r0, 16
lsrs r2, 16
movs r0, 0
- bl link_0800A448
+ bl SendBlock
ldrh r0, [r4, 0x10]
adds r0, 0x1
strh r0, [r4, 0x10]
@@ -39310,7 +39310,7 @@ _0801DB08:
adds r1, r3
movs r0, 0
movs r2, 0xFC
- bl link_0800A448
+ bl SendBlock
ldrh r0, [r4, 0x10]
adds r0, 0x1
strh r0, [r4, 0x10]
@@ -39697,7 +39697,7 @@ sub_801DDD0: @ 801DDD0
strb r5, [r4, 0x16]
movs r0, 0xFF
strb r0, [r4, 0x1A]
- bl sub_8009FCC
+ bl GetLinkPlayerCount
strb r0, [r4, 0xD]
bl GetMultiplayerId
strb r0, [r4, 0x13]
@@ -39942,7 +39942,7 @@ _0801DFE0:
adds r1, r0
movs r0, 0
movs r2, 0x28
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _0801E028
@@ -40416,7 +40416,7 @@ _0801E3D4:
adds r1, r0
movs r0, 0
movs r2, 0x28
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _0801E414
@@ -40432,14 +40432,14 @@ _0801E410:
_0801E412:
strh r0, [r1, 0x6]
_0801E414:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801E458
b _0801E42C
.pool
_0801E424:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801E438
@@ -40556,7 +40556,7 @@ _0801E50C:
adds r1, r0
movs r0, 0
movs r2, 0x28
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _0801E5BC
@@ -40564,7 +40564,7 @@ _0801E50C:
b _0801E59A
.pool
_0801E540:
- bl sub_800A550
+ bl GetBlockReceivedStatus
movs r1, 0x1
ands r1, r0
cmp r1, 0
@@ -40599,7 +40599,7 @@ _0801E584:
adds r0, 0x1
strh r0, [r1, 0xA]
_0801E590:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801E5BC
@@ -40683,7 +40683,7 @@ _0801E62E:
adds r0, 0x1
strh r0, [r1, 0xA]
_0801E638:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801E662
@@ -40798,7 +40798,7 @@ _0801E724:
adds r0, 0x1
strh r0, [r1, 0xA]
_0801E730:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801E75C
@@ -40849,7 +40849,7 @@ _0801E784:
.4byte _0801E802
.4byte _0801E820
_0801E798:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801E7AC
@@ -40883,7 +40883,7 @@ _0801E7C0:
adds r1, r0
movs r0, 0
movs r2, 0x28
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _0801E830
@@ -42276,7 +42276,7 @@ _0801F2E0:
.4byte _0801F494
.4byte _0801F438
_0801F300:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0801F30A
@@ -42285,7 +42285,7 @@ _0801F30A:
movs r0, 0x1
strh r0, [r4]
_0801F30E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
@@ -42304,7 +42304,7 @@ _0801F30E:
b _0801F4C4
.pool
_0801F33C:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x6]
@@ -42361,11 +42361,11 @@ _0801F3A2:
strh r1, [r4, 0x4]
lsls r0, r1, 24
lsrs r0, 24
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
movs r1, 0x2
ldrsh r0, [r4, r1]
lsls r0, 8
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
adds r0, r1
ldrb r0, [r0]
subs r0, 0x1
@@ -42406,7 +42406,7 @@ _0801F3F6:
movs r2, 0x2
ldrsh r1, [r4, r2]
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
bl sub_801EFF8
cmp r0, 0
@@ -42446,7 +42446,7 @@ _0801F448:
ldrsh r0, [r4, r3]
cmp r0, 0
beq _0801F47C
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -45486,7 +45486,7 @@ sub_8020C70: @ 8020C70
adds r4, r0, 0
movs r0, 0
mov r8, r0
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08020C8E
@@ -45504,7 +45504,7 @@ _08020C8E:
b _08020CF8
.pool
_08020CAC:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
mov r8, r0
@@ -49731,7 +49731,7 @@ _08022F7A:
movs r0, 0
adds r1, r4, 0
movs r2, 0x2
- bl link_0800A448
+ bl SendBlock
b _08023060
_08022FAA:
bl sub_800A520
@@ -49742,7 +49742,7 @@ _08022FAA:
strh r0, [r5, 0x10]
b _08023060
_08022FBA:
- bl sub_800A550
+ bl GetBlockReceivedStatus
ldr r2, =gUnknown_082F4448
ldrb r4, [r5, 0x9]
subs r1, r4, 0x2
@@ -49755,7 +49755,7 @@ _08022FBA:
movs r3, 0
cmp r3, r4
bcs _0802301E
- ldr r7, =gUnknown_020223C4
+ ldr r7, =gBlockRecvBuffer
movs r6, 0
ldr r4, =gUnknown_0858AB24
_08022FDC:
@@ -49796,7 +49796,7 @@ _08022FF6:
_0802301E:
movs r0, 0
strh r0, [r5, 0x10]
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
movs r1, 0x18
ldrsh r0, [r5, r1]
lsls r0, 8
@@ -51445,7 +51445,7 @@ _08023D12:
movs r0, 0
adds r1, r4, 0
movs r2, 0x2
- bl link_0800A448
+ bl SendBlock
b _0802402E
_08023D2A:
bl sub_800A520
@@ -51456,7 +51456,7 @@ _08023D2A:
_08023D36:
b _08024004
_08023D38:
- bl sub_800A550
+ bl GetBlockReceivedStatus
ldr r2, =gUnknown_082F4448
ldrb r3, [r7, 0x9]
subs r1, r3, 0x2
@@ -51474,7 +51474,7 @@ _08023D50:
adds r4, 0x42
cmp r8, r3
bcs _08023D7E
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
_08023D5E:
mov r3, r8
lsls r1, r3, 5
@@ -51496,7 +51496,7 @@ _08023D7E:
movs r0, 0
strh r0, [r7, 0x10]
strh r0, [r4]
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
ldrb r0, [r7, 0x8]
cmp r0, 0
bne _08023D9C
@@ -51788,7 +51788,7 @@ _08023FC4:
movs r0, 0
ldr r1, [sp, 0xC]
movs r2, 0x30
- bl link_0800A448
+ bl SendBlock
b _0802402E
_08023FD0:
bl sub_800A520
@@ -51797,7 +51797,7 @@ _08023FD0:
beq _08024034
b _08024004
_08023FDC:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -51808,11 +51808,11 @@ _08023FDC:
movs r1, 0
movs r2, 0x30
bl memset
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
adds r0, r4, 0
movs r2, 0x30
bl memcpy
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
_08024004:
movs r0, 0
strh r0, [r7, 0x10]
@@ -52207,7 +52207,7 @@ _08024306:
strh r5, [r0]
movs r0, 0
movs r2, 0x2
- bl link_0800A448
+ bl SendBlock
b _080243AC
_08024328:
bl sub_800A520
@@ -52217,7 +52217,7 @@ _08024328:
strh r5, [r4, 0x10]
b _080243AC
_08024336:
- bl sub_800A550
+ bl GetBlockReceivedStatus
ldr r2, =gUnknown_082F4448
ldrb r3, [r4, 0x9]
subs r1, r3, 0x2
@@ -52234,7 +52234,7 @@ _08024336:
cmp r5, r3
bcs _08024374
adds r1, r6, 0
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
_0802435C:
lsls r0, r5, 8
adds r0, r2
@@ -52264,7 +52264,7 @@ _08024390:
movs r2, 0
bl sub_8022BEC
_0802439A:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
movs r1, 0
movs r0, 0
strh r0, [r7]
@@ -52485,7 +52485,7 @@ _08024528:
bl sub_800AC34
b _08024558
_08024538:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0802455E
@@ -53023,7 +53023,7 @@ sub_802493C: @ 802493C
ldr r1, =gUnknown_03000DB0
movs r0, 0
str r0, [r1]
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08024A10
@@ -53271,7 +53271,7 @@ _08024B2C:
_08024B6A:
ldr r0, [sp, 0x10]
strb r1, [r0]
- bl sub_8009FCC
+ bl GetLinkPlayerCount
mov r1, r8
strb r0, [r1]
bl GetMultiplayerId
@@ -53382,7 +53382,7 @@ _08024C5A:
lsls r0, 24
cmp r0, 0
beq _08024D40
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _08024D20
@@ -53989,7 +53989,7 @@ _0802516C:
thumb_func_start sub_8025170
sub_8025170: @ 8025170
push {r4,lr}
- bl sub_800A550
+ bl GetBlockReceivedStatus
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -54001,7 +54001,7 @@ sub_8025170: @ 8025170
movs r0, 0
b _08025192
_0802518C:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
movs r0, 0x1
_08025192:
pop {r4}
@@ -54031,7 +54031,7 @@ _080251BA:
adds r1, 0x4A
movs r0, 0
movs r2, 0x3C
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _08025226
@@ -54115,7 +54115,7 @@ _08025252:
adds r1, r2, r1
movs r0, 0
movs r2, 0x3C
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _08025316
@@ -54139,7 +54139,7 @@ _08025282:
_0802528E:
ldr r0, [r5]
adds r0, 0x4A
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
movs r2, 0x3C
bl memcpy
ldr r1, [r5]
@@ -54265,7 +54265,7 @@ _0802539C:
strb r0, [r1]
movs r0, 0
movs r2, 0x1
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _08025466
@@ -54302,7 +54302,7 @@ _080253DC:
adds r3, r1, 0
movs r5, 0x86
lsls r5, 1
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
_080253FA:
ldr r1, [r3]
adds r1, r2, r1
@@ -54452,7 +54452,7 @@ _0802553C:
strb r0, [r1]
movs r0, 0
movs r2, 0x1
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _0802563C
@@ -54486,7 +54486,7 @@ _08025578:
adds r3, r1, 0
movs r5, 0x86
lsls r5, 1
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
_08025596:
ldr r1, [r3]
adds r1, r2, r1
@@ -54617,7 +54617,7 @@ _08025688:
strb r0, [r1, 0x10]
b _080256A0
_08025692:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080256A0
@@ -54829,7 +54829,7 @@ _0802585C:
bl sub_802903C
ldr r0, [r4]
bl sub_8024A30
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08025882
@@ -54946,7 +54946,7 @@ _0802593E:
adds r1, r0
movs r0, 0
movs r2, 0x1
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
cmp r0, 0
beq _080259E8
@@ -54976,7 +54976,7 @@ _0802597E:
cmp r2, r0
bcs _080259C4
adds r3, r1, 0
- ldr r5, =gUnknown_020223C4
+ ldr r5, =gBlockRecvBuffer
ldr r4, =0x0000318c
_0802599A:
ldr r0, [r3]
@@ -57700,7 +57700,7 @@ _08026EF6:
adds r4, 0xC
adds r5, 0x1
_08026EFE:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -58643,7 +58643,7 @@ sub_8027660: @ 8027660
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0802768C
@@ -59511,7 +59511,7 @@ _08027C76:
thumb_func_start sub_8027D20
sub_8027D20: @ 8027D20
push {lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
ldr r1, =gUnknown_02022C98
ldr r1, [r1]
adds r1, 0x24
@@ -64818,7 +64818,7 @@ sub_802A9A8: @ 802A9A8
adds r6, r1, 0
lsls r0, 16
lsrs r7, r0, 16
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0802AA3C
@@ -64891,7 +64891,7 @@ sub_802AA48: @ 802AA48
sub_802AA60: @ 802AA60
push {r4,lr}
adds r4, r0, 0
- bl sub_8009FCC
+ bl GetLinkPlayerCount
movs r2, 0
strb r0, [r4, 0x5]
adds r1, r4, 0
@@ -67232,7 +67232,7 @@ _0802BD02:
b _0802BD24
.pool
_0802BD14:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0802BD24
@@ -68775,7 +68775,7 @@ _0802C8A4:
thumb_func_start sub_802C8AC
sub_802C8AC: @ 802C8AC
push {lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
pop {r1}
@@ -71211,7 +71211,7 @@ sub_802DBF8: @ 802DBF8
movs r6, 0
cmp r6, r10
bge _0802DC62
- ldr r0, =gUnknown_08300D38
+ ldr r0, =gMonFrontPicCoords
mov r9, r0
ldr r1, =gUnknown_02022D00
mov r8, r1
@@ -73081,7 +73081,7 @@ sub_802EAB0: @ 802EAB0
lsls r1, 3
ldr r0, =gTasks + 0x8
adds r4, r1, r0
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0802EB14
diff --git a/asm/macros/event.s b/asm/macros/event.s
index ee9c42c97..b5fefb925 100644
--- a/asm/macros/event.s
+++ b/asm/macros/event.s
@@ -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/mail.s b/asm/mail.s
deleted file mode 100644
index 5f76a5ef0..000000000
--- a/asm/mail.s
+++ /dev/null
@@ -1,1035 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8121478
-sub_8121478: @ 8121478
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r4, =gUnknown_0203A134
- ldr r0, =0x0000222c
- bl AllocZeroed
- str r0, [r4]
- ldr r1, =0x0000021d
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, [r4]
- ldr r2, =0x0000021e
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- ldr r4, [r4]
- movs r3, 0x88
- lsls r3, 2
- adds r1, r4, r3
- ldr r0, =CopyEasyChatWord
- str r0, [r1]
- movs r0, 0x89
- lsls r0, 2
- adds r1, r4, r0
- ldr r0, =ConvertEasyChatWordsToString
- str r0, [r1]
- ldrh r1, [r5, 0x20]
- adds r0, r1, 0
- subs r0, 0x79
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bhi _081214E8
- subs r1, 0x79
- subs r2, 0x4
- adds r0, r4, r2
- strb r1, [r0]
- b _081214F2
- .pool
-_081214E8:
- ldr r3, =0x0000021a
- adds r1, r4, r3
- movs r0, 0
- strb r0, [r1]
- movs r6, 0
-_081214F2:
- ldr r0, =gUnknown_0203A134
- ldr r1, [r0]
- ldr r2, =0x0000021e
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _08121504
- cmp r0, 0x1
- beq _0812152C
-_08121504:
- movs r3, 0x8A
- lsls r3, 2
- adds r2, r1, r3
- subs r3, 0xE
- adds r0, r1, r3
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, =gUnknown_0859F3B4
- b _08121540
- .pool
-_0812152C:
- movs r0, 0x8A
- lsls r0, 2
- adds r2, r1, r0
- ldr r3, =0x0000021a
- adds r0, r1, r3
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, =gUnknown_0859F458
-_08121540:
- adds r0, r1
- str r0, [r2]
- ldrh r0, [r5, 0x1E]
- mov r1, sp
- bl sub_80D45E8
- lsls r0, 16
- ldr r1, =0xffff0000
- adds r0, r1
- movs r1, 0xCD
- lsls r1, 17
- cmp r0, r1
- bhi _081215AC
- ldr r1, =gUnknown_0203A134
- ldr r2, [r1]
- ldr r3, =0x0000021a
- adds r0, r2, r3
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0x6
- beq _0812158C
- cmp r0, 0x9
- beq _0812159C
- ldr r0, =0x0000021b
- adds r1, r2, r0
- movs r0, 0
- strb r0, [r1]
- b _081215BA
- .pool
-_0812158C:
- ldr r0, =0x0000021b
- adds r1, r2, r0
- movs r0, 0x1
- strb r0, [r1]
- b _081215BA
- .pool
-_0812159C:
- ldr r0, =0x0000021b
- adds r1, r2, r0
- movs r0, 0x2
- strb r0, [r1]
- b _081215BA
- .pool
-_081215AC:
- ldr r0, =gUnknown_0203A134
- ldr r1, [r0]
- ldr r2, =0x0000021b
- adds r1, r2
- movs r2, 0
- strb r2, [r1]
- adds r3, r0, 0
-_081215BA:
- ldr r1, [r3]
- movs r3, 0x85
- lsls r3, 2
- adds r0, r1, r3
- str r5, [r0]
- movs r2, 0x83
- lsls r2, 2
- adds r0, r1, r2
- str r7, [r0]
- adds r3, 0x4
- adds r0, r1, r3
- strb r6, [r0]
- ldr r0, =sub_81219F0
- bl SetMainCallback2
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8121478
-
- thumb_func_start sub_81215EC
-sub_81215EC: @ 81215EC
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x12
- bls _08121600
- b _081219E2
-_08121600:
- lsls r0, 2
- ldr r1, =_08121614
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08121614:
- .4byte _08121660
- .4byte _0812166E
- .4byte _08121688
- .4byte _0812168E
- .4byte _08121694
- .4byte _0812169A
- .4byte _081216F4
- .4byte _08121730
- .4byte _08121740
- .4byte _08121774
- .4byte _08121782
- .4byte _081217D8
- .4byte _081217EC
- .4byte _081218B0
- .4byte _081218CC
- .4byte _081218EC
- .4byte _081218F6
- .4byte _08121910
- .4byte _08121980
-_08121660:
- movs r0, 0
- bl SetVBlankCallback
- bl remove_some_task
- movs r0, 0
- b _081216EC
-_0812166E:
- add r1, sp, 0x8
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xE0
- lsls r1, 19
- ldr r2, =0x01000200
- add r0, sp, 0x8
- bl CpuSet
- b _081219D4
- .pool
-_08121688:
- bl ResetPaletteFade
- b _081219D4
-_0812168E:
- bl ResetTasks
- b _081219D4
-_08121694:
- bl ResetSpriteData
- b _081219D4
-_0812169A:
- bl FreeAllSpritePalettes
- bl reset_temp_tile_data_buffers
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
-_081216EC:
- movs r1, 0
- bl SetGpuReg
- b _081219D4
-_081216F4:
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_0859F290
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203A134
- ldr r1, [r4]
- movs r2, 0x8B
- lsls r2, 2
- adds r1, r2
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x0000122c
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- b _081219D4
- .pool
-_08121730:
- ldr r0, =gUnknown_0859F29C
- bl InitWindows
- bl DeactivateAllTextPrinters
- b _081219D4
- .pool
-_08121740:
- ldr r2, =gUnknown_0859F2B8
- ldr r0, =gUnknown_0203A134
- ldr r0, [r0]
- ldr r1, =0x0000021a
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x4
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _081219D4
- .pool
-_08121774:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- cmp r0, 0
- bne _08121780
- b _081219D4
-_08121780:
- b _081219E2
-_08121782:
- movs r5, 0x1E
- str r5, [sp]
- movs r4, 0x14
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- ldr r2, =gUnknown_0859F2B8
- ldr r0, =gUnknown_0203A134
- ldr r0, [r0]
- ldr r1, =0x0000021a
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x8
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- b _081219D4
- .pool
-_081217D8:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- b _081219D4
-_081217EC:
- bl sub_8098C64
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r6, =gPlttBufferUnfaded
- ldr r4, =gUnknown_0859F2B8
- ldr r0, =gUnknown_0203A134
- ldr r3, [r0]
- ldr r2, =0x0000021a
- adds r3, r2
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x10]
- subs r2, 0x26
- adds r0, r6, r2
- strh r1, [r0]
- ldr r5, =gPlttBufferFaded
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x10]
- adds r2, r5, r2
- strh r0, [r2]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x12]
- movs r2, 0xFB
- lsls r2, 1
- adds r0, r6, r2
- strh r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x12]
- adds r2, r5, r2
- strh r0, [r2]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, =gUnknown_0859F2B0
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r0, [r2, 0x8]
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r6, 0x14]
- ldrb r0, [r2, 0x8]
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x14]
- ldrb r0, [r2, 0x8]
- lsls r0, 2
- adds r1, 0x2
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r6, 0x16]
- ldrb r0, [r2, 0x8]
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x16]
- b _081219D4
- .pool
-_081218B0:
- ldr r0, =gUnknown_0203A134
- ldr r0, [r0]
- movs r1, 0x86
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081218C2
- b _081219D4
-_081218C2:
- bl sub_8121A1C
- b _081219D4
- .pool
-_081218CC:
- ldr r0, =gUnknown_0203A134
- ldr r0, [r0]
- movs r2, 0x86
- lsls r2, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _081218DE
- b _081219D4
-_081218DE:
- bl sub_8121B1C
- bl RunTextPrinters
- b _081219D4
- .pool
-_081218EC:
- bl sub_8087598
- cmp r0, 0x1
- bne _081219D4
- b _081219E2
-_081218F6:
- ldr r0, =sub_8121C50
- bl SetVBlankCallback
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- b _081219D4
- .pool
-_08121910:
- ldr r5, =gUnknown_0203A134
- ldr r0, [r5]
- movs r1, 0x85
- lsls r1, 2
- adds r0, r1
- ldr r0, [r0]
- ldrh r0, [r0, 0x1E]
- bl sub_80D2E84
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, [r5]
- ldr r2, =0x0000021b
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08121940
- cmp r0, 0x2
- beq _08121958
- b _081219D4
- .pool
-_08121940:
- adds r0, r4, 0
- bl sub_80D2F68
- ldr r1, =SpriteCallbackDummy
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x60
- b _0812196A
- .pool
-_08121958:
- adds r0, r4, 0
- bl sub_80D2F68
- ldr r1, =SpriteCallbackDummy
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x28
-_0812196A:
- movs r3, 0x80
- bl sub_80D2D78
- ldr r1, [r5]
- movs r2, 0x87
- lsls r2, 2
- adds r1, r2
- strb r0, [r1]
- b _081219D4
- .pool
-_08121980:
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, =gUnknown_0203A134
- ldr r0, [r0]
- movs r1, 0x84
- lsls r1, 2
- adds r0, r1
- ldr r1, =sub_8121C98
- str r1, [r0]
- movs r0, 0x1
- b _081219E4
- .pool
-_081219D4:
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_081219E2:
- movs r0, 0
-_081219E4:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81215EC
-
- thumb_func_start sub_81219F0
-sub_81219F0: @ 81219F0
- push {lr}
-_081219F2:
- bl sub_81215EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08121A0C
- ldr r0, =sub_8121C64
- bl SetMainCallback2
- b _08121A18
- .pool
-_08121A0C:
- bl sub_81221AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081219F2
-_08121A18:
- pop {r0}
- bx r0
- thumb_func_end sub_81219F0
-
- thumb_func_start sub_8121A1C
-sub_8121A1C: @ 8121A1C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- movs r5, 0
- ldr r2, =gUnknown_0203A134
- ldr r0, [r2]
- movs r1, 0x8A
- lsls r1, 2
- adds r0, r1
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r5, r0
- bcs _08121A8A
- mov r8, r2
- adds r7, r1, 0
-_08121A3C:
- lsls r0, r5, 6
- mov r1, r8
- ldr r2, [r1]
- adds r0, r2, r0
- movs r3, 0x85
- lsls r3, 2
- adds r1, r2, r3
- lsls r3, r6, 1
- ldr r1, [r1]
- adds r1, r3
- adds r2, r7
- ldr r2, [r2]
- ldr r2, [r2, 0x8]
- lsls r4, r5, 2
- adds r2, r4, r2
- ldr r2, [r2]
- lsls r2, 30
- lsrs r2, 30
- movs r3, 0x1
- bl ConvertEasyChatWordsToString
- mov r1, r8
- ldr r0, [r1]
- adds r0, r7
- ldr r1, [r0]
- ldr r0, [r1, 0x8]
- adds r4, r0
- ldr r0, [r4]
- lsls r0, 30
- lsrs r0, 30
- adds r0, r6, r0
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrb r1, [r1]
- cmp r5, r1
- bcc _08121A3C
-_08121A8A:
- ldr r4, =gUnknown_0203A134
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 2
- adds r0, r1, r2
- movs r3, 0x85
- lsls r3, 2
- adds r1, r3
- ldr r1, [r1]
- adds r1, 0x12
- bl StringCopy
- adds r2, r0, 0
- ldr r1, [r4]
- ldr r3, =0x0000021e
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _08121AF0
- ldr r1, =gText_FromSpace
- adds r0, r2, 0
- bl StringCopy
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 2
- adds r0, r1
- bl StringLength
- ldr r2, [r4]
- movs r3, 0x8A
- lsls r3, 2
- adds r1, r2, r3
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 13
- subs r0, 0x60
- ldrb r1, [r1, 0x2]
- subs r1, r0
- ldr r0, =0x00000219
- adds r2, r0
- strb r1, [r2]
- b _08121B0C
- .pool
-_08121AF0:
- movs r2, 0x80
- lsls r2, 2
- adds r0, r1, r2
- bl sub_81DB52C
- ldr r0, [r4]
- movs r3, 0x8A
- lsls r3, 2
- adds r1, r0, r3
- ldr r1, [r1]
- ldrb r1, [r1, 0x2]
- ldr r2, =0x00000219
- adds r0, r2
- strb r1, [r0]
-_08121B0C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8121A1C
-
- thumb_func_start sub_8121B1C
-sub_8121B1C: @ 8121B1C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- movs r7, 0
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x1
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r6, 0
- ldr r1, =gUnknown_0203A134
- ldr r0, [r1]
- movs r2, 0x8A
- lsls r2, 2
- mov r10, r2
- add r0, r10
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r6, r0
- bcs _08121BCC
- mov r9, r1
- mov r8, r10
-_08121B60:
- mov r0, r9
- ldr r1, [r0]
- lsls r0, r6, 6
- adds r5, r1, r0
- ldrb r0, [r5]
- cmp r0, 0xFF
- beq _08121BB8
- cmp r0, 0
- beq _08121BB8
- mov r2, r8
- adds r0, r1, r2
- ldr r1, [r0]
- ldr r0, [r1, 0x8]
- lsls r4, r6, 2
- adds r0, r4, r0
- ldr r2, [r0]
- lsls r2, 24
- lsrs r2, 26
- ldrb r0, [r1, 0x4]
- adds r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldrb r3, [r1, 0x3]
- adds r3, r7, r3
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =gUnknown_0859F2AC
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r1, 0x1
- bl box_print
- mov r1, r9
- ldr r0, [r1]
- add r0, r8
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- adds r4, r0
- ldrb r0, [r4, 0x1]
- adds r0, r7, r0
- lsls r0, 24
- lsrs r7, r0, 24
-_08121BB8:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r2, =gUnknown_0203A134
- ldr r0, [r2]
- add r0, r10
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08121B60
-_08121BCC:
- ldr r1, =gText_FromSpace
- add r0, sp, 0xC
- bl StringCopy
- ldr r4, =gUnknown_0203A134
- ldr r1, [r4]
- movs r2, 0x80
- lsls r2, 2
- adds r1, r2
- bl StringCopy
- ldr r0, [r4]
- ldr r1, =0x00000219
- adds r0, r1
- ldrb r2, [r0]
- movs r0, 0x1
- add r1, sp, 0xC
- bl GetStringCenterAlignXOffset
- adds r2, r0, 0
- adds r2, 0x68
- ldr r0, [r4]
- movs r1, 0x8A
- lsls r1, 2
- adds r0, r1
- ldr r0, [r0]
- ldrb r3, [r0, 0x1]
- adds r3, 0x58
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =gUnknown_0859F2AC
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x1
- bl box_print
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8121B1C
-
- thumb_func_start sub_8121C50
-sub_8121C50: @ 8121C50
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8121C50
-
- thumb_func_start sub_8121C64
-sub_8121C64: @ 8121C64
- push {r4,lr}
- ldr r4, =gUnknown_0203A134
- ldr r0, [r4]
- ldr r1, =0x0000021b
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08121C7C
- bl AnimateSprites
- bl BuildOamBuffer
-_08121C7C:
- ldr r0, [r4]
- movs r1, 0x84
- lsls r1, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8121C64
-
- thumb_func_start sub_8121C98
-sub_8121C98: @ 8121C98
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08121CB2
- ldr r0, =gUnknown_0203A134
- ldr r0, [r0]
- movs r1, 0x84
- lsls r1, 2
- adds r0, r1
- ldr r1, =sub_8121CC0
- str r1, [r0]
-_08121CB2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8121C98
-
- thumb_func_start sub_8121CC0
-sub_8121CC0: @ 8121CC0
- push {lr}
- sub sp, 0x4
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08121CEE
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =gUnknown_0203A134
- ldr r0, [r0]
- movs r1, 0x84
- lsls r1, 2
- adds r0, r1
- ldr r1, =sub_8121D00
- str r1, [r0]
-_08121CEE:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8121CC0
-
- thumb_func_start sub_8121D00
-sub_8121D00: @ 8121D00
- push {r4,lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08121D88
- ldr r4, =gUnknown_0203A134
- ldr r0, [r4]
- movs r1, 0x83
- lsls r1, 2
- adds r0, r1
- ldr r0, [r0]
- bl SetMainCallback2
- ldr r1, [r4]
- ldr r2, =0x0000021b
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bgt _08121D58
- cmp r0, 0x1
- blt _08121D58
- subs r2, 0x7
- adds r0, r1, r2
- ldr r0, [r0]
- ldrh r0, [r0, 0x1E]
- bl sub_80D2E84
- lsls r0, 16
- lsrs r0, 16
- bl sub_80D2FF0
- ldr r0, [r4]
- movs r1, 0x87
- lsls r1, 2
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl sub_80D2EF8
-_08121D58:
- ldr r4, =gUnknown_0203A134
- ldr r0, [r4]
- ldr r2, =0x0000222c
- movs r1, 0
- bl memset
- bl ResetPaletteFade
- movs r0, 0
- bl UnsetBgTilemapBuffer
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- bl FreeAllWindowBuffers
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_08121D88:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8121D00
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 40466ae1b..6194f0487 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -119,11 +119,11 @@ InitMainMenu: @ 802F6F4
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
bl ResetPaletteFade
- ldr r0, =gUnknown_082FF0A0
+ ldr r0, =gMainMenuBgPal
movs r1, 0
movs r2, 0x20
bl LoadPalette
- ldr r0, =gUnknown_082FF0C0
+ ldr r0, =gMainMenuTextPal
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
@@ -1914,7 +1914,7 @@ task_new_game_prof_birch_speech_1: @ 80307B0
movs r0, 0x54
movs r1, 0
bl SetGpuReg
- ldr r0, =gUnknown_082FED3C
+ ldr r0, =gBirchIntroShadowGfx
movs r1, 0xC0
lsls r1, 19
bl LZ77UnCompVram
@@ -3679,7 +3679,7 @@ new_game_prof_birch_speech_part2_start: @ 8031678
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
bl ResetPaletteFade
- ldr r0, =gUnknown_082FED3C
+ ldr r0, =gBirchIntroShadowGfx
adds r1, r4, 0
bl LZ77UnCompVram
ldr r0, =gUnknown_082FEEF0
@@ -3689,7 +3689,7 @@ new_game_prof_birch_speech_part2_start: @ 8031678
movs r1, 0
movs r2, 0x40
bl LoadPalette
- ldr r0, =gUnknown_082FF01A
+ ldr r0, =gUnknown_082FF018+2
movs r1, 0x1
movs r2, 0x10
bl LoadPalette
@@ -4459,11 +4459,11 @@ set_default_player_name: @ 8031DC4
adds r5, r1, 0
cmp r0, 0
bne _08031DE4
- ldr r1, =gUnknown_082FF128
+ ldr r1, =gMalePresetNames
b _08031DE6
.pool
_08031DE4:
- ldr r1, =gUnknown_082FF178
+ ldr r1, =gFemalePresetNames
_08031DE6:
lsls r0, r2, 2
adds r0, r1
diff --git a/asm/map_obj_8097404.s b/asm/map_obj_8097404.s
index 4ed8e3bcd..96ffc2254 100644
--- a/asm/map_obj_8097404.s
+++ b/asm/map_obj_8097404.s
@@ -205,8 +205,8 @@ _0809756C:
.pool
thumb_func_end npc_sync_anim_pause_bits
- thumb_func_start sub_809757C
-sub_809757C: @ 809757C
+ thumb_func_start UnfreezeMapObjects
+UnfreezeMapObjects: @ 809757C
push {r4,r5,lr}
movs r4, 0
ldr r5, =gMapObjects
@@ -231,7 +231,7 @@ _08097598:
pop {r0}
bx r0
.pool
- thumb_func_end sub_809757C
+ thumb_func_end UnfreezeMapObjects
thumb_func_start little_step
@ void little_step(struct obj *object, u8 direction)
@@ -1396,7 +1396,7 @@ oe_exec_and_other_stuff: @ 8097DD0
adds r0, r1, 0
lsls r4, 24
lsrs r4, 24
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
adds r2, r1, 0x4
adds r3, r1, 0
adds r3, 0x8
@@ -1434,7 +1434,7 @@ DoRippleFieldEffect: @ 8097E14
adds r4, r1, 0
ldrb r0, [r0, 0x5]
bl GetFieldObjectGraphicsInfo
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r3, 0x20
ldrsh r1, [r4, r3]
str r1, [r2]
diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s
index 60757cdd0..ee60814f5 100644
--- a/asm/map_obj_lock.s
+++ b/asm/map_obj_lock.s
@@ -59,8 +59,8 @@ _080983E2:
bx r1
thumb_func_end sub_80983C4
- thumb_func_start sub_80983E8
-sub_80983E8: @ 80983E8
+ thumb_func_start ScriptFreezeMapObjects
+ScriptFreezeMapObjects: @ 80983E8
push {lr}
bl player_bitmagic
ldr r0, =sub_80983A4
@@ -69,7 +69,7 @@ sub_80983E8: @ 80983E8
pop {r0}
bx r0
.pool
- thumb_func_end sub_80983E8
+ thumb_func_end ScriptFreezeMapObjects
thumb_func_start sub_8098400
sub_8098400: @ 8098400
@@ -149,8 +149,8 @@ _0809849A:
bx r1
thumb_func_end sub_809847C
- thumb_func_start sub_80984A0
-sub_80984A0: @ 80984A0
+ thumb_func_start LockSelectedMapObject
+LockSelectedMapObject: @ 80984A0
push {r4,r5,lr}
ldr r4, =gSelectedMapObject
ldrb r0, [r4]
@@ -184,7 +184,7 @@ _080984DE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80984A0
+ thumb_func_end LockSelectedMapObject
thumb_func_start sub_80984F4
sub_80984F4: @ 80984F4
@@ -203,7 +203,7 @@ sub_80984F4: @ 80984F4
adds r0, r1
bl FieldObjectClearAnimIfSpecialAnimFinished
bl sub_80D338C
- bl sub_809757C
+ bl UnfreezeMapObjects
pop {r0}
bx r0
.pool
@@ -239,7 +239,7 @@ _08098542:
adds r0, r4
bl FieldObjectClearAnimIfSpecialAnimFinished
bl sub_80D338C
- bl sub_809757C
+ bl UnfreezeMapObjects
pop {r4}
pop {r0}
bx r0
diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s
index 7b21e19e7..4972d4096 100644
--- a/asm/mauville_old_man.s
+++ b/asm/mauville_old_man.s
@@ -1392,7 +1392,7 @@ _08120BB0:
movs r0, 0xFF
strb r0, [r7, 0x7]
mov r0, sp
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _08120BF8
mov r0, sp
@@ -1458,7 +1458,7 @@ _08120C48:
muls r0, r5
adds r0, 0x5
adds r0, r6, r0
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _08120C5E
mov r0, r8
@@ -1480,7 +1480,7 @@ _08120C6A:
movs r5, 0x3
_08120C74:
adds r0, r6, 0
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _08120C84
mov r1, r8
@@ -1569,7 +1569,7 @@ _08120CF2:
mov r1, r8
strb r0, [r1, 0x7]
mov r0, sp
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _08120D1A
movs r0, 0x1
@@ -2205,7 +2205,7 @@ sub_8121178: @ 8121178
bl ConvertInternationalString
mov r0, r8
bl sub_8120EC0
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r3}
mov r8, r3
pop {r4-r6}
diff --git a/asm/menu.s b/asm/menu.s
index 8bb9dc436..71ff9218c 100755
--- a/asm/menu.s
+++ b/asm/menu.s
@@ -5201,7 +5201,7 @@ sub_819A25C: @ 819A25C
lsrs r4, 24
lsls r0, 16
lsrs r0, 16
- bl sub_80D30B0
+ bl GetValidMonIconPalettePtr
adds r1, r4, 0
movs r2, 0x20
bl LoadPalette
@@ -5228,7 +5228,7 @@ sub_819A27C: @ 819A27C
lsls r5, 16
lsrs r5, 16
movs r2, 0x1
- bl sub_80D2EDC
+ bl GetMonIconPtr
adds r1, r0, 0
movs r0, 0x20
str r0, [sp]
diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s
index acc3065ea..423f653d9 100644
--- a/asm/menu_helpers.s
+++ b/asm/menu_helpers.s
@@ -533,7 +533,7 @@ sub_81221AC: @ 81221AC
bl is_c1_link_related_active
cmp r0, 0x1
beq _081221BE
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _081221C8
diff --git a/asm/metatile_behavior.s b/asm/metatile_behavior.s
deleted file mode 100644
index 30b0f4348..000000000
--- a/asm/metatile_behavior.s
+++ /dev/null
@@ -1,2610 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ShouldDoJumpLandingDustEffect
-ShouldDoJumpLandingDustEffect: @ 8088DEC
- movs r0, 0x1
- bx lr
- thumb_func_end ShouldDoJumpLandingDustEffect
-
- thumb_func_start sub_8088DF0
-sub_8088DF0: @ 8088DF0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_08486EFC
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08088E0C
- movs r0, 0
- b _08088E0E
- .pool
-_08088E0C:
- movs r0, 0x1
-_08088E0E:
- pop {r1}
- bx r1
- thumb_func_end sub_8088DF0
-
- thumb_func_start MetatileBehavior_IsJumpEast
-MetatileBehavior_IsJumpEast: @ 8088E14
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x38
- beq _08088E22
- movs r0, 0
- b _08088E24
-_08088E22:
- movs r0, 0x1
-_08088E24:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsJumpEast
-
- thumb_func_start MetatileBehavior_IsJumpWest
-MetatileBehavior_IsJumpWest: @ 8088E28
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x39
- beq _08088E36
- movs r0, 0
- b _08088E38
-_08088E36:
- movs r0, 0x1
-_08088E38:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsJumpWest
-
- thumb_func_start MetatileBehavior_IsJumpNorth
-MetatileBehavior_IsJumpNorth: @ 8088E3C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3A
- beq _08088E4A
- movs r0, 0
- b _08088E4C
-_08088E4A:
- movs r0, 0x1
-_08088E4C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsJumpNorth
-
- thumb_func_start MetatileBehavior_IsJumpSouth
-MetatileBehavior_IsJumpSouth: @ 8088E50
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- beq _08088E5E
- movs r0, 0
- b _08088E60
-_08088E5E:
- movs r0, 0x1
-_08088E60:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsJumpSouth
-
- thumb_func_start sub_8088E64
-sub_8088E64: @ 8088E64
- push {lr}
- lsls r0, 24
- movs r1, 0xFE
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08088E78
- movs r0, 0
- b _08088E7A
-_08088E78:
- movs r0, 0x1
-_08088E7A:
- pop {r1}
- bx r1
- thumb_func_end sub_8088E64
-
- thumb_func_start MetatileBehavior_IsSandOrDeepSand
-MetatileBehavior_IsSandOrDeepSand: @ 8088E80
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x21
- beq _08088E8E
- cmp r0, 0x6
- bne _08088E92
-_08088E8E:
- movs r0, 0x1
- b _08088E94
-_08088E92:
- movs r0, 0
-_08088E94:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSandOrDeepSand
-
- thumb_func_start MetatileBehavior_IsDeepSand
-MetatileBehavior_IsDeepSand: @ 8088E98
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- beq _08088EA6
- movs r0, 0
- b _08088EA8
-_08088EA6:
- movs r0, 0x1
-_08088EA8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsDeepSand
-
- thumb_func_start MetatileBehavior_IsReflective
-MetatileBehavior_IsReflective: @ 8088EAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _08088ECA
- cmp r0, 0x16
- beq _08088ECA
- cmp r0, 0x1A
- beq _08088ECA
- cmp r0, 0x20
- beq _08088ECA
- cmp r0, 0x14
- beq _08088ECA
- cmp r0, 0x2B
- bne _08088ECE
-_08088ECA:
- movs r0, 0x1
- b _08088ED0
-_08088ECE:
- movs r0, 0
-_08088ED0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsReflective
-
- thumb_func_start MetatileBehavior_IsIce
-MetatileBehavior_IsIce: @ 8088ED4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x20
- beq _08088EE2
- movs r0, 0
- b _08088EE4
-_08088EE2:
- movs r0, 0x1
-_08088EE4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsIce
-
- thumb_func_start is_tile_x69_2_warp_door
-is_tile_x69_2_warp_door: @ 8088EE8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x69
- beq _08088EF6
- movs r0, 0
- b _08088EF8
-_08088EF6:
- movs r0, 0x1
-_08088EF8:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x69_2_warp_door
-
- thumb_func_start sub_8088EFC
-sub_8088EFC: @ 8088EFC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8D
- beq _08088F0A
- cmp r0, 0x69
- bne _08088F0E
-_08088F0A:
- movs r0, 0x1
- b _08088F10
-_08088F0E:
- movs r0, 0
-_08088F10:
- pop {r1}
- bx r1
- thumb_func_end sub_8088EFC
-
- thumb_func_start MetatileBehavior_IsEscalator
-MetatileBehavior_IsEscalator: @ 8088F14
- push {lr}
- lsls r0, 24
- movs r1, 0x96
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x1
- bls _08088F28
- movs r0, 0
- b _08088F2A
-_08088F28:
- movs r0, 0x1
-_08088F2A:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsEscalator
-
- thumb_func_start sub_8088F30
-sub_8088F30: @ 8088F30
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _08088F3E
- movs r0, 0
- b _08088F40
-_08088F3E:
- movs r0, 0x1
-_08088F40:
- pop {r1}
- bx r1
- thumb_func_end sub_8088F30
-
- thumb_func_start MetatileBehavior_IsLadder
-MetatileBehavior_IsLadder: @ 8088F44
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x61
- beq _08088F52
- movs r0, 0
- b _08088F54
-_08088F52:
- movs r0, 0x1
-_08088F54:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsLadder
-
- thumb_func_start sub_8088F58
-sub_8088F58: @ 8088F58
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x60
- beq _08088F6A
- cmp r0, 0x6C
- beq _08088F6A
- cmp r0, 0x6E
- bne _08088F6E
-_08088F6A:
- movs r0, 0x1
- b _08088F70
-_08088F6E:
- movs r0, 0
-_08088F70:
- pop {r1}
- bx r1
- thumb_func_end sub_8088F58
-
- thumb_func_start sub_8088F74
-sub_8088F74: @ 8088F74
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6E
- beq _08088F82
- movs r0, 0
- b _08088F84
-_08088F82:
- movs r0, 0x1
-_08088F84:
- pop {r1}
- bx r1
- thumb_func_end sub_8088F74
-
- thumb_func_start MetatileBehavior_IsSurfableWaterOrUnderwater
-MetatileBehavior_IsSurfableWaterOrUnderwater: @ 8088F88
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_08486EFC
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08088FA4
- movs r0, 0
- b _08088FA6
- .pool
-_08088FA4:
- movs r0, 0x1
-_08088FA6:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSurfableWaterOrUnderwater
-
- thumb_func_start MetatileBehavior_IsEastArrowWarp
-MetatileBehavior_IsEastArrowWarp: @ 8088FAC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x62
- beq _08088FBA
- movs r0, 0
- b _08088FBC
-_08088FBA:
- movs r0, 0x1
-_08088FBC:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsEastArrowWarp
-
- thumb_func_start MetatileBehavior_IsWestArrowWarp
-MetatileBehavior_IsWestArrowWarp: @ 8088FC0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x63
- beq _08088FCE
- movs r0, 0
- b _08088FD0
-_08088FCE:
- movs r0, 0x1
-_08088FD0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWestArrowWarp
-
- thumb_func_start MetatileBehavior_IsNorthArrowWarp
-MetatileBehavior_IsNorthArrowWarp: @ 8088FD4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x64
- beq _08088FE2
- cmp r0, 0x1B
- bne _08088FE6
-_08088FE2:
- movs r0, 0x1
- b _08088FE8
-_08088FE6:
- movs r0, 0
-_08088FE8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsNorthArrowWarp
-
- thumb_func_start MetatileBehavior_IsSouthArrowWarp
-MetatileBehavior_IsSouthArrowWarp: @ 8088FEC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x65
- beq _08088FFE
- cmp r0, 0x6D
- beq _08088FFE
- cmp r0, 0x1C
- bne _08089002
-_08088FFE:
- movs r0, 0x1
- b _08089004
-_08089002:
- movs r0, 0
-_08089004:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSouthArrowWarp
-
- thumb_func_start sub_8089008
-sub_8089008: @ 8089008
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r5, 0
- adds r0, r4, 0
- bl MetatileBehavior_IsEastArrowWarp
- lsls r0, 24
- cmp r0, 0
- bne _08089040
- adds r0, r4, 0
- bl MetatileBehavior_IsWestArrowWarp
- lsls r0, 24
- cmp r0, 0
- bne _08089040
- adds r0, r4, 0
- bl MetatileBehavior_IsNorthArrowWarp
- lsls r0, 24
- cmp r0, 0
- bne _08089040
- adds r0, r4, 0
- bl MetatileBehavior_IsSouthArrowWarp
- lsls r0, 24
- cmp r0, 0
- beq _08089042
-_08089040:
- movs r5, 0x1
-_08089042:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8089008
-
- thumb_func_start sub_808904C
-sub_808904C: @ 808904C
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xC0
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x8
- bls _08089082
- adds r0, r1, 0
- subs r0, 0x50
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _08089082
- cmp r1, 0xD0
- beq _08089082
- cmp r1, 0xD2
- beq _08089082
- cmp r1, 0x13
- beq _08089082
- cmp r1, 0x20
- beq _08089082
- cmp r1, 0xBB
- beq _08089082
- cmp r1, 0xBC
- bne _08089086
-_08089082:
- movs r0, 0x1
- b _08089088
-_08089086:
- movs r0, 0
-_08089088:
- pop {r1}
- bx r1
- thumb_func_end sub_808904C
-
- thumb_func_start MetatileBehavior_IsIce_2
-@ bool8 MetatileBehavior_IsIce_2(u8 metatileBehavior)
-MetatileBehavior_IsIce_2: @ 808908C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x20
- beq _0808909A
- movs r0, 0
- b _0808909C
-_0808909A:
- movs r0, 0x1
-_0808909C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsIce_2
-
- thumb_func_start MetatileBehavior_IsTrickHouseSlipperyFloor
-@ bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 metatileBehavior)
-MetatileBehavior_IsTrickHouseSlipperyFloor: @ 80890A0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x48
- beq _080890AE
- movs r0, 0
- b _080890B0
-_080890AE:
- movs r0, 0x1
-_080890B0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsTrickHouseSlipperyFloor
-
- thumb_func_start MetatileBehavior_0x05
-MetatileBehavior_0x05: @ 80890B4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- beq _080890C2
- movs r0, 0
- b _080890C4
-_080890C2:
- movs r0, 0x1
-_080890C4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_0x05
-
- thumb_func_start MetatileBehavior_IsWalkNorth
-@ bool8 MetatileBehavior_IsWalkNorth(u8 metatileBehavior)
-MetatileBehavior_IsWalkNorth: @ 80890C8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x42
- beq _080890D6
- movs r0, 0
- b _080890D8
-_080890D6:
- movs r0, 0x1
-_080890D8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWalkNorth
-
- thumb_func_start MetatileBehavior_IsWalkSouth
-@ bool8 MetatileBehavior_IsWalkSouth(u8 metatileBehavior)
-MetatileBehavior_IsWalkSouth: @ 80890DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x43
- beq _080890EA
- movs r0, 0
- b _080890EC
-_080890EA:
- movs r0, 0x1
-_080890EC:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWalkSouth
-
- thumb_func_start MetatileBehavior_IsWalkWest
-@ bool8 MetatileBehavior_IsWalkWest(u8 metatileBehavior)
-MetatileBehavior_IsWalkWest: @ 80890F0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x41
- beq _080890FE
- movs r0, 0
- b _08089100
-_080890FE:
- movs r0, 0x1
-_08089100:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWalkWest
-
- thumb_func_start MetatileBehavior_IsWalkEast
-@ bool8 MetatileBehavior_IsWalkEast(u8 metatileBehavior)
-MetatileBehavior_IsWalkEast: @ 8089104
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08089112
- movs r0, 0
- b _08089114
-_08089112:
- movs r0, 0x1
-_08089114:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWalkEast
-
- thumb_func_start MetatileBehavior_IsNorthwardCurrent
-@ bool8 MetatileBehavior_IsNorthwardCurrent(u8 metatileBehavior)
-MetatileBehavior_IsNorthwardCurrent: @ 8089118
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x52
- beq _08089126
- movs r0, 0
- b _08089128
-_08089126:
- movs r0, 0x1
-_08089128:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsNorthwardCurrent
-
- thumb_func_start MetatileBehavior_IsSouthwardCurrent
-@ bool8 MetatileBehavior_IsSouthwardCurrent(u8 metatileBehavior)
-MetatileBehavior_IsSouthwardCurrent: @ 808912C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x53
- beq _0808913A
- movs r0, 0
- b _0808913C
-_0808913A:
- movs r0, 0x1
-_0808913C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSouthwardCurrent
-
- thumb_func_start MetatileBehavior_IsWestwardCurrent
-@ bool8 MetatileBehavior_IsWestwardCurrent(u8 metatileBehavior)
-MetatileBehavior_IsWestwardCurrent: @ 8089140
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x51
- beq _0808914E
- movs r0, 0
- b _08089150
-_0808914E:
- movs r0, 0x1
-_08089150:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWestwardCurrent
-
- thumb_func_start MetatileBehavior_IsEastwardCurrent
-@ bool8 MetatileBehavior_IsEastwardCurrent(u8 metatileBehavior)
-MetatileBehavior_IsEastwardCurrent: @ 8089154
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x50
- beq _08089162
- movs r0, 0
- b _08089164
-_08089162:
- movs r0, 0x1
-_08089164:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsEastwardCurrent
-
- thumb_func_start MetatileBehavior_IsSlideNorth
-@ bool8 MetatileBehavior_IsSlideNorth(u8 metatileBehavior)
-MetatileBehavior_IsSlideNorth: @ 8089168
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x46
- beq _08089176
- movs r0, 0
- b _08089178
-_08089176:
- movs r0, 0x1
-_08089178:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSlideNorth
-
- thumb_func_start MetatileBehavior_IsSlideSouth
-@ bool8 MetatileBehavior_IsSlideSouth(u8 metatileBehavior)
-MetatileBehavior_IsSlideSouth: @ 808917C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x47
- beq _0808918A
- movs r0, 0
- b _0808918C
-_0808918A:
- movs r0, 0x1
-_0808918C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSlideSouth
-
- thumb_func_start MetatileBehavior_IsSlideWest
-@ bool8 MetatileBehavior_IsSlideWest(u8 metatileBehavior)
-MetatileBehavior_IsSlideWest: @ 8089190
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x45
- beq _0808919E
- movs r0, 0
- b _080891A0
-_0808919E:
- movs r0, 0x1
-_080891A0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSlideWest
-
- thumb_func_start MetatileBehavior_IsSlideEast
-@ bool8 MetatileBehavior_IsSlideEast(u8 metatileBehavior)
-MetatileBehavior_IsSlideEast: @ 80891A4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x44
- beq _080891B2
- movs r0, 0
- b _080891B4
-_080891B2:
- movs r0, 0x1
-_080891B4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSlideEast
-
- thumb_func_start MetatileBehavior_IsCounter
-MetatileBehavior_IsCounter: @ 80891B8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x80
- beq _080891C6
- movs r0, 0
- b _080891C8
-_080891C6:
- movs r0, 0x1
-_080891C8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsCounter
-
- thumb_func_start MetatileBehavior_IsPlayerFacingTVScreen
-@ bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 behavior, u8 direction)
-MetatileBehavior_IsPlayerFacingTVScreen: @ 80891CC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x2
- bne _080891DE
- cmp r0, 0x86
- beq _080891E2
-_080891DE:
- movs r0, 0
- b _080891E4
-_080891E2:
- movs r0, 0x1
-_080891E4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsPlayerFacingTVScreen
-
- thumb_func_start MetatileBehavior_IsPC
-MetatileBehavior_IsPC: @ 80891E8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x83
- beq _080891F6
- movs r0, 0
- b _080891F8
-_080891F6:
- movs r0, 0x1
-_080891F8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsPC
-
- thumb_func_start is_tile_x84
-is_tile_x84: @ 80891FC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x84
- beq _0808920A
- movs r0, 0
- b _0808920C
-_0808920A:
- movs r0, 0x1
-_0808920C:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x84
-
- thumb_func_start sub_8089210
-sub_8089210: @ 8089210
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x91
- beq _08089232
- cmp r0, 0x93
- beq _08089232
- cmp r0, 0x95
- beq _08089232
- cmp r0, 0x97
- beq _08089232
- cmp r0, 0x99
- beq _08089232
- cmp r0, 0x9B
- beq _08089232
- cmp r0, 0x9D
- bne _08089236
-_08089232:
- movs r0, 0x1
- b _08089238
-_08089236:
- movs r0, 0
-_08089238:
- pop {r1}
- bx r1
- thumb_func_end sub_8089210
-
- thumb_func_start sub_808923C
-sub_808923C: @ 808923C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x90
- beq _08089252
- cmp r0, 0x92
- beq _08089252
- cmp r0, 0x94
- beq _08089252
- cmp r0, 0x9A
- bne _08089256
-_08089252:
- movs r0, 0x1
- b _08089258
-_08089256:
- movs r0, 0
-_08089258:
- pop {r1}
- bx r1
- thumb_func_end sub_808923C
-
- thumb_func_start sub_808925C
-sub_808925C: @ 808925C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x96
- beq _0808926A
- cmp r0, 0x9C
- bne _0808926E
-_0808926A:
- movs r0, 0x1
- b _08089270
-_0808926E:
- movs r0, 0
-_08089270:
- pop {r1}
- bx r1
- thumb_func_end sub_808925C
-
- thumb_func_start is_tile_x98
-is_tile_x98: @ 8089274
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x98
- beq _08089282
- movs r0, 0
- b _08089284
-_08089282:
- movs r0, 0x1
-_08089284:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x98
-
- thumb_func_start sub_8089288
-sub_8089288: @ 8089288
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB0
- beq _08089296
- movs r0, 0
- b _08089298
-_08089296:
- movs r0, 0x1
-_08089298:
- pop {r1}
- bx r1
- thumb_func_end sub_8089288
-
- thumb_func_start sub_808929C
-sub_808929C: @ 808929C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB1
- beq _080892AA
- movs r0, 0
- b _080892AC
-_080892AA:
- movs r0, 0x1
-_080892AC:
- pop {r1}
- bx r1
- thumb_func_end sub_808929C
-
- thumb_func_start sub_80892B0
-sub_80892B0: @ 80892B0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB2
- beq _080892BE
- movs r0, 0
- b _080892C0
-_080892BE:
- movs r0, 0x1
-_080892C0:
- pop {r1}
- bx r1
- thumb_func_end sub_80892B0
-
- thumb_func_start sub_80892C4
-sub_80892C4: @ 80892C4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB3
- beq _080892D2
- movs r0, 0
- b _080892D4
-_080892D2:
- movs r0, 0x1
-_080892D4:
- pop {r1}
- bx r1
- thumb_func_end sub_80892C4
-
- thumb_func_start sub_80892D8
-sub_80892D8: @ 80892D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB9
- beq _080892E6
- movs r0, 0
- b _080892E8
-_080892E6:
- movs r0, 0x1
-_080892E8:
- pop {r1}
- bx r1
- thumb_func_end sub_80892D8
-
- thumb_func_start sub_80892EC
-sub_80892EC: @ 80892EC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC6
- beq _080892FA
- movs r0, 0
- b _080892FC
-_080892FA:
- movs r0, 0x1
-_080892FC:
- pop {r1}
- bx r1
- thumb_func_end sub_80892EC
-
- thumb_func_start sub_8089300
-sub_8089300: @ 8089300
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC7
- beq _0808930E
- movs r0, 0
- b _08089310
-_0808930E:
- movs r0, 0x1
-_08089310:
- pop {r1}
- bx r1
- thumb_func_end sub_8089300
-
- thumb_func_start sub_8089314
-sub_8089314: @ 8089314
- push {lr}
- lsls r0, 24
- cmp r0, 0
- beq _08089320
- movs r0, 0
- b _08089322
-_08089320:
- movs r0, 0x1
-_08089322:
- pop {r1}
- bx r1
- thumb_func_end sub_8089314
-
- thumb_func_start sub_8089328
-sub_8089328: @ 8089328
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB7
- beq _08089336
- movs r0, 0
- b _08089338
-_08089336:
- movs r0, 0x1
-_08089338:
- pop {r1}
- bx r1
- thumb_func_end sub_8089328
-
- thumb_func_start sub_808933C
-sub_808933C: @ 808933C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB2
- beq _0808934A
- movs r0, 0
- b _0808934C
-_0808934A:
- movs r0, 0x1
-_0808934C:
- pop {r1}
- bx r1
- thumb_func_end sub_808933C
-
- thumb_func_start sub_8089350
-sub_8089350: @ 8089350
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB5
- beq _0808935E
- movs r0, 0
- b _08089360
-_0808935E:
- movs r0, 0x1
-_08089360:
- pop {r1}
- bx r1
- thumb_func_end sub_8089350
-
- thumb_func_start sub_8089364
-sub_8089364: @ 8089364
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC3
- beq _08089372
- movs r0, 0
- b _08089374
-_08089372:
- movs r0, 0x1
-_08089374:
- pop {r1}
- bx r1
- thumb_func_end sub_8089364
-
- thumb_func_start sub_8089378
-sub_8089378: @ 8089378
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC2
- beq _08089386
- movs r0, 0
- b _08089388
-_08089386:
- movs r0, 0x1
-_08089388:
- pop {r1}
- bx r1
- thumb_func_end sub_8089378
-
- thumb_func_start sub_808938C
-sub_808938C: @ 808938C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB8
- beq _0808939A
- movs r0, 0
- b _0808939C
-_0808939A:
- movs r0, 0x1
-_0808939C:
- pop {r1}
- bx r1
- thumb_func_end sub_808938C
-
- thumb_func_start sub_80893A0
-sub_80893A0: @ 80893A0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBE
- beq _080893AE
- movs r0, 0
- b _080893B0
-_080893AE:
- movs r0, 0x1
-_080893B0:
- pop {r1}
- bx r1
- thumb_func_end sub_80893A0
-
- thumb_func_start sub_80893B4
-sub_80893B4: @ 80893B4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBD
- beq _080893C2
- movs r0, 0
- b _080893C4
-_080893C2:
- movs r0, 0x1
-_080893C4:
- pop {r1}
- bx r1
- thumb_func_end sub_80893B4
-
- thumb_func_start sub_80893C8
-sub_80893C8: @ 80893C8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBA
- beq _080893D6
- movs r0, 0
- b _080893D8
-_080893D6:
- movs r0, 0x1
-_080893D8:
- pop {r1}
- bx r1
- thumb_func_end sub_80893C8
-
- thumb_func_start sub_80893DC
-sub_80893DC: @ 80893DC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBF
- beq _080893EA
- movs r0, 0
- b _080893EC
-_080893EA:
- movs r0, 0x1
-_080893EC:
- pop {r1}
- bx r1
- thumb_func_end sub_80893DC
-
- thumb_func_start sub_80893F0
-sub_80893F0: @ 80893F0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC4
- beq _080893FE
- movs r0, 0
- b _08089400
-_080893FE:
- movs r0, 0x1
-_08089400:
- pop {r1}
- bx r1
- thumb_func_end sub_80893F0
-
- thumb_func_start sub_8089404
-sub_8089404: @ 8089404
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC5
- beq _08089412
- movs r0, 0
- b _08089414
-_08089412:
- movs r0, 0x1
-_08089414:
- pop {r1}
- bx r1
- thumb_func_end sub_8089404
-
- thumb_func_start MetatileBehavior_HasRipples
-MetatileBehavior_HasRipples: @ 8089418
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _0808942A
- cmp r0, 0x16
- beq _0808942A
- cmp r0, 0x14
- bne _0808942E
-_0808942A:
- movs r0, 0x1
- b _08089430
-_0808942E:
- movs r0, 0
-_08089430:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_HasRipples
-
- thumb_func_start MetatileBehavior_IsPuddle
-MetatileBehavior_IsPuddle: @ 8089434
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x16
- beq _08089442
- movs r0, 0
- b _08089444
-_08089442:
- movs r0, 0x1
-_08089444:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsPuddle
-
- thumb_func_start MetatileBehavior_IsTallGrass
-MetatileBehavior_IsTallGrass: @ 8089448
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _08089456
- movs r0, 0
- b _08089458
-_08089456:
- movs r0, 0x1
-_08089458:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsTallGrass
-
- thumb_func_start MetatileBehavior_IsLongGrass
-MetatileBehavior_IsLongGrass: @ 808945C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0808946A
- movs r0, 0
- b _0808946C
-_0808946A:
- movs r0, 0x1
-_0808946C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsLongGrass
-
- thumb_func_start MetatileBehavior_IsBerryTreeSoil
-MetatileBehavior_IsBerryTreeSoil: @ 8089470
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA0
- beq _0808947E
- movs r0, 0
- b _08089480
-_0808947E:
- movs r0, 0x1
-_08089480:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsBerryTreeSoil
-
- thumb_func_start MetatileBehavior_IsAsh
-MetatileBehavior_IsAsh: @ 8089484
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x24
- beq _08089492
- movs r0, 0
- b _08089494
-_08089492:
- movs r0, 0x1
-_08089494:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsAsh
-
- thumb_func_start MetatileBehavior_IsUnusedFootprintMetatile
-MetatileBehavior_IsUnusedFootprintMetatile: @ 8089498
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x25
- beq _080894A6
- movs r0, 0
- b _080894A8
-_080894A6:
- movs r0, 0x1
-_080894A8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsUnusedFootprintMetatile
-
- thumb_func_start sub_80894AC
-sub_80894AC: @ 80894AC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0x90
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x3
- bls _080894CA
- adds r0, r1, 0
- subs r0, 0x7C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bhi _080894CE
-_080894CA:
- movs r0, 0x1
- b _080894D0
-_080894CE:
- movs r0, 0
-_080894D0:
- pop {r1}
- bx r1
- thumb_func_end sub_80894AC
-
- thumb_func_start sub_80894D4
-sub_80894D4: @ 80894D4
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- adds r0, r1, 0
- subs r0, 0x70
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _0808950A
- adds r0, r1, 0
- subs r0, 0x7A
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080894F8
- movs r0, 0x2
- b _0808950A
-_080894F8:
- adds r0, r2, 0
- subs r0, 0x7C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08089508
- movs r0, 0
- b _0808950A
-_08089508:
- movs r0, 0x3
-_0808950A:
- pop {r1}
- bx r1
- thumb_func_end sub_80894D4
-
- thumb_func_start sub_8089510
-sub_8089510: @ 8089510
- push {lr}
- lsls r0, 24
- movs r1, 0x90
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x3
- bls _08089524
- movs r0, 0
- b _08089526
-_08089524:
- movs r0, 0x1
-_08089526:
- pop {r1}
- bx r1
- thumb_func_end sub_8089510
-
- thumb_func_start sub_808952C
-sub_808952C: @ 808952C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _08089550
- adds r0, r4, 0
- bl sub_8088DF0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08089550
- movs r0, 0x1
- b _08089552
-_08089550:
- movs r0, 0
-_08089552:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_808952C
-
- thumb_func_start sub_8089558
-sub_8089558: @ 8089558
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808957E
- adds r0, r4, 0
- bl sub_8088DF0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808957E
- movs r0, 0x1
- b _08089580
-_0808957E:
- movs r0, 0
-_08089580:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8089558
-
- thumb_func_start sub_8089588
-sub_8089588: @ 8089588
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xB
- beq _08089596
- movs r0, 0
- b _08089598
-_08089596:
- movs r0, 0x1
-_08089598:
- pop {r1}
- bx r1
- thumb_func_end sub_8089588
-
- thumb_func_start sub_808959C
-sub_808959C: @ 808959C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xC
- beq _080895AA
- movs r0, 0
- b _080895AC
-_080895AA:
- movs r0, 0x1
-_080895AC:
- pop {r1}
- bx r1
- thumb_func_end sub_808959C
-
- thumb_func_start sub_80895B0
-sub_80895B0: @ 80895B0
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xEF
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x1
- bls _080895C6
- cmp r1, 0x14
- bne _080895CA
-_080895C6:
- movs r0, 0x1
- b _080895CC
-_080895CA:
- movs r0, 0
-_080895CC:
- pop {r1}
- bx r1
- thumb_func_end sub_80895B0
-
- thumb_func_start sub_80895D0
-sub_80895D0: @ 80895D0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x19
- beq _080895DE
- cmp r0, 0x2A
- bne _080895E2
-_080895DE:
- movs r0, 0x1
- b _080895E4
-_080895E2:
- movs r0, 0
-_080895E4:
- pop {r1}
- bx r1
- thumb_func_end sub_80895D0
-
- thumb_func_start MetatileBehavior_IsShallowFlowingWater
-MetatileBehavior_IsShallowFlowingWater: @ 80895E8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x17
- beq _080895FA
- cmp r0, 0x1B
- beq _080895FA
- cmp r0, 0x1C
- bne _080895FE
-_080895FA:
- movs r0, 0x1
- b _08089600
-_080895FE:
- movs r0, 0
-_08089600:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsShallowFlowingWater
-
- thumb_func_start sub_8089604
-sub_8089604: @ 8089604
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x26
- beq _08089612
- movs r0, 0
- b _08089614
-_08089612:
- movs r0, 0x1
-_08089614:
- pop {r1}
- bx r1
- thumb_func_end sub_8089604
-
- thumb_func_start sub_8089618
-sub_8089618: @ 8089618
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x27
- beq _08089626
- movs r0, 0
- b _08089628
-_08089626:
- movs r0, 0x1
-_08089628:
- pop {r1}
- bx r1
- thumb_func_end sub_8089618
-
- thumb_func_start sub_808962C
-sub_808962C: @ 808962C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x15
- beq _0808963E
- cmp r0, 0x11
- beq _0808963E
- cmp r0, 0x12
- bne _08089642
-_0808963E:
- movs r0, 0x1
- b _08089644
-_08089642:
- movs r0, 0
-_08089644:
- pop {r1}
- bx r1
- thumb_func_end sub_808962C
-
- thumb_func_start sub_8089648
-sub_8089648: @ 8089648
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x18
- beq _08089656
- cmp r0, 0x1A
- bne _0808965A
-_08089656:
- movs r0, 0x1
- b _0808965C
-_0808965A:
- movs r0, 0
-_0808965C:
- pop {r1}
- bx r1
- thumb_func_end sub_8089648
-
- thumb_func_start sub_8089660
-sub_8089660: @ 8089660
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- beq _08089682
- adds r0, r4, 0
- bl MetatileBehavior_IsWaterfall
- lsls r0, 24
- cmp r0, 0
- bne _08089682
- movs r0, 0x1
- b _08089684
-_08089682:
- movs r0, 0
-_08089684:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8089660
-
- thumb_func_start MetatileBehavior_IsEastBlocked
-MetatileBehavior_IsEastBlocked: @ 808968C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x30
- beq _080896A6
- cmp r0, 0x34
- beq _080896A6
- cmp r0, 0x36
- beq _080896A6
- cmp r0, 0xC1
- beq _080896A6
- cmp r0, 0xBE
- bne _080896AA
-_080896A6:
- movs r0, 0x1
- b _080896AC
-_080896AA:
- movs r0, 0
-_080896AC:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsEastBlocked
-
- thumb_func_start MetatileBehavior_IsWestBlocked
-MetatileBehavior_IsWestBlocked: @ 80896B0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x31
- beq _080896CA
- cmp r0, 0x35
- beq _080896CA
- cmp r0, 0x37
- beq _080896CA
- cmp r0, 0xC1
- beq _080896CA
- cmp r0, 0xBE
- bne _080896CE
-_080896CA:
- movs r0, 0x1
- b _080896D0
-_080896CE:
- movs r0, 0
-_080896D0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWestBlocked
-
- thumb_func_start MetatileBehavior_IsNorthBlocked
-MetatileBehavior_IsNorthBlocked: @ 80896D4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x32
- beq _080896EA
- cmp r0, 0x34
- beq _080896EA
- cmp r0, 0x35
- beq _080896EA
- cmp r0, 0xC0
- bne _080896EE
-_080896EA:
- movs r0, 0x1
- b _080896F0
-_080896EE:
- movs r0, 0
-_080896F0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsNorthBlocked
-
- thumb_func_start MetatileBehavior_IsSouthBlocked
-MetatileBehavior_IsSouthBlocked: @ 80896F4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x33
- beq _0808970A
- cmp r0, 0x36
- beq _0808970A
- cmp r0, 0x37
- beq _0808970A
- cmp r0, 0xC0
- bne _0808970E
-_0808970A:
- movs r0, 0x1
- b _08089710
-_0808970E:
- movs r0, 0
-_08089710:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSouthBlocked
-
- thumb_func_start MetatileBehavior_IsShortGrass
-MetatileBehavior_IsShortGrass: @ 8089714
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- beq _08089722
- movs r0, 0
- b _08089724
-_08089722:
- movs r0, 0x1
-_08089724:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsShortGrass
-
- thumb_func_start MetatileBehavior_IsHotSprings
-MetatileBehavior_IsHotSprings: @ 8089728
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x28
- beq _08089736
- movs r0, 0
- b _08089738
-_08089736:
- movs r0, 0x1
-_08089738:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsHotSprings
-
- thumb_func_start MetatileBehavior_IsWaterfall
-@ bool8 MetatileBehavior_IsWaterfall(u8 metatileBehavior)
-MetatileBehavior_IsWaterfall: @ 808973C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- beq _0808974A
- movs r0, 0
- b _0808974C
-_0808974A:
- movs r0, 0x1
-_0808974C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsWaterfall
-
- thumb_func_start MetatileBehavior_IsFortreeBridge
-MetatileBehavior_IsFortreeBridge: @ 8089750
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x78
- beq _0808975E
- movs r0, 0
- b _08089760
-_0808975E:
- movs r0, 0x1
-_08089760:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsFortreeBridge
-
- thumb_func_start sub_8089764
-sub_8089764: @ 8089764
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x74
- beq _08089772
- movs r0, 0
- b _08089774
-_08089772:
- movs r0, 0x1
-_08089774:
- pop {r1}
- bx r1
- thumb_func_end sub_8089764
-
- thumb_func_start sub_8089778
-sub_8089778: @ 8089778
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x75
- beq _08089786
- movs r0, 0
- b _08089788
-_08089786:
- movs r0, 0x1
-_08089788:
- pop {r1}
- bx r1
- thumb_func_end sub_8089778
-
- thumb_func_start sub_808978C
-sub_808978C: @ 808978C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x76
- beq _0808979A
- movs r0, 0
- b _0808979C
-_0808979A:
- movs r0, 0x1
-_0808979C:
- pop {r1}
- bx r1
- thumb_func_end sub_808978C
-
- thumb_func_start sub_80897A0
-sub_80897A0: @ 80897A0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x77
- beq _080897AE
- movs r0, 0
- b _080897B0
-_080897AE:
- movs r0, 0x1
-_080897B0:
- pop {r1}
- bx r1
- thumb_func_end sub_80897A0
-
- thumb_func_start MetatileBehavior_IsPacifidlogLog
-MetatileBehavior_IsPacifidlogLog: @ 80897B4
- push {lr}
- lsls r0, 24
- movs r1, 0x8C
- lsls r1, 24
- adds r0, r1
- lsrs r0, 24
- cmp r0, 0x3
- bls _080897C8
- movs r0, 0
- b _080897CA
-_080897C8:
- movs r0, 0x1
-_080897CA:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsPacifidlogLog
-
- thumb_func_start is_tile_x8C
-is_tile_x8C: @ 80897D0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8C
- beq _080897DE
- movs r0, 0
- b _080897E0
-_080897DE:
- movs r0, 0x1
-_080897E0:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x8C
-
- thumb_func_start is_tile_x85
-is_tile_x85: @ 80897E4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x85
- beq _080897F2
- movs r0, 0
- b _080897F4
-_080897F2:
- movs r0, 0x1
-_080897F4:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x85
-
- thumb_func_start is_tile_x8B
-is_tile_x8B: @ 80897F8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8B
- beq _08089806
- movs r0, 0
- b _08089808
-_08089806:
- movs r0, 0x1
-_08089808:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x8B
-
- thumb_func_start is_tile_xEA
-is_tile_xEA: @ 808980C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xEA
- beq _0808981A
- movs r0, 0
- b _0808981C
-_0808981A:
- movs r0, 0x1
-_0808981C:
- pop {r1}
- bx r1
- thumb_func_end is_tile_xEA
-
- thumb_func_start is_tile_x8A
-is_tile_x8A: @ 8089820
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8A
- beq _0808982E
- movs r0, 0
- b _08089830
-_0808982E:
- movs r0, 0x1
-_08089830:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x8A
-
- thumb_func_start is_tile_x87
-is_tile_x87: @ 8089834
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x87
- beq _08089842
- movs r0, 0
- b _08089844
-_08089842:
- movs r0, 0x1
-_08089844:
- pop {r1}
- bx r1
- thumb_func_end is_tile_x87
-
- thumb_func_start MetatileBehavior_0xBB
-@ bool8 MetatileBehavior_0xBB(u8 metatileBehavior)
-MetatileBehavior_0xBB: @ 8089848
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBB
- beq _08089856
- movs r0, 0
- b _08089858
-_08089856:
- movs r0, 0x1
-_08089858:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_0xBB
-
- thumb_func_start MetatileBehavior_0xBC
-@ bool8 MetatileBehavior_0xBC(u8 metatileBehavior)
-MetatileBehavior_0xBC: @ 808985C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xBC
- beq _0808986A
- movs r0, 0
- b _0808986C
-_0808986A:
- movs r0, 0x1
-_0808986C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_0xBC
-
- thumb_func_start sub_8089870
-sub_8089870: @ 8089870
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x29
- beq _0808987E
- movs r0, 0
- b _08089880
-_0808987E:
- movs r0, 0x1
-_08089880:
- pop {r1}
- bx r1
- thumb_func_end sub_8089870
-
- thumb_func_start is_role_x68
-is_role_x68: @ 8089884
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x68
- beq _08089892
- movs r0, 0
- b _08089894
-_08089892:
- movs r0, 0x1
-_08089894:
- pop {r1}
- bx r1
- thumb_func_end is_role_x68
-
- thumb_func_start MetatileBehavior_IsAquaHideoutWarp
-MetatileBehavior_IsAquaHideoutWarp: @ 8089898
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x67
- beq _080898A6
- movs r0, 0
- b _080898A8
-_080898A6:
- movs r0, 0x1
-_080898A8:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsAquaHideoutWarp
-
- thumb_func_start sub_80898AC
-sub_80898AC: @ 80898AC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x70
- beq _080898BA
- movs r0, 0
- b _080898BC
-_080898BA:
- movs r0, 0x1
-_080898BC:
- pop {r1}
- bx r1
- thumb_func_end sub_80898AC
-
- thumb_func_start sub_80898C0
-sub_80898C0: @ 80898C0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE
- beq _080898CE
- movs r0, 0
- b _080898D0
-_080898CE:
- movs r0, 0x1
-_080898D0:
- pop {r1}
- bx r1
- thumb_func_end sub_80898C0
-
- thumb_func_start MetatileBehavior_IsSurfableFishableWater
-MetatileBehavior_IsSurfableFishableWater: @ 80898D4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x10
- beq _080898F8
- cmp r0, 0x15
- beq _080898F8
- cmp r0, 0x11
- beq _080898F8
- cmp r0, 0x12
- beq _080898F8
- cmp r0, 0x14
- beq _080898F8
- subs r0, 0x50
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bhi _080898FC
-_080898F8:
- movs r0, 0x1
- b _080898FE
-_080898FC:
- movs r0, 0
-_080898FE:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSurfableFishableWater
-
- thumb_func_start sub_8089904
-sub_8089904: @ 8089904
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- beq _08089912
- movs r0, 0
- b _08089914
-_08089912:
- movs r0, 0x1
-_08089914:
- pop {r1}
- bx r1
- thumb_func_end sub_8089904
-
- thumb_func_start sub_8089918
-sub_8089918: @ 8089918
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x66
- beq _08089926
- movs r0, 0
- b _08089928
-_08089926:
- movs r0, 0x1
-_08089928:
- pop {r1}
- bx r1
- thumb_func_end sub_8089918
-
- thumb_func_start sub_808992C
-sub_808992C: @ 808992C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD2
- beq _0808993A
- movs r0, 0
- b _0808993C
-_0808993A:
- movs r0, 0x1
-_0808993C:
- pop {r1}
- bx r1
- thumb_func_end sub_808992C
-
- thumb_func_start MetatileBehavior_IsMuddySlope
-@ bool8 MetatileBehavior_IsMuddySlope(u8 metatileBehavior)
-MetatileBehavior_IsMuddySlope: @ 8089940
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD0
- beq _0808994E
- movs r0, 0
- b _08089950
-_0808994E:
- movs r0, 0x1
-_08089950:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsMuddySlope
-
- thumb_func_start MetatileBehavior_IsBumpySlope
-MetatileBehavior_IsBumpySlope: @ 8089954
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD1
- beq _08089962
- movs r0, 0
- b _08089964
-_08089962:
- movs r0, 0x1
-_08089964:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsBumpySlope
-
- thumb_func_start MetatileBehavior_IsIsolatedVerticalRail
-MetatileBehavior_IsIsolatedVerticalRail: @ 8089968
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD3
- beq _08089976
- movs r0, 0
- b _08089978
-_08089976:
- movs r0, 0x1
-_08089978:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsIsolatedVerticalRail
-
- thumb_func_start MetatileBehavior_IsIsolatedHorizontalRail
-MetatileBehavior_IsIsolatedHorizontalRail: @ 808997C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD4
- beq _0808998A
- movs r0, 0
- b _0808998C
-_0808998A:
- movs r0, 0x1
-_0808998C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsIsolatedHorizontalRail
-
- thumb_func_start MetatileBehavior_IsVerticalRail
-MetatileBehavior_IsVerticalRail: @ 8089990
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD5
- beq _0808999E
- movs r0, 0
- b _080899A0
-_0808999E:
- movs r0, 0x1
-_080899A0:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsVerticalRail
-
- thumb_func_start MetatileBehavior_IsHorizontalRail
-MetatileBehavior_IsHorizontalRail: @ 80899A4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD6
- beq _080899B2
- movs r0, 0
- b _080899B4
-_080899B2:
- movs r0, 0x1
-_080899B4:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsHorizontalRail
-
- thumb_func_start MetatileBehavior_IsSeaweed
-MetatileBehavior_IsSeaweed: @ 80899B8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x22
- beq _080899C6
- cmp r0, 0x2A
- bne _080899CA
-_080899C6:
- movs r0, 0x1
- b _080899CC
-_080899CA:
- movs r0, 0
-_080899CC:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsSeaweed
-
- thumb_func_start MetatileBehavior_IsRunningDisallowed
-MetatileBehavior_IsRunningDisallowed: @ 80899D0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xA
- beq _080899EC
- cmp r0, 0x3
- beq _080899EC
- cmp r0, 0x28
- beq _080899EC
- bl MetatileBehavior_IsPacifidlogLog
- lsls r0, 24
- cmp r0, 0
- beq _080899F0
-_080899EC:
- movs r0, 0x1
- b _080899F2
-_080899F0:
- movs r0, 0
-_080899F2:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsRunningDisallowed
-
- thumb_func_start sub_80899F8
-sub_80899F8: @ 80899F8
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFE
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x1
- bls _08089A12
- cmp r1, 0x24
- beq _08089A12
- cmp r1, 0x9
- bne _08089A16
-_08089A12:
- movs r0, 0x1
- b _08089A18
-_08089A16:
- movs r0, 0
-_08089A18:
- pop {r1}
- bx r1
- thumb_func_end sub_80899F8
-
- thumb_func_start sub_8089A1C
-sub_8089A1C: @ 8089A1C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8E
- beq _08089A2A
- movs r0, 0
- b _08089A2C
-_08089A2A:
- movs r0, 0x1
-_08089A2C:
- pop {r1}
- bx r1
- thumb_func_end sub_8089A1C
-
- thumb_func_start sub_8089A30
-sub_8089A30: @ 8089A30
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE0
- beq _08089A3E
- movs r0, 0
- b _08089A40
-_08089A3E:
- movs r0, 0x1
-_08089A40:
- pop {r1}
- bx r1
- thumb_func_end sub_8089A30
-
- thumb_func_start sub_8089A44
-sub_8089A44: @ 8089A44
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE1
- beq _08089A52
- movs r0, 0
- b _08089A54
-_08089A52:
- movs r0, 0x1
-_08089A54:
- pop {r1}
- bx r1
- thumb_func_end sub_8089A44
-
- thumb_func_start sub_8089A58
-sub_8089A58: @ 8089A58
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE2
- beq _08089A66
- movs r0, 0
- b _08089A68
-_08089A66:
- movs r0, 0x1
-_08089A68:
- pop {r1}
- bx r1
- thumb_func_end sub_8089A58
-
- thumb_func_start sub_8089A6C
-sub_8089A6C: @ 8089A6C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE3
- beq _08089A7A
- movs r0, 0
- b _08089A7C
-_08089A7A:
- movs r0, 0x1
-_08089A7C:
- pop {r1}
- bx r1
- thumb_func_end sub_8089A6C
-
- thumb_func_start sub_8089A80
-sub_8089A80: @ 8089A80
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE4
- beq _08089A8E
- movs r0, 0
- b _08089A90
-_08089A8E:
- movs r0, 0x1
-_08089A90:
- pop {r1}
- bx r1
- thumb_func_end sub_8089A80
-
- thumb_func_start sub_8089A94
-sub_8089A94: @ 8089A94
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE5
- beq _08089AA2
- movs r0, 0
- b _08089AA4
-_08089AA2:
- movs r0, 0x1
-_08089AA4:
- pop {r1}
- bx r1
- thumb_func_end sub_8089A94
-
- thumb_func_start sub_8089AA8
-sub_8089AA8: @ 8089AA8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE6
- beq _08089AB6
- movs r0, 0
- b _08089AB8
-_08089AB6:
- movs r0, 0x1
-_08089AB8:
- pop {r1}
- bx r1
- thumb_func_end sub_8089AA8
-
- thumb_func_start sub_8089ABC
-sub_8089ABC: @ 8089ABC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD
- beq _08089ACA
- movs r0, 0
- b _08089ACC
-_08089ACA:
- movs r0, 0x1
-_08089ACC:
- pop {r1}
- bx r1
- thumb_func_end sub_8089ABC
-
- thumb_func_start sub_8089AD0
-sub_8089AD0: @ 8089AD0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x2
- bne _08089AE2
- cmp r0, 0xE8
- beq _08089AE6
-_08089AE2:
- movs r0, 0
- b _08089AE8
-_08089AE6:
- movs r0, 0x1
-_08089AE8:
- pop {r1}
- bx r1
- thumb_func_end sub_8089AD0
-
- thumb_func_start sub_8089AEC
-sub_8089AEC: @ 8089AEC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x2
- bne _08089AFE
- cmp r0, 0xE7
- beq _08089B02
-_08089AFE:
- movs r0, 0
- b _08089B04
-_08089B02:
- movs r0, 0x1
-_08089B04:
- pop {r1}
- bx r1
- thumb_func_end sub_8089AEC
-
- thumb_func_start MetatileBehavior_IsQuestionnaire
-MetatileBehavior_IsQuestionnaire: @ 8089B08
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8F
- beq _08089B16
- movs r0, 0
- b _08089B18
-_08089B16:
- movs r0, 0x1
-_08089B18:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsQuestionnaire
-
- thumb_func_start MetatileBehavior_IsLongGrass2
-MetatileBehavior_IsLongGrass2: @ 8089B1C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08089B2A
- movs r0, 0
- b _08089B2C
-_08089B2A:
- movs r0, 0x1
-_08089B2C:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsLongGrass2
-
- thumb_func_start MetatileBehavior_IsLongGrassSouthEdge
-MetatileBehavior_IsLongGrassSouthEdge: @ 8089B30
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x9
- beq _08089B3E
- movs r0, 0
- b _08089B40
-_08089B3E:
- movs r0, 0x1
-_08089B40:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsLongGrassSouthEdge
-
- thumb_func_start MetatileBehavior_IsTrainerHillTimer
-MetatileBehavior_IsTrainerHillTimer: @ 8089B44
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xE9
- beq _08089B52
- movs r0, 0
- b _08089B54
-_08089B52:
- movs r0, 0x1
-_08089B54:
- pop {r1}
- bx r1
- thumb_func_end MetatileBehavior_IsTrainerHillTimer
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/money.s b/asm/money.s
deleted file mode 100644
index 53e795714..000000000
--- a/asm/money.s
+++ /dev/null
@@ -1,311 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
-
-
-
- thumb_func_start sub_80E51B0
-sub_80E51B0: @ 80E51B0
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r1, =gSpecialVar_0x8005
- ldrh r1, [r1]
- bl IsEnoughMoney
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80E51B0
-
- thumb_func_start sub_80E51D4
-sub_80E51D4: @ 80E51D4
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r1, =gSpecialVar_0x8005
- ldrh r1, [r1]
- bl SubtractMoney
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80E51D4
-
- thumb_func_start PrintMoneyAmountInMoneyBox
-@ void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, s8 a3)
-PrintMoneyAmountInMoneyBox: @ 80E51F4
- push {lr}
- sub sp, 0x4
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- movs r1, 0x26
- movs r2, 0x1
- bl PrintMoneyAmount
- add sp, 0x4
- pop {r0}
- bx r0
- thumb_func_end PrintMoneyAmountInMoneyBox
-
- thumb_func_start PrintMoneyAmount
-@ void PrintMoneyAmount(u8 windowId, char x, char y, int amount, u8 a5)
-PrintMoneyAmount: @ 80E5214
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r4, [sp, 0x24]
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r4, 24
- lsrs r5, r4, 24
- ldr r4, =gStringVar1
- adds r0, r4, 0
- adds r1, r3, 0
- movs r2, 0
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- subs r1, r0
- ldr r2, =gStringVar4
- adds r0, r1, 0
- subs r1, 0x1
- cmp r0, 0
- ble _080E5264
- movs r3, 0x77
-_080E5258:
- strb r3, [r2]
- adds r2, 0x1
- adds r0, r1, 0
- subs r1, 0x1
- cmp r0, 0
- bgt _080E5258
-_080E5264:
- ldr r1, =gText_PokedollarVar1
- adds r0, r2, 0
- bl StringExpandPlaceholders
- ldr r2, =gStringVar4
- str r6, [sp]
- str r5, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x1
- mov r3, r8
- bl PrintTextOnWindow
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PrintMoneyAmount
-
- thumb_func_start set_window_border_style_and_print_money_box
-@ void set_window_border_style_and_print_money_box(u8 windowId, u16 tileStart, u8 palette, int amount)
-set_window_border_style_and_print_money_box: @ 80E5298
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r6, r0, 0
- adds r4, r1, 0
- adds r5, r2, 0
- mov r8, r3
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0
- adds r2, r4, 0
- adds r3, r5, 0
- bl SetWindowBorderStyle
- adds r0, r6, 0
- mov r1, r8
- movs r2, 0
- bl PrintMoneyAmountInMoneyBox
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end set_window_border_style_and_print_money_box
-
- thumb_func_start sub_80E52D4
-sub_80E52D4: @ 80E52D4
- push {lr}
- adds r1, r0, 0
- ldr r0, =gUnknown_02039F98
- ldrb r0, [r0]
- movs r2, 0
- bl PrintMoneyAmountInMoneyBox
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80E52D4
-
- thumb_func_start sub_80E52EC
-@ void sub_80E52EC(int money, int x, int y)
-sub_80E52EC: @ 80E52EC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x18
- mov r8, r0
- adds r4, r1, 0
- adds r3, r2, 0
- lsls r4, 24
- lsls r3, 24
- lsrs r6, r4, 24
- movs r0, 0x80
- lsls r0, 17
- adds r4, r0
- lsrs r4, 24
- lsrs r5, r3, 24
- adds r3, r0
- lsrs r3, 24
- movs r0, 0xA
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0x8
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- movs r1, 0
- adds r2, r4, 0
- bl SetWindowTemplateFields
- ldr r4, =gUnknown_02039F98
- add r0, sp, 0x10
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x1
- bl CopyWindowToVram
- ldrb r0, [r4]
- movs r1, 0x85
- lsls r1, 2
- movs r2, 0xE
- mov r3, r8
- bl set_window_border_style_and_print_money_box
- lsls r6, 19
- movs r0, 0x98
- lsls r0, 13
- adds r6, r0
- lsrs r6, 16
- lsls r5, 19
- movs r0, 0xB0
- lsls r0, 12
- adds r5, r0
- lsrs r5, 16
- adds r0, r6, 0
- adds r1, r5, 0
- bl AddMoneyLabelObject
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80E52EC
-
- thumb_func_start sub_80E5384
-sub_80E5384: @ 80E5384
- push {r4,lr}
- bl RemoveMoneyLabelObject
- ldr r4, =gUnknown_02039F98
- ldrb r0, [r4]
- movs r1, 0
- bl sub_8198070
- ldrb r0, [r4]
- movs r1, 0x2
- bl CopyWindowToVram
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80E5384
-
- thumb_func_start AddMoneyLabelObject
-AddMoneyLabelObject: @ 80E53AC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- ldr r0, =gUnknown_0858C2A4
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0858C2AC
- bl LoadCompressedObjectPalette
- ldr r0, =gUnknown_0858C28C
- lsls r4, 16
- asrs r4, 16
- lsls r5, 16
- asrs r5, 16
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0
- bl CreateSprite
- ldr r1, =gUnknown_02039F99
- strb r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end AddMoneyLabelObject
-
- thumb_func_start RemoveMoneyLabelObject
-RemoveMoneyLabelObject: @ 80E53F4
- push {lr}
- ldr r0, =gUnknown_02039F99
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl DestroySpriteAndFreeResources
- pop {r0}
- bx r0
- .pool
- thumb_func_end RemoveMoneyLabelObject
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mystery_event_menu.s b/asm/mystery_event_menu.s
index 49de57848..df8e443a1 100644
--- a/asm/mystery_event_menu.s
+++ b/asm/mystery_event_menu.s
@@ -337,7 +337,7 @@ _08178C54:
lsls r0, 24
cmp r0, 0
beq _08178D00
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _08178C68
@@ -435,13 +435,13 @@ _08178D28:
_08178D36:
b _08178E34
_08178D38:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
cmp r0, 0
bne _08178D44
b _08178E58
_08178D44:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
ldr r1, =gMain
movs r2, 0x87
lsls r2, 3
@@ -462,7 +462,7 @@ _08178D60:
b _08178E3C
.pool
_08178D74:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r6, [r0]
cmp r6, 0
bne _08178E58
diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s
index d544f689f..ce8591981 100644
--- a/asm/mystery_event_script.s
+++ b/asm/mystery_event_script.s
@@ -46,7 +46,7 @@ sub_8153804: @ 8153804
ldr r1, =gUnknown_08674C86
bl StringExpandPlaceholders
movs r0, 0x3
- bl sub_81538C4
+ bl SetMysteryEventScriptStatus
pop {r0}
bx r0
.pool
@@ -140,13 +140,13 @@ _081538AC:
.pool
thumb_func_end sub_81538A0
- thumb_func_start sub_81538C4
-sub_81538C4: @ 81538C4
+ thumb_func_start SetMysteryEventScriptStatus
+SetMysteryEventScriptStatus: @ 81538C4
ldr r1, =gUnknown_0203BBC0
str r0, [r1, 0x6C]
bx lr
.pool
- thumb_func_end sub_81538C4
+ thumb_func_end SetMysteryEventScriptStatus
thumb_func_start sub_81538D0
sub_81538D0: @ 81538D0
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
index 1839a7568..22d7b260e 100644
--- a/asm/naming_screen.s
+++ b/asm/naming_screen.s
@@ -840,7 +840,7 @@ pokemon_transfer_to_pc_with_message: @ 80E34E4
bl VarGet
lsls r0, 24
lsrs r0, 24
- bl sav3_get_box_name
+ bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
@@ -859,7 +859,7 @@ _080E3534:
bl VarGet
lsls r0, 24
lsrs r0, 24
- bl sav3_get_box_name
+ bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
@@ -874,7 +874,7 @@ _080E3534:
bl get_unknown_box_id
lsls r0, 24
lsrs r0, 24
- bl sav3_get_box_name
+ bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
bl StringCopy
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 1e47701ae..f2e681b9b 100755
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -5441,7 +5441,7 @@ sub_81B2E64: @ 81B2E64
mov r2, r9
lsls r1, r2, 16
asrs r1, 16
- bl sub_8075060
+ bl GetHPBarLevel
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -5495,7 +5495,7 @@ _081B2F04:
asrs r1, 16
ldr r2, [r6]
ldrb r2, [r2, 0x1A]
- bl sub_8075034
+ bl GetScaledHPFraction
lsls r0, 24
lsrs r5, r0, 24
ldrb r0, [r6, 0x8]
@@ -10051,7 +10051,7 @@ task_launch_hm_phase_2: @ 81B5750
cmp r0, 0x1
bne _081B577C
bl brm_get_selected_species
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 16
lsrs r0, 16
str r0, [r1]
@@ -10135,7 +10135,7 @@ _081B57FE:
hm_surf_run_dp02scr: @ 81B5804
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -10239,7 +10239,7 @@ sub_81B58A8: @ 81B58A8
hm2_waterfall: @ 81B58D4
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -10299,7 +10299,7 @@ _081B594E:
sub_81B5958: @ 81B5958
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -10314,7 +10314,7 @@ sub_81B5958: @ 81B5958
sub_81B5974: @ 81B5974
push {lr}
bl sub_809D1E8
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1, 0x4]
@@ -10452,7 +10452,7 @@ sub_81B5A8C: @ 81B5A8C
asrs r2, 16
adds r0, r1, 0
adds r1, r2, 0
- bl sub_8075060
+ bl GetHPBarLevel
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -13868,7 +13868,7 @@ sub_81B7810: @ 81B7810
adds r0, r7, 0
adds r1, r4, 0
movs r2, 0x1
- bl sub_813DA40
+ bl BeginEvolutionScene
adds r0, r5, 0
bl DestroyTask
b _081B786E
@@ -15205,7 +15205,7 @@ sub_81B841C: @ 81B841C
beq _081B8438
adds r0, r1, 0
movs r1, 0x1
- bl sub_80D6D70
+ bl AddPCItem
b _081B8440
.pool
_081B8438:
@@ -15872,7 +15872,7 @@ sub_81B8958: @ 81B8958
thumb_func_start sub_81B8984
sub_81B8984: @ 81B8984
push {lr}
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _081B8994
@@ -16222,13 +16222,13 @@ _081B8CB0:
strb r0, [r6, 0x2]
b _081B8D58
_081B8CBE:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _081B8CFC
movs r5, 0x1
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
mov r2, sp
ldr r1, =gBattlePartyID
lsls r0, 24
@@ -16255,7 +16255,7 @@ _081B8CF0:
_081B8CFC:
movs r5, 0x2
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
mov r1, sp
ldr r4, =gBattlePartyID
lsls r0, 24
@@ -16264,7 +16264,7 @@ _081B8CFC:
ldrh r0, [r0]
strb r0, [r1]
movs r0, 0x2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
mov r1, sp
lsls r0, 24
lsrs r0, 23
@@ -16344,19 +16344,19 @@ sub_81B8D88: @ 81B8D88
cmp r0, 0
bne _081B8DB0
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x2
b _081B8DBC
_081B8DB0:
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x3
_081B8DBC:
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r6, r0, 24
bl sub_81B1250
@@ -16382,7 +16382,7 @@ _081B8DE2:
strb r0, [r5, 0x2]
b _081B8E72
_081B8DF0:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _081B8E28
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 14062347c..cd91ed3e1 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -31,7 +31,7 @@ _0816AE1A:
ldrh r0, [r0]
adds r1, r6
ldrh r1, [r1]
- bl sub_80D6D70
+ bl AddPCItem
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asm/pokeball.s b/asm/pokeball.s
index 06958d7d2..fed227c80 100755
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -17,7 +17,7 @@ sub_80753E8: @ 80753E8
ldr r1, =gDoingBattleAnim
movs r0, 0x1
strb r0, [r1]
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r6, =gActiveBank
ldrb r1, [r6]
@@ -185,7 +185,7 @@ _08075548:
.pool
_08075584:
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
ldr r1, =gBankTarget
strb r0, [r1]
movs r0, 0x1
@@ -992,7 +992,7 @@ _08075C22:
movs r2, 0xC
bl PlayCry4
_08075C2E:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
mov r2, r8
@@ -1082,7 +1082,7 @@ _08075CD8:
movs r2, 0xB
bl PlayCry4
_08075CE4:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
mov r2, r8
@@ -1199,23 +1199,23 @@ _08075DD4:
lsrs r0, 16
mov r9, r0
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r5, r0
beq _08075E00
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r5, r0
bne _08075E56
_08075E00:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08075E56
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x9]
@@ -1243,11 +1243,11 @@ _08075E4C:
movs r2, 0x80
bl m4aMPlayVolumeControl
_08075E56:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08075E70
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x9]
@@ -1261,13 +1261,13 @@ _08075E70:
.pool
_08075E80:
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r5, r0
beq _08075E9C
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -1278,7 +1278,7 @@ _08075E9C:
_08075EA0:
movs r4, 0x2
_08075EA2:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
mov r2, r8
@@ -1508,7 +1508,7 @@ _0807605C:
strh r1, [r0, 0x26]
ldr r0, =gDoingBattleAnim
strb r2, [r0]
- ldr r4, =gUnknown_020244D0
+ ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
ldr r0, [r0, 0x4]
lsls r1, r6, 1
@@ -1619,7 +1619,7 @@ _08076130:
ands r0, r1
cmp r0, 0
beq _08076196
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x4]
lsls r1, r7, 1
@@ -1815,11 +1815,11 @@ _080762F8:
ldrb r0, [r5, 0x6]
strh r0, [r5, 0x3A]
strh r1, [r5, 0x2E]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08076358
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x9]
@@ -1830,7 +1830,7 @@ _080762F8:
movs r0, 0x3A
ldrsh r4, [r5, r0]
movs r0, 0x2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -1888,11 +1888,11 @@ sub_8076398: @ 8076398
ble _080763EC
movs r0, 0
strh r0, [r5, 0x2E]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080763E8
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0, 0x8]
ldrb r1, [r0, 0x9]
@@ -1903,7 +1903,7 @@ sub_8076398: @ 8076398
movs r0, 0x3A
ldrsh r4, [r5, r0]
movs r0, 0x3
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
cmp r4, r0
diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s
index d82c5df07..1f8e45f0a 100644
--- a/asm/pokeblock_feed.s
+++ b/asm/pokeblock_feed.s
@@ -95,7 +95,7 @@ _08179C48:
bl FreeAllSpritePalettes
b _08179D32
_08179C4E:
- bl init_uns_table_pokemon_copy
+ bl AllocateMonSpritesGfx
ldr r1, =gMain
movs r2, 0x87
lsls r2, 3
@@ -322,7 +322,7 @@ _08179E48:
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r5, 0
@@ -797,7 +797,7 @@ sub_817A2C0: @ 817A2C0
ldr r0, =gUnknown_0203BD18
ldr r0, [r0]
bl Free
- bl sub_805F094
+ bl FreeMonSpritesGfx
_0817A304:
pop {r4}
pop {r0}
diff --git a/asm/pokedex.s b/asm/pokedex.s
index fdaacde2c..f9ee0eeab 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -8429,8 +8429,8 @@ _080BFDB4:
.pool
thumb_func_end sub_80BFD7C
- thumb_func_start sub_80BFDF4
-sub_80BFDF4: @ 80BFDF4
+ thumb_func_start CreateDexDisplayMonDataTask
+CreateDexDisplayMonDataTask: @ 80BFDF4
push {r4-r6,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -8460,7 +8460,7 @@ sub_80BFDF4: @ 80BFDF4
pop {r1}
bx r1
.pool
- thumb_func_end sub_80BFDF4
+ thumb_func_end CreateDexDisplayMonDataTask
thumb_func_start sub_80BFE38
sub_80BFE38: @ 80BFE38
diff --git a/asm/pokemon_2.s b/asm/pokemon_2.s
deleted file mode 100644
index 17856f6d3..000000000
--- a/asm/pokemon_2.s
+++ /dev/null
@@ -1,356 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start CopyPlayerPartyMonToBattleData
-CopyPlayerPartyMonToBattleData: @ 806B9FC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- movs r0, 0x64
- mov r5, r9
- muls r5, r0
- ldr r0, =gPlayerParty
- adds r5, r0
- adds r0, r5, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- ldr r1, =gBattleMons
- mov r8, r1
- movs r1, 0x58
- ldr r2, [sp, 0x14]
- adds r4, r2, 0
- muls r4, r1
- mov r3, r8
- adds r6, r4, r3
- strh r0, [r6]
- adds r0, r5, 0
- movs r1, 0xC
- movs r2, 0
- bl GetMonData
- strh r0, [r6, 0x2E]
- movs r6, 0
- mov r0, r8
- adds r0, 0x24
- adds r7, r4, r0
-_0806BA4E:
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r5, 0
- movs r2, 0
- bl GetMonData
- movs r1, 0xC
- add r1, r8
- mov r10, r1
- adds r1, r4, r1
- strh r0, [r1]
- adds r1, r6, 0
- adds r1, 0x11
- adds r0, r5, 0
- movs r2, 0
- bl GetMonData
- strb r0, [r7]
- adds r7, 0x1
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0806BA4E
- movs r0, 0x64
- mov r4, r9
- muls r4, r0
- ldr r0, =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x15
- movs r2, 0
- bl GetMonData
- movs r2, 0xC
- negs r2, r2
- add r2, r10
- mov r9, r2
- movs r1, 0x58
- ldr r3, [sp, 0x14]
- adds r5, r3, 0
- muls r5, r1
- adds r7, r5, r2
- adds r1, r7, 0
- adds r1, 0x3B
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x20
- movs r2, 0
- bl GetMonData
- adds r1, r7, 0
- adds r1, 0x2B
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x19
- movs r2, 0
- bl GetMonData
- mov r1, r10
- adds r1, 0x38
- adds r1, r5, r1
- str r0, [r1]
- adds r0, r4, 0
- movs r1, 0x27
- movs r2, 0
- bl GetMonData
- movs r6, 0x1F
- ands r0, r6
- ldrb r2, [r7, 0x14]
- movs r1, 0x20
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x14]
- adds r0, r4, 0
- movs r1, 0x28
- movs r2, 0
- bl GetMonData
- movs r1, 0x1F
- mov r8, r1
- mov r2, r8
- ands r0, r2
- lsls r0, 5
- ldrh r2, [r7, 0x14]
- ldr r1, =0xfffffc1f
- ands r1, r2
- orrs r1, r0
- strh r1, [r7, 0x14]
- adds r0, r4, 0
- movs r1, 0x29
- movs r2, 0
- bl GetMonData
- ands r0, r6
- lsls r0, 2
- ldrb r2, [r7, 0x15]
- movs r1, 0x7D
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x15]
- adds r0, r4, 0
- movs r1, 0x2A
- movs r2, 0
- bl GetMonData
- movs r1, 0x1F
- ands r1, r0
- lsls r1, 15
- ldr r0, [r7, 0x14]
- ldr r2, =0xfff07fff
- ands r0, r2
- orrs r0, r1
- str r0, [r7, 0x14]
- adds r0, r4, 0
- movs r1, 0x2B
- movs r2, 0
- bl GetMonData
- mov r3, r8
- ands r0, r3
- lsls r0, 4
- ldrh r2, [r7, 0x16]
- ldr r1, =0xfffffe0f
- ands r1, r2
- orrs r1, r0
- strh r1, [r7, 0x16]
- adds r0, r4, 0
- movs r1, 0x2C
- movs r2, 0
- bl GetMonData
- ands r0, r6
- lsls r0, 1
- ldrb r2, [r7, 0x17]
- movs r1, 0x3F
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x17]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0
- bl GetMonData
- mov r1, r10
- adds r1, 0x3C
- adds r1, r5, r1
- str r0, [r1]
- adds r0, r4, 0
- movs r1, 0x37
- movs r2, 0
- bl GetMonData
- mov r1, r10
- adds r1, 0x40
- adds r1, r5, r1
- str r0, [r1]
- adds r0, r4, 0
- movs r1, 0x38
- movs r2, 0
- bl GetMonData
- adds r1, r7, 0
- adds r1, 0x2A
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x39
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x28]
- adds r0, r4, 0
- movs r1, 0x3A
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x2C]
- adds r0, r4, 0
- movs r1, 0x3B
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x2]
- adds r0, r4, 0
- movs r1, 0x3C
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x4]
- adds r0, r4, 0
- movs r1, 0x3D
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x6]
- adds r0, r4, 0
- movs r1, 0x3E
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x8]
- adds r0, r4, 0
- movs r1, 0x3F
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0xA]
- adds r0, r4, 0
- movs r1, 0x2D
- movs r2, 0
- bl GetMonData
- movs r1, 0x1
- ands r0, r1
- lsls r0, 6
- ldrb r2, [r7, 0x17]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x17]
- adds r0, r4, 0
- movs r1, 0x2E
- movs r2, 0
- bl GetMonData
- lsls r0, 7
- ldrb r2, [r7, 0x17]
- movs r1, 0x7F
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x17]
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- bl GetMonData
- mov r1, r10
- adds r1, 0x48
- adds r1, r5, r1
- str r0, [r1]
- ldr r2, =gBaseStats
- ldrh r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x6]
- adds r1, r7, 0
- adds r1, 0x21
- strb r0, [r1]
- ldrh r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x7]
- adds r1, r7, 0
- adds r1, 0x22
- strb r0, [r1]
- ldrh r0, [r7]
- ldrb r1, [r7, 0x17]
- lsrs r1, 7
- bl GetAbilityBySpecies
- adds r1, r7, 0
- adds r1, 0x20
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, r10
- adds r0, 0x24
- adds r0, r5, r0
- mov r1, sp
- bl StringCopy10
- mov r2, r10
- adds r2, 0x30
- adds r2, r5, r2
- adds r0, r4, 0
- movs r1, 0x7
- bl GetMonData
- ldr r0, [sp, 0x14]
- bl GetBankSide
- ldr r1, =gBattleStruct
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0xA8
- ldr r1, [r1]
- adds r1, r0
- ldrh r0, [r7, 0x28]
- strh r0, [r1]
- movs r2, 0x6
- mov r1, r9
- movs r6, 0x7
- add r5, r10
- adds r0, r5, 0
- adds r0, 0x13
-_0806BCB2:
- strb r2, [r0]
- subs r0, 0x1
- subs r6, 0x1
- cmp r6, 0
- bge _0806BCB2
- movs r2, 0
- movs r0, 0x58
- ldr r3, [sp, 0x14]
- muls r0, r3
- adds r1, 0x50
- adds r0, r1
- str r2, [r0]
- ldr r0, [sp, 0x14]
- bl sub_803FA70
- ldr r0, [sp, 0x14]
- movs r1, 0
- bl sub_805EF84
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end CopyPlayerPartyMonToBattleData
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s
index e90253ab0..6009bd3f3 100755
--- a/asm/pokemon_icon.s
+++ b/asm/pokemon_icon.s
@@ -32,7 +32,7 @@ sub_80D2CC4: @ 80D2CC4
str r0, [sp, 0x18]
adds r0, r4, 0
adds r2, r5, 0
- bl sub_80D2EDC
+ bl GetMonIconPtr
str r0, [sp, 0x1C]
ldr r0, =gUnknown_0857C5B4
str r0, [sp, 0x20]
@@ -271,9 +271,9 @@ _080D2ED2:
bx r1
thumb_func_end sub_80D2E84
- thumb_func_start sub_80D2EDC
-@ void *sub_80D2EDC(u16 speciesId, u32 personality, bool32)
-sub_80D2EDC: @ 80D2EDC
+ thumb_func_start GetMonIconPtr
+@ void *GetMonIconPtr(u16 speciesId, u32 personality, bool32)
+GetMonIconPtr: @ 80D2EDC
push {r4,lr}
adds r4, r2, 0
lsls r0, 16
@@ -286,7 +286,7 @@ sub_80D2EDC: @ 80D2EDC
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_80D2EDC
+ thumb_func_end GetMonIconPtr
thumb_func_start sub_80D2EF8
sub_80D2EF8: @ 80D2EF8
@@ -534,8 +534,8 @@ sub_80D30A0: @ 80D30A0
.pool
thumb_func_end sub_80D30A0
- thumb_func_start sub_80D30B0
-sub_80D30B0: @ 80D30B0
+ thumb_func_start GetValidMonIconPalettePtr
+GetValidMonIconPalettePtr: @ 80D30B0
push {lr}
lsls r0, 16
lsrs r2, r0, 16
@@ -556,7 +556,7 @@ _080D30C2:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80D30B0
+ thumb_func_end GetValidMonIconPalettePtr
thumb_func_start sub_80D30DC
sub_80D30DC: @ 80D30DC
diff --git a/asm/pokemon_item_effect.s b/asm/pokemon_item_effect.s
index c798d7753..49b205967 100644
--- a/asm/pokemon_item_effect.s
+++ b/asm/pokemon_item_effect.s
@@ -221,7 +221,7 @@ _0806BEE0:
mov r0, r8
movs r2, 0
ldr r3, [sp, 0x10]
- bl sub_813DA40
+ bl BeginEvolutionScene
movs r0, 0
bl _0806CD5C
_0806BEF0:
@@ -1155,7 +1155,7 @@ _0806C6AE:
movs r0, 0
movs r1, 0
movs r2, 0
- bl dp01_build_cmdbuf_x00_a_b_0
+ bl EmitGetMonData
ldrb r0, [r4]
bl MarkBufferBankForExecution
strb r5, [r4]
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 6cca9c144..d1f7bd161 100755
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -1019,7 +1019,7 @@ _080C777E:
_080C779E:
lsls r0, r5, 24
lsrs r0, 24
- bl sav3_get_box_name
+ bl GetBoxNamePtr
ldr r1, =gText_Box
bl StringCopy
adds r4, r5, 0x1
@@ -1043,7 +1043,7 @@ _080C77C2:
lsrs r5, r0, 16
cmp r5, 0xD
bls _080C77C2
- bl sub_80D242C
+ bl ResetWaldaWallpaper
pop {r4-r6}
pop {r0}
bx r0
@@ -1566,7 +1566,7 @@ sub_80C7BE4: @ 80C7BE4
lsls r4, 2
adds r0, r4
ldrb r0, [r0]
- bl sav3_get_box_name
+ bl GetBoxNamePtr
mov r10, r0
mov r1, r9
ldr r0, [r1]
@@ -5424,7 +5424,7 @@ _080C9F1C:
bl StorageGetCurrentBox
lsls r0, 24
lsrs r0, 24
- bl sav3_get_box_name
+ bl GetBoxNamePtr
adds r1, r0, 0
movs r0, 0
str r0, [sp]
@@ -6902,7 +6902,7 @@ sub_80CABE0: @ 80CABE0
cmp r1, r0
beq _080CAC0A
ldr r0, =0x000008d7
- bl FlagReset
+ bl FlagClear
ldr r4, =0x00004036
bl StorageGetCurrentBox
adds r1, r0, 0
@@ -7122,7 +7122,7 @@ sub_80CADD8: @ 80CADD8
bl sub_80CFF34
movs r0, 0x15
bl sub_80CFF34
- bl sub_80D2494
+ bl IsWaldaWallpaperUnlocked
cmp r0, 0
beq _080CAE04
movs r0, 0x16
@@ -10421,7 +10421,7 @@ _080CC888:
b _080CC9DA
.pool
_080CC8C4:
- bl sub_80D24A8
+ bl GetWaldaWallpaperPatternId
lsls r1, r0, 1
adds r1, r0
lsls r1, 2
@@ -10448,13 +10448,13 @@ _080CC8C4:
adds r1, r4
movs r2, 0x20
bl CpuSet
- bl sub_80D2510
+ bl GetWaldaWallpaperColorsPtr
ldr r1, [r7]
ldr r2, =0x00000794
adds r1, r2
movs r2, 0x2
bl CpuSet
- bl sub_80D2510
+ bl GetWaldaWallpaperColorsPtr
ldr r1, [r7]
ldr r3, =0x000007b4
adds r1, r3
@@ -10500,7 +10500,7 @@ _080CC976:
adds r1, r5
str r0, [r1]
ldr r4, =gUnknown_0857B004
- bl sub_80D24DC
+ bl GetWaldaWallpaperIconId
lsls r0, 2
adds r0, r4
ldr r0, [r0]
@@ -10831,7 +10831,7 @@ sub_80CCB50: @ 80CCB50
ldr r5, =0x000021b8
adds r4, r5
mov r0, r8
- bl sav3_get_box_name
+ bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0
@@ -10852,7 +10852,7 @@ sub_80CCB50: @ 80CCB50
ldr r0, [sp, 0x2C]
bl LoadSpriteSheet
mov r0, r8
- bl sav3_get_box_name
+ bl GetBoxNamePtr
bl sub_80CD00C
movs r4, 0
lsls r0, 16
@@ -10997,7 +10997,7 @@ _080CCDB0:
ldr r5, =0x000021b8
adds r4, r5
ldr r0, [sp, 0x28]
- bl sav3_get_box_name
+ bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
movs r2, 0
@@ -11027,7 +11027,7 @@ _080CCDB0:
movs r2, 0x4
bl LoadPalette
ldr r0, [sp, 0x28]
- bl sav3_get_box_name
+ bl GetBoxNamePtr
bl sub_80CD00C
lsls r0, 16
mov r1, r10
@@ -17910,7 +17910,7 @@ sub_80D07B0: @ 80D07B0
beq _080D0828
adds r0, r5, 0
movs r2, 0x1
- bl sub_80D2EDC
+ bl GetMonIconPtr
adds r4, r0, 0
adds r0, r5, 0
bl sub_80D3080
@@ -21085,8 +21085,8 @@ _080D20CA:
bx r1
thumb_func_end GetBoxedMonPtr
- thumb_func_start sav3_get_box_name
-sav3_get_box_name: @ 80D20D0
+ thumb_func_start GetBoxNamePtr
+GetBoxNamePtr: @ 80D20D0
push {lr}
lsls r0, 24
lsrs r2, r0, 24
@@ -21106,7 +21106,7 @@ _080D20EC:
pop {r1}
bx r1
.pool
- thumb_func_end sav3_get_box_name
+ thumb_func_end GetBoxNamePtr
thumb_func_start sub_80D20F8
sub_80D20F8: @ 80D20F8
@@ -21544,8 +21544,8 @@ _080D241E:
bx r1
thumb_func_end sub_80D23A8
- thumb_func_start sub_80D242C
-sub_80D242C: @ 80D242C
+ thumb_func_start ResetWaldaWallpaper
+ResetWaldaWallpaper: @ 80D242C
ldr r2, =gSaveBlock1Ptr
ldr r0, [r2]
ldr r1, =0x00003d84
@@ -21575,10 +21575,10 @@ sub_80D242C: @ 80D242C
strb r0, [r1]
bx lr
.pool
- thumb_func_end sub_80D242C
+ thumb_func_end ResetWaldaWallpaper
- thumb_func_start sub_80D2480
-sub_80D2480: @ 80D2480
+ thumb_func_start SetWaldaWallpaperLockedOrUnlocked
+SetWaldaWallpaperLockedOrUnlocked: @ 80D2480
ldr r1, =gSaveBlock1Ptr
ldr r1, [r1]
ldr r2, =0x00003d86
@@ -21586,10 +21586,10 @@ sub_80D2480: @ 80D2480
strb r0, [r1]
bx lr
.pool
- thumb_func_end sub_80D2480
+ thumb_func_end SetWaldaWallpaperLockedOrUnlocked
- thumb_func_start sub_80D2494
-sub_80D2494: @ 80D2494
+ thumb_func_start IsWaldaWallpaperUnlocked
+IsWaldaWallpaperUnlocked: @ 80D2494
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00003d86
@@ -21597,10 +21597,10 @@ sub_80D2494: @ 80D2494
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end sub_80D2494
+ thumb_func_end IsWaldaWallpaperUnlocked
- thumb_func_start sub_80D24A8
-sub_80D24A8: @ 80D24A8
+ thumb_func_start GetWaldaWallpaperPatternId
+GetWaldaWallpaperPatternId: @ 80D24A8
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00003d85
@@ -21608,10 +21608,10 @@ sub_80D24A8: @ 80D24A8
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end sub_80D24A8
+ thumb_func_end GetWaldaWallpaperPatternId
- thumb_func_start sub_80D24BC
-sub_80D24BC: @ 80D24BC
+ thumb_func_start SetWaldaWallpaperPatternId
+SetWaldaWallpaperPatternId: @ 80D24BC
push {lr}
lsls r0, 24
lsrs r1, r0, 24
@@ -21626,10 +21626,10 @@ _080D24D0:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D24BC
+ thumb_func_end SetWaldaWallpaperPatternId
- thumb_func_start sub_80D24DC
-sub_80D24DC: @ 80D24DC
+ thumb_func_start GetWaldaWallpaperIconId
+GetWaldaWallpaperIconId: @ 80D24DC
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00003d84
@@ -21637,10 +21637,10 @@ sub_80D24DC: @ 80D24DC
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end sub_80D24DC
+ thumb_func_end GetWaldaWallpaperIconId
- thumb_func_start sub_80D24F0
-sub_80D24F0: @ 80D24F0
+ thumb_func_start SetWaldaWallpaperIconId
+SetWaldaWallpaperIconId: @ 80D24F0
push {lr}
lsls r0, 24
lsrs r1, r0, 24
@@ -21655,20 +21655,20 @@ _080D2504:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D24F0
+ thumb_func_end SetWaldaWallpaperIconId
- thumb_func_start sub_80D2510
-sub_80D2510: @ 80D2510
+ thumb_func_start GetWaldaWallpaperColorsPtr
+GetWaldaWallpaperColorsPtr: @ 80D2510
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00003d70
adds r0, r1
bx lr
.pool
- thumb_func_end sub_80D2510
+ thumb_func_end GetWaldaWallpaperColorsPtr
- thumb_func_start sub_80D2524
-sub_80D2524: @ 80D2524
+ thumb_func_start SetWaldaWallpaperColors
+SetWaldaWallpaperColors: @ 80D2524
push {r4,lr}
ldr r2, =gSaveBlock1Ptr
ldr r2, [r2]
@@ -21682,20 +21682,20 @@ sub_80D2524: @ 80D2524
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D2524
+ thumb_func_end SetWaldaWallpaperColors
- thumb_func_start sub_80D2548
-sub_80D2548: @ 80D2548
+ thumb_func_start GetWaldaPhrasePtr
+GetWaldaPhrasePtr: @ 80D2548
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
ldr r1, =0x00003d74
adds r0, r1
bx lr
.pool
- thumb_func_end sub_80D2548
+ thumb_func_end GetWaldaPhrasePtr
- thumb_func_start sub_80D255C
-sub_80D255C: @ 80D255C
+ thumb_func_start SetWaldaPhrase
+SetWaldaPhrase: @ 80D255C
push {lr}
adds r1, r0, 0
ldr r0, =gSaveBlock1Ptr
@@ -21706,10 +21706,10 @@ sub_80D255C: @ 80D255C
pop {r0}
bx r0
.pool
- thumb_func_end sub_80D255C
+ thumb_func_end SetWaldaPhrase
- thumb_func_start sub_80D2578
-sub_80D2578: @ 80D2578
+ thumb_func_start IsWaldaPhraseEmpty
+IsWaldaPhraseEmpty: @ 80D2578
push {lr}
movs r1, 0
ldr r0, =gSaveBlock1Ptr
@@ -21725,7 +21725,7 @@ _080D258C:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80D2578
+ thumb_func_end IsWaldaPhraseEmpty
thumb_func_start sub_80D259C
sub_80D259C: @ 80D259C
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 2ad67ba5a..fd2518075 100755
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5,7832 +5,6 @@
.text
- thumb_func_start sub_81BF8EC
-sub_81BF8EC: @ 81BF8EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r4, =gUnknown_0203CF1C
- ldr r0, =0x000040f8
- bl AllocZeroed
- str r0, [r4]
- ldr r1, =0x000040bc
- adds r0, r1
- strb r7, [r0]
- ldr r0, [r4]
- mov r2, r8
- str r2, [r0]
- adds r1, 0x2
- adds r0, r1
- strb r5, [r0]
- ldr r0, [r4]
- ldr r2, =0x000040bf
- adds r0, r2
- strb r6, [r0]
- ldr r1, [r4]
- ldr r0, [sp, 0x18]
- str r0, [r1, 0x4]
- cmp r7, 0x2
- bne _081BF94C
- subs r2, 0x2
- adds r1, r2
- movs r0, 0x1
- b _081BF952
- .pool
-_081BF94C:
- ldr r0, =0x000040bd
- adds r1, r0
- movs r0, 0
-_081BF952:
- strb r0, [r1]
- cmp r7, 0x1
- beq _081BF9A0
- cmp r7, 0x1
- bgt _081BF96C
- cmp r7, 0
- beq _081BF97C
- ldr r2, =gUnknown_0203CF1C
- b _081BF9EE
- .pool
-_081BF96C:
- cmp r7, 0x2
- beq _081BF97C
- cmp r7, 0x3
- beq _081BF9D0
- ldr r2, =gUnknown_0203CF1C
- b _081BF9EE
- .pool
-_081BF97C:
- ldr r2, =gUnknown_0203CF1C
- ldr r0, [r2]
- ldr r1, =0x000040c1
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, =0x000040c2
- adds r0, r1
- movs r1, 0x3
- b _081BF9EC
- .pool
-_081BF9A0:
- ldr r2, =gUnknown_0203CF1C
- ldr r0, [r2]
- ldr r1, =0x000040c1
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, =0x000040c2
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, =0x000040c8
- adds r0, r1
- strb r7, [r0]
- b _081BF9EE
- .pool
-_081BF9D0:
- ldr r2, =gUnknown_0203CF1C
- ldr r0, [r2]
- ldr r1, =0x000040c1
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, =0x000040c2
- adds r0, r1
- strb r7, [r0]
- ldr r0, [r2]
- adds r1, 0x1
- adds r0, r1
- movs r1, 0x1
-_081BF9EC:
- strb r1, [r0]
-_081BF9EE:
- ldr r0, [r2]
- ldr r2, =0x000040c1
- adds r1, r0, r2
- ldrb r1, [r1]
- subs r2, 0x1
- adds r0, r2
- strb r1, [r0]
- movs r0, 0xFF
- bl sub_81C488C
- ldr r0, =gBattleSpritesGfx
- ldr r0, [r0]
- cmp r0, 0
- bne _081BFA12
- movs r0, 0
- movs r1, 0
- bl sub_806F2AC
-_081BFA12:
- ldr r0, =sub_81BFAE4
- bl SetMainCallback2
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BF8EC
-
- thumb_func_start sub_81BFA38
-sub_81BFA38: @ 81BFA38
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- mov r8, r0
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r6, [sp, 0x18]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- str r3, [sp]
- movs r0, 0x3
- mov r1, r8
- adds r2, r4, 0
- adds r3, r5, 0
- bl sub_81BF8EC
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c4
- adds r0, r1
- strh r6, [r0]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BFA38
-
- thumb_func_start sub_81BFA80
-sub_81BFA80: @ 81BFA80
- push {r4,lr}
- sub sp, 0x4
- ldr r4, [sp, 0xC]
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r4, [sp]
- bl sub_81BF8EC
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040ef
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BFA80
-
- thumb_func_start sub_81BFAB4
-sub_81BFAB4: @ 81BFAB4
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_81BFAB4
-
- thumb_func_start sub_81BFAD0
-sub_81BFAD0: @ 81BFAD0
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81BFAD0
-
- thumb_func_start sub_81BFAE4
-sub_81BFAE4: @ 81BFAE4
- push {lr}
-_081BFAE6:
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081BFB0A
- bl sub_81BFB10
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081BFB0A
- bl sub_81221AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081BFAE6
-_081BFB0A:
- pop {r0}
- bx r0
- thumb_func_end sub_81BFAE4
-
- thumb_func_start sub_81BFB10
-sub_81BFB10: @ 81BFB10
- push {r4,lr}
- sub sp, 0x4
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x18
- bls _081BFB24
- b _081BFE00
-_081BFB24:
- lsls r0, 2
- ldr r1, =_081BFB38
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081BFB38:
- .4byte _081BFB9C
- .4byte _081BFBAA
- .4byte _081BFBBC
- .4byte _081BFBD0
- .4byte _081BFBE4
- .4byte _081BFBEA
- .4byte _081BFC04
- .4byte _081BFC20
- .4byte _081BFC26
- .4byte _081BFC38
- .4byte _081BFC58
- .4byte _081BFC7C
- .4byte _081BFC82
- .4byte _081BFC94
- .4byte _081BFCAC
- .4byte _081BFCC0
- .4byte _081BFCD8
- .4byte _081BFCF8
- .4byte _081BFD34
- .4byte _081BFD50
- .4byte _081BFD60
- .4byte _081BFD74
- .4byte _081BFD7A
- .4byte _081BFDB0
- .4byte _081BFDCC
-_081BFB9C:
- bl SetVBlankHBlankCallbacksToNull
- bl sub_8121DA0
- bl clear_scheduled_bg_copies_to_vram
- b _081BFDE6
-_081BFBAA:
- bl remove_some_task
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFBBC:
- bl ResetPaletteFade
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- b _081BFDE4
- .pool
-_081BFBD0:
- bl ResetSpriteData
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFBE4:
- bl FreeAllSpritePalettes
- b _081BFDE6
-_081BFBEA:
- bl sub_81BFE24
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040f0
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _081BFDE6
- .pool
-_081BFC04:
- bl sub_81BFEB0
- lsls r0, 24
- cmp r0, 0
- bne _081BFC10
- b _081BFE18
-_081BFC10:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFC20:
- bl sub_81C2554
- b _081BFDE6
-_081BFC26:
- bl sub_81C1BA0
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFC38:
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81C0098
- ldr r0, [r4]
- ldr r1, =0x000040f0
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _081BFDE6
- .pool
-_081BFC58:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0xC
- bl sub_81C00F0
- lsls r0, 24
- cmp r0, 0
- bne _081BFC6A
- b _081BFE18
-_081BFC6A:
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFC7C:
- bl sub_81C25E8
- b _081BFDE6
-_081BFC82:
- bl sub_81C286C
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFC94:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- bl sub_81C2D9C
- b _081BFDE6
- .pool
-_081BFCAC:
- bl sub_81C0348
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFCC0:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- bl sub_81C2AFC
- b _081BFDE6
- .pool
-_081BFCD8:
- bl sub_81C4190
- bl sub_81C42C8
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040f0
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _081BFDE6
- .pool
-_081BFCF8:
- ldr r4, =gUnknown_0203CF1C
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0xC
- ldr r2, =0x000040f0
- adds r1, r2
- bl sub_81C45F4
- ldr r1, [r4]
- ldr r2, =0x000040d3
- adds r1, r2
- strb r0, [r1]
- ldr r1, [r4]
- adds r2, r1, r2
- ldrb r0, [r2]
- cmp r0, 0xFF
- bne _081BFD1C
- b _081BFE18
-_081BFD1C:
- ldr r0, =0x000040f0
- adds r1, r0
- movs r0, 0
- strh r0, [r1]
- b _081BFDE6
- .pool
-_081BFD34:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0xC
- bl sub_81C4984
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFD50:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0xC
- bl sub_81C4A08
- b _081BFDE6
- .pool
-_081BFD60:
- bl sub_81C4A88
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFD74:
- bl sub_81C4280
- b _081BFDE6
-_081BFD7A:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040bc
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _081BFDA0
- ldr r0, =sub_81C0510
- movs r1, 0
- bl CreateTask
- b _081BFDE6
- .pool
-_081BFDA0:
- ldr r0, =sub_81C171C
- movs r1, 0
- bl CreateTask
- b _081BFDE6
- .pool
-_081BFDB0:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _081BFDEE
- .pool
-_081BFDCC:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
-_081BFDE4:
- strb r0, [r2, 0x8]
-_081BFDE6:
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
-_081BFDEE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081BFE18
- .pool
-_081BFE00:
- ldr r0, =sub_81BFAD0
- bl SetVBlankCallback
- ldr r0, =sub_81BFAB4
- bl SetMainCallback2
- movs r0, 0x1
- b _081BFE1A
- .pool
-_081BFE18:
- movs r0, 0
-_081BFE1A:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81BFB10
-
- thumb_func_start sub_81BFE24
-sub_81BFE24: @ 81BFE24
- push {r4,lr}
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_0861CBB4
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_0203CF1C
- ldr r1, [r4]
- ldr r0, =0x000020bc
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x000010bc
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- adds r1, 0xBC
- movs r0, 0x3
- bl SetBgTilemapBuffer
- bl sub_8121E10
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BFE24
-
- thumb_func_start sub_81BFEB0
-sub_81BFEB0: @ 81BFEB0
- push {r4,lr}
- sub sp, 0x4
- ldr r1, =gUnknown_0203CF1C
- ldr r0, [r1]
- ldr r2, =0x000040f0
- adds r0, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r4, r1, 0
- cmp r0, 0xC
- bls _081BFEC8
- b _081C008C
-_081BFEC8:
- lsls r0, 2
- ldr r1, =_081BFEE0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081BFEE0:
- .4byte _081BFF14
- .4byte _081BFF30
- .4byte _081BFF60
- .4byte _081BFF78
- .4byte _081BFF90
- .4byte _081BFFA8
- .4byte _081BFFC0
- .4byte _081BFFF0
- .4byte _081BFFFC
- .4byte _081C0018
- .4byte _081C0024
- .4byte _081C0040
- .4byte _081C0064
-_081BFF14:
- bl reset_temp_tile_data_buffers
- ldr r1, =gUnknown_08D97D0C
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl decompress_and_copy_tile_data_to_vram
- b _081C0046
- .pool
-_081BFF30:
- bl free_temp_tile_data_buffers_if_possible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081BFF3E
- b _081C008C
-_081BFF3E:
- ldr r0, =gUnknown_08D9862C
- ldr r4, =gUnknown_0203CF1C
- ldr r1, [r4]
- adds r1, 0xBC
- bl LZDecompressWram
- ldr r1, [r4]
- ldr r2, =0x000040f0
- adds r1, r2
- b _081C004E
- .pool
-_081BFF60:
- ldr r0, =gUnknown_08D98CC8
- ldr r1, [r4]
- ldr r2, =0x000008bc
- adds r1, r2
- bl LZDecompressWram
- ldr r1, [r4]
- b _081C004A
- .pool
-_081BFF78:
- ldr r0, =gUnknown_08D987FC
- ldr r1, [r4]
- ldr r2, =0x000018bc
- adds r1, r2
- bl LZDecompressWram
- ldr r1, [r4]
- b _081C004A
- .pool
-_081BFF90:
- ldr r0, =gUnknown_08D9898C
- ldr r1, [r4]
- ldr r2, =0x000028bc
- adds r1, r2
- bl LZDecompressWram
- ldr r1, [r4]
- b _081C004A
- .pool
-_081BFFA8:
- ldr r0, =gUnknown_08D98B28
- ldr r1, [r4]
- ldr r2, =0x000038bc
- adds r1, r2
- bl LZDecompressWram
- ldr r1, [r4]
- b _081C004A
- .pool
-_081BFFC0:
- ldr r0, =gUnknown_08D9853C
- movs r2, 0x80
- lsls r2, 1
- movs r1, 0
- bl LoadCompressedPalette
- ldr r0, =gUnknown_08D85620
- movs r1, 0x81
- movs r2, 0x1E
- bl LoadPalette
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040f0
- adds r1, r2
- b _081C004E
- .pool
-_081BFFF0:
- ldr r0, =gUnknown_0861CFBC
- bl LoadCompressedObjectPic
- b _081C0046
- .pool
-_081BFFFC:
- ldr r0, =gUnknown_0861D074
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040f0
- adds r1, r2
- b _081C004E
- .pool
-_081C0018:
- ldr r0, =gUnknown_0861D0F8
- bl LoadCompressedObjectPic
- b _081C0046
- .pool
-_081C0024:
- ldr r0, =gUnknown_0861D100
- bl LoadCompressedObjectPalette
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040f0
- adds r1, r2
- b _081C004E
- .pool
-_081C0040:
- ldr r0, =gUnknown_0861D07C
- bl LoadCompressedObjectPalette
-_081C0046:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
-_081C004A:
- ldr r0, =0x000040f0
- adds r1, r0
-_081C004E:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _081C008C
- .pool
-_081C0064:
- ldr r0, =gUnknown_08D97B84
- movs r1, 0xE8
- lsls r1, 1
- movs r2, 0x60
- bl LoadCompressedPalette
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040f0
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- movs r0, 0x1
- b _081C008E
- .pool
-_081C008C:
- movs r0, 0
-_081C008E:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81BFEB0
-
- thumb_func_start sub_81C0098
-sub_81C0098: @ 81C0098
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040bd
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C00D0
- ldr r2, [r1]
- ldr r4, =0x000040be
- adds r0, r1, r4
- ldrb r1, [r0]
- movs r0, 0x64
- muls r1, r0
- adds r1, r2
- adds r0, r3, 0
- movs r2, 0x64
- bl memcpy
- b _081C00E6
- .pool
-_081C00D0:
- ldr r0, [r1]
- ldr r2, =0x000040be
- adds r1, r2
- ldrb r2, [r1]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- adds r0, r1
- adds r1, r3, 0
- bl sub_8069004
-_081C00E6:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0098
-
- thumb_func_start sub_81C00F0
-sub_81C00F0: @ 81C00F0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- ldr r0, =gUnknown_0203CF1C
- ldr r7, [r0]
- adds r6, r7, 0
- adds r6, 0x70
- ldr r1, =0x000040f0
- adds r0, r7, r1
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0x1
- beq _081C0198
- cmp r0, 0x1
- bgt _081C0120
- cmp r0, 0
- beq _081C012C
- b _081C0314
- .pool
-_081C0120:
- cmp r0, 0x2
- beq _081C01DC
- cmp r0, 0x3
- bne _081C012A
- b _081C02A8
-_081C012A:
- b _081C0314
-_081C012C:
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- strh r0, [r6]
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- strh r0, [r6, 0x2]
- adds r0, r5, 0
- movs r1, 0x19
- bl GetMonData
- str r0, [r6, 0x10]
- adds r0, r5, 0
- movs r1, 0x38
- bl GetMonData
- strb r0, [r6, 0x5]
- adds r0, r5, 0
- movs r1, 0x2E
- bl GetMonData
- strb r0, [r6, 0x8]
- adds r0, r5, 0
- movs r1, 0xC
- bl GetMonData
- strh r0, [r6, 0x2E]
- adds r0, r5, 0
- movs r1, 0
- bl GetMonData
- str r0, [r6, 0xC]
- adds r0, r5, 0
- movs r1, 0x4
- bl GetMonData
- adds r1, r7, 0
- adds r1, 0xA5
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- beq _081C018C
- movs r0, 0x1
- strb r0, [r6, 0x4]
- b _081C0322
-_081C018C:
- adds r0, r5, 0
- movs r1, 0x2D
- bl GetMonData
- strb r0, [r6, 0x4]
- b _081C0322
-_081C0198:
- movs r4, 0
- movs r0, 0x8C
- adds r0, r7
- mov r8, r0
- movs r1, 0xA4
- adds r1, r7
- mov r9, r1
- adds r6, r7, 0
- adds r6, 0x84
-_081C01AA:
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r5, 0
- bl GetMonData
- strh r0, [r6]
- adds r1, r4, 0
- adds r1, 0x11
- adds r0, r5, 0
- bl GetMonData
- mov r2, r8
- adds r1, r2, r4
- strb r0, [r1]
- adds r6, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- bls _081C01AA
- adds r0, r5, 0
- movs r1, 0x15
- bl GetMonData
- mov r1, r9
- strb r0, [r1]
- b _081C0322
-_081C01DC:
- ldr r1, [r7]
- ldr r0, =gPlayerParty
- cmp r1, r0
- beq _081C01F8
- ldr r2, =0x000040bc
- adds r0, r7, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _081C01F8
- ldr r1, =0x000040ef
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081C0254
-_081C01F8:
- adds r0, r5, 0
- bl GetNature
- adds r1, r6, 0
- adds r1, 0x33
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r6, 0x20]
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- strh r0, [r6, 0x22]
- adds r0, r5, 0
- movs r1, 0x3B
- bl GetMonData
- strh r0, [r6, 0x24]
- adds r0, r5, 0
- movs r1, 0x3C
- bl GetMonData
- strh r0, [r6, 0x26]
- adds r0, r5, 0
- movs r1, 0x3E
- bl GetMonData
- strh r0, [r6, 0x28]
- adds r0, r5, 0
- movs r1, 0x3F
- bl GetMonData
- strh r0, [r6, 0x2A]
- adds r0, r5, 0
- movs r1, 0x3D
- b _081C02A0
- .pool
-_081C0254:
- adds r0, r5, 0
- bl GetNature
- adds r1, r7, 0
- adds r1, 0xA3
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r6, 0x20]
- adds r0, r5, 0
- movs r1, 0x3A
- bl GetMonData
- strh r0, [r6, 0x22]
- adds r0, r5, 0
- movs r1, 0x54
- bl GetMonData
- strh r0, [r6, 0x24]
- adds r0, r5, 0
- movs r1, 0x55
- bl GetMonData
- strh r0, [r6, 0x26]
- adds r0, r5, 0
- movs r1, 0x57
- bl GetMonData
- strh r0, [r6, 0x28]
- adds r0, r5, 0
- movs r1, 0x58
- bl GetMonData
- strh r0, [r6, 0x2A]
- adds r0, r5, 0
- movs r1, 0x56
-_081C02A0:
- bl GetMonData
- strh r0, [r6, 0x2C]
- b _081C0322
-_081C02A8:
- adds r4, r7, 0
- adds r4, 0xA6
- adds r0, r5, 0
- movs r1, 0x7
- adds r2, r4, 0
- bl GetMonData
- adds r0, r5, 0
- movs r1, 0x3
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl ConvertInternationalString
- adds r0, r5, 0
- bl sub_81B205C
- strb r0, [r6, 0x7]
- adds r0, r5, 0
- movs r1, 0x31
- bl GetMonData
- adds r1, r7, 0
- adds r1, 0xA2
- strb r0, [r1]
- adds r0, r5, 0
- movs r1, 0x1
- bl GetMonData
- str r0, [r6, 0x48]
- adds r0, r5, 0
- movs r1, 0x23
- bl GetMonData
- strb r0, [r6, 0x9]
- adds r0, r5, 0
- movs r1, 0x24
- bl GetMonData
- strb r0, [r6, 0xA]
- adds r0, r5, 0
- movs r1, 0x25
- bl GetMonData
- strb r0, [r6, 0xB]
- adds r0, r5, 0
- movs r1, 0x20
- bl GetMonData
- strh r0, [r6, 0x30]
- b _081C0322
-_081C0314:
- adds r0, r5, 0
- movs r1, 0x52
- bl GetMonData
- strb r0, [r6, 0x6]
- movs r0, 0x1
- b _081C0332
-_081C0322:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040f0
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0
-_081C0332:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C00F0
-
- thumb_func_start sub_81C0348
-sub_81C0348: @ 81C0348
- push {r4-r6,lr}
- ldr r6, =gUnknown_0203CF1C
- ldr r2, [r6]
- ldr r1, =0x000040c0
- adds r0, r2, r1
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _081C037C
- movs r0, 0
- movs r1, 0xFF
- bl sub_81C1DA4
- movs r0, 0
- movs r1, 0xFF
- movs r2, 0
- bl sub_81C1EFC
- b _081C03D8
- .pool
-_081C037C:
- ldr r1, =0x000040c6
- adds r0, r2, r1
- ldrb r1, [r0]
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x84
- adds r0, r1
- ldrh r0, [r0]
- bl sub_81C240C
- ldr r0, [r6]
- ldr r5, =0x000020bc
- adds r0, r5
- movs r1, 0x3
- movs r2, 0
- bl sub_81C2194
- ldr r0, [r6]
- ldr r4, =0x000030bc
- adds r0, r4
- movs r1, 0x1
- movs r2, 0
- bl sub_81C2194
- ldr r1, [r6]
- adds r1, r4
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r6]
- adds r1, r5
- movs r0, 0x2
- bl SetBgTilemapBuffer
- movs r1, 0x80
- lsls r1, 9
- movs r0, 0x2
- movs r2, 0x1
- bl ChangeBgX
- movs r0, 0x13
- bl ClearWindowTilemap
- movs r0, 0xD
- bl ClearWindowTilemap
-_081C03D8:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x77
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C0400
- movs r0, 0
- movs r1, 0xFF
- bl sub_81C2074
- b _081C0416
- .pool
-_081C0400:
- ldr r2, =0x000040c0
- adds r0, r1, r2
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _081C0416
- movs r0, 0xD
- bl PutWindowTilemap
-_081C0416:
- bl sub_81C2524
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0xC
- bl sub_81C2228
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0348
-
- thumb_func_start sub_81C0434
-sub_81C0434: @ 81C0434
- push {lr}
- bl FreeAllWindowBuffers
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- bl Free
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0434
-
- thumb_func_start sub_81C044C
-sub_81C044C: @ 81C044C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81C0484
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C044C
-
- thumb_func_start sub_81C0484
-sub_81C0484: @ 81C0484
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C04EC
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081C04EC
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- bl SetMainCallback2
- ldr r1, =gUnknown_0203CF20
- ldr r0, [r4]
- ldr r2, =0x000040be
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- bl sub_81C4898
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl StopCryAndClearCrySongs
- ldr r0, =gMPlay_BGM
- ldr r1, =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- ldr r0, =gBattleSpritesGfx
- ldr r0, [r0]
- cmp r0, 0
- bne _081C04E2
- movs r0, 0
- bl sub_806F47C
-_081C04E2:
- bl sub_81C0434
- adds r0, r5, 0
- bl DestroyTask
-_081C04EC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0484
-
- thumb_func_start sub_81C0510
-sub_81C0510: @ 81C0510
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C05FE
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _081C05FE
- ldr r5, =gMain
- ldrh r1, [r5, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081C0550
- movs r1, 0x1
- negs r1, r1
- adds r0, r4, 0
- bl sub_81C0604
- b _081C05FE
- .pool
-_081C0550:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081C0562
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C0604
- b _081C05FE
-_081C0562:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _081C0576
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C0582
-_081C0576:
- movs r1, 0x1
- negs r1, r1
- adds r0, r4, 0
- bl sub_81C0A8C
- b _081C05FE
-_081C0582:
- ldrh r1, [r5, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081C0598
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _081C05A2
-_081C0598:
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C0A8C
- b _081C05FE
-_081C05A2:
- ldrh r1, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081C05E6
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081C05FE
- cmp r0, 0
- bne _081C05D8
- bl sub_81C48F0
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81C044C
- b _081C05FE
- .pool
-_081C05D8:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81C0E48
- b _081C05FE
-_081C05E6:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081C05FE
- bl sub_81C48F0
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_81C044C
-_081C05FE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81C0510
-
- thumb_func_start sub_81C0604
-sub_81C0604: @ 81C0604
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- adds r4, r5, 0
- ldr r1, =gUnknown_0203CF1C
- ldr r3, [r1]
- ldr r2, =0x000040c3
- adds r0, r3, r2
- ldrb r0, [r0]
- adds r6, r1, 0
- cmp r0, 0
- bne _081C06EE
- ldr r1, =0x000040bd
- adds r0, r3, r1
- ldrb r2, [r0]
- cmp r2, 0x1
- bne _081C0678
- adds r1, 0x3
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _081C0654
- lsls r1, r5, 24
- asrs r1, 24
- movs r4, 0x2
- eors r1, r2
- negs r0, r1
- orrs r0, r1
- asrs r0, 31
- ands r4, r0
- b _081C065C
- .pool
-_081C0654:
- movs r4, 0x3
- cmp r5, 0x1
- bne _081C065C
- movs r4, 0x1
-_081C065C:
- ldr r2, [r6]
- ldr r0, [r2]
- ldr r3, =0x000040be
- adds r1, r2, r3
- ldrb r1, [r1]
- adds r3, 0x1
- adds r2, r3
- ldrb r2, [r2]
- adds r3, r4, 0
- bl sub_80D214C
- b _081C0696
- .pool
-_081C0678:
- bl sub_81B1250
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C068E
- lsls r0, r5, 24
- asrs r0, 24
- bl sub_81C09B4
- b _081C0696
-_081C068E:
- lsls r0, r4, 24
- asrs r0, 24
- bl sub_81C08F8
-_081C0696:
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _081C06EE
- movs r0, 0x5
- bl PlaySE
- ldr r5, =gUnknown_0203CF1C
- ldr r0, [r5]
- adds r0, 0x77
- ldrb r0, [r0]
- cmp r0, 0
- beq _081C06D4
- movs r0, 0x2
- movs r1, 0x1
- bl sub_81C4204
- movs r0, 0xD
- bl ClearWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- movs r1, 0x2
- bl sub_81C2074
-_081C06D4:
- ldr r0, [r5]
- ldr r1, =0x000040be
- adds r0, r1
- movs r2, 0
- strb r4, [r0]
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- strh r2, [r0, 0x8]
- ldr r1, =sub_81C0704
- str r1, [r0]
-_081C06EE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0604
-
- thumb_func_start sub_81C0704
-sub_81C0704: @ 81C0704
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r4, r1, 3
- ldr r6, =gTasks + 0x8
- adds r5, r4, r6
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0xC
- bls _081C071E
- b _081C08BC
-_081C071E:
- lsls r0, 2
- ldr r1, =_081C0730
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C0730:
- .4byte _081C0764
- .4byte _081C076A
- .4byte _081C0780
- .4byte _081C07A8
- .4byte _081C07C8
- .4byte _081C07E0
- .4byte _081C07F0
- .4byte _081C0800
- .4byte _081C0828
- .4byte _081C086C
- .4byte _081C0872
- .4byte _081C0878
- .4byte _081C0894
-_081C0764:
- bl StopCryAndClearCrySongs
- b _081C08EC
-_081C076A:
- bl sub_81C4898
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040d3
- b _081C0786
- .pool
-_081C0780:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040d4
-_081C0786:
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl DestroySpriteAndFreeResources
- b _081C08EC
- .pool
-_081C07A8:
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81C0098
- ldr r0, [r4]
- ldr r1, =0x000040f0
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- b _081C08EC
- .pool
-_081C07C8:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0xC
- bl sub_81C00F0
- lsls r0, 24
- cmp r0, 0
- bne _081C07DA
- b _081C08F2
-_081C07DA:
- b _081C08EC
- .pool
-_081C07E0:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0xC
- bl sub_81C49E0
- b _081C08EC
- .pool
-_081C07F0:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0xC
- bl sub_81C4A08
- b _081C08EC
- .pool
-_081C0800:
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- adds r0, 0x77
- ldrb r0, [r0]
- cmp r0, 0
- beq _081C0816
- movs r1, 0x2
- negs r1, r1
- movs r0, 0xA
- bl sub_81C2074
-_081C0816:
- ldr r0, [r4]
- adds r0, 0xC
- bl sub_81C2228
- movs r0, 0
- strh r0, [r5, 0x2]
- b _081C08EC
- .pool
-_081C0828:
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- adds r0, 0xC
- adds r1, r5, 0x2
- bl sub_81C45F4
- ldr r1, [r4]
- ldr r2, =0x000040d3
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r4]
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _081C08F2
- ldr r2, =gSprites
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x1
- strh r1, [r0, 0x32]
- bl sub_81C0E24
- movs r0, 0
- strh r0, [r5, 0x2]
- b _081C08EC
- .pool
-_081C086C:
- bl sub_81C4280
- b _081C08EC
-_081C0872:
- bl sub_81C25E8
- b _081C08EC
-_081C0878:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- bl sub_81C2D9C
- bl sub_81C2524
- b _081C08EC
- .pool
-_081C0894:
- ldr r2, =gSprites
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040d3
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x32]
- b _081C08EC
- .pool
-_081C08BC:
- bl sub_81221EC
- lsls r0, 24
- cmp r0, 0
- bne _081C08F2
- ldr r0, =sub_81C20F0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _081C08F2
- strh r0, [r5]
- adds r0, r6, 0
- subs r0, 0x8
- adds r0, r4, r0
- ldr r1, =sub_81C0510
- str r1, [r0]
- b _081C08F2
- .pool
-_081C08EC:
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
-_081C08F2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81C0704
-
- thumb_func_start sub_81C08F8
-sub_81C08F8: @ 81C08F8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gUnknown_0203CF1C
- ldr r2, [r1]
- ldr r7, [r2]
- ldr r3, =0x000040c0
- adds r0, r2, r3
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0
- bne _081C0960
- lsls r0, r4, 24
- asrs r3, r0, 24
- movs r1, 0x1
- negs r1, r1
- adds r6, r0, 0
- cmp r3, r1
- bne _081C0928
- ldr r1, =0x000040be
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _081C0988
-_081C0928:
- asrs r0, r6, 24
- cmp r0, 0x1
- bne _081C0940
- ldr r0, [r5]
- ldr r2, =0x000040be
- adds r1, r0, r2
- ldr r3, =0x000040bf
- adds r0, r3
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bcs _081C0988
-_081C0940:
- ldr r0, [r5]
- ldr r1, =0x000040be
- adds r0, r1
- ldrb r0, [r0]
- adds r0, r4
- lsls r0, 24
- asrs r0, 24
- b _081C09AE
- .pool
-_081C0960:
- ldr r3, =0x000040be
- adds r0, r2, r3
- ldrb r5, [r0]
- lsls r6, r4, 24
-_081C0968:
- lsls r0, r5, 24
- asrs r0, 24
- asrs r1, r6, 24
- adds r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- asrs r4, r0, 24
- cmp r4, 0
- blt _081C0988
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040bf
- adds r0, r1
- ldrb r0, [r0]
- cmp r4, r0
- ble _081C099C
-_081C0988:
- movs r0, 0x1
- negs r0, r0
- b _081C09AE
- .pool
-_081C099C:
- movs r0, 0x64
- muls r0, r4
- adds r0, r7, r0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _081C0968
- adds r0, r4, 0
-_081C09AE:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81C08F8
-
- thumb_func_start sub_81C09B4
-sub_81C09B4: @ 81C09B4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- ldr r6, =gUnknown_0203CF1C
- ldr r0, [r6]
- ldr r1, [r0]
- mov r8, r1
- movs r5, 0
- movs r2, 0
- ldr r3, =gUnknown_0861CC1C
- movs r1, 0
- ldrsb r1, [r3, r1]
- ldr r4, =0x000040be
- adds r0, r4
- ldrb r0, [r0]
- cmp r1, r0
- beq _081C09FC
- adds r7, r3, 0
- adds r3, r4, 0
-_081C09E0:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x5
- bhi _081C09FC
- adds r0, r2, r7
- movs r1, 0
- ldrsb r1, [r0, r1]
- ldr r0, [r6]
- adds r0, r3
- ldrb r0, [r0]
- cmp r1, r0
- bne _081C09E0
- adds r5, r2, 0
-_081C09FC:
- mov r0, r12
- lsls r6, r0, 24
- ldr r7, =gUnknown_0861CC1C
-_081C0A02:
- lsls r0, r5, 24
- asrs r0, 24
- asrs r1, r6, 24
- adds r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, r5, 24
- lsrs r0, r1, 24
- cmp r0, 0x5
- bhi _081C0A40
- asrs r0, r1, 24
- adds r0, r7
- movs r4, 0
- ldrsb r4, [r0, r4]
- movs r0, 0x64
- muls r0, r4
- add r0, r8
- bl sub_81C0A50
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C0A02
- adds r0, r4, 0
- b _081C0A44
- .pool
-_081C0A40:
- movs r0, 0x1
- negs r0, r0
-_081C0A44:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81C09B4
-
- thumb_func_start sub_81C0A50
-sub_81C0A50: @ 81C0A50
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _081C0A84
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040be
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C0A78
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _081C0A84
-_081C0A78:
- movs r0, 0x1
- b _081C0A86
- .pool
-_081C0A84:
- movs r0, 0
-_081C0A86:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81C0A50
-
- thumb_func_start sub_81C0A8C
-sub_81C0A8C: @ 81C0A8C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- str r6, [sp]
- lsls r1, 24
- lsrs r3, r1, 24
- str r3, [sp, 0x4]
- ldr r0, =gUnknown_0203CF1C
- mov r8, r0
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x70
- lsls r0, r6, 2
- adds r0, r6
- lsls r7, r0, 3
- ldr r0, =gTasks + 0x8
- mov r9, r0
- adds r0, r7, r0
- str r0, [sp, 0x8]
- ldrb r1, [r1, 0x4]
- mov r10, r1
- cmp r1, 0
- bne _081C0B6E
- lsls r0, r3, 24
- asrs r5, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- bne _081C0AE0
- ldr r1, =0x000040c0
- adds r0, r2, r1
- ldr r3, =0x000040c1
- adds r1, r2, r3
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- beq _081C0B6E
-_081C0AE0:
- cmp r5, 0x1
- bne _081C0AF4
- ldr r1, =0x000040c0
- adds r0, r2, r1
- ldr r3, =0x000040c2
- adds r1, r2, r3
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- beq _081C0B6E
-_081C0AF4:
- movs r0, 0x5
- bl PlaySE
- mov r1, r8
- ldr r0, [r1]
- ldr r4, =0x000040c0
- adds r0, r4
- ldrb r0, [r0]
- bl sub_81C2C38
- mov r2, r8
- ldr r1, [r2]
- adds r1, r4
- ldrb r0, [r1]
- ldr r3, [sp, 0x4]
- adds r0, r3
- strb r0, [r1]
- mov r1, r10
- ldr r0, [sp, 0x8]
- strh r1, [r0]
- cmp r5, 0x1
- bne _081C0B4C
- ldr r1, =sub_81C0B8C
- mov r0, r9
- subs r0, 0x8
- adds r0, r7, r0
- ldr r2, [r0]
- adds r0, r6, 0
- bl SetTaskFuncWithFollowupFunc
- b _081C0B5C
- .pool
-_081C0B4C:
- ldr r1, =sub_81C0CC4
- mov r0, r9
- subs r0, 0x8
- adds r0, r7, r0
- ldr r2, [r0]
- ldr r0, [sp]
- bl SetTaskFuncWithFollowupFunc
-_081C0B5C:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r2, =0x000040c0
- adds r0, r2
- ldrb r0, [r0]
- bl sub_81C2DE4
- bl sub_81C424C
-_081C0B6E:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0A8C
-
- thumb_func_start sub_81C0B8C
-sub_81C0B8C: @ 81C0B8C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081C0C2A
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r3, =0x000040c9
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C0BE0
- movs r0, 0x1
- strh r0, [r4, 0x2]
- movs r0, 0x1
- movs r1, 0x7
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x7
- movs r2, 0x2
- bl SetBgAttribute
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- b _081C0BFE
- .pool
-_081C0BE0:
- movs r0, 0x2
- strh r0, [r4, 0x2]
- movs r0, 0x2
- movs r1, 0x7
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x1
- movs r1, 0x7
- movs r2, 0x2
- bl SetBgAttribute
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
-_081C0BFE:
- ldrb r0, [r4, 0x2]
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- ldrb r0, [r4, 0x2]
- ldr r1, =gUnknown_0203CF1C
- ldr r1, [r1]
- ldr r3, =0x000040c0
- adds r2, r1, r3
- ldrb r2, [r2]
- lsls r2, 12
- adds r2, 0xBC
- adds r1, r2
- bl SetBgTilemapBuffer
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
-_081C0C2A:
- ldrb r0, [r4, 0x2]
- movs r1, 0x80
- lsls r1, 6
- movs r2, 0x1
- bl ChangeBgX
- ldrh r0, [r4]
- adds r0, 0x20
- strh r0, [r4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _081C0C52
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81C0C68
- str r0, [r1]
-_081C0C52:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0B8C
-
- thumb_func_start sub_81C0C68
-sub_81C0C68: @ 81C0C68
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r2, r4, 2
- adds r2, r4
- lsls r2, 3
- ldr r0, =gTasks + 0x8
- adds r2, r0
- ldr r5, =gUnknown_0203CF1C
- ldr r3, [r5]
- ldr r0, =0x000040c9
- adds r3, r0
- ldrb r0, [r3]
- movs r1, 0x1
- eors r0, r1
- movs r1, 0
- strb r0, [r3]
- strh r1, [r2, 0x2]
- strh r1, [r2]
- bl sub_81C1BA0
- ldr r0, [r5]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- bl sub_81C2AFC
- bl sub_81C4280
- bl sub_81C0E24
- adds r0, r4, 0
- bl SwitchTaskToFollowupFunc
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0C68
-
- thumb_func_start sub_81C0CC4
-sub_81C0CC4: @ 81C0CC4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _081C0D0C
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c9
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C0CFC
- movs r0, 0x2
- b _081C0CFE
- .pool
-_081C0CFC:
- movs r0, 0x1
-_081C0CFE:
- strh r0, [r4, 0x2]
- ldrb r0, [r4, 0x2]
- movs r1, 0x80
- lsls r1, 9
- movs r2, 0
- bl ChangeBgX
-_081C0D0C:
- ldrb r0, [r4, 0x2]
- movs r1, 0x80
- lsls r1, 6
- movs r2, 0x2
- bl ChangeBgX
- ldrh r0, [r4]
- adds r0, 0x20
- strh r0, [r4]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xFF
- ble _081C0D34
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81C0D44
- str r0, [r1]
-_081C0D34:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0CC4
-
- thumb_func_start sub_81C0D44
-sub_81C0D44: @ 81C0D44
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c9
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C0D8C
- movs r0, 0x1
- movs r1, 0x7
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x7
- movs r2, 0x2
- bl SetBgAttribute
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- b _081C0DA6
- .pool
-_081C0D8C:
- movs r0, 0x2
- movs r1, 0x7
- movs r2, 0x1
- bl SetBgAttribute
- movs r0, 0x1
- movs r1, 0x7
- movs r2, 0x2
- bl SetBgAttribute
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
-_081C0DA6:
- ldr r6, =gUnknown_0203CF1C
- ldr r2, [r6]
- ldr r7, =0x000040c0
- adds r1, r2, r7
- ldrb r0, [r1]
- cmp r0, 0x1
- bls _081C0DD0
- ldrb r0, [r4, 0x2]
- ldrb r1, [r1]
- lsls r1, 12
- ldr r3, =0xfffff0bc
- adds r1, r3
- adds r1, r2, r1
- bl SetBgTilemapBuffer
- ldrb r0, [r4, 0x2]
- movs r1, 0x80
- lsls r1, 9
- movs r2, 0
- bl ChangeBgX
-_081C0DD0:
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- ldr r2, [r6]
- ldr r0, =0x000040c9
- adds r2, r0
- ldrb r0, [r2]
- movs r1, 0x1
- eors r0, r1
- movs r1, 0
- strb r0, [r2]
- strh r1, [r4, 0x2]
- strh r1, [r4]
- bl sub_81C1BA0
- ldr r0, [r6]
- adds r0, r7
- ldrb r0, [r0]
- bl sub_81C2AFC
- bl sub_81C4280
- bl sub_81C0E24
- adds r0, r5, 0
- bl SwitchTaskToFollowupFunc
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0D44
-
- thumb_func_start sub_81C0E24
-sub_81C0E24: @ 81C0E24
- push {lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040c0
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081C0E3C
- adds r0, r1, 0
- adds r0, 0xC
- bl sub_81C22CC
-_081C0E3C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0E24
-
- thumb_func_start sub_81C0E48
-sub_81C0E48: @ 81C0E48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r5, =gUnknown_0203CF1C
- ldr r0, [r5]
- ldr r2, =0x000040c6
- adds r0, r2
- movs r1, 0
- strb r1, [r0]
- ldr r1, [r5]
- adds r2, r1, r2
- ldrb r0, [r2]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r6, [r1]
- mov r8, r6
- movs r0, 0x13
- bl ClearWindowTilemap
- ldr r2, =gSprites
- ldr r0, [r5]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C0E96
- movs r0, 0xD
- bl ClearWindowTilemap
-_081C0E96:
- movs r4, 0x3
- negs r4, r4
- movs r0, 0x9
- adds r1, r4, 0
- bl sub_81C1DA4
- movs r0, 0x9
- adds r1, r4, 0
- adds r2, r6, 0
- bl sub_81C1EFC
- ldr r0, [r5]
- ldr r1, =0x000040c8
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C0EC4
- movs r0, 0x5
- bl ClearWindowTilemap
- movs r0, 0x6
- bl PutWindowTilemap
-_081C0EC4:
- ldr r0, [r5]
- ldr r1, =0x000020bc
- adds r0, r1
- movs r1, 0x3
- movs r2, 0
- bl sub_81C2194
- ldr r0, [r5]
- ldr r1, =0x000030bc
- adds r0, r1
- movs r1, 0x1
- movs r2, 0
- bl sub_81C2194
- mov r0, r8
- bl sub_81C3E9C
- bl sub_81C3F44
- bl sub_81C44F0
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x8
- bl sub_81C4AF8
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81C0F44
- str r1, [r0]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C0E48
-
- thumb_func_start sub_81C0F44
-sub_81C0F44: @ 81C0F44
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C103A
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081C0F98
- movs r0, 0x4
- strh r0, [r4]
- movs r1, 0x1
- negs r1, r1
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c6
- adds r2, r0
- adds r0, r4, 0
- bl sub_81C1070
- b _081C103A
- .pool
-_081C0F98:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081C0FC0
- movs r0, 0x4
- strh r0, [r4]
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c6
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C1070
- b _081C103A
- .pool
-_081C0FC0:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081C1026
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040c8
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081C0FE8
- subs r2, 0x4
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r1, =0x00ffffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 11
- cmp r0, r1
- bne _081C1004
-_081C0FE8:
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81C11F4
- b _081C103A
- .pool
-_081C1004:
- bl sub_81C1040
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C101E
- movs r0, 0x5
- bl PlaySE
- adds r0, r5, 0
- bl sub_81C129C
- b _081C103A
-_081C101E:
- movs r0, 0x20
- bl PlaySE
- b _081C103A
-_081C1026:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081C103A
- movs r0, 0x5
- bl PlaySE
- adds r0, r6, 0
- bl sub_81C11F4
-_081C103A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81C0F44
-
- thumb_func_start sub_81C1040
-sub_81C1040: @ 81C1040
- push {lr}
- movs r1, 0x1
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r2, r0, 0
- adds r2, 0x84
-_081C104C:
- lsls r0, r1, 1
- adds r0, r2, r0
- ldrh r0, [r0]
- cmp r0, 0
- beq _081C1060
- movs r0, 0x1
- b _081C106C
- .pool
-_081C1060:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bls _081C104C
- movs r0, 0
-_081C106C:
- pop {r1}
- bx r1
- thumb_func_end sub_81C1040
-
- thumb_func_start sub_81C1070
-sub_81C1070: @ 81C1070
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- adds r4, r1, 0
- mov r8, r2
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- mov r0, r8
- ldrb r6, [r0]
- movs r2, 0
- lsls r4, 24
- asrs r4, 24
- mov r12, r4
- movs r1, 0
- ldrsh r4, [r7, r1]
- ldrb r0, [r7]
- lsls r3, r0, 24
-_081C109C:
- lsls r0, r6, 24
- asrs r0, 24
- add r0, r12
- lsls r0, 24
- lsrs r6, r0, 24
- asrs r0, 24
- cmp r0, r4
- ble _081C10B0
- movs r6, 0
- b _081C10B6
-_081C10B0:
- cmp r0, 0
- bge _081C10B6
- lsrs r6, r3, 24
-_081C10B6:
- lsls r0, r6, 24
- asrs r1, r0, 24
- mov r9, r0
- cmp r1, 0x4
- bne _081C10C2
- b _081C11CC
-_081C10C2:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- lsls r1, 1
- adds r0, 0x84
- adds r0, r1
- ldrh r5, [r0]
- cmp r5, 0
- bne _081C10E2
- lsls r0, r2, 24
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r2, r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _081C109C
-_081C10E2:
- adds r0, r5, 0
- bl sub_81C240C
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r5, 0
- bl sub_81C3E9C
- mov r1, r8
- ldrb r0, [r1]
- cmp r0, 0x4
- bne _081C1110
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c4
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _081C1118
-_081C1110:
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- cmp r0, 0x1
- bne _081C115E
-_081C1118:
- movs r0, 0x13
- bl ClearWindowTilemap
- ldr r2, =gSprites
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C1142
- movs r0, 0xD
- bl ClearWindowTilemap
-_081C1142:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r4, 0x3
- negs r4, r4
- movs r0, 0x9
- adds r1, r4, 0
- bl sub_81C1DA4
- movs r0, 0x9
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_81C1EFC
-_081C115E:
- mov r1, r8
- ldrb r0, [r1]
- cmp r0, 0x4
- beq _081C11A0
- mov r1, r9
- asrs r0, r1, 24
- cmp r0, 0x4
- bne _081C11A0
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c4
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _081C11A0
- movs r0, 0xE
- bl ClearWindowTilemap
- movs r0, 0xF
- bl ClearWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- movs r1, 0x3
- bl sub_81C1DA4
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- bl sub_81C1EFC
-_081C11A0:
- mov r0, r8
- strb r6, [r0]
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c6
- adds r0, r1
- cmp r8, r0
- bne _081C11E0
- movs r0, 0x8
- bl sub_81C4D18
- b _081C11E6
- .pool
-_081C11CC:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c4
- adds r0, r1
- ldrh r5, [r0]
- b _081C10E2
- .pool
-_081C11E0:
- movs r0, 0x12
- bl sub_81C4D18
-_081C11E6:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81C1070
-
- thumb_func_start sub_81C11F4
-sub_81C11F4: @ 81C11F4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x8
- bl sub_81C4C60
- movs r0, 0x6
- bl ClearWindowTilemap
- movs r0, 0x5
- bl PutWindowTilemap
- movs r0, 0
- bl sub_81C3E9C
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r1, =0x000020bc
- adds r0, r1
- movs r1, 0x3
- movs r2, 0x1
- bl sub_81C2194
- ldr r0, [r4]
- ldr r1, =0x000030bc
- adds r0, r1
- movs r1, 0x1
- movs r2, 0x1
- bl sub_81C2194
- bl sub_81C4064
- ldr r0, [r4]
- ldr r1, =0x000040c6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- beq _081C125E
- movs r0, 0xE
- bl ClearWindowTilemap
- movs r0, 0xF
- bl ClearWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl sub_81C1DA4
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- bl sub_81C1EFC
-_081C125E:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_81C0510
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C11F4
-
- thumb_func_start sub_81C129C
-sub_81C129C: @ 81C129C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r2, =0x000040c6
- adds r1, r0, r2
- ldrb r1, [r1]
- adds r2, 0x1
- adds r0, r2
- strb r1, [r0]
- movs r0, 0x1
- bl sub_81C4C84
- movs r0, 0x12
- bl sub_81C4AF8
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81C12E4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C129C
-
- thumb_func_start sub_81C12E4
-sub_81C12E4: @ 81C12E4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C13AA
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081C1338
- movs r0, 0x3
- strh r0, [r4]
- movs r1, 0x1
- negs r1, r1
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c7
- adds r2, r0
- adds r0, r4, 0
- bl sub_81C1070
- b _081C13AA
- .pool
-_081C1338:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081C1360
- movs r0, 0x3
- strh r0, [r4]
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c7
- adds r2, r0
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C1070
- b _081C13AA
- .pool
-_081C1360:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081C139A
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r2, =0x000040c6
- adds r1, r0, r2
- adds r2, 0x1
- adds r0, r2
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bne _081C1390
- adds r0, r5, 0
- movs r1, 0
- bl sub_81C13B0
- b _081C13AA
- .pool
-_081C1390:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_81C13B0
- b _081C13AA
-_081C139A:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081C13AA
- adds r0, r6, 0
- movs r1, 0
- bl sub_81C13B0
-_081C13AA:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81C12E4
-
- thumb_func_start sub_81C13B0
-sub_81C13B0: @ 81C13B0
- push {r4-r7,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_81C4C84
- movs r0, 0x12
- bl sub_81C4C60
- cmp r4, 0x1
- bne _081C1464
- ldr r0, =gUnknown_0203CF1C
- ldr r3, [r0]
- ldr r1, =0x000040bd
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C1410
- ldr r0, [r3]
- ldr r2, =0x000040be
- adds r1, r3, r2
- ldrb r2, [r1]
- movs r1, 0x64
- muls r1, r2
- adds r0, r1
- ldr r4, =0x000040c6
- adds r1, r3, r4
- ldrb r1, [r1]
- adds r4, 0x1
- adds r2, r3, r4
- ldrb r2, [r2]
- bl sub_81C14BC
- b _081C1430
- .pool
-_081C1410:
- ldr r0, [r3]
- ldr r2, =0x000040be
- adds r1, r3, r2
- ldrb r2, [r1]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- adds r0, r1
- ldr r4, =0x000040c6
- adds r1, r3, r4
- ldrb r1, [r1]
- adds r4, 0x1
- adds r2, r3, r4
- ldrb r2, [r2]
- bl sub_81C15EC
-_081C1430:
- ldr r5, =gUnknown_0203CF1C
- ldr r0, [r5]
- adds r0, 0xC
- bl sub_81C0098
- ldr r1, [r5]
- ldr r6, =0x000040c6
- adds r0, r1, r6
- ldrb r0, [r0]
- ldr r4, =0x000040c7
- adds r1, r4
- ldrb r1, [r1]
- bl sub_81C40A0
- ldr r1, [r5]
- adds r0, r1, r6
- ldrb r0, [r0]
- adds r1, r4
- ldrb r1, [r1]
- bl sub_81C4568
- ldr r0, [r5]
- adds r4, r0, r4
- ldrb r1, [r4]
- adds r0, r6
- strb r1, [r0]
-_081C1464:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040c6
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r4, [r1]
- adds r0, r4, 0
- bl sub_81C3E9C
- adds r0, r4, 0
- bl sub_81C240C
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81C0F44
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C13B0
-
- thumb_func_start sub_81C14BC
-sub_81C14BC: @ 81C14BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- adds r7, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- lsls r0, r4, 1
- mov r10, r0
- adds r1, r2, 0
- adds r1, 0x84
- adds r0, r1, r0
- str r0, [sp, 0x8]
- ldrh r0, [r0]
- mov r3, sp
- adds r3, 0x2
- str r3, [sp, 0x1C]
- strh r0, [r3]
- lsls r0, r6, 1
- mov r9, r0
- add r1, r9
- str r1, [sp, 0xC]
- ldrh r1, [r1]
- mov r0, sp
- strh r1, [r0]
- adds r1, r2, 0
- adds r1, 0x8C
- adds r3, r1, r4
- str r3, [sp, 0x10]
- ldrb r0, [r3]
- mov r3, sp
- adds r3, 0x5
- str r3, [sp, 0x24]
- strb r0, [r3]
- adds r1, r6
- str r1, [sp, 0x14]
- ldrb r0, [r1]
- mov r1, sp
- adds r1, 0x4
- str r1, [sp, 0x20]
- strb r0, [r1]
- adds r2, 0xA4
- str r2, [sp, 0x18]
- ldrb r0, [r2]
- mov r5, sp
- adds r5, 0x6
- strb r0, [r5]
- ldr r1, =gUnknown_08329D22
- adds r0, r4, r1
- ldrb r0, [r0]
- mov r8, r0
- ldrb r0, [r5]
- adds r2, r0, 0
- mov r3, r8
- ands r2, r3
- mov r3, r10
- asrs r2, r3
- lsls r2, 24
- lsrs r2, 24
- adds r1, r6, r1
- ldrb r1, [r1]
- mov r12, r1
- adds r1, r0, 0
- mov r3, r12
- ands r1, r3
- mov r3, r9
- asrs r1, r3
- lsls r1, 24
- lsrs r1, 24
- mov r3, r8
- bics r0, r3
- strb r0, [r5]
- ldrb r0, [r5]
- mov r3, r12
- bics r0, r3
- strb r0, [r5]
- mov r0, r9
- lsls r2, r0
- mov r3, r10
- lsls r1, r3
- adds r2, r1
- ldrb r0, [r5]
- orrs r0, r2
- strb r0, [r5]
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r7, 0
- mov r2, sp
- bl SetMonData
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r7, 0
- ldr r2, [sp, 0x1C]
- bl SetMonData
- adds r4, 0x11
- adds r0, r7, 0
- adds r1, r4, 0
- ldr r2, [sp, 0x20]
- bl SetMonData
- adds r6, 0x11
- adds r0, r7, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x24]
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x15
- adds r2, r5, 0
- bl SetMonData
- mov r0, sp
- ldrh r0, [r0]
- ldr r1, [sp, 0x8]
- strh r0, [r1]
- ldr r3, [sp, 0x1C]
- ldrh r0, [r3]
- ldr r1, [sp, 0xC]
- strh r0, [r1]
- ldr r3, [sp, 0x20]
- ldrb r0, [r3]
- ldr r1, [sp, 0x10]
- strb r0, [r1]
- ldr r3, [sp, 0x24]
- ldrb r0, [r3]
- ldr r1, [sp, 0x14]
- strb r0, [r1]
- ldrb r0, [r5]
- ldr r3, [sp, 0x18]
- strb r0, [r3]
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C14BC
-
- thumb_func_start sub_81C15EC
-sub_81C15EC: @ 81C15EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- adds r7, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- lsls r0, r4, 1
- mov r10, r0
- adds r1, r2, 0
- adds r1, 0x84
- adds r0, r1, r0
- str r0, [sp, 0x8]
- ldrh r0, [r0]
- mov r3, sp
- adds r3, 0x2
- str r3, [sp, 0x1C]
- strh r0, [r3]
- lsls r0, r6, 1
- mov r9, r0
- add r1, r9
- str r1, [sp, 0xC]
- ldrh r1, [r1]
- mov r0, sp
- strh r1, [r0]
- adds r1, r2, 0
- adds r1, 0x8C
- adds r3, r1, r4
- str r3, [sp, 0x10]
- ldrb r0, [r3]
- mov r3, sp
- adds r3, 0x5
- str r3, [sp, 0x24]
- strb r0, [r3]
- adds r1, r6
- str r1, [sp, 0x14]
- ldrb r0, [r1]
- mov r1, sp
- adds r1, 0x4
- str r1, [sp, 0x20]
- strb r0, [r1]
- adds r2, 0xA4
- str r2, [sp, 0x18]
- ldrb r0, [r2]
- mov r5, sp
- adds r5, 0x6
- strb r0, [r5]
- ldr r1, =gUnknown_08329D22
- adds r0, r4, r1
- ldrb r0, [r0]
- mov r8, r0
- ldrb r0, [r5]
- adds r2, r0, 0
- mov r3, r8
- ands r2, r3
- mov r3, r10
- asrs r2, r3
- lsls r2, 24
- lsrs r2, 24
- adds r1, r6, r1
- ldrb r1, [r1]
- mov r12, r1
- adds r1, r0, 0
- mov r3, r12
- ands r1, r3
- mov r3, r9
- asrs r1, r3
- lsls r1, 24
- lsrs r1, 24
- mov r3, r8
- bics r0, r3
- strb r0, [r5]
- ldrb r0, [r5]
- mov r3, r12
- bics r0, r3
- strb r0, [r5]
- mov r0, r9
- lsls r2, r0
- mov r3, r10
- lsls r1, r3
- adds r2, r1
- ldrb r0, [r5]
- orrs r0, r2
- strb r0, [r5]
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r7, 0
- mov r2, sp
- bl SetBoxMonData
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r7, 0
- ldr r2, [sp, 0x1C]
- bl SetBoxMonData
- adds r4, 0x11
- adds r0, r7, 0
- adds r1, r4, 0
- ldr r2, [sp, 0x20]
- bl SetBoxMonData
- adds r6, 0x11
- adds r0, r7, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x24]
- bl SetBoxMonData
- adds r0, r7, 0
- movs r1, 0x15
- adds r2, r5, 0
- bl SetBoxMonData
- mov r0, sp
- ldrh r0, [r0]
- ldr r1, [sp, 0x8]
- strh r0, [r1]
- ldr r3, [sp, 0x1C]
- ldrh r0, [r3]
- ldr r1, [sp, 0xC]
- strh r0, [r1]
- ldr r3, [sp, 0x20]
- ldrb r0, [r3]
- ldr r1, [sp, 0x10]
- strb r0, [r1]
- ldr r3, [sp, 0x24]
- ldrb r0, [r3]
- ldr r1, [sp, 0x14]
- strb r0, [r1]
- ldrb r0, [r5]
- ldr r3, [sp, 0x18]
- strb r0, [r3]
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C15EC
-
- thumb_func_start sub_81C171C
-sub_81C171C: @ 81C171C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_81C44F0
- movs r0, 0x8
- bl sub_81C4AF8
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81C174C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C171C
-
- thumb_func_start sub_81C174C
-sub_81C174C: @ 81C174C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C176A
- b _081C189A
-_081C176A:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081C177A
- b _081C189A
-_081C177A:
- ldr r6, =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081C17B4
- movs r0, 0x4
- strh r0, [r4]
- movs r1, 0x1
- negs r1, r1
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c6
- adds r2, r0
- adds r0, r4, 0
- bl sub_81C1070
- b _081C189A
- .pool
-_081C17B4:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081C17DC
- movs r0, 0x4
- strh r0, [r4]
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r1, =0x000040c6
- adds r2, r1
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C1070
- b _081C189A
- .pool
-_081C17DC:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _081C17F0
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C17FC
-_081C17F0:
- movs r1, 0x1
- negs r1, r1
- adds r0, r5, 0
- bl sub_81C0A8C
- b _081C189A
-_081C17FC:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081C1812
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _081C181C
-_081C1812:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_81C0A8C
- b _081C189A
-_081C181C:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081C1876
- bl sub_81C18A8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C1868
- bl sub_81C48F0
- movs r0, 0x5
- bl PlaySE
- ldr r2, =gUnknown_0203CF21
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c6
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r1, =gSpecialVar_0x8005
- ldrb r0, [r2]
- strh r0, [r1]
- adds r0, r5, 0
- bl sub_81C044C
- b _081C189A
- .pool
-_081C1868:
- movs r0, 0x20
- bl PlaySE
- adds r0, r5, 0
- bl sub_81C18F4
- b _081C189A
-_081C1876:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081C189A
- bl sub_81C48F0
- movs r0, 0x5
- bl PlaySE
- ldr r1, =gUnknown_0203CF21
- movs r0, 0x4
- strb r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x4
- strh r0, [r1]
- adds r0, r5, 0
- bl sub_81C044C
-_081C189A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C174C
-
- thumb_func_start sub_81C18A8
-sub_81C18A8: @ 81C18A8
- push {lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c6
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0x4
- beq _081C18DA
- ldr r3, =0x000040c4
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, 0
- beq _081C18DA
- ldrb r1, [r1]
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x84
- adds r0, r1
- ldrh r0, [r0]
- bl sub_81B6D14
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C18EC
-_081C18DA:
- movs r0, 0x1
- b _081C18EE
- .pool
-_081C18EC:
- movs r0, 0
-_081C18EE:
- pop {r1}
- bx r1
- thumb_func_end sub_81C18A8
-
- thumb_func_start sub_81C18F4
-sub_81C18F4: @ 81C18F4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xE
- bl ClearWindowTilemap
- movs r0, 0xF
- bl ClearWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- movs r1, 0x3
- bl sub_81C1DA4
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- bl sub_81C1EFC
- bl sub_81C4154
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81C1940
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C18F4
-
- thumb_func_start sub_81C1940
-sub_81C1940: @ 81C1940
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- mov r8, r0
- ldr r0, =gTasks + 0x8
- mov r9, r0
- mov r4, r8
- add r4, r9
- ldr r0, =sub_81C1E20
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C196C
- b _081C1B74
-_081C196C:
- ldr r6, =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _081C19B0
- movs r0, 0x1
- strh r0, [r4, 0x2]
- movs r0, 0x4
- strh r0, [r4]
- movs r1, 0x1
- negs r1, r1
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c6
- adds r2, r0
- adds r0, r4, 0
- bl sub_81C1070
- movs r0, 0
- strh r0, [r4, 0x2]
- b _081C1B6A
- .pool
-_081C19B0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081C19DC
- movs r0, 0x1
- strh r0, [r4, 0x2]
- movs r0, 0x4
- strh r0, [r4]
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r1, =0x000040c6
- adds r2, r1
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C1070
- strh r5, [r4, 0x2]
- b _081C1B6A
- .pool
-_081C19DC:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _081C19F0
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C1A64
-_081C19F0:
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r2, =0x000040c0
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _081C1A00
- b _081C1B74
-_081C1A00:
- movs r0, 0x13
- bl ClearWindowTilemap
- ldr r2, =gSprites
- ldr r0, [r4]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C1A28
- movs r0, 0xD
- bl ClearWindowTilemap
-_081C1A28:
- ldr r1, [r4]
- ldr r2, =0x000040c6
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r5, [r1]
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, =sub_81C174C
- str r1, [r0]
- movs r1, 0x1
- negs r1, r1
- adds r0, r7, 0
- b _081C1ACE
- .pool
-_081C1A64:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081C1A7A
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _081C1B04
-_081C1A7A:
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _081C1B74
- movs r0, 0x13
- bl ClearWindowTilemap
- ldr r2, =gSprites
- ldr r0, [r4]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C1AB0
- movs r0, 0xD
- bl ClearWindowTilemap
-_081C1AB0:
- ldr r1, [r4]
- ldr r2, =0x000040c6
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r5, [r1]
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, =sub_81C174C
- str r1, [r0]
- adds r0, r7, 0
- movs r1, 0x1
-_081C1ACE:
- bl sub_81C0A8C
- movs r4, 0x2
- negs r4, r4
- movs r0, 0x9
- adds r1, r4, 0
- bl sub_81C1DA4
- movs r0, 0x9
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_81C1EFC
- b _081C1B74
- .pool
-_081C1B04:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _081C1B74
- movs r0, 0x13
- bl ClearWindowTilemap
- ldr r2, =gSprites
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C1B38
- movs r0, 0xD
- bl ClearWindowTilemap
-_081C1B38:
- ldr r1, [r4]
- ldr r2, =0x000040c6
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r5, [r1]
- adds r0, r5, 0
- bl sub_81C3E9C
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r4, 0x3
- negs r4, r4
- movs r0, 0x9
- adds r1, r4, 0
- bl sub_81C1DA4
- movs r0, 0x9
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_81C1EFC
-_081C1B6A:
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, =sub_81C174C
- str r1, [r0]
-_081C1B74:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1940
-
- thumb_func_start sub_81C1B94
-sub_81C1B94: @ 81C1B94
- ldr r0, =gUnknown_0203CF21
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_81C1B94
-
- thumb_func_start sub_81C1BA0
-sub_81C1BA0: @ 81C1BA0
- push {r4-r7,lr}
- sub sp, 0xC
- movs r0, 0x20
- bl Alloc
- adds r4, r0, 0
- movs r5, 0
-_081C1BAE:
- lsls r0, r5, 25
- lsrs r1, r0, 24
- adds r6, r1, 0
- ldr r0, =gUnknown_0203CF1C
- ldr r3, [r0]
- ldr r2, =0x000040c1
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r5, r0
- bcs _081C1BD8
- lsls r0, r1, 1
- adds r0, r4
- movs r1, 0x40
- strh r1, [r0]
- strh r1, [r0, 0x2]
- movs r1, 0x50
- b _081C1BEE
- .pool
-_081C1BD8:
- ldr r7, =0x000040c2
- adds r0, r3, r7
- ldrb r2, [r0]
- cmp r5, r2
- bls _081C1BF8
- lsls r0, r1, 1
- adds r0, r4
- movs r1, 0x4A
- strh r1, [r0]
- strh r1, [r0, 0x2]
- movs r1, 0x5A
-_081C1BEE:
- strh r1, [r0, 0x10]
- strh r1, [r0, 0x12]
- b _081C1C78
- .pool
-_081C1BF8:
- ldr r7, =0x000040c0
- adds r0, r3, r7
- ldrb r0, [r0]
- cmp r5, r0
- bcs _081C1C1C
- lsls r1, 1
- adds r1, r4
- movs r0, 0x46
- strh r0, [r1]
- movs r0, 0x47
- strh r0, [r1, 0x2]
- movs r0, 0x56
- strh r0, [r1, 0x10]
- movs r0, 0x57
- b _081C1C76
- .pool
-_081C1C1C:
- cmp r5, r0
- bne _081C1C4C
- cmp r5, r2
- beq _081C1C38
- lsls r1, 1
- adds r1, r4
- movs r0, 0x41
- strh r0, [r1]
- movs r0, 0x42
- strh r0, [r1, 0x2]
- movs r0, 0x51
- strh r0, [r1, 0x10]
- movs r0, 0x52
- b _081C1C76
-_081C1C38:
- lsls r1, 1
- adds r1, r4
- movs r0, 0x4B
- strh r0, [r1]
- movs r0, 0x4C
- strh r0, [r1, 0x2]
- movs r0, 0x5B
- strh r0, [r1, 0x10]
- movs r0, 0x5C
- b _081C1C76
-_081C1C4C:
- cmp r5, r2
- beq _081C1C64
- lsls r1, 1
- adds r1, r4
- movs r0, 0x43
- strh r0, [r1]
- movs r0, 0x44
- strh r0, [r1, 0x2]
- movs r0, 0x53
- strh r0, [r1, 0x10]
- movs r0, 0x54
- b _081C1C76
-_081C1C64:
- lsls r1, r6, 1
- adds r1, r4
- movs r0, 0x48
- strh r0, [r1]
- movs r0, 0x49
- strh r0, [r1, 0x2]
- movs r0, 0x58
- strh r0, [r1, 0x10]
- movs r0, 0x59
-_081C1C76:
- strh r0, [r1, 0x12]
-_081C1C78:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081C1BAE
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x10
- str r0, [sp, 0x8]
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0xB
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r4, 0
- bl Free
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81C1BA0
-
- thumb_func_start sub_81C1CB0
-sub_81C1CB0: @ 81C1CB0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- mov r8, r1
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r5, r3, 24
- ldrb r1, [r4, 0x6]
- ldrb r0, [r4, 0x7]
- lsls r0, 1
- muls r0, r1
- bl Alloc
- adds r7, r0, 0
- mov r1, sp
- ldrh r0, [r4, 0x4]
- strh r0, [r1]
- ldrb r1, [r4, 0x7]
- ldrb r0, [r4, 0x6]
- adds r2, r1, 0
- muls r2, r0
- movs r0, 0x80
- lsls r0, 17
- orrs r2, r0
- mov r0, sp
- adds r1, r7, 0
- bl CpuSet
- ldrb r0, [r4, 0x6]
- cmp r0, r6
- beq _081C1D60
- cmp r5, 0
- bne _081C1D30
- movs r5, 0
- ldrb r0, [r4, 0x7]
- cmp r5, r0
- bcs _081C1D60
-_081C1D00:
- ldrb r2, [r4, 0x6]
- adds r1, r2, 0
- muls r1, r5
- adds r3, r6, r1
- lsls r3, 1
- ldr r0, [r4]
- adds r0, r3
- lsls r1, 1
- adds r1, r7, r1
- subs r2, r6
- ldr r3, =0x001fffff
- ands r2, r3
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrb r3, [r4, 0x7]
- cmp r5, r3
- bcc _081C1D00
- b _081C1D60
- .pool
-_081C1D30:
- movs r5, 0
- ldrb r0, [r4, 0x7]
- cmp r5, r0
- bcs _081C1D60
-_081C1D38:
- ldrb r2, [r4, 0x6]
- adds r1, r2, 0
- muls r1, r5
- lsls r3, r1, 1
- ldr r0, [r4]
- adds r0, r3
- adds r1, r6, r1
- lsls r1, 1
- adds r1, r7, r1
- subs r2, r6
- ldr r3, =0x001fffff
- ands r2, r3
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrb r3, [r4, 0x7]
- cmp r5, r3
- bcc _081C1D38
-_081C1D60:
- movs r5, 0
- b _081C1D8A
- .pool
-_081C1D68:
- ldrb r2, [r4, 0x6]
- adds r0, r2, 0
- muls r0, r5
- lsls r0, 1
- adds r0, r7, r0
- ldrb r1, [r4, 0x9]
- adds r1, r5
- lsls r1, 5
- ldrb r3, [r4, 0x8]
- adds r1, r3
- lsls r1, 1
- add r1, r8
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_081C1D8A:
- ldrb r0, [r4, 0x7]
- cmp r5, r0
- bcc _081C1D68
- adds r0, r7, 0
- bl Free
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81C1CB0
-
- thumb_func_start sub_81C1DA4
-sub_81C1DA4: @ 81C1DA4
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- asrs r1, 16
- ldr r3, =gUnknown_0861CC04
- ldrb r2, [r3, 0x6]
- cmp r1, r2
- ble _081C1DBA
- adds r4, r2, 0
-_081C1DBA:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, 0
- beq _081C1DC6
- cmp r0, r2
- bne _081C1DE8
-_081C1DC6:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r0, =0x000020bc
- adds r1, r0
- lsls r2, r4, 24
- lsrs r2, 24
- adds r0, r3, 0
- movs r3, 0x1
- bl sub_81C1CB0
- b _081C1E12
- .pool
-_081C1DE8:
- ldr r5, =sub_81C1E20
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _081C1E04
- adds r0, r5, 0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
-_081C1E04:
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- strh r6, [r0, 0xA]
-_081C1E12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1DA4
-
- thumb_func_start sub_81C1E20
-sub_81C1E20: @ 81C1E20
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r4, 0x2]
- lsls r0, 16
- cmp r0, 0
- bge _081C1E50
- movs r0, 0
- strh r0, [r4, 0x2]
- ldr r7, =gUnknown_0861CC04
- b _081C1E60
- .pool
-_081C1E50:
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- ldr r0, =gUnknown_0861CC04
- ldrb r2, [r0, 0x6]
- adds r7, r0, 0
- cmp r1, r2
- ble _081C1E60
- strh r2, [r4, 0x2]
-_081C1E60:
- ldr r5, =gUnknown_0203CF1C
- ldr r1, [r5]
- ldr r0, =0x000020bc
- adds r1, r0
- ldrb r2, [r4, 0x2]
- adds r0, r7, 0
- movs r3, 0x1
- bl sub_81C1CB0
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _081C1E80
- ldrb r7, [r7, 0x6]
- cmp r0, r7
- blt _081C1EE0
-_081C1E80:
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _081C1EAC
- ldr r0, [r5]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _081C1ED4
- movs r0, 0xE
- bl PutWindowTilemap
- b _081C1ED4
- .pool
-_081C1EAC:
- ldr r2, =gSprites
- ldr r0, [r5]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C1ECE
- movs r0, 0xD
- bl PutWindowTilemap
-_081C1ECE:
- movs r0, 0x13
- bl PutWindowTilemap
-_081C1ED4:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r6, 0
- bl DestroyTask
-_081C1EE0:
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1E20
-
- thumb_func_start sub_81C1EFC
-sub_81C1EFC: @ 81C1EFC
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- lsrs r4, r1, 16
- asrs r1, 16
- ldr r3, =gUnknown_0861CC10
- ldrb r2, [r3, 0x6]
- cmp r1, r2
- ble _081C1F16
- adds r4, r2, 0
-_081C1F16:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, 0
- beq _081C1F22
- cmp r0, r2
- bne _081C1F44
-_081C1F22:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r0, =0x000030bc
- adds r1, r0
- lsls r2, r4, 24
- lsrs r2, 24
- adds r0, r3, 0
- movs r3, 0x1
- bl sub_81C1CB0
- b _081C1F70
- .pool
-_081C1F44:
- ldr r5, =sub_81C1F80
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _081C1F60
- adds r0, r5, 0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
-_081C1F60:
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- strh r7, [r0, 0xA]
- strh r6, [r0, 0xC]
-_081C1F70:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1EFC
-
- thumb_func_start sub_81C1F80
-sub_81C1F80: @ 81C1F80
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r4, 0x2]
- lsls r0, 16
- cmp r0, 0
- bge _081C1FB0
- movs r0, 0
- strh r0, [r4, 0x2]
- ldr r7, =gUnknown_0861CC10
- b _081C1FC0
- .pool
-_081C1FB0:
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- ldr r0, =gUnknown_0861CC10
- ldrb r2, [r0, 0x6]
- adds r7, r0, 0
- cmp r1, r2
- ble _081C1FC0
- strh r2, [r4, 0x2]
-_081C1FC0:
- ldr r5, =gUnknown_0203CF1C
- ldr r1, [r5]
- ldr r0, =0x000030bc
- adds r1, r0
- ldrb r2, [r4, 0x2]
- adds r0, r7, 0
- movs r3, 0x1
- bl sub_81C1CB0
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _081C1FE0
- ldrb r7, [r7, 0x6]
- cmp r0, r7
- blt _081C2058
-_081C1FE0:
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _081C2024
- ldr r0, [r5]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C2006
- ldr r0, =sub_81C0B8C
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _081C2006
- movs r0, 0xF
- bl PutWindowTilemap
-_081C2006:
- ldrh r0, [r4, 0x4]
- bl sub_81C240C
- b _081C204C
- .pool
-_081C2024:
- ldr r2, =gSprites
- ldr r0, [r5]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C2046
- movs r0, 0xD
- bl PutWindowTilemap
-_081C2046:
- movs r0, 0x13
- bl PutWindowTilemap
-_081C204C:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r6, 0
- bl DestroyTask
-_081C2058:
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1F80
-
- thumb_func_start sub_81C2074
-sub_81C2074: @ 81C2074
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- asrs r1, 16
- ldr r3, =gUnknown_0861CBEC
- ldrb r2, [r3, 0x6]
- cmp r1, r2
- ble _081C208A
- adds r4, r2, 0
-_081C208A:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, 0
- beq _081C2096
- cmp r0, r2
- bne _081C20C8
-_081C2096:
- ldr r5, =gUnknown_0203CF1C
- ldr r1, [r5]
- adds r1, 0xBC
- lsls r4, 24
- lsrs r4, 24
- adds r0, r3, 0
- adds r2, r4, 0
- movs r3, 0
- bl sub_81C1CB0
- ldr r0, =gUnknown_0861CBF8
- ldr r1, [r5]
- adds r1, 0xBC
- adds r2, r4, 0
- movs r3, 0
- bl sub_81C1CB0
- b _081C20E2
- .pool
-_081C20C8:
- ldr r0, =sub_81C20F0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- strh r5, [r1, 0xA]
-_081C20E2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2074
-
- thumb_func_start sub_81C20F0
-sub_81C20F0: @ 81C20F0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r5, r0, r1
- ldrh r0, [r5]
- ldrh r1, [r5, 0x2]
- adds r0, r1
- strh r0, [r5, 0x2]
- lsls r0, 16
- cmp r0, 0
- bge _081C2120
- movs r0, 0
- strh r0, [r5, 0x2]
- ldr r7, =gUnknown_0861CBEC
- b _081C2130
- .pool
-_081C2120:
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- ldr r0, =gUnknown_0861CBEC
- ldrb r2, [r0, 0x6]
- adds r7, r0, 0
- cmp r1, r2
- ble _081C2130
- strh r2, [r5, 0x2]
-_081C2130:
- ldr r4, =gUnknown_0203CF1C
- ldr r1, [r4]
- adds r1, 0xBC
- ldrb r2, [r5, 0x2]
- adds r0, r7, 0
- movs r3, 0
- bl sub_81C1CB0
- ldr r0, =gUnknown_0861CBF8
- ldr r1, [r4]
- adds r1, 0xBC
- ldrb r2, [r5, 0x2]
- movs r3, 0
- bl sub_81C1CB0
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- cmp r0, 0
- ble _081C2162
- ldrb r7, [r7, 0x6]
- cmp r0, r7
- blt _081C2180
-_081C2162:
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bge _081C217A
- bl sub_81C4A88
- movs r0, 0xD
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
-_081C217A:
- adds r0, r6, 0
- bl DestroyTask
-_081C2180:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C20F0
-
- thumb_func_start sub_81C2194
-sub_81C2194: @ 81C2194
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r2, 24
- lsls r1, 28
- lsrs r4, r1, 16
- ldr r7, =0x0000056a
- cmp r2, 0
- bne _081C21E4
- movs r3, 0
- ldr r5, =gUnknown_08DC3CD4
-_081C21A8:
- adds r2, r7, r3
- lsls r2, 1
- adds r2, r6
- lsls r0, r3, 1
- adds r0, r5
- ldrh r1, [r0]
- adds r1, r4, r1
- strh r1, [r2]
- adds r0, r2, 0
- adds r0, 0x40
- strh r1, [r0]
- adds r2, 0x80
- adds r0, r3, 0
- adds r0, 0x14
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- adds r0, r4, r0
- strh r0, [r2]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x13
- bls _081C21A8
- b _081C221C
- .pool
-_081C21E4:
- movs r3, 0
- ldr r5, =gUnknown_08DC3CD4
-_081C21E8:
- adds r1, r7, r3
- lsls r1, 1
- adds r1, r6
- adds r0, r3, 0
- adds r0, 0x14
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- adds r0, r4, r0
- strh r0, [r1]
- adds r2, r1, 0
- adds r2, 0x40
- adds r0, r3, 0
- adds r0, 0x28
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- adds r0, r4, r0
- strh r0, [r2]
- adds r1, 0x80
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x13
- bls _081C21E8
-_081C221C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2194
-
- thumb_func_start sub_81C2228
-sub_81C2228: @ 81C2228
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- bne _081C225C
- adds r0, r4, 0
- movs r1, 0
- bl CheckPartyHasHadPokerus
- lsls r0, 24
- cmp r0, 0
- beq _081C225C
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r2, =0x00000502
- adds r1, r0, r2
- movs r2, 0x2C
- b _081C2266
- .pool
-_081C225C:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r2, =0x00000502
- adds r1, r0, r2
- ldr r2, =0x0000081a
-_081C2266:
- strh r2, [r1]
- ldr r1, =0x00000d02
- adds r0, r1
- strh r2, [r0]
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2228
-
- thumb_func_start sub_81C228C
-sub_81C228C: @ 81C228C
- push {lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _081C22AC
- movs r0, 0x8
- str r0, [sp]
- str r1, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0x4
- movs r3, 0x8
- bl sub_8199C30
- b _081C22C0
-_081C22AC:
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x5
- str r0, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0x4
- movs r3, 0x8
- bl sub_8199C30
-_081C22C0:
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_81C228C
-
- thumb_func_start sub_81C22CC
-sub_81C22CC: @ 81C22CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- adds r6, r1, 0
- adds r6, 0x70
- ldrb r1, [r6, 0x5]
- mov r8, r0
- cmp r1, 0x63
- bhi _081C2340
- ldr r5, =gExperienceTables
- adds r2, r1, 0
- adds r1, r2, 0x1
- lsls r1, 2
- ldr r4, =gBaseStats
- ldrh r3, [r6]
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r4
- ldrb r3, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r3
- adds r1, r0
- adds r1, r5
- lsls r2, 2
- adds r2, r0
- adds r2, r5
- ldr r1, [r1]
- ldr r2, [r2]
- subs r1, r2
- ldr r0, [r6, 0x10]
- subs r4, r0, r2
- lsls r0, r4, 6
- bl __udivsi3
- adds r6, r0, 0
- movs r7, 0
- adds r0, r7, 0
- orrs r0, r6
- cmp r0, 0
- bne _081C2344
- cmp r4, 0
- beq _081C2344
- movs r6, 0x1
- movs r7, 0
- b _081C2344
- .pool
-_081C2340:
- movs r6, 0
- movs r7, 0
-_081C2344:
- mov r1, r8
- ldr r0, [r1]
- ldr r2, =0x00001d66
- adds r2, r0
- mov r9, r2
- movs r0, 0
- mov r12, r0
- ldr r1, =0x00002062
- mov r10, r1
-_081C2356:
- cmp r7, 0
- bgt _081C2362
- cmp r7, 0
- bne _081C237C
- cmp r6, 0x7
- bls _081C237C
-_081C2362:
- mov r2, r12
- lsls r0, r2, 1
- add r0, r9
- ldr r2, =0x0000206a
- adds r1, r2, 0
- strh r1, [r0]
- b _081C23B6
- .pool
-_081C237C:
- mov r1, r12
- lsls r0, r1, 1
- add r0, r9
- mov r8, r0
- adds r5, r7, 0
- adds r4, r6, 0
- cmp r7, 0
- bge _081C2394
- movs r4, 0x7
- movs r5, 0
- adds r4, r6
- adcs r5, r7
-_081C2394:
- lsls r3, r5, 29
- lsrs r2, r4, 3
- adds r0, r3, 0
- orrs r0, r2
- asrs r1, r5, 3
- lsrs r5, r0, 29
- lsls r4, r1, 3
- adds r3, r5, 0
- orrs r3, r4
- lsls r2, r0, 3
- adds r1, r7, 0
- adds r0, r6, 0
- subs r0, r2
- sbcs r1, r3
- add r0, r10
- mov r2, r8
- strh r0, [r2]
-_081C23B6:
- movs r0, 0x8
- negs r0, r0
- asrs r1, r0, 31
- adds r6, r0
- adcs r7, r1
- cmp r7, 0
- bge _081C23C8
- movs r6, 0
- movs r7, 0
-_081C23C8:
- mov r0, r12
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- cmp r0, 0x7
- bls _081C2356
- movs r0, 0x1
- bl GetBgTilemapBuffer
- ldr r1, =gUnknown_0203CF1C
- ldr r1, [r1]
- ldr r2, =0x000010bc
- adds r1, r2
- cmp r0, r1
- bne _081C23F8
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- b _081C23FE
- .pool
-_081C23F8:
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
-_081C23FE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81C22CC
-
- thumb_func_start sub_81C240C
-sub_81C240C: @ 81C240C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000038bc
- adds r5, r0, r1
- cmp r3, 0
- beq _081C2510
- ldr r1, =gContestEffects
- ldr r2, =gContestMoves
- lsls r3, 3
- adds r0, r3, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x1]
- mov r9, r1
- mov r8, r2
- mov r10, r3
- cmp r4, 0xFF
- beq _081C244C
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r4, r0, 24
-_081C244C:
- movs r2, 0
- movs r6, 0x3
- movs r3, 0xF3
- lsls r3, 2
-_081C2454:
- cmp r4, 0xFF
- beq _081C2484
- cmp r2, r4
- bcs _081C2484
- lsrs r0, r2, 2
- adds r1, r2, 0
- ands r1, r6
- lsls r0, 5
- adds r0, r1
- lsls r0, 1
- adds r0, r5
- adds r0, r3
- ldr r7, =0x0000103a
- b _081C2496
- .pool
-_081C2484:
- lsrs r0, r2, 2
- adds r1, r2, 0
- ands r1, r6
- lsls r0, 5
- adds r0, r1
- lsls r0, 1
- adds r0, r5
- adds r0, r3
- ldr r7, =0x00001039
-_081C2496:
- adds r1, r7, 0
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _081C2454
- mov r0, r10
- add r0, r8
- ldrb r0, [r0]
- lsls r0, 2
- add r0, r9
- ldrb r4, [r0, 0x2]
- cmp r4, 0xFF
- beq _081C24C0
- adds r0, r4, 0
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r4, r0, 24
-_081C24C0:
- movs r2, 0
- movs r6, 0x3
- ldr r3, =0x0000044c
-_081C24C6:
- cmp r4, 0xFF
- beq _081C24F0
- cmp r2, r4
- bcs _081C24F0
- lsrs r0, r2, 2
- adds r1, r2, 0
- ands r1, r6
- lsls r0, 5
- adds r0, r1
- lsls r0, 1
- adds r0, r5
- adds r0, r3
- ldr r7, =0x0000103c
- b _081C2502
- .pool
-_081C24F0:
- lsrs r0, r2, 2
- adds r1, r2, 0
- ands r1, r6
- lsls r0, 5
- adds r0, r1
- lsls r0, 1
- adds r0, r5
- adds r0, r3
- ldr r7, =0x0000103d
-_081C2502:
- adds r1, r7, 0
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _081C24C6
-_081C2510:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C240C
-
- thumb_func_start sub_81C2524
-sub_81C2524: @ 81C2524
- push {lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0x74
- ldrb r0, [r0]
- cmp r0, 0
- beq _081C2544
- movs r1, 0x80
- lsls r1, 9
- movs r0, 0x3
- movs r2, 0
- bl ChangeBgX
- b _081C254E
- .pool
-_081C2544:
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
-_081C254E:
- pop {r0}
- bx r0
- thumb_func_end sub_81C2524
-
- thumb_func_start sub_81C2554
-sub_81C2554: @ 81C2554
- push {r4,r5,lr}
- ldr r0, =gUnknown_0861CC24
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r4, 0
-_081C2562:
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x13
- bls _081C2562
- movs r4, 0
- ldr r5, =gUnknown_0203CF1C
- ldr r3, =0x000040cb
- movs r2, 0xFF
-_081C257C:
- ldr r0, [r5]
- adds r0, r3
- adds r0, r4
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _081C257C
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2554
-
- thumb_func_start sub_81C25A4
-sub_81C25A4: @ 81C25A4
- push {r4-r6,lr}
- sub sp, 0x14
- ldr r4, [sp, 0x24]
- ldr r5, [sp, 0x28]
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- movs r6, 0
- str r6, [sp]
- str r4, [sp, 0x4]
- lsls r4, r5, 1
- adds r4, r5
- ldr r5, =gUnknown_0861CD2C
- adds r4, r5
- str r4, [sp, 0x8]
- str r6, [sp, 0xC]
- str r1, [sp, 0x10]
- movs r1, 0x1
- bl AddTextPrinterParametrized2
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C25A4
-
- thumb_func_start sub_81C25E8
-sub_81C25E8: @ 81C25E8
- push {lr}
- movs r0, 0x11
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x12
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x13
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0x74
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C2618
- bl sub_81C2628
- b _081C261C
- .pool
-_081C2618:
- bl sub_81C2794
-_081C261C:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- pop {r0}
- bx r0
- thumb_func_end sub_81C25E8
-
- thumb_func_start sub_81C2628
-sub_81C2628: @ 81C2628
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- movs r1, 0xC
- adds r1, r0
- mov r8, r1
- adds r7, r0, 0
- adds r7, 0x70
- ldrh r0, [r7]
- bl SpeciesToPokedexNum
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, =0x0000ffff
- cmp r5, r0
- beq _081C26CE
- ldr r6, =gStringVar1
- ldr r1, =gText_UnkCtrlF908Clear01
- adds r0, r6, 0
- bl StringCopy
- ldr r4, =gStringVar2
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- adds r1, r4, 0
- bl StringAppend
- mov r0, r8
- bl IsMonShiny
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _081C26AC
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x11
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- movs r0, 0
- bl sub_81C228C
- b _081C26C6
- .pool
-_081C26AC:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x7
- str r0, [sp, 0x4]
- movs r0, 0x11
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- movs r0, 0x1
- bl sub_81C228C
-_081C26C6:
- movs r0, 0x11
- bl PutWindowTilemap
- b _081C26EE
-_081C26CE:
- movs r0, 0x11
- bl ClearWindowTilemap
- mov r0, r8
- bl IsMonShiny
- lsls r0, 24
- cmp r0, 0
- bne _081C26E8
- movs r0, 0
- bl sub_81C228C
- b _081C26EE
-_081C26E8:
- movs r0, 0x1
- bl sub_81C228C
-_081C26EE:
- ldr r4, =gStringVar1
- ldr r1, =gText_LevelSymbol
- adds r0, r4, 0
- bl StringCopy
- ldr r5, =gStringVar2
- ldrb r1, [r7, 0x5]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- adds r1, r5, 0
- bl StringAppend
- movs r6, 0
- str r6, [sp]
- movs r5, 0x1
- str r5, [sp, 0x4]
- movs r0, 0x13
- adds r1, r4, 0
- movs r2, 0x18
- movs r3, 0x11
- bl sub_81C25A4
- mov r0, r8
- adds r1, r4, 0
- bl GetMonNickname
- str r6, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x12
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- add r1, sp, 0x8
- movs r0, 0xBA
- strb r0, [r1]
- mov r0, sp
- adds r0, 0x9
- ldrh r2, [r7, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- str r6, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x13
- add r1, sp, 0x8
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldrh r1, [r7, 0x2]
- mov r0, r8
- bl sub_81C27DC
- movs r0, 0x12
- bl PutWindowTilemap
- movs r0, 0x13
- bl PutWindowTilemap
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2628
-
- thumb_func_start sub_81C2794
-sub_81C2794: @ 81C2794
- push {r4,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0xC
- ldr r4, =gStringVar1
- adds r1, r4, 0
- bl GetMonNickname
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- movs r0, 0x12
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- movs r0, 0x12
- bl PutWindowTilemap
- movs r0, 0x11
- bl ClearWindowTilemap
- movs r0, 0x13
- bl ClearWindowTilemap
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2794
-
- thumb_func_start sub_81C27DC
-sub_81C27DC: @ 81C27DC
- push {lr}
- sub sp, 0x8
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0x20
- beq _081C282C
- cmp r1, 0x1D
- beq _081C282C
- bl GetMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081C27FE
- cmp r0, 0xFE
- beq _081C2818
- b _081C282C
-_081C27FE:
- ldr r1, =gText_MaleSymbol
- str r0, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- movs r0, 0x13
- movs r2, 0x39
- movs r3, 0x11
- bl sub_81C25A4
- b _081C282C
- .pool
-_081C2818:
- ldr r1, =gText_FemaleSymbol
- movs r0, 0
- str r0, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- movs r0, 0x13
- movs r2, 0x39
- movs r3, 0x11
- bl sub_81C25A4
-_081C282C:
- add sp, 0x8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C27DC
-
- thumb_func_start sub_81C2838
-sub_81C2838: @ 81C2838
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- ldr r3, =gUnknown_0861CDD3
- cmp r1, 0
- bne _081C284A
- subs r3, 0x80
-_081C284A:
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x10
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r4, 0
- adds r1, r3, 0
- movs r3, 0
- bl BlitBitmapToWindow
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2838
-
- thumb_func_start sub_81C286C
-sub_81C286C: @ 81C286C
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r1, =gText_PkmnInfo
- movs r5, 0
- str r5, [sp]
- movs r6, 0x1
- str r6, [sp, 0x4]
- movs r0, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_PkmnSkills
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0x2
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_BattleMoves
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0x2
- movs r2, 0x2
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_ContestMoves
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0x2
- movs r3, 0x1
- bl sub_81C25A4
- ldr r7, =gText_Cancel2
- movs r0, 0x1
- adds r1, r7, 0
- movs r2, 0x3E
- bl GetStringRightAlignXOffset
- adds r4, r0, 0
- adds r2, r4, 0
- subs r2, 0x10
- cmp r2, 0
- bge _081C28CC
- movs r2, 0
-_081C28CC:
- movs r0, 0x4
- movs r1, 0
- bl sub_81C2838
- lsls r2, r4, 24
- lsrs r2, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x4
- adds r1, r7, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r7, =gText_Info
- movs r0, 0x1
- adds r1, r7, 0
- movs r2, 0x3E
- bl GetStringRightAlignXOffset
- adds r4, r0, 0
- adds r2, r4, 0
- subs r2, 0x10
- cmp r2, 0
- bge _081C28FE
- movs r2, 0
-_081C28FE:
- movs r0, 0x5
- movs r1, 0
- bl sub_81C2838
- lsls r2, r4, 24
- lsrs r2, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x5
- adds r1, r7, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r7, =gText_Switch
- movs r0, 0x1
- adds r1, r7, 0
- movs r2, 0x3E
- bl GetStringRightAlignXOffset
- adds r4, r0, 0
- adds r2, r4, 0
- subs r2, 0x10
- cmp r2, 0
- bge _081C2930
- movs r2, 0
-_081C2930:
- movs r0, 0x6
- movs r1, 0
- bl sub_81C2838
- lsls r2, r4, 24
- lsrs r2, 24
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x6
- adds r1, r7, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_RentalPkmn
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0x8
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_TypeSlash
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x9
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r4, =gText_HP4
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x2A
- bl GetStringCenterAlignXOffset
- adds r0, 0x6
- lsls r2, r0, 24
- lsrs r2, 24
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xA
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r4, =gText_Attack3
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x2A
- bl GetStringCenterAlignXOffset
- adds r0, 0x6
- lsls r2, r0, 24
- lsrs r2, 24
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xA
- adds r1, r4, 0
- movs r3, 0x11
- bl sub_81C25A4
- ldr r4, =gText_Defense3
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x2A
- bl GetStringCenterAlignXOffset
- adds r0, 0x6
- lsls r2, r0, 24
- lsrs r2, 24
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xA
- adds r1, r4, 0
- movs r3, 0x21
- bl sub_81C25A4
- ldr r4, =gText_SpAtk4
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x24
- bl GetStringCenterAlignXOffset
- adds r0, 0x2
- lsls r2, r0, 24
- lsrs r2, 24
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xB
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r4, =gText_SpDef4
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x24
- bl GetStringCenterAlignXOffset
- adds r0, 0x2
- lsls r2, r0, 24
- lsrs r2, 24
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xB
- adds r1, r4, 0
- movs r3, 0x11
- bl sub_81C25A4
- ldr r4, =gText_Speed2
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x24
- bl GetStringCenterAlignXOffset
- adds r0, 0x2
- lsls r2, r0, 24
- lsrs r2, 24
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xB
- adds r1, r4, 0
- movs r3, 0x21
- bl sub_81C25A4
- ldr r1, =gText_ExpPoints
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xC
- movs r2, 0x6
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_NextLv
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xC
- movs r2, 0x6
- movs r3, 0x11
- bl sub_81C25A4
- ldr r1, =gText_Status
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xD
- movs r2, 0x2
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_Power
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xE
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_Accuracy2
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xE
- movs r2, 0
- movs r3, 0x11
- bl sub_81C25A4
- ldr r1, =gText_Appeal
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xF
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_Jam
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0xF
- movs r2, 0
- movs r3, 0x11
- bl sub_81C25A4
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C286C
-
- thumb_func_start sub_81C2AFC
-sub_81C2AFC: @ 81C2AFC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- movs r0, 0
- bl ClearWindowTilemap
- movs r0, 0x1
- bl ClearWindowTilemap
- movs r0, 0x2
- bl ClearWindowTilemap
- movs r0, 0x3
- bl ClearWindowTilemap
- cmp r4, 0x1
- beq _081C2B66
- cmp r4, 0x1
- bgt _081C2B2A
- cmp r4, 0
- beq _081C2B34
- b _081C2C06
-_081C2B2A:
- cmp r5, 0x2
- beq _081C2B80
- cmp r5, 0x3
- beq _081C2BC4
- b _081C2C06
-_081C2B34:
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x4
- bl PutWindowTilemap
- bl sub_81A6BF4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C2B58
- bl sub_81B9E94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C2B5E
-_081C2B58:
- movs r0, 0x8
- bl PutWindowTilemap
-_081C2B5E:
- movs r0, 0x9
- bl PutWindowTilemap
- b _081C2C06
-_081C2B66:
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0xA
- bl PutWindowTilemap
- movs r0, 0xB
- bl PutWindowTilemap
- movs r0, 0xC
- bl PutWindowTilemap
- b _081C2C06
-_081C2B80:
- movs r0, 0x2
- bl PutWindowTilemap
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040bc
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C2BBC
- adds r2, 0x8
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r1, =0x00ffffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 11
- cmp r0, r1
- beq _081C2C06
- movs r0, 0xE
- bl PutWindowTilemap
- b _081C2C06
- .pool
-_081C2BBC:
- movs r0, 0x5
- bl PutWindowTilemap
- b _081C2C06
-_081C2BC4:
- movs r0, 0x3
- bl PutWindowTilemap
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040bc
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C2C00
- adds r2, 0x8
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r1, =0x00ffffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 11
- cmp r0, r1
- beq _081C2C06
- movs r0, 0xF
- bl PutWindowTilemap
- b _081C2C06
- .pool
-_081C2C00:
- movs r0, 0x5
- bl PutWindowTilemap
-_081C2C06:
- movs r4, 0
- ldr r5, =gUnknown_0203CF1C
-_081C2C0A:
- ldr r0, [r5]
- ldr r1, =0x000040cb
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- bl PutWindowTilemap
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _081C2C0A
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2AFC
-
- thumb_func_start sub_81C2C38
-sub_81C2C38: @ 81C2C38
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x1
- beq _081C2C84
- cmp r0, 0x1
- bgt _081C2C4E
- cmp r0, 0
- beq _081C2C58
- b _081C2D0E
-_081C2C4E:
- cmp r1, 0x2
- beq _081C2C98
- cmp r1, 0x3
- beq _081C2CD4
- b _081C2D0E
-_081C2C58:
- movs r0, 0x4
- bl ClearWindowTilemap
- bl sub_81A6BF4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C2C76
- bl sub_81B9E94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C2C7C
-_081C2C76:
- movs r0, 0x8
- bl ClearWindowTilemap
-_081C2C7C:
- movs r0, 0x9
- bl ClearWindowTilemap
- b _081C2D0E
-_081C2C84:
- movs r0, 0xA
- bl ClearWindowTilemap
- movs r0, 0xB
- bl ClearWindowTilemap
- movs r0, 0xC
- bl ClearWindowTilemap
- b _081C2D0E
-_081C2C98:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040bc
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C2CCC
- adds r2, 0x8
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r1, =0x00ffffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 11
- cmp r0, r1
- beq _081C2D0E
- movs r0, 0xE
- bl ClearWindowTilemap
- b _081C2D0E
- .pool
-_081C2CCC:
- movs r0, 0x5
- bl ClearWindowTilemap
- b _081C2D0E
-_081C2CD4:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040bc
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C2D08
- adds r2, 0x8
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r1, =0x00ffffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 11
- cmp r0, r1
- beq _081C2D0E
- movs r0, 0xF
- bl ClearWindowTilemap
- b _081C2D0E
- .pool
-_081C2D08:
- movs r0, 0x5
- bl ClearWindowTilemap
-_081C2D0E:
- movs r4, 0
-_081C2D10:
- adds r0, r4, 0
- bl sub_81C2D68
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _081C2D10
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C2C38
-
- thumb_func_start sub_81C2D2C
-sub_81C2D2C: @ 81C2D2C
- push {r4,lr}
- adds r3, r0, 0
- lsls r1, 24
- lsrs r2, r1, 24
- ldr r0, =gUnknown_0203CF1C
- ldr r4, =0x000040cb
- adds r1, r2, r4
- ldr r0, [r0]
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _081C2D56
- lsls r0, r2, 3
- adds r0, r3, r0
- bl AddWindow
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0
- bl FillWindowPixelBuffer
-_081C2D56:
- ldrb r0, [r4]
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81C2D2C
-
- thumb_func_start sub_81C2D68
-sub_81C2D68: @ 81C2D68
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_0203CF1C
- ldr r2, =0x000040cb
- adds r0, r2
- ldr r1, [r1]
- adds r4, r1, r0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _081C2D8C
- bl ClearWindowTilemap
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
-_081C2D8C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2D68
-
- thumb_func_start sub_81C2D9C
-sub_81C2D9C: @ 81C2D9C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
-_081C2DA4:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040cb
- adds r0, r1
- adds r1, r0, r4
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _081C2DBA
- movs r1, 0
- bl FillWindowPixelBuffer
-_081C2DBA:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x7
- bls _081C2DA4
- ldr r0, =gUnknown_0861CE54
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2D9C
-
- thumb_func_start sub_81C2DE4
-sub_81C2DE4: @ 81C2DE4
- push {lr}
- lsls r0, 24
- ldr r1, =gUnknown_0861CE64
- lsrs r0, 22
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x10
- bl CreateTask
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2DE4
-
- thumb_func_start sub_81C2E00
-sub_81C2E00: @ 81C2E00
- push {lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0x74
- ldrb r0, [r0]
- cmp r0, 0
- beq _081C2E24
- bl sub_81C335C
- bl sub_81C33CC
- bl sub_81C3428
- bl sub_81C349C
- b _081C2E3C
- .pool
-_081C2E24:
- bl sub_81C2EC4
- bl sub_81C2F5C
- bl sub_81C2FD8
- bl sub_81C302C
- bl sub_81C307C
- bl sub_81C3194
-_081C2E3C:
- pop {r0}
- bx r0
- thumb_func_end sub_81C2E00
-
- thumb_func_start sub_81C2E40
-sub_81C2E40: @ 81C2E40
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4]
- subs r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bhi _081C2EB8
- lsls r0, 2
- ldr r1, =_081C2E70
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C2E70:
- .4byte _081C2E8C
- .4byte _081C2E92
- .4byte _081C2E98
- .4byte _081C2E9E
- .4byte _081C2EA4
- .4byte _081C2EAA
- .4byte _081C2EB0
-_081C2E8C:
- bl sub_81C2EC4
- b _081C2EB8
-_081C2E92:
- bl sub_81C2F5C
- b _081C2EB8
-_081C2E98:
- bl sub_81C2FD8
- b _081C2EB8
-_081C2E9E:
- bl sub_81C302C
- b _081C2EB8
-_081C2EA4:
- bl sub_81C307C
- b _081C2EB8
-_081C2EAA:
- bl sub_81C3194
- b _081C2EB8
-_081C2EB0:
- adds r0, r2, 0
- bl DestroyTask
- b _081C2EBE
-_081C2EB8:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_081C2EBE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C2E40
-
- thumb_func_start sub_81C2EC4
-sub_81C2EC4: @ 81C2EC4
- push {r4-r6,lr}
- sub sp, 0x8
- bl sub_81A6BF4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C2F54
- bl sub_81B9E94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C2F54
- ldr r0, =gUnknown_0861CCCC
- movs r1, 0
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, =gText_OTSlash
- movs r6, 0
- str r6, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- adds r2, r0, 0
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xA2
- ldrb r0, [r0]
- cmp r0, 0
- bne _081C2F40
- adds r1, 0xA6
- lsls r2, 24
- lsrs r2, 24
- str r6, [sp]
- movs r0, 0x5
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r3, 0x1
- bl sub_81C25A4
- b _081C2F54
- .pool
-_081C2F40:
- adds r1, 0xA6
- lsls r2, 24
- lsrs r2, 24
- str r6, [sp]
- movs r0, 0x6
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r3, 0x1
- bl sub_81C25A4
-_081C2F54:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81C2EC4
-
- thumb_func_start sub_81C2F5C
-sub_81C2F5C: @ 81C2F5C
- push {r4,r5,lr}
- sub sp, 0x8
- bl sub_81A6BF4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C2FC0
- bl sub_81B9E94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C2FC0
- ldr r5, =gStringVar1
- ldr r1, =gText_UnkCtrlF907F908
- adds r0, r5, 0
- bl StringCopy
- ldr r1, =gUnknown_0203CF1C
- ldr r1, [r1]
- adds r1, 0xB8
- ldrh r1, [r1]
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- movs r0, 0x1
- adds r1, r5, 0
- movs r2, 0x38
- bl GetStringRightAlignXOffset
- adds r4, r0, 0
- ldr r0, =gUnknown_0861CCCC
- movs r1, 0x1
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl sub_81C25A4
-_081C2FC0:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2F5C
-
- thumb_func_start sub_81C2FD8
-sub_81C2FD8: @ 81C2FD8
- push {r4,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x70
- ldrh r0, [r0]
- adds r1, 0x78
- ldrb r1, [r1]
- bl GetAbilityBySpecies
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0861CCCC
- movs r1, 0x2
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xD
- muls r1, r4
- ldr r2, =gAbilityNames
- adds r1, r2
- movs r2, 0
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2FD8
-
- thumb_func_start sub_81C302C
-sub_81C302C: @ 81C302C
- push {r4,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x70
- ldrh r0, [r0]
- adds r1, 0x78
- ldrb r1, [r1]
- bl GetAbilityBySpecies
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gUnknown_0861CCCC
- movs r1, 0x2
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gAbilityDescriptionPointers
- lsls r4, 2
- adds r4, r1
- ldr r1, [r4]
- movs r2, 0
- str r2, [sp]
- str r2, [sp, 0x4]
- movs r3, 0x11
- bl sub_81C25A4
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C302C
-
- thumb_func_start sub_81C307C
-sub_81C307C: @ 81C307C
- push {r4-r6,lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x70
- bl sub_81AFBF0
- ldr r1, =gUnknown_0861CE74
- movs r0, 0
- bl sub_81AFC0C
- ldr r1, =gUnknown_0861CE7B
- movs r0, 0x1
- bl sub_81AFC0C
- bl sub_81C31C0
- bl sub_81A6BF4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C30C2
- bl sub_81B9E94
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C30C2
- bl sub_81C3304
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C30E0
-_081C30C2:
- ldr r0, =gStringVar4
- ldr r1, =gText_XNature
- bl sub_81AFC28
- b _081C3182
- .pool
-_081C30E0:
- movs r0, 0x20
- bl Alloc
- adds r6, r0, 0
- movs r0, 0x20
- bl Alloc
- adds r5, r0, 0
- adds r0, r6, 0
- bl sub_81C31F0
- ldrb r0, [r4, 0x9]
- cmp r0, 0xD4
- bhi _081C310C
- adds r1, r0, 0
- adds r0, r5, 0
- bl sub_8124610
- movs r0, 0x4
- adds r1, r5, 0
- bl sub_81AFC0C
-_081C310C:
- bl sub_81C3220
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C3148
- ldrb r0, [r4, 0xA]
- cmp r0, 0
- bne _081C3134
- ldrb r0, [r4, 0x9]
- ldr r1, =gText_XNatureHatchedAtYZ
- cmp r0, 0xD4
- bls _081C3170
- ldr r1, =gText_XNatureHatchedSomewhereAt
- b _081C3170
- .pool
-_081C3134:
- ldrb r0, [r4, 0x9]
- ldr r1, =gText_XNatureMetAtYZ
- cmp r0, 0xD4
- bls _081C3170
- ldr r1, =gText_XNatureMetSomewhereAt
- b _081C3170
- .pool
-_081C3148:
- ldrb r0, [r4, 0x9]
- cmp r0, 0xFF
- bne _081C3158
- ldr r1, =gText_XNatureFatefulEncounter
- b _081C3170
- .pool
-_081C3158:
- cmp r0, 0xFE
- beq _081C316E
- bl sub_81C32BC
- lsls r0, 24
- cmp r0, 0
- beq _081C316E
- ldrb r0, [r4, 0x9]
- ldr r1, =gText_XNatureProbablyMetAt
- cmp r0, 0xD4
- bls _081C3170
-_081C316E:
- ldr r1, =gText_XNatureObtainedInTrade
-_081C3170:
- ldr r0, =gStringVar4
- bl sub_81AFC28
- adds r0, r6, 0
- bl Free
- adds r0, r5, 0
- bl Free
-_081C3182:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C307C
-
- thumb_func_start sub_81C3194
-sub_81C3194: @ 81C3194
- push {lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0861CCCC
- movs r1, 0x3
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gStringVar4
- movs r2, 0
- str r2, [sp]
- str r2, [sp, 0x4]
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C3194
-
- thumb_func_start sub_81C31C0
-sub_81C31C0: @ 81C31C0
- push {lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =gNatureNamePointers
- adds r0, 0xA3
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x2
- bl sub_81AFC0C
- ldr r1, =gText_EmptyString5
- movs r0, 0x5
- bl sub_81AFC0C
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C31C0
-
- thumb_func_start sub_81C31F0
-sub_81C31F0: @ 81C31F0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0x7A
- ldrb r1, [r0]
- cmp r1, 0
- bne _081C3202
- movs r1, 0x5
-_081C3202:
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- movs r0, 0x3
- adds r1, r4, 0
- bl sub_81AFC0C
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C31F0
-
- thumb_func_start sub_81C3220
-sub_81C3220: @ 81C3220
- push {r4-r6,lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r6, r0, 0
- adds r6, 0x70
- ldr r1, [r0]
- ldr r0, =gEnemyParty
- cmp r1, r0
- bne _081C326C
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gLinkPlayers
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldrh r4, [r0]
- adds r0, r1, r2
- ldrb r5, [r0, 0x13]
- ldr r0, =gStringVar1
- adds r2, 0x8
- adds r1, r2
- bl StringCopy
- b _081C3282
- .pool
-_081C326C:
- bl sub_80F0020
- adds r4, r0, 0
- ldr r0, =0x0000ffff
- ands r4, r0
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldrb r5, [r1, 0x8]
- ldr r0, =gStringVar1
- bl StringCopy
-_081C3282:
- adds r0, r6, 0
- adds r0, 0x32
- ldrb r0, [r0]
- cmp r5, r0
- bne _081C32A4
- ldr r0, [r6, 0x48]
- ldr r1, =0x0000ffff
- ands r0, r1
- cmp r4, r0
- bne _081C32A4
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x36
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- beq _081C32B4
-_081C32A4:
- movs r0, 0
- b _081C32B6
- .pool
-_081C32B4:
- movs r0, 0x1
-_081C32B6:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81C3220
-
- thumb_func_start sub_81C32BC
-sub_81C32BC: @ 81C32BC
- push {lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0x70
- ldrb r0, [r0, 0xB]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _081C32D8
- movs r0, 0
- b _081C32DA
- .pool
-_081C32D8:
- movs r0, 0x1
-_081C32DA:
- pop {r1}
- bx r1
- thumb_func_end sub_81C32BC
-
- thumb_func_start sub_81C32E0
-sub_81C32E0: @ 81C32E0
- push {lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r0, 0x70
- ldrb r0, [r0, 0xB]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bls _081C32FC
- movs r0, 0
- b _081C32FE
- .pool
-_081C32FC:
- movs r0, 0x1
-_081C32FE:
- pop {r1}
- bx r1
- thumb_func_end sub_81C32E0
-
- thumb_func_start sub_81C3304
-sub_81C3304: @ 81C3304
- push {lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _081C3354
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081C3354
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040be
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081C333A
- cmp r0, 0x4
- beq _081C333A
- cmp r0, 0x5
- bne _081C3354
-_081C333A:
- movs r0, 0x1
- b _081C3356
- .pool
-_081C3354:
- movs r0, 0
-_081C3356:
- pop {r1}
- bx r1
- thumb_func_end sub_81C3304
-
- thumb_func_start sub_81C335C
-sub_81C335C: @ 81C335C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x8
- ldr r0, =gUnknown_0861CCCC
- movs r1, 0
- bl sub_81C2D2C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =gText_OTSlash
- mov r8, r0
- movs r0, 0x1
- mov r1, r8
- movs r2, 0
- bl GetStringWidth
- adds r5, r0, 0
- movs r0, 0
- mov r9, r0
- str r0, [sp]
- movs r6, 0x1
- str r6, [sp, 0x4]
- adds r0, r4, 0
- mov r1, r8
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gText_FiveMarks
- lsls r5, 24
- lsrs r5, 24
- mov r0, r9
- str r0, [sp]
- str r6, [sp, 0x4]
- adds r0, r4, 0
- adds r2, r5, 0
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C335C
-
- thumb_func_start sub_81C33CC
-sub_81C33CC: @ 81C33CC
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r5, =gStringVar1
- ldr r1, =gText_UnkCtrlF907F908
- adds r0, r5, 0
- bl StringCopy
- ldr r1, =gText_FiveMarks
- adds r0, r5, 0
- bl StringAppend
- movs r0, 0x1
- adds r1, r5, 0
- movs r2, 0x38
- bl GetStringRightAlignXOffset
- adds r4, r0, 0
- ldr r0, =gUnknown_0861CCCC
- movs r1, 0x1
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C33CC
-
- thumb_func_start sub_81C3428
-sub_81C3428: @ 81C3428
- push {r4,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x70
- adds r0, 0xA5
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081C3448
- ldr r4, =gText_EggWillTakeALongTime
- b _081C346C
- .pool
-_081C3448:
- ldrh r0, [r1, 0x30]
- cmp r0, 0x5
- bhi _081C3458
- ldr r4, =gText_EggAboutToHatch
- b _081C346C
- .pool
-_081C3458:
- cmp r0, 0xA
- bhi _081C3464
- ldr r4, =gText_EggWillHatchSoon
- b _081C346C
- .pool
-_081C3464:
- ldr r4, =gText_EggWillTakeALongTime
- cmp r0, 0x28
- bhi _081C346C
- ldr r4, =gText_EggWillTakeSomeTime
-_081C346C:
- ldr r0, =gUnknown_0861CCCC
- movs r1, 0x2
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C3428
-
- thumb_func_start sub_81C349C
-sub_81C349C: @ 81C349C
- push {r4,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x70
- adds r0, 0xA5
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081C3500
- ldrb r0, [r4, 0x9]
- cmp r0, 0xFF
- bne _081C34C4
- ldr r4, =gText_PeculiarEggNicePlace
- b _081C3502
- .pool
-_081C34C4:
- bl sub_81C32BC
- lsls r0, 24
- cmp r0, 0
- beq _081C34D8
- bl sub_81C3220
- lsls r0, 24
- cmp r0, 0
- bne _081C34E0
-_081C34D8:
- ldr r4, =gText_PeculiarEggTrade
- b _081C3502
- .pool
-_081C34E0:
- ldrb r0, [r4, 0x9]
- cmp r0, 0xFD
- bne _081C3500
- bl sub_81C32E0
- lsls r0, 24
- lsrs r0, 24
- ldr r4, =gText_EggFromTraveler
- cmp r0, 0x1
- bne _081C3502
- ldr r4, =gText_EggFromHotSprings
- b _081C3502
- .pool
-_081C3500:
- ldr r4, =gText_OddEggFoundByCouple
-_081C3502:
- ldr r0, =gUnknown_0861CCCC
- movs r1, 0x3
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C349C
-
- thumb_func_start sub_81C3530
-sub_81C3530: @ 81C3530
- push {lr}
- bl sub_81C35E4
- bl sub_81C3690
- bl sub_81C3710
- bl sub_81C37D8
- bl sub_81C3808
- bl sub_81C3890
- bl sub_81C38C0
- pop {r0}
- bx r0
- thumb_func_end sub_81C3530
-
- thumb_func_start sub_81C3554
-sub_81C3554: @ 81C3554
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4]
- subs r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- bhi _081C35D6
- lsls r0, 2
- ldr r1, =_081C3584
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C3584:
- .4byte _081C35A4
- .4byte _081C35AA
- .4byte _081C35B0
- .4byte _081C35B6
- .4byte _081C35BC
- .4byte _081C35C2
- .4byte _081C35C8
- .4byte _081C35CE
-_081C35A4:
- bl sub_81C35E4
- b _081C35D6
-_081C35AA:
- bl sub_81C3690
- b _081C35D6
-_081C35B0:
- bl sub_81C3710
- b _081C35D6
-_081C35B6:
- bl sub_81C37D8
- b _081C35D6
-_081C35BC:
- bl sub_81C3808
- b _081C35D6
-_081C35C2:
- bl sub_81C3890
- b _081C35D6
-_081C35C8:
- bl sub_81C38C0
- b _081C35D6
-_081C35CE:
- adds r0, r2, 0
- bl DestroyTask
- b _081C35DC
-_081C35D6:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_081C35DC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C3554
-
- thumb_func_start sub_81C35E4
-sub_81C35E4: @ 81C35E4
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- adds r0, 0x9E
- ldrh r0, [r0]
- cmp r0, 0xAF
- bne _081C3628
- bl sub_81B1250
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C3628
- ldr r0, [r4]
- ldr r1, =0x000040be
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _081C3614
- cmp r0, 0x4
- beq _081C3614
- cmp r0, 0x5
- bne _081C3628
-_081C3614:
- movs r0, 0xAF
- bl ItemId_GetItem
- adds r5, r0, 0
- b _081C3650
- .pool
-_081C3628:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x9E
- ldrh r0, [r1]
- cmp r0, 0
- bne _081C3644
- ldr r5, =gText_None
- b _081C3650
- .pool
-_081C3644:
- ldrh r0, [r1]
- ldr r4, =gStringVar1
- adds r1, r4, 0
- bl CopyItemName
- adds r5, r4, 0
-_081C3650:
- movs r0, 0x1
- adds r1, r5, 0
- movs r2, 0x48
- bl GetStringCenterAlignXOffset
- adds r4, r0, 0
- adds r4, 0x6
- ldr r0, =gUnknown_0861CCEC
- movs r1, 0
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C35E4
-
- thumb_func_start sub_81C3690
-sub_81C3690: @ 81C3690
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x76
- ldrb r0, [r1]
- cmp r0, 0
- bne _081C36B0
- ldr r5, =gText_None
- b _081C36C8
- .pool
-_081C36B0:
- ldr r0, =gStringVar1
- ldrb r1, [r1]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r4, =gStringVar4
- ldr r1, =gText_RibbonsVar1
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r5, r4, 0
-_081C36C8:
- movs r0, 0x1
- adds r1, r5, 0
- movs r2, 0x46
- bl GetStringCenterAlignXOffset
- adds r4, r0, 0
- adds r4, 0x6
- ldr r0, =gUnknown_0861CCEC
- movs r1, 0x1
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C3690
-
- thumb_func_start sub_81C3710
-sub_81C3710: @ 81C3710
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- movs r0, 0x8
- bl Alloc
- mov r9, r0
- movs r0, 0x8
- bl Alloc
- mov r8, r0
- movs r0, 0x8
- bl Alloc
- adds r6, r0, 0
- movs r0, 0x8
- bl Alloc
- adds r5, r0, 0
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- adds r0, 0x90
- ldrh r1, [r0]
- mov r0, r9
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r4]
- adds r0, 0x92
- ldrh r1, [r0]
- mov r0, r8
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r4]
- adds r0, 0x94
- ldrh r1, [r0]
- adds r0, r6, 0
- movs r2, 0x1
- movs r3, 0x7
- bl ConvertIntToDecimalStringN
- ldr r0, [r4]
- adds r0, 0x96
- ldrh r1, [r0]
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x7
- bl ConvertIntToDecimalStringN
- bl sub_81AFBF0
- movs r0, 0
- mov r1, r9
- bl sub_81AFC0C
- movs r0, 0x1
- mov r1, r8
- bl sub_81AFC0C
- movs r0, 0x2
- adds r1, r6, 0
- bl sub_81AFC0C
- movs r0, 0x3
- adds r1, r5, 0
- bl sub_81AFC0C
- ldr r0, =gStringVar4
- ldr r1, =gUnknown_0861CE82
- bl sub_81AFC28
- mov r0, r9
- bl Free
- mov r0, r8
- bl Free
- adds r0, r6, 0
- bl Free
- adds r0, r5, 0
- bl Free
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C3710
-
- thumb_func_start sub_81C37D8
-sub_81C37D8: @ 81C37D8
- push {lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0861CCEC
- movs r1, 0x2
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gStringVar4
- movs r2, 0
- str r2, [sp]
- str r2, [sp, 0x4]
- movs r2, 0x4
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C37D8
-
- thumb_func_start sub_81C3808
-sub_81C3808: @ 81C3808
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, =gStringVar1
- mov r8, r0
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- adds r0, 0x98
- ldrh r1, [r0]
- mov r0, r8
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r6, =gStringVar2
- ldr r0, [r4]
- adds r0, 0x9A
- ldrh r1, [r0]
- adds r0, r6, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r5, =gStringVar3
- ldr r0, [r4]
- adds r0, 0x9C
- ldrh r1, [r0]
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- bl sub_81AFBF0
- movs r0, 0
- mov r1, r8
- bl sub_81AFC0C
- movs r0, 0x1
- adds r1, r6, 0
- bl sub_81AFC0C
- movs r0, 0x2
- adds r1, r5, 0
- bl sub_81AFC0C
- ldr r0, =gStringVar4
- ldr r1, =gUnknown_0861CE8E
- bl sub_81AFC28
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C3808
-
- thumb_func_start sub_81C3890
-sub_81C3890: @ 81C3890
- push {lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0861CCEC
- movs r1, 0x3
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gStringVar4
- movs r2, 0
- str r2, [sp]
- str r2, [sp, 0x4]
- movs r2, 0x2
- movs r3, 0x1
- bl sub_81C25A4
- add sp, 0x8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C3890
-
- thumb_func_start sub_81C38C0
-sub_81C38C0: @ 81C38C0
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- adds r5, r0, 0
- adds r5, 0x70
- ldr r0, =gUnknown_0861CCEC
- movs r1, 0x4
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, =gStringVar1
- ldr r1, [r5, 0x10]
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x7
- bl ConvertIntToDecimalStringN
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x2A
- bl GetStringRightAlignXOffset
- adds r0, 0x2
- lsls r2, r0, 24
- lsrs r2, 24
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_81C25A4
- ldrb r0, [r5, 0x5]
- cmp r0, 0x63
- bhi _081C3948
- ldr r4, =gExperienceTables
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 2
- ldr r3, =gBaseStats
- ldrh r2, [r5]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3
- ldrb r2, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r2
- adds r1, r0
- adds r1, r4
- ldr r1, [r1]
- ldr r0, [r5, 0x10]
- subs r1, r0
- b _081C394A
- .pool
-_081C3948:
- movs r1, 0
-_081C394A:
- ldr r4, =gStringVar1
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x6
- bl ConvertIntToDecimalStringN
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0x2A
- bl GetStringRightAlignXOffset
- adds r0, 0x2
- lsls r2, r0, 24
- lsrs r2, 24
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- adds r1, r4, 0
- movs r3, 0x11
- bl sub_81C25A4
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C38C0
-
- thumb_func_start sub_81C3984
-sub_81C3984: @ 81C3984
- push {r4,lr}
- movs r0, 0
- bl sub_81C3B08
- movs r0, 0x1
- bl sub_81C3B08
- movs r0, 0x2
- bl sub_81C3B08
- movs r0, 0x3
- bl sub_81C3B08
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r1, =0x000040bc
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C39EA
- bl sub_81C3F44
- ldr r1, [r4]
- ldr r0, =0x000040c6
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0x4
- bne _081C39DC
- ldr r0, =0x000040c4
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _081C39EA
- bl sub_81C3E9C
- b _081C39EA
- .pool
-_081C39DC:
- ldrb r0, [r2]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r0, [r1]
- bl sub_81C3E9C
-_081C39EA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C3984
-
- thumb_func_start sub_81C39F0
-sub_81C39F0: @ 81C39F0
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4]
- subs r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- bhi _081C3AFC
- lsls r0, 2
- ldr r1, =_081C3A20
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C3A20:
- .4byte _081C3A40
- .4byte _081C3A48
- .4byte _081C3A50
- .4byte _081C3A58
- .4byte _081C3A60
- .4byte _081C3A7C
- .4byte _081C3ABE
- .4byte _081C3AF4
-_081C3A40:
- movs r0, 0
- bl sub_81C3B08
- b _081C3AFC
-_081C3A48:
- movs r0, 0x1
- bl sub_81C3B08
- b _081C3AFC
-_081C3A50:
- movs r0, 0x2
- bl sub_81C3B08
- b _081C3AFC
-_081C3A58:
- movs r0, 0x3
- bl sub_81C3B08
- b _081C3AFC
-_081C3A60:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040bc
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C3AFC
- bl sub_81C3F44
- b _081C3AFC
- .pool
-_081C3A7C:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040bc
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C3AFC
- ldr r0, =0x000040c6
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0x4
- bne _081C3AB0
- ldr r2, =0x000040c4
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r4, 0x2]
- b _081C3AFC
- .pool
-_081C3AB0:
- ldrb r0, [r2]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r0, [r1]
- strh r0, [r4, 0x2]
- b _081C3AFC
-_081C3ABE:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r2, =0x000040bc
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C3AFC
- adds r2, 0x8
- adds r0, r1, r2
- ldr r0, [r0]
- ldr r1, =0x00ffffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 11
- cmp r0, r1
- beq _081C3AFC
- ldrh r0, [r4, 0x2]
- bl sub_81C3E9C
- b _081C3AFC
- .pool
-_081C3AF4:
- adds r0, r2, 0
- bl DestroyTask
- b _081C3B02
-_081C3AFC:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_081C3B02:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C39F0
-
- thumb_func_start sub_81C3B08
-sub_81C3B08: @ 81C3B08
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- mov r10, r0
- ldr r4, =gUnknown_0861CD14
- adds r0, r4, 0
- movs r1, 0
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C2D2C
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- lsls r1, r7, 1
- mov r0, r10
- adds r0, 0x84
- adds r0, r1
- ldrh r5, [r0]
- cmp r5, 0
- beq _081C3C00
- mov r0, r10
- adds r0, 0xA4
- ldrb r1, [r0]
- adds r0, r5, 0
- adds r2, r7, 0
- bl CalculatePPWithBonus
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0xD
- adds r1, r5, 0
- muls r1, r0
- ldr r0, =gMoveNames
- adds r1, r0
- lsls r0, r7, 4
- mov r9, r0
- mov r3, r9
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- mov r0, r8
- movs r2, 0
- bl sub_81C25A4
- ldr r0, =gStringVar1
- mov r8, r0
- mov r5, r10
- adds r5, 0x8C
- adds r5, r7
- ldrb r1, [r5]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r4, =gStringVar2
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- bl sub_81AFBF0
- movs r0, 0
- mov r1, r8
- bl sub_81AFC0C
- movs r0, 0x1
- adds r1, r4, 0
- bl sub_81AFC0C
- ldr r4, =gStringVar4
- ldr r1, =gUnknown_0861CE97
- adds r0, r4, 0
- bl sub_81AFC28
- adds r7, r4, 0
- ldrb r0, [r5]
- adds r1, r6, 0
- bl sub_814FC20
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- adds r5, 0x9
- movs r0, 0x1
- adds r1, r7, 0
- movs r2, 0x2C
- bl GetStringRightAlignXOffset
- mov r4, r9
- b _081C3C26
- .pool
-_081C3C00:
- ldr r1, =gText_OneDash
- lsls r4, r7, 4
- adds r3, r4, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- mov r0, r8
- movs r2, 0
- bl sub_81C25A4
- ldr r7, =gText_TwoDashes
- movs r5, 0xC
- movs r0, 0x1
- adds r1, r7, 0
- movs r2, 0x2C
- bl GetStringCenterAlignXOffset
-_081C3C26:
- lsls r2, r0, 24
- lsrs r2, 24
- adds r3, r4, 0x1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- str r0, [sp]
- lsls r0, r5, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldr r0, [sp, 0x8]
- adds r1, r7, 0
- bl sub_81C25A4
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C3B08
-
- thumb_func_start sub_81C3C5C
-sub_81C3C5C: @ 81C3C5C
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _081C3CFC
- movs r0, 0x13
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0xE
- movs r1, 0
- movs r2, 0x35
- movs r3, 0
- bl FillWindowPixelRect
- ldr r2, =gBattleMoves
- lsls r1, r5, 1
- adds r0, r1, r5
- lsls r0, 2
- adds r2, r0, r2
- ldrb r0, [r2, 0x1]
- adds r6, r1, 0
- cmp r0, 0x1
- bhi _081C3C9C
- ldr r1, =gText_ThreeDashes
- b _081C3CAC
- .pool
-_081C3C9C:
- ldr r4, =gStringVar1
- ldrb r1, [r2, 0x1]
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r1, r4, 0
-_081C3CAC:
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0xE
- movs r2, 0x35
- movs r3, 0x1
- bl sub_81C25A4
- ldr r1, =gBattleMoves
- adds r0, r6, r5
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- bne _081C3CDC
- ldr r1, =gText_ThreeDashes
- b _081C3CEC
- .pool
-_081C3CDC:
- ldr r4, =gStringVar1
- ldrb r1, [r1, 0x3]
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r1, r4, 0
-_081C3CEC:
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0xE
- movs r2, 0x35
- movs r3, 0x11
- bl sub_81C25A4
-_081C3CFC:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C3C5C
-
- thumb_func_start sub_81C3D08
-sub_81C3D08: @ 81C3D08
- push {r4,lr}
- movs r0, 0
- bl sub_81C3B08
- movs r0, 0x1
- bl sub_81C3B08
- movs r0, 0x2
- bl sub_81C3B08
- movs r0, 0x3
- bl sub_81C3B08
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r1, =0x000040bc
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C3D40
- bl sub_81C3F44
- ldr r0, [r4]
- ldr r1, =0x000040c6
- adds r0, r1
- ldrb r0, [r0]
- bl sub_81C3E2C
-_081C3D40:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C3D08
-
- thumb_func_start sub_81C3D54
-sub_81C3D54: @ 81C3D54
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4]
- subs r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- bhi _081C3E20
- lsls r0, 2
- ldr r1, =_081C3D84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081C3D84:
- .4byte _081C3DA0
- .4byte _081C3DA8
- .4byte _081C3DB0
- .4byte _081C3DB8
- .4byte _081C3DC0
- .4byte _081C3DDC
- .4byte _081C3E18
-_081C3DA0:
- movs r0, 0
- bl sub_81C3B08
- b _081C3E20
-_081C3DA8:
- movs r0, 0x1
- bl sub_81C3B08
- b _081C3E20
-_081C3DB0:
- movs r0, 0x2
- bl sub_81C3B08
- b _081C3E20
-_081C3DB8:
- movs r0, 0x3
- bl sub_81C3B08
- b _081C3E20
-_081C3DC0:
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040bc
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C3E20
- bl sub_81C3F44
- b _081C3E20
- .pool
-_081C3DDC:
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r1, =0x000040bc
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C3E20
- adds r1, 0x8
- adds r0, r2, r1
- ldr r0, [r0]
- ldr r1, =0x00ffffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 11
- cmp r0, r1
- beq _081C3E20
- ldr r1, =0x000040c6
- adds r0, r2, r1
- ldrb r0, [r0]
- bl sub_81C3E2C
- b _081C3E20
- .pool
-_081C3E18:
- adds r0, r2, 0
- bl DestroyTask
- b _081C3E26
-_081C3E20:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
-_081C3E26:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81C3D54
-
thumb_func_start sub_81C3E2C
sub_81C3E2C: @ 81C3E2C
push {r4,lr}
@@ -8807,7 +981,7 @@ _081C4620:
lsls r0, r2, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x8]
b _081C46D6
@@ -8817,12 +991,12 @@ _081C4668:
lsls r0, r2, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
b _081C46B0
.pool
_081C4680:
- ldr r0, =gBattleSpritesGfx
+ ldr r0, =gMonSpritesGfxPtr
ldr r3, [r0]
adds r4, r0, 0
cmp r3, 0
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 58e60c51d..0c7a80742 100755
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -13136,7 +13136,7 @@ _081CD8E4:
ldr r2, =0x00006325
adds r4, r2
adds r0, r3, 0
- bl sav3_get_box_name
+ bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
_081CD8F4:
@@ -24164,7 +24164,7 @@ _081D2F2C:
adds r4, r5, 0x5
lsls r0, r7, 24
lsrs r0, 24
- bl sav3_get_box_name
+ bl GetBoxNamePtr
adds r1, r0, 0
adds r0, r4, 0
_081D2F3A:
@@ -27356,7 +27356,7 @@ _081D4870:
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl sub_8088E64
+ bl MetatileBehavior_IsPokeGrass
lsls r0, 24
lsrs r0, 24
_081D4888:
@@ -28252,7 +28252,7 @@ _081D4FB6:
lsls r0, 24
cmp r0, 0
beq _081D500C
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _081D4FE6
@@ -28280,7 +28280,7 @@ _081D4FEC:
strb r0, [r4]
b _081D500C
_081D4FF8:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _081D500C
@@ -28673,13 +28673,13 @@ _081D5374:
bl sub_80097E8
b _081D53C0
_081D537A:
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
cmp r0, 0
bne _081D5386
b _081D548A
_081D5386:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
movs r0, 0xF
strb r0, [r4, 0x8]
b _081D548A
@@ -28694,7 +28694,7 @@ _081D5390:
b _081D548A
.pool
_081D53A8:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _081D548A
diff --git a/asm/porthole.s b/asm/porthole.s
deleted file mode 100644
index 282f6f584..000000000
--- a/asm/porthole.s
+++ /dev/null
@@ -1,282 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80FB59C
-sub_80FB59C: @ 80FB59C
- push {r4-r6,lr}
- sub sp, 0xC
- mov r4, sp
- adds r4, 0x5
- mov r5, sp
- adds r5, 0x6
- add r6, sp, 0x8
- add r0, sp, 0x4
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_8137FFC
- lsls r0, 24
- cmp r0, 0
- bne _080FB5DE
- add r0, sp, 0x4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0
- ldrsb r1, [r4, r1]
- movs r2, 0x1
- negs r2, r2
- movs r3, 0
- ldrsb r3, [r5, r3]
- movs r4, 0
- ldrsb r4, [r6, r4]
- str r4, [sp]
- bl warp1_set
- movs r0, 0x1
- b _080FB5E0
-_080FB5DE:
- movs r0, 0
-_080FB5E0:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80FB59C
-
- thumb_func_start sub_80FB5E8
-sub_80FB5E8: @ 80FB5E8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldr r0, =0x000040b4
- bl GetVarPointer
- adds r7, r0, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- adds r6, r3, 0x4
- movs r0, 0
- ldrsh r2, [r4, r0]
- cmp r2, 0x1
- beq _080FB648
- cmp r2, 0x1
- bgt _080FB624
- cmp r2, 0
- beq _080FB62E
- b _080FB6E2
- .pool
-_080FB624:
- cmp r2, 0x2
- beq _080FB68A
- cmp r2, 0x3
- beq _080FB6C4
- b _080FB6E2
-_080FB62E:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080FB6E2
- strh r2, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r4]
- b _080FB6E2
- .pool
-_080FB648:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _080FB656
- strh r2, [r4, 0x2]
-_080FB656:
- ldrb r1, [r6, 0x1]
- ldrb r2, [r3, 0x4]
- movs r0, 0xFF
- bl sub_80D3340
- lsls r0, 24
- cmp r0, 0
- beq _080FB6E2
- movs r0, 0x1
- bl sub_8137FC0
- cmp r0, 0x1
- bne _080FB686
- ldrh r0, [r7]
- cmp r0, 0x2
- bne _080FB680
- movs r0, 0x9
- b _080FB682
- .pool
-_080FB680:
- movs r0, 0xA
-_080FB682:
- strh r0, [r7]
- b _080FB692
-_080FB686:
- movs r0, 0x2
- strh r0, [r4]
-_080FB68A:
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080FB698
-_080FB692:
- movs r0, 0x3
- strh r0, [r4]
- b _080FB6E2
-_080FB698:
- ldrh r0, [r7]
- cmp r0, 0x2
- bne _080FB6AC
- ldrb r1, [r6, 0x1]
- ldrb r2, [r6]
- ldr r3, =gUnknown_0858E8AB
- b _080FB6B2
- .pool
-_080FB6AC:
- ldrb r1, [r6, 0x1]
- ldrb r2, [r6]
- ldr r3, =gUnknown_0858E8AD
-_080FB6B2:
- movs r0, 0xFF
- bl exec_movement
- movs r0, 0x1
- strh r0, [r4]
- b _080FB6E2
- .pool
-_080FB6C4:
- ldr r0, =0x00004001
- bl FlagReset
- movs r0, 0x80
- lsls r0, 7
- bl FlagReset
- movs r0, 0
- bl copy_saved_warp2_bank_and_enter_x_to_warp1
- bl sp13E_warp_to_last_warp
- adds r0, r5, 0
- bl DestroyTask
-_080FB6E2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FB5E8
-
- thumb_func_start sub_80FB6EC
-sub_80FB6EC: @ 80FB6EC
- push {r4,lr}
- sub sp, 0x4
- ldr r1, =SpriteCallbackDummy
- movs r0, 0
- str r0, [sp]
- movs r0, 0x8C
- movs r2, 0x70
- movs r3, 0x50
- bl AddPseudoFieldObject
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r4, r1, r2
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, =0x000040b4
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bne _080FB74C
- movs r0, 0x4
- bl FieldObjectDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- b _080FB75E
- .pool
-_080FB74C:
- movs r0, 0x3
- bl FieldObjectDirectionToImageAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_080FB75E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80FB6EC
-
- thumb_func_start sub_80FB768
-sub_80FB768: @ 80FB768
- push {lr}
- bl sub_80FB6EC
- ldr r2, =gMapObjects
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0, 0x1]
- bl pal_fill_black
- ldr r0, =sub_80FB5E8
- movs r1, 0x50
- bl CreateTask
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FB768
-
- thumb_func_start sub_80FB7A4
-sub_80FB7A4: @ 80FB7A4
- push {lr}
- ldr r0, =0x0000088d
- bl FlagSet
- ldr r0, =0x00004001
- bl FlagSet
- movs r0, 0x80
- lsls r0, 7
- bl FlagSet
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- movs r2, 0x5
- ldrsb r2, [r0, r2]
- movs r3, 0x1
- negs r3, r3
- movs r0, 0
- bl saved_warp2_set
- bl sub_80FB59C
- bl sub_80AF8B8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FB7A4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rayquaza_scene.s b/asm/rayquaza_scene.s
index fdfd22979..f9936f1ca 100755
--- a/asm/rayquaza_scene.s
+++ b/asm/rayquaza_scene.s
@@ -5968,26 +5968,5 @@ _081D99B4:
bx r0
thumb_func_end sub_81D98B4
- thumb_func_start sub_81D99BC
-sub_81D99BC: @ 81D99BC
- push {r4,lr}
- bl sub_80D2578
- cmp r0, 0
- bne _081D99DC
- ldr r4, =gStringVar1
- bl sub_80D2548
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0x1
- b _081D99DE
- .pool
-_081D99DC:
- movs r0, 0
-_081D99DE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D99BC
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
index a62022cc7..7e9ea30d1 100644
--- a/asm/record_mixing.s
+++ b/asm/record_mixing.s
@@ -849,7 +849,7 @@ _080E745A:
strh r0, [r5, 0x20]
b _080E7566
_080E7464:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080E746E
@@ -1066,7 +1066,7 @@ sub_80E7630: @ 80E7630
ldr r1, =gTasks
adds r0, r1
mov r10, r0
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
@@ -1135,7 +1135,7 @@ _080E76DC:
bl memcpy
_080E76E4:
mov r0, r8
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
mov r0, r9
lsls r1, r0, 1
adds r1, r5, r1
@@ -1162,7 +1162,7 @@ _080E7714:
lsrs r0, 24
mov r8, r0
_080E771C:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r8, r0
@@ -1179,7 +1179,7 @@ _080E771C:
adds r1, 0x1
strh r1, [r0, 0x8]
_080E773E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
ldr r4, [sp, 0x8]
@@ -1302,7 +1302,7 @@ sub_80E7810: @ 80E7810
sub_80E7820: @ 80E7820
lsls r0, 24
lsrs r0, 16
- ldr r1, =gUnknown_020223C4
+ ldr r1, =gBlockRecvBuffer
adds r0, r1
bx lr
.pool
@@ -1312,7 +1312,7 @@ sub_80E7820: @ 80E7820
sub_80E7830: @ 80E7830
push {r4,lr}
adds r4, r0, 0
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
@@ -1341,7 +1341,7 @@ _080E7856:
.pool
_080E7868:
movs r0, 0
- bl sub_800A2A4
+ bl GetLinkPlayerTrainerId
adds r2, r0, 0
movs r0, 0x1
ands r2, r0
@@ -1362,7 +1362,7 @@ _080E7880:
.pool
_080E7894:
movs r0, 0
- bl sub_800A2A4
+ bl GetLinkPlayerTrainerId
movs r1, 0x9
bl __umodsi3
adds r2, r0, 0
@@ -1523,7 +1523,7 @@ _080E79CE:
adds r4, r1, 0
adds r4, 0x20
adds r0, r4, 0
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _080E79F2
adds r0, r4, 0
@@ -1738,7 +1738,7 @@ sub_80E7B60: @ 80E7B60
ldr r0, =gLinkPlayers
ldrh r0, [r0, 0x4]
bl SeedRng2
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0
@@ -1878,7 +1878,7 @@ _080E7C9A:
bne _080E7CEE
adds r0, r5, 0
adds r0, 0x24
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _080E7CBA
adds r0, r5, 0
@@ -1901,7 +1901,7 @@ _080E7CC6:
adds r4, r0, 0
adds r0, r5, 0
adds r0, 0x2C
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _080E7CE2
ldrb r0, [r4]
@@ -1931,7 +1931,7 @@ _080E7CFA:
lsrs r0, 16
mov r8, r0
_080E7D04:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r8, r0
@@ -2266,7 +2266,7 @@ sub_80E7F68: @ 80E7F68
bne _080E7FE4
ldrh r0, [r4]
movs r1, 0x1
- bl sub_80D6D1C
+ bl CheckPCHasItem
lsls r0, 24
cmp r0, 0
bne _080E7FE4
@@ -2368,7 +2368,7 @@ _080E807C:
bl sub_800AC34
b _080E80F2
_080E8090:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080E810A
@@ -3557,7 +3557,7 @@ sub_80E89AC: @ 80E89AC
adds r6, r0, 0
mov r8, r1
mov r9, r2
- bl sub_8009FCC
+ bl GetLinkPlayerCount
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
diff --git a/asm/recorded_battle.s b/asm/recorded_battle.s
index 94d96b2f8..2209312c2 100644
--- a/asm/recorded_battle.s
+++ b/asm/recorded_battle.s
@@ -95,7 +95,7 @@ sub_8184E58: @ 8184E58
ldrb r0, [r0]
cmp r0, 0x1
bne _08184EA0
- ldr r1, =gUnknown_0203BD2C
+ ldr r1, =gRecordedBattleRngSeed
ldr r0, =gRngValue
ldr r0, [r0]
str r0, [r1]
@@ -112,7 +112,7 @@ _08184EA0:
cmp r0, 0x2
bne _08184EAC
ldr r0, =gRngValue
- ldr r1, =gUnknown_0203BD2C
+ ldr r1, =gRecordedBattleRngSeed
ldr r1, [r1]
str r1, [r0]
_08184EAC:
@@ -125,7 +125,7 @@ _08184EAC:
bl GetMultiplayerId
ldr r1, =gUnknown_0203C7B4
strb r0, [r1]
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
mov r10, r0
@@ -236,8 +236,8 @@ _08184FA0:
.pool
thumb_func_end sub_8184E58
- thumb_func_start sub_8184FBC
-sub_8184FBC: @ 8184FBC
+ thumb_func_start RecordedBattle_SetBankAction
+RecordedBattle_SetBankAction: @ 8184FBC
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -269,10 +269,10 @@ _08184FF0:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8184FBC
+ thumb_func_end RecordedBattle_SetBankAction
- thumb_func_start sub_8185008
-sub_8185008: @ 8185008
+ thumb_func_start RecordedBattle_ClearBankAction
+RecordedBattle_ClearBankAction: @ 8185008
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -310,7 +310,7 @@ _08185046:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8185008
+ thumb_func_end RecordedBattle_ClearBankAction
thumb_func_start sub_8185054
sub_8185054: @ 8185054
@@ -348,7 +348,7 @@ _0818507A:
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
- ldr r0, =sub_80384E4
+ ldr r0, =CB2_QuitRecordedBattle
bl SetMainCallback2
movs r0, 0xFF
b _081850C6
@@ -505,7 +505,7 @@ _081851D0:
adds r4, 0x1C
adds r5, 0x1
_081851DA:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -681,8 +681,8 @@ _08185332:
bx r1
thumb_func_end sub_81852F0
- thumb_func_start sub_8185338
-sub_8185338: @ 8185338
+ thumb_func_start MoveRecordedBattleToSaveData
+MoveRecordedBattleToSaveData: @ 8185338
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -779,7 +779,7 @@ _081853BA:
movs r4, 0x9D
lsls r4, 3
adds r1, r7, r4
- ldr r5, =gUnknown_0203BD2C
+ ldr r5, =gRecordedBattleRngSeed
ldr r0, [r5]
str r0, [r1]
ldr r0, =gUnknown_0203C7B8
@@ -1469,7 +1469,7 @@ _08185A14:
pop {r1}
bx r1
.pool
- thumb_func_end sub_8185338
+ thumb_func_end MoveRecordedBattleToSaveData
thumb_func_start sub_8185A54
sub_8185A54: @ 8185A54
@@ -1576,7 +1576,7 @@ sub_8185B1C: @ 8185B1C
ldr r0, =gMain
ldr r1, =sub_8185AB0
str r1, [r0, 0x8]
- ldr r0, =sub_8036760
+ ldr r0, =CB2_InitBattle
bl SetMainCallback2
adds r0, r4, 0
bl DestroyTask
@@ -1701,7 +1701,7 @@ _08185C2A:
adds r6, 0x1
cmp r6, 0x3
ble _08185BBE
- ldr r1, =gUnknown_0203BD2C
+ ldr r1, =gRecordedBattleRngSeed
movs r3, 0x9D
lsls r3, 3
adds r0, r7, r3
@@ -2212,7 +2212,7 @@ _081860C2:
ldr r1, [sp, 0x4C]
lsrs r0, r1, 24
movs r1, 0x6
- bl sub_8184FBC
+ bl RecordedBattle_SetBankAction
movs r5, 0
ldr r2, =gUnknown_0203CC70
mov r8, r2
@@ -2241,7 +2241,7 @@ _081860F0:
lsrs r1, 24
ldr r2, [sp, 0x4C]
lsrs r0, r2, 24
- bl sub_8184FBC
+ bl RecordedBattle_SetBankAction
b _08186118
.pool
_08186110:
@@ -2655,8 +2655,8 @@ sub_8186444: @ 8186444
.pool
thumb_func_end sub_8186444
- thumb_func_start rfu_lacks_rfufunc
-rfu_lacks_rfufunc: @ 8186450
+ thumb_func_start sub_8186450
+sub_8186450: @ 8186450
push {lr}
movs r1, 0
ldr r0, =gUnknown_0203CCD0
@@ -2669,7 +2669,7 @@ _0818645E:
pop {r1}
bx r1
.pool
- thumb_func_end rfu_lacks_rfufunc
+ thumb_func_end sub_8186450
thumb_func_start sub_8186468
sub_8186468: @ 8186468
diff --git a/asm/region_map.s b/asm/region_map.s
index 150b4893e..032bdf7a5 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -1939,7 +1939,7 @@ sub_8123C00: @ 8123C00
adds r1, r4, 0
adds r2, r5, 0
adds r3, r6, 0
- bl sub_8137FFC
+ bl GetSSTidalLocation
lsls r0, 24
lsrs r0, 24
mov r10, r5
diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s
index ac2c1181c..1f5ef83d8 100644
--- a/asm/reset_rtc_screen.s
+++ b/asm/reset_rtc_screen.s
@@ -291,7 +291,7 @@ sub_809EB04: @ 809EB04
lsrs r5, 24
ldr r0, =gUnknown_085104C4
bl LoadSpritePalette
- ldr r0, =gUnknown_085104F0
+ ldr r0, =gSpriteTemplate_85104F0
mov r8, r0
movs r1, 0x35
movs r2, 0x44
@@ -655,7 +655,7 @@ sub_809EDE8: @ 809EDE8
lsls r0, r4, 1
adds r0, r4
lsls r0, 2
- ldr r1, =gUnknown_0851041C
+ ldr r1, =gUnknown_08510420 - 0x4
adds r2, r0, r1
ldr r1, =gMain
ldrh r3, [r1, 0x2E]
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
deleted file mode 100644
index f83a11ff1..000000000
--- a/asm/reshow_battle_screen.s
+++ /dev/null
@@ -1,1040 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_35
-nullsub_35: @ 80A92F4
- bx lr
- thumb_func_end nullsub_35
-
- thumb_func_start sub_80A92F8
-sub_80A92F8: @ 80A92F8
- push {lr}
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gBattleScripting
- adds r2, r0, 0
- adds r2, 0x21
- movs r1, 0
- strb r1, [r2]
- adds r0, 0x22
- strb r1, [r0]
- ldr r0, =c2_80777E8
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A92F8
-
- thumb_func_start c2_80777E8
-c2_80777E8: @ 80A933C
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r0, =gBattleScripting
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x13
- bls _080A934C
- b _080A95A4
-_080A934C:
- lsls r0, 2
- ldr r1, =_080A9360
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080A9360:
- .4byte _080A93B0
- .4byte _080A942C
- .4byte _080A9444
- .4byte _080A944A
- .4byte _080A9450
- .4byte _080A9460
- .4byte _080A9466
- .4byte _080A948E
- .4byte _080A9492
- .4byte _080A9496
- .4byte _080A949A
- .4byte _080A94B8
- .4byte _080A94C0
- .4byte _080A94C8
- .4byte _080A94D0
- .4byte _080A94D8
- .4byte _080A94E0
- .4byte _080A94E8
- .4byte _080A94F0
- .4byte _080A94F8
-_080A93B0:
- bl dp12_8087EA4
- bl trs_config
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- bl ResetPaletteFade
- ldr r0, =gUnknown_02022E14
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02022E16
- strh r1, [r0]
- ldr r0, =gUnknown_02022E18
- strh r1, [r0]
- ldr r0, =gUnknown_02022E1A
- strh r1, [r0]
- ldr r0, =gUnknown_02022E1C
- strh r1, [r0]
- ldr r0, =gUnknown_02022E1E
- strh r1, [r0]
- ldr r0, =gUnknown_02022E20
- strh r1, [r0]
- ldr r0, =gUnknown_02022E22
- strh r1, [r0]
- b _080A95D2
- .pool
-_080A942C:
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, =0x01006000
- add r0, sp, 0x4
- bl CpuFastSet
- b _080A95D2
- .pool
-_080A9444:
- bl sub_8035AA4
- b _080A95D2
-_080A944A:
- bl ResetSpriteData
- b _080A95D2
-_080A9450:
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- b _080A95D2
- .pool
-_080A9460:
- bl sub_805E350
- b _080A95D2
-_080A9466:
- ldr r5, =gBattleScripting
- adds r4, r5, 0
- adds r4, 0x22
- ldrb r0, [r4]
- bl sub_805E08C
- lsls r0, 24
- cmp r0, 0
- beq _080A9484
- movs r0, 0
- strb r0, [r4]
- b _080A95D2
- .pool
-_080A9484:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r1, r5, 0
- b _080A94AA
-_080A948E:
- movs r0, 0
- b _080A949C
-_080A9492:
- movs r0, 0x1
- b _080A949C
-_080A9496:
- movs r0, 0x2
- b _080A949C
-_080A949A:
- movs r0, 0x3
-_080A949C:
- bl sub_80A9614
- lsls r0, 24
- cmp r0, 0
- beq _080A94A8
- b _080A95D2
-_080A94A8:
- ldr r1, =gBattleScripting
-_080A94AA:
- adds r1, 0x21
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- b _080A95D2
- .pool
-_080A94B8:
- movs r0, 0
- bl sub_80A9708
- b _080A95D2
-_080A94C0:
- movs r0, 0x1
- bl sub_80A9708
- b _080A95D2
-_080A94C8:
- movs r0, 0x2
- bl sub_80A9708
- b _080A95D2
-_080A94D0:
- movs r0, 0x3
- bl sub_80A9708
- b _080A95D2
-_080A94D8:
- movs r0, 0
- bl sub_80A9ADC
- b _080A95D2
-_080A94E0:
- movs r0, 0x1
- bl sub_80A9ADC
- b _080A95D2
-_080A94E8:
- movs r0, 0x2
- bl sub_80A9ADC
- b _080A95D2
-_080A94F0:
- movs r0, 0x3
- bl sub_80A9ADC
- b _080A95D2
-_080A94F8:
- bl sub_805EC84
- movs r0, 0x1
- bl GetBankByPlayerAI
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r7, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gEnemyParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_805EE54
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- beq _080A955C
- movs r0, 0x3
- bl GetBankByPlayerAI
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_805EE54
-_080A955C:
- ldr r1, =gUnknown_020244AC
- ldr r0, =gBankInMenu
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8059CB4
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _080A95D2
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- beq _080A95D2
- bl sub_800E0E8
- movs r0, 0
- movs r1, 0
- bl sub_800DFB4
- b _080A95D2
- .pool
-_080A95A4:
- ldr r0, =vblank_cb_08078BB4
- bl SetVBlankCallback
- bl sub_80A95F4
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, =sub_8038420
- bl SetMainCallback2
- bl sub_805EF14
-_080A95D2:
- ldr r1, =gBattleScripting
- adds r1, 0x21
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_80777E8
-
- thumb_func_start sub_80A95F4
-sub_80A95F4: @ 80A95F4
- ldr r3, =0x0400000a
- ldrb r2, [r3]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- ldr r2, =0x0400000c
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- bx lr
- .pool
- thumb_func_end sub_80A95F4
-
- thumb_func_start sub_80A9614
-sub_80A9614: @ 80A9614
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- bcs _080A96FC
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080A9676
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r4, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _080A966C
- ldr r1, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_805DC0C
- b _080A96F4
- .pool
-_080A966C:
- adds r0, r4, 0
- movs r1, 0
- bl sub_805E7DC
- b _080A96F4
-_080A9676:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- ands r1, r2
- cmp r1, 0
- beq _080A9698
- cmp r4, 0
- bne _080A9698
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- b _080A96AA
- .pool
-_080A9698:
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _080A96B2
- cmp r4, 0
- bne _080A96B2
- movs r0, 0x6
-_080A96AA:
- movs r1, 0
- bl sub_805DF84
- b _080A96F4
-_080A96B2:
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r4, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _080A96EC
- ldr r1, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_805DD7C
- b _080A96F4
- .pool
-_080A96EC:
- adds r0, r4, 0
- movs r1, 0
- bl sub_805E7DC
-_080A96F4:
- ldr r0, =gBattleScripting
- adds r0, 0x22
- movs r1, 0
- strb r1, [r0]
-_080A96FC:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80A9614
-
- thumb_func_start sub_80A9708
-sub_80A9708: @ 80A9708
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r7, r0
- bcc _080A9722
- b _080A9AA0
-_080A9722:
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0]
- lsls r2, r7, 2
- adds r0, r2, r0
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- str r2, [sp]
- cmp r0, 0
- beq _080A9748
- adds r0, r7, 0
- bl sub_80A614C
- b _080A974E
- .pool
-_080A9748:
- adds r0, r7, 0
- bl sub_80A6138
-_080A974E:
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080A9762
- b _080A986C
-_080A9762:
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r1, 0x64
- mov r10, r1
- mov r2, r10
- muls r2, r0
- adds r0, r2, 0
- ldr r1, =gEnemyParty
- mov r9, r1
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A9786
- b _080A9AA0
-_080A9786:
- ldrh r0, [r6]
- mov r2, r10
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806A068
- ldr r5, =gUnknown_0202499C
- adds r0, r7, 0
- movs r1, 0x2
- bl sub_80A5C6C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_80A82E4
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r1, =gBankSpriteIds
- adds r4, r7, r1
- strb r0, [r4]
- ldr r5, =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0]
- ldr r2, [sp]
- adds r0, r2, r0
- b _080A9A50
- .pool
-_080A986C:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- ands r1, r2
- cmp r1, 0
- beq _080A98D0
- cmp r7, 0
- bne _080A98D0
- ldr r5, =gSaveBlock2Ptr
- ldr r0, [r5]
- ldrb r4, [r0, 0x8]
- movs r0, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806A12C
- ldr r6, =gUnknown_0202499C
- ldr r1, =gUnknown_08305D2C
- ldr r0, [r5]
- ldrb r0, [r0, 0x8]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r0, 0xA0
- lsls r0, 15
- adds r4, r0
- asrs r4, 16
- movs r0, 0
- bl sub_80A82E4
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r6, 0
- b _080A9914
- .pool
-_080A98D0:
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _080A9968
- cmp r7, 0
- bne _080A9968
- movs r0, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x6
- bl sub_806A12C
- ldr r5, =gUnknown_0202499C
- ldr r0, =gUnknown_08305D2C
- ldrb r0, [r0, 0x18]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r1, 0xA0
- lsls r1, 15
- adds r4, r1
- asrs r4, 16
- movs r0, 0
- bl sub_80A82E4
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
-_080A9914:
- movs r1, 0x50
- adds r2, r4, 0
- bl CreateSprite
- ldr r3, =gBankSpriteIds
- strb r0, [r3]
- ldr r4, =gSprites
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x5]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x2E]
- b _080A9A70
- .pool
-_080A9968:
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r2, 0x64
- mov r10, r2
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- ldr r2, =gPlayerParty
- mov r9, r2
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A998C
- b _080A9AA0
-_080A998C:
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806A068
- ldr r5, =gUnknown_0202499C
- adds r0, r7, 0
- movs r1, 0x2
- bl sub_80A5C6C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_80A82E4
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r1, =gBankSpriteIds
- adds r4, r7, r1
- strb r0, [r4]
- ldr r5, =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r2, r10
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0]
- ldr r1, [sp]
- adds r0, r1, r0
-_080A9A50:
- ldrh r1, [r0, 0x2]
- ldr r0, =0x00000181
- cmp r1, r0
- bne _080A9A70
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r0, r5, 0
- adds r0, 0x8
- adds r1, r0
- ldr r0, =gUnknown_08309AAC
- ldr r2, =0x00000604
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
-_080A9A70:
- ldr r1, =gSprites
- ldr r0, =gBankSpriteIds
- adds r0, r7, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldr r0, =gUnknown_020244D0
- ldr r0, [r0]
- ldr r0, [r0]
- ldr r1, [sp]
- adds r0, r1, r0
- ldr r1, [r0]
- lsls r1, 31
- adds r2, 0x3E
- lsrs r1, 31
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_080A9AA0:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A9708
-
- thumb_func_start sub_80A9ADC
-sub_80A9ADC: @ 80A9ADC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080A9AEC
- b _080A9C5E
-_080A9AEC:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- ands r1, r2
- cmp r1, 0
- beq _080A9B0C
- cmp r5, 0
- bne _080A9B0C
- bl battle_make_oam_safari_battle
- b _080A9B24
- .pool
-_080A9B0C:
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _080A9B1E
- cmp r5, 0
- bne _080A9B1E
- b _080A9C5E
-_080A9B1E:
- adds r0, r5, 0
- bl battle_make_oam_normal_battle
-_080A9B24:
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gHealthBoxesIds
- adds r4, r5, r0
- strb r6, [r4]
- adds r0, r5, 0
- bl sub_8072B18
- adds r0, r6, 0
- bl sub_80729D0
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080A9B6C
- ldrb r0, [r4]
- ldr r1, =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, =gEnemyParty
- adds r1, r2
- movs r2, 0
- bl healthbar_draw_field_maybe
- b _080A9BB8
- .pool
-_080A9B6C:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080A9BA0
- ldrb r0, [r4]
- ldr r1, =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, =gPlayerParty
- adds r1, r2
- movs r2, 0xA
- bl healthbar_draw_field_maybe
- b _080A9BB8
- .pool
-_080A9BA0:
- ldrb r0, [r4]
- ldr r1, =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl healthbar_draw_field_maybe
-_080A9BB8:
- adds r0, r5, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080A9BD4
- adds r0, r5, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080A9BF0
-_080A9BD4:
- ldr r0, =gHealthBoxesIds
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0x1
- bl nullsub_30
- b _080A9BFC
- .pool
-_080A9BF0:
- ldr r0, =gHealthBoxesIds
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0
- bl nullsub_30
-_080A9BFC:
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080A9C34
- ldr r0, =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A9C5E
- adds r0, r6, 0
- bl sub_8072984
- b _080A9C5E
- .pool
-_080A9C34:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A9C5E
- ldr r0, =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A9C5E
- adds r0, r6, 0
- bl sub_8072984
-_080A9C5E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A9ADC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/roamer.s b/asm/roamer.s
deleted file mode 100644
index f6b48f10f..000000000
--- a/asm/roamer.s
+++ /dev/null
@@ -1,502 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start ClearRoamerData
-ClearRoamerData: @ 8161B34
- push {r4,r5,lr}
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r4, =0x000031dc
- adds r0, r4
- movs r1, 0
- movs r2, 0x1C
- bl memset
- ldr r0, [r5]
- adds r0, r4
- ldr r1, =0x00000197
- strh r1, [r0, 0x8]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ClearRoamerData
-
- thumb_func_start ClearRoamerLocationData
-ClearRoamerLocationData: @ 8161B60
- push {r4-r6,lr}
- movs r2, 0
- ldr r6, =sRoamerLocation
- ldr r4, =sLocationHistory
- movs r3, 0
- adds r5, r4, 0x1
-_08161B6C:
- lsls r1, r2, 1
- adds r0, r1, r4
- strb r3, [r0]
- adds r1, r5
- strb r3, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _08161B6C
- movs r0, 0
- strb r0, [r6]
- strb r0, [r6, 0x1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ClearRoamerLocationData
-
- thumb_func_start CreateInitialRoamerMon
-CreateInitialRoamerMon: @ 8161B94
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- lsls r0, 16
- cmp r0, 0
- bne _08161BBC
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r2, =0x000031dc
- adds r1, r2
- ldr r2, =0x00000197
- b _08161BC8
- .pool
-_08161BBC:
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r2, =0x000031dc
- adds r1, r2
- movs r2, 0xCC
- lsls r2, 1
-_08161BC8:
- strh r2, [r1, 0x8]
- adds r7, r0, 0
- ldr r6, =gEnemyParty
- ldr r0, [r7]
- ldr r5, =0x000031dc
- adds r0, r5
- ldrh r1, [r0, 0x8]
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r6, 0
- movs r2, 0x28
- movs r3, 0x20
- bl CreateMon
- ldr r0, [r7]
- adds r0, r5
- movs r1, 0x28
- strb r1, [r0, 0xC]
- ldr r0, [r7]
- adds r0, r5
- strb r4, [r0, 0xD]
- ldr r0, [r7]
- adds r0, r5
- movs r1, 0x1
- strb r1, [r0, 0x13]
- adds r0, r6, 0
- movs r1, 0x42
- bl GetMonData
- ldr r1, [r7]
- adds r1, r5
- str r0, [r1]
- adds r0, r6, 0
- movs r1, 0
- bl GetMonData
- ldr r1, [r7]
- adds r1, r5
- str r0, [r1, 0x4]
- adds r0, r6, 0
- movs r1, 0x3A
- bl GetMonData
- ldr r1, [r7]
- adds r1, r5
- movs r2, 0
- mov r8, r2
- strh r0, [r1, 0xA]
- adds r0, r6, 0
- movs r1, 0x16
- bl GetMonData
- ldr r1, [r7]
- adds r1, r5
- strb r0, [r1, 0xE]
- adds r0, r6, 0
- movs r1, 0x17
- bl GetMonData
- ldr r1, [r7]
- adds r1, r5
- strb r0, [r1, 0xF]
- adds r0, r6, 0
- movs r1, 0x18
- bl GetMonData
- ldr r1, [r7]
- adds r1, r5
- strb r0, [r1, 0x10]
- adds r0, r6, 0
- movs r1, 0x21
- bl GetMonData
- ldr r1, [r7]
- adds r1, r5
- strb r0, [r1, 0x11]
- adds r0, r6, 0
- movs r1, 0x2F
- bl GetMonData
- ldr r1, [r7]
- adds r1, r5
- strb r0, [r1, 0x12]
- ldr r4, =sRoamerLocation
- mov r0, r8
- strb r0, [r4]
- bl Random
- ldr r5, =sRoamerLocations
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x14
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- adds r1, r5
- ldrb r0, [r1]
- strb r0, [r4, 0x1]
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end CreateInitialRoamerMon
-
- thumb_func_start InitRoamer
-InitRoamer: @ 8161CBC
- push {lr}
- bl ClearRoamerData
- bl ClearRoamerLocationData
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- bl CreateInitialRoamerMon
- pop {r0}
- bx r0
- .pool
- thumb_func_end InitRoamer
-
- thumb_func_start UpdateLocationHistoryForRoamer
-UpdateLocationHistoryForRoamer: @ 8161CD8
- ldr r0, =sLocationHistory
- ldrb r1, [r0, 0x2]
- strb r1, [r0, 0x4]
- ldrb r1, [r0, 0x3]
- strb r1, [r0, 0x5]
- ldrb r1, [r0]
- strb r1, [r0, 0x2]
- ldrb r1, [r0, 0x1]
- strb r1, [r0, 0x3]
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x4]
- strb r1, [r0]
- ldrb r1, [r2, 0x5]
- strb r1, [r0, 0x1]
- bx lr
- .pool
- thumb_func_end UpdateLocationHistoryForRoamer
-
- thumb_func_start RoamerMoveToOtherLocationSet
-RoamerMoveToOtherLocationSet: @ 8161D00
- push {r4,r5,lr}
- movs r1, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x000031dc
- adds r0, r2
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08161D3E
- ldr r0, =sRoamerLocation
- strb r1, [r0]
- ldr r5, =sRoamerLocations
- adds r4, r0, 0
-_08161D1A:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x14
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- adds r1, r5
- ldrb r1, [r1]
- ldrb r0, [r4, 0x1]
- cmp r0, r1
- beq _08161D1A
- strb r1, [r4, 0x1]
-_08161D3E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end RoamerMoveToOtherLocationSet
-
- thumb_func_start RoamerMove
-RoamerMove: @ 8161D54
- push {r4-r7,lr}
- movs r4, 0
- bl Random
- lsls r0, 16
- movs r1, 0xF0
- lsls r1, 12
- ands r1, r0
- cmp r1, 0
- bne _08161D6E
- bl RoamerMoveToOtherLocationSet
- b _08161DE2
-_08161D6E:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000031dc
- adds r0, r1
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08161DE2
- ldr r7, =sRoamerLocation
- ldr r3, =sRoamerLocations
-_08161D80:
- lsls r0, r4, 1
- adds r0, r4
- lsls r2, r0, 1
- adds r1, r2, r3
- ldrb r0, [r7, 0x1]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08161DD8
- ldr r6, =sRoamerLocations
- adds r5, r2, 0x1
- ldr r4, =sLocationHistory
-_08161D96:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, r5
- adds r0, r6
- ldrb r1, [r0]
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- bne _08161DBA
- ldrb r0, [r4, 0x5]
- cmp r0, r1
- beq _08161D96
-_08161DBA:
- cmp r1, 0xFF
- beq _08161D96
- strb r1, [r7, 0x1]
- b _08161DE2
- .pool
-_08161DD8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x13
- bls _08161D80
-_08161DE2:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end RoamerMove
-
- thumb_func_start IsRoamerAt
-IsRoamerAt: @ 8161DE8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x000031dc
- adds r0, r3
- ldrb r0, [r0, 0x13]
- cmp r0, 0
- beq _08161E20
- ldr r0, =sRoamerLocation
- ldrb r3, [r0]
- cmp r2, r3
- bne _08161E20
- ldrb r0, [r0, 0x1]
- cmp r1, r0
- bne _08161E20
- movs r0, 0x1
- b _08161E22
- .pool
-_08161E20:
- movs r0, 0
-_08161E22:
- pop {r1}
- bx r1
- thumb_func_end IsRoamerAt
-
- thumb_func_start CreateRoamerMonInstance
-CreateRoamerMonInstance: @ 8161E28
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, =gEnemyParty
- bl ZeroEnemyPartyMons
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x000031dc
- adds r0, r1
- ldrh r1, [r0, 0x8]
- ldrb r2, [r0, 0xC]
- ldr r3, [r0]
- ldr r0, [r0, 0x4]
- str r0, [sp]
- adds r0, r5, 0
- bl CreateMonWithIVsPersonality
- ldr r2, [r4]
- ldr r0, =0x000031e9
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x37
- bl SetMonData
- ldr r2, [r4]
- ldr r1, =0x000031e6
- adds r2, r1
- adds r0, r5, 0
- movs r1, 0x39
- bl SetMonData
- ldr r2, [r4]
- ldr r0, =0x000031ea
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x16
- bl SetMonData
- ldr r2, [r4]
- ldr r1, =0x000031eb
- adds r2, r1
- adds r0, r5, 0
- movs r1, 0x17
- bl SetMonData
- ldr r2, [r4]
- ldr r0, =0x000031ec
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x18
- bl SetMonData
- ldr r2, [r4]
- ldr r1, =0x000031ed
- adds r2, r1
- adds r0, r5, 0
- movs r1, 0x21
- bl SetMonData
- ldr r2, [r4]
- ldr r0, =0x000031ee
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x2F
- bl SetMonData
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end CreateRoamerMonInstance
-
- thumb_func_start TryStartRoamerEncounter
-TryStartRoamerEncounter: @ 8161EDC
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldrb r0, [r1, 0x4]
- ldrb r1, [r1, 0x5]
- bl IsRoamerAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08161F10
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- cmp r1, 0
- bne _08161F10
- bl CreateRoamerMonInstance
- movs r0, 0x1
- b _08161F12
- .pool
-_08161F10:
- movs r0, 0
-_08161F12:
- pop {r1}
- bx r1
- thumb_func_end TryStartRoamerEncounter
-
- thumb_func_start UpdateRoamerHPStatus
-UpdateRoamerHPStatus: @ 8161F18
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x39
- bl GetMonData
- ldr r5, =gSaveBlock1Ptr
- ldr r1, [r5]
- ldr r4, =0x000031dc
- adds r1, r4
- strh r0, [r1, 0xA]
- adds r0, r6, 0
- movs r1, 0x37
- bl GetMonData
- ldr r1, [r5]
- adds r1, r4
- strb r0, [r1, 0xD]
- bl RoamerMoveToOtherLocationSet
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end UpdateRoamerHPStatus
-
- thumb_func_start SetRoamerInactive
-SetRoamerInactive: @ 8161F4C
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000031dc
- adds r0, r1
- movs r1, 0
- strb r1, [r0, 0x13]
- bx lr
- .pool
- thumb_func_end SetRoamerInactive
-
- thumb_func_start GetRoamerLocation
-GetRoamerLocation: @ 8161F64
- ldr r3, =sRoamerLocation
- ldrb r2, [r3]
- strb r2, [r0]
- ldrb r0, [r3, 0x1]
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end GetRoamerLocation
-
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom3.s b/asm/rom3.s
deleted file mode 100644
index c3a730836..000000000
--- a/asm/rom3.s
+++ /dev/null
@@ -1,3775 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start battle_wireless_setup_if_required_maybe
-battle_wireless_setup_if_required_maybe: @ 8032654
- push {lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08032686
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _0803266E
- bl sub_800B488
-_0803266E:
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- bne _0803267A
- bl sub_8009734
-_0803267A:
- ldr r0, =task00_08081A90
- movs r1, 0
- bl CreateTask
- bl sub_8033244
-_08032686:
- pop {r0}
- bx r0
- .pool
- thumb_func_end battle_wireless_setup_if_required_maybe
-
- thumb_func_start sub_803269C
-sub_803269C: @ 803269C
- push {r4-r7,lr}
- sub sp, 0x14
- ldr r0, =gBattleMainFunc
- ldr r1, =nullsub_20
- str r1, [r0]
- movs r0, 0
- str r0, [sp, 0x10]
- movs r1, 0
- ldr r7, =gBattleBankFunc
- ldr r6, =gUnknown_020244AC
- movs r2, 0
- ldr r5, =gUnknown_020244B0
- ldr r4, =nullsub_21
- ldr r3, =gBanksBySide
-_080326B8:
- lsls r0, r1, 2
- adds r0, r7
- str r4, [r0]
- adds r1, r3
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, [sp, 0x10]
- adds r0, r6
- strb r2, [r0]
- ldr r0, [sp, 0x10]
- adds r0, r5
- strb r2, [r0]
- ldr r0, [sp, 0x10]
- adds r0, 0x1
- str r0, [sp, 0x10]
- adds r1, r0, 0
- cmp r1, 0x3
- ble _080326B8
- bl battle_wireless_setup_if_required_maybe
- ldr r0, =gBattleExecBuffer
- movs r5, 0
- str r5, [r0]
- bl sub_80A3934
- bl ClearBattleMonForms
- movs r0, 0xF
- bl BattleAI_HandleItemUseBeforeAISetup
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08032728
- bl ZeroEnemyPartyMons
- ldr r4, =gEnemyParty
- movs r1, 0x90
- lsls r1, 1
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- str r5, [sp, 0xC]
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x20
- bl CreateMon
- str r5, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0xC
- add r2, sp, 0x10
- bl SetMonData
-_08032728:
- ldr r0, =gUnknown_02022FF4
- str r5, [r0]
- ldr r0, =gUnknown_0202428C
- strb r5, [r0]
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803269C
-
- thumb_func_start sub_8032768
-sub_8032768: @ 8032768
- push {r4,r5,lr}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- bne _08032784
- movs r0, 0x1
- bl sub_8184DA4
- b _0803278A
- .pool
-_08032784:
- movs r0, 0x2
- bl sub_8184DA4
-_0803278A:
- ldr r4, =gBattleTypeFlags
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- bne _0803279C
- bl sub_8185EB8
-_0803279C:
- ldr r0, [r4]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080327B0
- bl b_setup_bx_link
- b _080327B4
- .pool
-_080327B0:
- bl b_setup_bx
-_080327B4:
- bl sub_8033050
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080327E2
- movs r4, 0
- ldr r0, =gNoOfAllBanks
- ldrb r1, [r0]
- cmp r4, r1
- bge _080327E2
- adds r5, r0, 0
-_080327D0:
- lsls r0, r4, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_81B8D64
- adds r4, 0x1
- ldrb r0, [r5]
- cmp r4, r0
- blt _080327D0
-_080327E2:
- movs r4, 0
- ldr r3, =gBattleStruct
- movs r2, 0xD2
- lsls r2, 1
- movs r1, 0
-_080327EC:
- ldr r0, [r3]
- adds r0, r4, r0
- adds r0, r2
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x5F
- bls _080327EC
- movs r4, 0
- ldr r3, =gBattleStruct
- movs r2, 0x81
- lsls r2, 2
- movs r1, 0
-_08032804:
- ldr r0, [r3]
- adds r0, r4, r0
- adds r0, r2
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x67
- bls _08032804
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8032768
-
- thumb_func_start b_setup_bx
-b_setup_bx: @ 8032824
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gBattleTypeFlags
- ldr r3, [r0]
- movs r5, 0x80
- lsls r5, 15
- ands r5, r3
- cmp r5, 0
- beq _080328E4
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_8039ECC
- str r0, [r1]
- movs r4, 0x80
- lsls r4, 17
- ands r4, r3
- cmp r4, 0
- beq _08032874
- ldr r2, =gBattleBankFunc
- ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand
- str r0, [r2]
- ldr r1, =gBanksBySide
- movs r0, 0
- strb r0, [r1]
- b _0803287E
- .pool
-_08032874:
- ldr r2, =gBattleBankFunc
- ldr r0, =SetBankFuncToPlayerBufferRunCommand
- str r0, [r2]
- ldr r1, =gBanksBySide
- strb r4, [r1]
-_0803287E:
- ldr r3, =SetBankFuncToOpponentBufferRunCommand
- str r3, [r2, 0x4]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- ldr r0, =SetBankFuncToPlayerPartnerBufferRunCommand
- str r0, [r2, 0x8]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- str r3, [r2, 0xC]
- movs r0, 0x3
- strb r0, [r1, 0x3]
- ldr r1, =gNoOfAllBanks
- movs r0, 0x4
- strb r0, [r1]
- movs r0, 0
- movs r1, 0
- bl sub_81B8D64
- movs r0, 0x1
- movs r1, 0
- bl sub_81B8D64
- movs r0, 0x2
- movs r1, 0x1
- bl sub_81B8D64
- movs r0, 0x3
- movs r1, 0x1
- bl sub_81B8D64
- ldr r0, =gBattlePartyID
- movs r1, 0
- strh r1, [r0]
- strh r1, [r0, 0x2]
- movs r1, 0x3
- b _08032A76
- .pool
-_080328E4:
- movs r7, 0x1
- adds r0, r3, 0
- ands r0, r7
- cmp r0, 0
- beq _080328F0
- b _080329E0
-_080328F0:
- ldr r0, =gBattleMainFunc
- ldr r2, =sub_8039ECC
- str r2, [r0]
- movs r1, 0x80
- ands r1, r3
- mov r12, r2
- cmp r1, 0
- beq _08032918
- ldr r1, =gBattleBankFunc
- ldr r0, =SetBankFuncToSafariBufferRunCommand
- b _08032934
- .pool
-_08032918:
- movs r0, 0x80
- lsls r0, 2
- ands r3, r0
- cmp r3, 0
- beq _08032930
- ldr r1, =gBattleBankFunc
- ldr r0, =SetBankFuncToWallyBufferRunCommand
- b _08032934
- .pool
-_08032930:
- ldr r1, =gBattleBankFunc
- ldr r0, =SetBankFuncToPlayerBufferRunCommand
-_08032934:
- str r0, [r1]
- mov r10, r1
- ldr r4, =gBanksBySide
- movs r0, 0
- mov r9, r0
- mov r1, r9
- strb r1, [r4]
- mov r5, r10
- ldr r2, =SetBankFuncToOpponentBufferRunCommand
- mov r8, r2
- str r2, [r5, 0x4]
- movs r6, 0x1
- strb r6, [r4, 0x1]
- ldr r2, =gNoOfAllBanks
- movs r7, 0x2
- strb r7, [r2]
- ldr r0, =gBattleTypeFlags
- ldr r3, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r3
- cmp r0, 0
- bne _08032964
- b _08032CB2
-_08032964:
- movs r1, 0x80
- lsls r1, 18
- ands r1, r3
- cmp r1, 0
- beq _080329CC
- movs r1, 0x80
- lsls r1, 24
- ands r1, r3
- cmp r1, 0
- beq _080329B4
- mov r1, r12
- ldr r0, =gBattleMainFunc
- str r1, [r0]
- ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand
- str r0, [r5]
- mov r1, r9
- strb r1, [r4]
- ldr r0, =SetBankFuncToRecordedOpponentBufferRunCommand
- str r0, [r5, 0x4]
- strb r6, [r4, 0x1]
- strb r7, [r2]
- b _08032CB2
- .pool
-_080329B4:
- ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand
- str r0, [r5, 0x4]
- strb r1, [r4, 0x1]
- ldr r0, =SetBankFuncToRecordedOpponentBufferRunCommand
- str r0, [r5]
- strb r6, [r4]
- strb r7, [r2]
- b _08032CB2
- .pool
-_080329CC:
- ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand
- mov r2, r10
- str r0, [r2]
- strb r1, [r4]
- mov r0, r8
- str r0, [r2, 0x4]
- strb r6, [r4, 0x1]
- b _08032CB2
- .pool
-_080329E0:
- ldr r1, =sub_8039ECC
- ldr r2, =gBattleMainFunc
- str r1, [r2]
- ldr r2, =gBattleBankFunc
- ldr r0, =SetBankFuncToPlayerBufferRunCommand
- str r0, [r2]
- ldr r4, =gBanksBySide
- strb r5, [r4]
- ldr r6, =SetBankFuncToOpponentBufferRunCommand
- str r6, [r2, 0x4]
- strb r7, [r4, 0x1]
- str r0, [r2, 0x8]
- movs r0, 0x2
- mov r12, r0
- mov r1, r12
- strb r1, [r4, 0x2]
- str r6, [r2, 0xC]
- movs r0, 0x3
- mov r8, r0
- mov r1, r8
- strb r1, [r4, 0x3]
- ldr r0, =gNoOfAllBanks
- mov r10, r0
- movs r1, 0x4
- mov r9, r1
- strb r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r3
- cmp r0, 0
- bne _08032A20
- b _08032CB2
-_08032A20:
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, r1
- bne _08032AA0
- ldr r0, =sub_8039ECC
- ldr r1, =gBattleMainFunc
- str r0, [r1]
- ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand
- str r0, [r2]
- strb r5, [r4]
- str r6, [r2, 0x4]
- strb r7, [r4, 0x1]
- str r0, [r2, 0x8]
- mov r0, r12
- strb r0, [r4, 0x2]
- str r6, [r2, 0xC]
- mov r1, r8
- strb r1, [r4, 0x3]
- mov r0, r9
- mov r2, r10
- strb r0, [r2]
- movs r0, 0
- movs r1, 0
- bl sub_81B8D64
- movs r0, 0x1
- movs r1, 0
- bl sub_81B8D64
- movs r0, 0x2
- movs r1, 0x1
- bl sub_81B8D64
- movs r0, 0x3
- movs r1, 0x1
- bl sub_81B8D64
- ldr r0, =gBattlePartyID
- strh r5, [r0]
- strh r5, [r0, 0x2]
- mov r1, r8
-_08032A76:
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- b _08032CB2
- .pool
-_08032AA0:
- movs r5, 0x40
- ands r5, r3
- cmp r5, 0
- bne _08032AAA
- b _08032C3C
-_08032AAA:
- ldr r0, =gUnknown_0203C7B4
- ldrb r5, [r0]
- movs r0, 0
- mov r10, r0
- ldr r1, =gLinkPlayers
- mov r12, r1
- adds r7, r4, 0
- mov r8, r0
- ldr r6, =gBattlePartyID
- movs r4, 0
- movs r2, 0x3
- mov r9, r2
-_08032AC2:
- mov r1, r12
- adds r0, r4, r1
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bgt _08032AE4
- cmp r0, 0x1
- bge _08032AFC
- cmp r0, 0
- beq _08032AE8
- b _08032B06
- .pool
-_08032AE4:
- cmp r0, 0x3
- bne _08032B06
-_08032AE8:
- ldr r0, =gLinkPlayers
- adds r0, r4, r0
- ldrb r0, [r0, 0x18]
- movs r1, 0
- bl sub_81B8D64
- b _08032B06
- .pool
-_08032AFC:
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_81B8D64
-_08032B06:
- cmp r10, r5
- bne _08032B56
- ldr r0, =gLinkPlayers
- adds r3, r4, r0
- ldrh r1, [r3, 0x18]
- lsls r1, 2
- ldr r2, =gBattleBankFunc
- adds r1, r2
- ldr r2, =SetBankFuncToRecordedPlayerBufferRunCommand
- str r2, [r1]
- ldrh r1, [r3, 0x18]
- mov r12, r0
- cmp r1, 0x2
- bgt _08032B38
- cmp r1, 0x1
- bge _08032B4C
- cmp r1, 0
- beq _08032B3C
- b _08032C2C
- .pool
-_08032B38:
- cmp r1, 0x3
- bne _08032C2C
-_08032B3C:
- mov r1, r12
- adds r0, r4, r1
- ldrh r1, [r0, 0x18]
- adds r1, r7
- mov r2, r8
- strb r2, [r1]
- ldrh r0, [r0, 0x18]
- b _08032C12
-_08032B4C:
- adds r1, r7
- movs r0, 0x2
- strb r0, [r1]
- ldrh r0, [r3, 0x18]
- b _08032C24
-_08032B56:
- ldr r2, =gLinkPlayers
- adds r0, r4, r2
- ldrh r1, [r0, 0x18]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- mov r12, r2
- cmp r0, 0
- bne _08032B80
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r12
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08032B92
- b _08032BD8
- .pool
-_08032B80:
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r12
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08032BD8
-_08032B92:
- mov r0, r12
- adds r2, r4, r0
- ldrh r0, [r2, 0x18]
- lsls r0, 2
- ldr r1, =gBattleBankFunc
- adds r0, r1
- ldr r1, =SetBankFuncToRecordedPlayerBufferRunCommand
- str r1, [r0]
- ldrh r1, [r2, 0x18]
- cmp r1, 0x2
- bgt _08032BBC
- cmp r1, 0x1
- bge _08032BD0
- cmp r1, 0
- beq _08032BC0
- b _08032C2C
- .pool
-_08032BBC:
- cmp r1, 0x3
- bne _08032C2C
-_08032BC0:
- mov r2, r12
- adds r0, r4, r2
- ldrh r1, [r0, 0x18]
- adds r1, r7
- mov r2, r8
- strb r2, [r1]
- ldrh r0, [r0, 0x18]
- b _08032C12
-_08032BD0:
- adds r1, r7
- movs r0, 0x2
- strb r0, [r1]
- b _08032C22
-_08032BD8:
- mov r0, r12
- adds r2, r4, r0
- ldrh r0, [r2, 0x18]
- lsls r0, 2
- ldr r1, =gBattleBankFunc
- adds r0, r1
- ldr r1, =SetBankFuncToRecordedOpponentBufferRunCommand
- str r1, [r0]
- ldrh r0, [r2, 0x18]
- cmp r0, 0x2
- bgt _08032C00
- cmp r0, 0x1
- bge _08032C1C
- cmp r0, 0
- beq _08032C04
- b _08032C2C
- .pool
-_08032C00:
- cmp r0, 0x3
- bne _08032C2C
-_08032C04:
- mov r0, r12
- adds r2, r4, r0
- ldrh r0, [r2, 0x18]
- adds r0, r7
- movs r1, 0x1
- strb r1, [r0]
- ldrh r0, [r2, 0x18]
-_08032C12:
- lsls r0, 1
- adds r0, r6
- mov r1, r8
- strh r1, [r0]
- b _08032C2C
-_08032C1C:
- adds r0, r7
- mov r1, r9
- strb r1, [r0]
-_08032C22:
- ldrh r0, [r2, 0x18]
-_08032C24:
- lsls r0, 1
- adds r0, r6
- mov r2, r9
- strh r2, [r0]
-_08032C2C:
- adds r4, 0x1C
- movs r0, 0x1
- add r10, r0
- mov r1, r10
- cmp r1, 0x3
- bgt _08032C3A
- b _08032AC2
-_08032C3A:
- b _08032CB2
-_08032C3C:
- movs r1, 0x4
- ands r1, r3
- cmp r1, 0
- beq _08032C7C
- ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand
- str r0, [r2]
- strb r5, [r4]
- str r0, [r2, 0x8]
- mov r0, r12
- strb r0, [r4, 0x2]
- movs r0, 0x80
- lsls r0, 18
- ands r3, r0
- cmp r3, 0
- beq _08032C70
- ldr r0, =SetBankFuncToRecordedOpponentBufferRunCommand
- str r0, [r2, 0x4]
- strb r7, [r4, 0x1]
- str r0, [r2, 0xC]
- mov r1, r8
- strb r1, [r4, 0x3]
- b _08032CB2
- .pool
-_08032C70:
- str r6, [r2, 0x4]
- strb r7, [r4, 0x1]
- str r6, [r2, 0xC]
- mov r2, r8
- strb r2, [r4, 0x3]
- b _08032CB2
-_08032C7C:
- ldr r0, =SetBankFuncToRecordedPlayerBufferRunCommand
- str r0, [r2, 0x4]
- strb r1, [r4, 0x1]
- str r0, [r2, 0xC]
- mov r0, r12
- strb r0, [r4, 0x3]
- movs r0, 0x80
- lsls r0, 18
- ands r3, r0
- cmp r3, 0
- beq _08032CA8
- ldr r0, =SetBankFuncToRecordedOpponentBufferRunCommand
- str r0, [r2]
- strb r7, [r4]
- str r0, [r2, 0x8]
- mov r1, r8
- strb r1, [r4, 0x2]
- b _08032CB2
- .pool
-_08032CA8:
- str r6, [r2]
- strb r7, [r4]
- str r6, [r2, 0x8]
- mov r2, r8
- strb r2, [r4, 0x2]
-_08032CB2:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end b_setup_bx
-
- thumb_func_start b_setup_bx_link
-b_setup_bx_link: @ 8032CC0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, =gBattleTypeFlags
- ldr r1, [r4]
- movs r5, 0x1
- adds r3, r1, 0
- ands r3, r5
- cmp r3, 0
- bne _08032D48
- movs r4, 0x4
- ands r4, r1
- cmp r4, 0
- beq _08032D1C
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_8039ECC
- str r0, [r1]
- ldr r2, =gBattleBankFunc
- ldr r0, =SetBankFuncToPlayerBufferRunCommand
- str r0, [r2]
- ldr r1, =gBanksBySide
- strb r3, [r1]
- ldr r0, =SetBankFuncToLinkOpponentBufferRunCommand
- str r0, [r2, 0x4]
- strb r5, [r1, 0x1]
- ldr r1, =gNoOfAllBanks
- movs r0, 0x2
- b _0803303A
- .pool
-_08032D1C:
- ldr r2, =gBattleBankFunc
- ldr r0, =SetBankFuncToPlayerBufferRunCommand
- str r0, [r2, 0x4]
- ldr r1, =gBanksBySide
- strb r4, [r1, 0x1]
- ldr r0, =SetBankFuncToLinkOpponentBufferRunCommand
- str r0, [r2]
- strb r5, [r1]
- ldr r1, =gNoOfAllBanks
- movs r0, 0x2
- b _0803303A
- .pool
-_08032D48:
- movs r0, 0x41
- ands r0, r1
- cmp r0, 0x1
- bne _08032DD0
- movs r6, 0x4
- adds r3, r6, 0
- ands r3, r1
- cmp r3, 0
- beq _08032D98
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_8039ECC
- str r0, [r1]
- ldr r2, =gBattleBankFunc
- ldr r4, =SetBankFuncToPlayerBufferRunCommand
- str r4, [r2]
- ldr r1, =gBanksBySide
- movs r0, 0
- strb r0, [r1]
- ldr r3, =SetBankFuncToLinkOpponentBufferRunCommand
- str r3, [r2, 0x4]
- strb r5, [r1, 0x1]
- str r4, [r2, 0x8]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- str r3, [r2, 0xC]
- movs r0, 0x3
- strb r0, [r1, 0x3]
- b _08032DB4
- .pool
-_08032D98:
- ldr r2, =gBattleBankFunc
- ldr r0, =SetBankFuncToPlayerBufferRunCommand
- str r0, [r2, 0x4]
- ldr r1, =gBanksBySide
- strb r3, [r1, 0x1]
- ldr r3, =SetBankFuncToLinkOpponentBufferRunCommand
- str r3, [r2]
- strb r5, [r1]
- str r0, [r2, 0xC]
- movs r0, 0x2
- strb r0, [r1, 0x3]
- str r3, [r2, 0x8]
- movs r0, 0x3
- strb r0, [r1, 0x2]
-_08032DB4:
- ldr r0, =gNoOfAllBanks
- strb r6, [r0]
- b _0803303C
- .pool
-_08032DD0:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08032E8C
- movs r4, 0x4
- adds r3, r4, 0
- ands r3, r1
- cmp r3, 0
- beq _08032E1C
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_8039ECC
- str r0, [r1]
- ldr r2, =gBattleBankFunc
- ldr r0, =SetBankFuncToPlayerBufferRunCommand
- str r0, [r2]
- ldr r1, =gBanksBySide
- movs r0, 0
- strb r0, [r1]
- ldr r3, =SetBankFuncToOpponentBufferRunCommand
- str r3, [r2, 0x4]
- strb r5, [r1, 0x1]
- ldr r0, =SetBankFuncToLinkPartnerBufferRunCommand
- b _08032E2E
- .pool
-_08032E1C:
- ldr r2, =gBattleBankFunc
- ldr r0, =SetBankFuncToLinkPartnerBufferRunCommand
- str r0, [r2]
- ldr r1, =gBanksBySide
- strb r3, [r1]
- ldr r3, =SetBankFuncToLinkOpponentBufferRunCommand
- str r3, [r2, 0x4]
- strb r5, [r1, 0x1]
- ldr r0, =SetBankFuncToPlayerBufferRunCommand
-_08032E2E:
- str r0, [r2, 0x8]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- str r3, [r2, 0xC]
- movs r0, 0x3
- strb r0, [r1, 0x3]
- ldr r0, =gNoOfAllBanks
- strb r4, [r0]
- movs r0, 0
- movs r1, 0
- bl sub_81B8D64
- movs r0, 0x1
- movs r1, 0
- bl sub_81B8D64
- movs r0, 0x2
- movs r1, 0x1
- bl sub_81B8D64
- movs r0, 0x3
- movs r1, 0x1
- bl sub_81B8D64
- ldr r0, =gBattlePartyID
- movs r1, 0
- strh r1, [r0]
- strh r1, [r0, 0x2]
- movs r1, 0x3
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- b _0803303C
- .pool
-_08032E8C:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r4]
- movs r1, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08032EA4
- ldr r1, =gBattleMainFunc
- ldr r0, =sub_8039ECC
- str r0, [r1]
-_08032EA4:
- movs r0, 0
- mov r10, r0
- ldr r1, =gLinkPlayers
- mov r12, r1
- ldr r7, =gBanksBySide
- mov r8, r0
- ldr r6, =gBattlePartyID
- movs r4, 0
- movs r2, 0x3
- mov r9, r2
-_08032EB8:
- mov r1, r12
- adds r0, r4, r1
- ldrh r0, [r0, 0x18]
- cmp r0, 0x2
- bgt _08032EE0
- cmp r0, 0x1
- bge _08032EF8
- cmp r0, 0
- beq _08032EE4
- b _08032F02
- .pool
-_08032EE0:
- cmp r0, 0x3
- bne _08032F02
-_08032EE4:
- ldr r0, =gLinkPlayers
- adds r0, r4, r0
- ldrb r0, [r0, 0x18]
- movs r1, 0
- bl sub_81B8D64
- b _08032F02
- .pool
-_08032EF8:
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- bl sub_81B8D64
-_08032F02:
- cmp r10, r5
- bne _08032F52
- ldr r0, =gLinkPlayers
- adds r3, r4, r0
- ldrh r1, [r3, 0x18]
- lsls r1, 2
- ldr r2, =gBattleBankFunc
- adds r1, r2
- ldr r2, =SetBankFuncToPlayerBufferRunCommand
- str r2, [r1]
- ldrh r1, [r3, 0x18]
- mov r12, r0
- cmp r1, 0x2
- bgt _08032F34
- cmp r1, 0x1
- bge _08032F48
- cmp r1, 0
- beq _08032F38
- b _08033028
- .pool
-_08032F34:
- cmp r1, 0x3
- bne _08033028
-_08032F38:
- mov r1, r12
- adds r0, r4, r1
- ldrh r1, [r0, 0x18]
- adds r1, r7
- mov r2, r8
- strb r2, [r1]
- ldrh r0, [r0, 0x18]
- b _0803300E
-_08032F48:
- adds r1, r7
- movs r0, 0x2
- strb r0, [r1]
- ldrh r0, [r3, 0x18]
- b _08033020
-_08032F52:
- ldr r2, =gLinkPlayers
- adds r0, r4, r2
- ldrh r1, [r0, 0x18]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- mov r12, r2
- cmp r0, 0
- bne _08032F7C
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r12
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08032F8E
- b _08032FD4
- .pool
-_08032F7C:
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r12
- ldrh r1, [r0, 0x18]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08032FD4
-_08032F8E:
- mov r0, r12
- adds r2, r4, r0
- ldrh r0, [r2, 0x18]
- lsls r0, 2
- ldr r1, =gBattleBankFunc
- adds r0, r1
- ldr r1, =SetBankFuncToLinkPartnerBufferRunCommand
- str r1, [r0]
- ldrh r1, [r2, 0x18]
- cmp r1, 0x2
- bgt _08032FB8
- cmp r1, 0x1
- bge _08032FCC
- cmp r1, 0
- beq _08032FBC
- b _08033028
- .pool
-_08032FB8:
- cmp r1, 0x3
- bne _08033028
-_08032FBC:
- mov r2, r12
- adds r0, r4, r2
- ldrh r1, [r0, 0x18]
- adds r1, r7
- mov r2, r8
- strb r2, [r1]
- ldrh r0, [r0, 0x18]
- b _0803300E
-_08032FCC:
- adds r1, r7
- movs r0, 0x2
- strb r0, [r1]
- b _0803301E
-_08032FD4:
- mov r0, r12
- adds r2, r4, r0
- ldrh r0, [r2, 0x18]
- lsls r0, 2
- ldr r1, =gBattleBankFunc
- adds r0, r1
- ldr r1, =SetBankFuncToLinkOpponentBufferRunCommand
- str r1, [r0]
- ldrh r0, [r2, 0x18]
- cmp r0, 0x2
- bgt _08032FFC
- cmp r0, 0x1
- bge _08033018
- cmp r0, 0
- beq _08033000
- b _08033028
- .pool
-_08032FFC:
- cmp r0, 0x3
- bne _08033028
-_08033000:
- mov r0, r12
- adds r2, r4, r0
- ldrh r0, [r2, 0x18]
- adds r0, r7
- movs r1, 0x1
- strb r1, [r0]
- ldrh r0, [r2, 0x18]
-_0803300E:
- lsls r0, 1
- adds r0, r6
- mov r1, r8
- strh r1, [r0]
- b _08033028
-_08033018:
- adds r0, r7
- mov r1, r9
- strb r1, [r0]
-_0803301E:
- ldrh r0, [r2, 0x18]
-_08033020:
- lsls r0, 1
- adds r0, r6
- mov r2, r9
- strh r2, [r0]
-_08033028:
- adds r4, 0x1C
- movs r0, 0x1
- add r10, r0
- mov r1, r10
- cmp r1, 0x3
- bgt _08033036
- b _08032EB8
-_08033036:
- ldr r1, =gNoOfAllBanks
- movs r0, 0x4
-_0803303A:
- strb r0, [r1]
-_0803303C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end b_setup_bx_link
-
- thumb_func_start sub_8033050
-sub_8033050: @ 8033050
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08033068
- b _0803319C
-_08033068:
- movs r0, 0
- mov r8, r0
- b _0803317A
- .pool
-_08033074:
- movs r5, 0
- movs r0, 0x1
- add r0, r8
- mov r10, r0
- ldr r0, =gBanksBySide
- add r0, r8
- mov r9, r0
- mov r0, r8
- lsls r6, r0, 1
- movs r7, 0
-_08033088:
- mov r0, r8
- cmp r0, 0x1
- bgt _080330F0
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080330A8
- ldr r0, =gPlayerParty
- b _080330AA
- .pool
-_080330A8:
- ldr r0, =gEnemyParty
-_080330AA:
- adds r4, r7, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08033170
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08033170
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08033170
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _08033170
- ldr r0, =gBattlePartyID
- adds r0, r6, r0
- strh r5, [r0]
- b _08033178
- .pool
-_080330F0:
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08033118
- ldr r0, =gPlayerParty
- adds r4, r7, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08033170
- adds r0, r4, 0
- movs r1, 0xB
- b _0803312C
- .pool
-_08033118:
- ldr r0, =gEnemyParty
- adds r4, r7, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08033170
- adds r0, r4, 0
- movs r1, 0x41
-_0803312C:
- bl GetMonData
- cmp r0, 0
- beq _08033170
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08033170
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _08033170
- ldr r1, =gBattlePartyID
- mov r0, r8
- subs r0, 0x2
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r5
- beq _08033170
- adds r0, r6, r1
- strh r5, [r0]
- b _08033178
- .pool
-_08033170:
- adds r7, 0x64
- adds r5, 0x1
- cmp r5, 0x5
- ble _08033088
-_08033178:
- mov r8, r10
-_0803317A:
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r8, r0
- bge _08033184
- b _08033074
-_08033184:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- beq _0803319C
- ldr r0, =gBattlePartyID
- movs r1, 0
- strh r1, [r0, 0x2]
- movs r1, 0x3
- strh r1, [r0, 0x6]
-_0803319C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8033050
-
- thumb_func_start dp01_prepare_buffer
-dp01_prepare_buffer: @ 80331B8
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r5, r3, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080331E4
- adds r0, r3, 0
- adds r1, r2, 0
- adds r2, r4, 0
- bl PrepareBufferDataTransferLink
- b _08033236
- .pool
-_080331E4:
- cmp r5, 0
- beq _080331EE
- cmp r5, 0x1
- beq _08033218
- b _08033236
-_080331EE:
- movs r3, 0
- cmp r3, r2
- bge _08033236
- ldr r6, =gBattleBufferA
- ldr r5, =gActiveBank
-_080331F8:
- ldrb r0, [r5]
- lsls r0, 9
- adds r0, r3, r0
- adds r0, r6
- ldrb r1, [r4]
- strb r1, [r0]
- adds r4, 0x1
- adds r3, 0x1
- cmp r3, r2
- blt _080331F8
- b _08033236
- .pool
-_08033218:
- movs r3, 0
- cmp r3, r2
- bge _08033236
- ldr r6, =gBattleBufferB
- ldr r5, =gActiveBank
-_08033222:
- ldrb r0, [r5]
- lsls r0, 9
- adds r0, r3, r0
- adds r0, r6
- ldrb r1, [r4]
- strb r1, [r0]
- adds r4, 0x1
- adds r3, 0x1
- cmp r3, r2
- blt _08033222
-_08033236:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_prepare_buffer
-
- thumb_func_start sub_8033244
-sub_8033244: @ 8033244
- push {r4-r6,lr}
- ldr r0, =task00_wireless_something
- movs r1, 0
- bl CreateTask
- ldr r2, =gUnknown_02022D08
- strb r0, [r2]
- ldr r5, =gTasks
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r6, 0
- movs r4, 0
- strh r4, [r0, 0x1E]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x20]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x22]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x24]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x26]
- ldr r0, =sub_803375C
- movs r1, 0
- bl CreateTask
- ldr r2, =gUnknown_02022D09
- strb r0, [r2]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x20]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x22]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x24]
- ldrb r1, [r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r4, [r0, 0x26]
- ldr r0, =gUnknown_02022D0A
- strb r6, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8033244
-
- thumb_func_start PrepareBufferDataTransferLink
-PrepareBufferDataTransferLink: @ 80332F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r2
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r1, 16
- mov r12, r1
- movs r1, 0x3
- mov r0, r12
- bics r0, r1
- adds r0, 0x4
- mov r8, r0
- ldr r2, =gTasks
- ldr r3, =gUnknown_02022D08
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r4, r0, r2
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- add r0, r8
- adds r0, 0x9
- movs r1, 0x80
- lsls r1, 5
- adds r5, r2, 0
- cmp r0, r1
- ble _08033346
- ldrh r0, [r4, 0x24]
- movs r2, 0
- strh r0, [r4, 0x20]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- strh r2, [r0, 0x24]
-_08033346:
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r2, 0x24
- ldrsh r1, [r0, r2]
- ldr r4, =gUnknown_020244A0
- ldr r0, [r4]
- adds r0, r1
- strb r6, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r7, 0x24
- ldrsh r1, [r0, r7]
- ldr r0, [r4]
- adds r1, r0
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r2, 0x24
- ldrsh r1, [r0, r2]
- ldr r0, [r4]
- adds r1, r0
- ldr r0, =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r7, 0x24
- ldrsh r1, [r0, r7]
- ldr r0, [r4]
- adds r1, r0
- ldr r0, =gBankTarget
- ldrb r0, [r0]
- strb r0, [r1, 0x3]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r1, 0x24
- ldrsh r0, [r0, r1]
- ldr r1, [r4]
- adds r0, r1
- mov r2, r8
- strb r2, [r0, 0x4]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r7, 0x24
- ldrsh r1, [r0, r7]
- ldr r0, [r4]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- mov r2, r8
- ands r0, r2
- asrs r0, 8
- strb r0, [r1, 0x5]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r7, 0x24
- ldrsh r1, [r0, r7]
- ldr r0, [r4]
- adds r1, r0
- ldr r0, =gAbsentBankFlags
- ldrb r0, [r0]
- strb r0, [r1, 0x6]
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r5
- movs r2, 0x24
- ldrsh r1, [r0, r2]
- ldr r0, [r4]
- adds r1, r0
- ldr r0, =gEffectBank
- ldrb r0, [r0]
- strb r0, [r1, 0x7]
- movs r2, 0
- cmp r2, r12
- bge _08033434
- mov r10, r5
- adds r6, r3, 0
-_08033412:
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- add r0, r10
- movs r7, 0x24
- ldrsh r1, [r0, r7]
- ldr r0, [r4]
- adds r1, r2, r1
- adds r1, r0
- mov r7, r9
- adds r0, r7, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x8]
- adds r2, 0x1
- cmp r2, r12
- blt _08033412
-_08033434:
- ldrb r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r5
- ldrh r0, [r1, 0x24]
- add r0, r8
- adds r0, 0x8
- strh r0, [r1, 0x24]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end PrepareBufferDataTransferLink
-
- thumb_func_start task00_wireless_something
-task00_wireless_something: @ 8033474
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x1E
- ldrsh r0, [r0, r2]
- adds r7, r1, 0
- cmp r0, 0x5
- bls _08033490
- b _08033640
-_08033490:
- lsls r0, 2
- ldr r1, =_080334A4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080334A4:
- .4byte _080334BC
- .4byte _080334CA
- .4byte _080334E6
- .4byte _08033570
- .4byte _080335E6
- .4byte _08033624
-_080334BC:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r7
- movs r1, 0x64
- strh r1, [r0, 0x1C]
- b _080334F6
-_080334CA:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r7
- ldrh r0, [r1, 0x1C]
- subs r0, 0x1
- strh r0, [r1, 0x1C]
- lsls r0, 16
- cmp r0, 0
- beq _080334E0
- b _08033640
-_080334E0:
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- b _0803363E
-_080334E6:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _08033504
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r7
-_080334F6:
- ldrh r1, [r0, 0x1E]
- adds r1, 0x1
- strh r1, [r0, 0x1E]
- b _08033640
- .pool
-_08033504:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0803351C
- movs r5, 0x2
- b _0803352A
- .pool
-_0803351C:
- movs r0, 0x40
- ands r1, r0
- movs r0, 0x2
- cmp r1, 0
- beq _08033528
- movs r0, 0x4
-_08033528:
- adds r5, r0, 0
-_0803352A:
- bl sub_800ABAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- bcs _08033538
- b _08033640
-_08033538:
- bl sub_800ABBC
- lsls r0, 24
- cmp r0, 0
- beq _0803355C
- bl sub_800A620
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- b _0803363E
- .pool
-_0803355C:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- b _0803363E
- .pool
-_08033570:
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r7
- movs r3, 0x26
- ldrsh r5, [r2, r3]
- movs r0, 0x24
- ldrsh r6, [r2, r0]
- mov r12, r6
- cmp r5, r12
- beq _08033640
- ldrh r0, [r2, 0x22]
- movs r6, 0x22
- ldrsh r3, [r2, r6]
- cmp r3, 0
- bne _080335E0
- cmp r5, r12
- ble _080335A0
- movs r6, 0x20
- ldrsh r0, [r2, r6]
- cmp r5, r0
- bne _080335A0
- strh r3, [r2, 0x20]
- strh r3, [r2, 0x26]
-_080335A0:
- adds r4, r1, r4
- lsls r4, 3
- adds r4, r7
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- ldr r5, =gUnknown_020244A0
- ldr r0, [r5]
- adds r1, r0
- ldrb r0, [r1, 0x4]
- ldrb r1, [r1, 0x5]
- lsls r1, 8
- orrs r0, r1
- adds r0, 0x8
- lsls r0, 16
- lsrs r6, r0, 16
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x26
- ldrsh r2, [r4, r1]
- ldr r1, [r5]
- adds r1, r2
- adds r2, r6, 0
- bl link_0800A448
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- b _08033640
- .pool
-_080335E0:
- subs r0, 0x1
- strh r0, [r2, 0x22]
- b _08033640
-_080335E6:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _08033640
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r3, 0x26
- ldrsh r2, [r1, r3]
- ldr r0, =gUnknown_020244A0
- ldr r0, [r0]
- adds r2, r0
- ldrb r0, [r2, 0x4]
- ldrb r2, [r2, 0x5]
- lsls r2, 8
- movs r3, 0x1
- strh r3, [r1, 0x22]
- orrs r0, r2
- ldrh r6, [r1, 0x26]
- adds r0, r6
- adds r0, 0x8
- strh r0, [r1, 0x26]
- b _0803363C
- .pool
-_08033624:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r7
- ldrh r0, [r1, 0x22]
- subs r0, 0x1
- strh r0, [r1, 0x22]
- lsls r0, 16
- cmp r0, 0
- bne _08033640
- movs r0, 0x1
- strh r0, [r1, 0x22]
-_0803363C:
- movs r0, 0x3
-_0803363E:
- strh r0, [r1, 0x1E]
-_08033640:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task00_wireless_something
-
- thumb_func_start sub_8033648
-sub_8033648: @ 8033648
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, =gUnknown_03003124
- ldrb r0, [r0]
- cmp r0, 0
- beq _08033738
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08033738
- bl sub_8011BD0
- movs r4, 0
- ldr r0, =gUnknown_020223C4
- mov r10, r0
- b _0803372C
- .pool
-_08033680:
- bl sub_800A550
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gBitTable
- lsls r1, r4, 2
- adds r1, r2
- ldr r1, [r1]
- ands r0, r1
- adds r1, r4, 0x1
- mov r9, r1
- cmp r0, 0
- beq _08033726
- adds r0, r4, 0
- bl sub_800A5EC
- lsls r0, r4, 8
- mov r4, r10
- adds r3, r0, r4
- ldr r1, =gUnknown_020223C8
- adds r0, r1
- ldrh r6, [r0]
- ldr r7, =gTasks
- ldr r4, =gUnknown_02022D09
- mov r12, r4
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r2, r0, r7
- movs r0, 0x24
- ldrsh r1, [r2, r0]
- adds r0, r6, 0
- adds r0, 0x9
- adds r1, r0
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- ble _080336E0
- ldrh r0, [r2, 0x24]
- strh r0, [r2, 0x20]
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r7
- movs r1, 0
- strh r1, [r0, 0x24]
-_080336E0:
- ldr r2, =gUnknown_020244A4
- mov r4, r12
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r7
- movs r4, 0x24
- ldrsh r1, [r0, r4]
- ldr r0, [r2]
- adds r5, r0, r1
- adds r4, r3, 0
- movs r2, 0
- adds r3, r6, 0
- adds r3, 0x8
- mov r8, r7
- mov r7, r12
- cmp r2, r3
- bge _08033714
-_08033706:
- adds r0, r5, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, r3
- blt _08033706
-_08033714:
- ldrb r0, [r7]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- add r1, r8
- ldrh r0, [r1, 0x24]
- adds r0, r6, r0
- adds r0, 0x8
- strh r0, [r1, 0x24]
-_08033726:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r4, r0, 24
-_0803372C:
- bl sub_8009FCC
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _08033680
-_08033738:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8033648
-
- thumb_func_start sub_803375C
-sub_803375C: @ 803375C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r3, r0, r1
- movs r0, 0x26
- ldrsh r2, [r3, r0]
- movs r4, 0x24
- ldrsh r0, [r3, r4]
- cmp r2, r0
- bne _08033780
- b _0803389C
-_08033780:
- cmp r2, r0
- ble _08033792
- movs r4, 0x20
- ldrsh r0, [r3, r4]
- cmp r2, r0
- bne _08033792
- movs r0, 0
- strh r0, [r3, 0x20]
- strh r0, [r3, 0x26]
-_08033792:
- lsls r2, r7, 2
- adds r0, r2, r7
- lsls r0, 3
- adds r5, r0, r1
- movs r0, 0x26
- ldrsh r1, [r5, r0]
- ldr r3, =gUnknown_020244A4
- mov r8, r3
- ldr r0, [r3]
- adds r3, r1, r0
- ldrb r4, [r3, 0x1]
- ldrb r6, [r3, 0x4]
- ldrb r0, [r3, 0x5]
- lsls r0, 8
- orrs r6, r0
- ldrb r0, [r3]
- mov r9, r2
- cmp r0, 0x1
- beq _0803385C
- cmp r0, 0x1
- bgt _080337CC
- cmp r0, 0
- beq _080337D2
- b _0803388A
- .pool
-_080337CC:
- cmp r0, 0x2
- beq _08033874
- b _0803388A
-_080337D2:
- ldr r2, =gBattleExecBuffer
- ldr r1, =gBitTable
- lsls r0, r4, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0803389C
- lsls r0, r4, 9
- ldr r1, =gBattleBufferA
- adds r0, r1
- adds r1, r3, 0
- adds r1, 0x8
- adds r2, r6, 0
- bl memcpy
- adds r0, r4, 0
- bl sub_803F850
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0803388A
- ldr r2, =gBankAttacker
- movs r4, 0x26
- ldrsh r0, [r5, r4]
- mov r3, r8
- ldr r1, [r3]
- adds r0, r1
- ldrb r0, [r0, 0x2]
- strb r0, [r2]
- ldr r2, =gBankTarget
- movs r4, 0x26
- ldrsh r0, [r5, r4]
- adds r0, r1
- ldrb r0, [r0, 0x3]
- strb r0, [r2]
- ldr r2, =gAbsentBankFlags
- movs r3, 0x26
- ldrsh r0, [r5, r3]
- adds r0, r1
- ldrb r0, [r0, 0x6]
- strb r0, [r2]
- ldr r2, =gEffectBank
- movs r4, 0x26
- ldrsh r0, [r5, r4]
- adds r0, r1
- ldrb r0, [r0, 0x7]
- strb r0, [r2]
- b _0803388A
- .pool
-_0803385C:
- lsls r0, r4, 9
- ldr r1, =gBattleBufferB
- adds r0, r1
- adds r1, r3, 0
- adds r1, 0x8
- adds r2, r6, 0
- bl memcpy
- b _0803388A
- .pool
-_08033874:
- ldrb r2, [r3, 0x8]
- ldr r3, =gBattleExecBuffer
- ldr r1, =gBitTable
- lsls r0, r4, 2
- adds r0, r1
- lsls r2, 2
- ldr r1, [r0]
- lsls r1, r2
- ldr r0, [r3]
- bics r0, r1
- str r0, [r3]
-_0803388A:
- ldr r0, =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, r6, r0
- adds r0, 0x8
- strh r0, [r1, 0x26]
-_0803389C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_803375C
-
- thumb_func_start dp01_build_cmdbuf_x00_a_b_0
-dp01_build_cmdbuf_x00_a_b_0: @ 80338B4
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r3, 0
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r3, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x00_a_b_0
-
- thumb_func_start dp01_build_cmdbuf_x01_a_b_0
-dp01_build_cmdbuf_x01_a_b_0: @ 80338D8
- push {r4,r5,lr}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r4, 0
- movs r3, 0x1
- strb r3, [r1]
- strb r5, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r4, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x01_a_b_0
-
- thumb_func_start EmitSetAttributes
-EmitSetAttributes: @ 8033900
- push {r4-r6,lr}
- ldr r4, [sp, 0x10]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r3, 24
- lsrs r5, r3, 24
- ldr r0, =gUnknown_02022D10
- movs r3, 0x2
- strb r3, [r0]
- strb r1, [r0, 0x1]
- strb r2, [r0, 0x2]
- adds r1, r0, 0
- cmp r5, 0
- beq _0803392E
- adds r3, r1, 0x3
- adds r2, r5, 0
-_08033920:
- ldrb r0, [r4]
- strb r0, [r3]
- adds r4, 0x1
- adds r3, 0x1
- subs r2, 0x1
- cmp r2, 0
- bne _08033920
-_0803392E:
- adds r2, r5, 0x3
- adds r0, r6, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end EmitSetAttributes
-
- thumb_func_start sub_8033940
-sub_8033940: @ 8033940
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 24
- lsrs r4, r2, 24
- ldr r0, =gUnknown_02022D10
- movs r2, 0x3
- strb r2, [r0]
- strb r1, [r0, 0x1]
- strb r4, [r0, 0x2]
- adds r5, r0, 0
- cmp r4, 0
- beq _0803396C
- adds r1, r5, 0x3
- adds r2, r4, 0
-_0803395E:
- ldrb r0, [r3]
- strb r0, [r1]
- adds r3, 0x1
- adds r1, 0x1
- subs r2, 0x1
- cmp r2, 0
- bne _0803395E
-_0803396C:
- adds r2, r4, 0x3
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8033940
-
- thumb_func_start dp01_build_cmdbuf_x04_4_4_4
-dp01_build_cmdbuf_x04_4_4_4: @ 8033980
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x4
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x04_4_4_4
-
- thumb_func_start dp01_build_cmdbuf_x05_a_b_c
-dp01_build_cmdbuf_x05_a_b_c: @ 80339A0
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r3, 0x5
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r3, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x05_a_b_c
-
- thumb_func_start dp01_build_cmdbuf_x06_a
-dp01_build_cmdbuf_x06_a: @ 80339C4
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x6
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x06_a
-
- thumb_func_start dp01_build_cmdbuf_x07_7_7_7
-dp01_build_cmdbuf_x07_7_7_7: @ 80339E4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x7
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x07_7_7_7
-
- thumb_func_start dp01_build_cmdbuf_x08_8_8_8
-dp01_build_cmdbuf_x08_8_8_8: @ 8033A04
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x8
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x08_8_8_8
-
- thumb_func_start dp01_build_cmdbuf_x09_9_9_9
-dp01_build_cmdbuf_x09_9_9_9: @ 8033A24
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x9
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x09_9_9_9
-
- thumb_func_start dp01_build_cmdbuf_x0A_A_A_A
-dp01_build_cmdbuf_x0A_A_A_A: @ 8033A44
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0xA
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x0A_A_A_A
-
- thumb_func_start dp01_build_cmdbuf_x0B_B_B_B
-dp01_build_cmdbuf_x0B_B_B_B: @ 8033A64
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0xB
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x0B_B_B_B
-
- thumb_func_start dp01_build_cmdbuf_x0C_C_C_C
-dp01_build_cmdbuf_x0C_C_C_C: @ 8033A84
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0xC
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x0C_C_C_C
-
- thumb_func_start dp01_build_cmdbuf_x0D_a
-dp01_build_cmdbuf_x0D_a: @ 8033AA4
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0xD
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x0D_a
-
- thumb_func_start sub_8033AC4
-sub_8033AC4: @ 8033AC4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r1, =gUnknown_02022D10
- movs r0, 0xE
- strb r0, [r1]
- strb r4, [r1, 0x1]
- lsls r0, r4, 1
- adds r0, r4
- adds r5, r1, 0
- cmp r0, 0
- beq _08033AF2
- adds r1, r5, 0x2
- adds r3, r0, 0
-_08033AE4:
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _08033AE4
-_08033AF2:
- lsls r2, r4, 1
- adds r2, r4
- adds r2, 0x2
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8033AC4
-
- thumb_func_start dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes
-dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes: @ 8033B0C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r4, [sp, 0x20]
- ldr r5, [sp, 0x24]
- ldr r6, [sp, 0x2C]
- mov r8, r6
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 16
- lsrs r1, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r7, =gUnknown_02022D10
- movs r0, 0
- mov r12, r0
- movs r0, 0xF
- strb r0, [r7]
- strb r1, [r7, 0x1]
- lsrs r1, 8
- strb r1, [r7, 0x2]
- strb r2, [r7, 0x3]
- strb r3, [r7, 0x4]
- movs r6, 0xFF
- lsls r6, 8
- lsrs r3, 8
- strb r3, [r7, 0x5]
- strb r4, [r7, 0x6]
- adds r0, r4, 0
- ands r0, r6
- asrs r0, 8
- strb r0, [r7, 0x7]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r4
- asrs r0, 16
- strb r0, [r7, 0x8]
- lsrs r4, 24
- strb r4, [r7, 0x9]
- strb r5, [r7, 0xA]
- mov r0, r8
- strb r0, [r7, 0xB]
- mov r0, r12
- str r0, [sp]
- movs r0, 0xE
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08033BAC
- str r0, [sp]
- movs r0, 0xE
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _08033BAC
- ldr r0, =gBattleWeather
- ldrh r0, [r0]
- strb r0, [r7, 0xC]
- ands r6, r0
- lsrs r0, r6, 8
- strb r0, [r7, 0xD]
- adds r4, r7, 0
- b _08033BB6
- .pool
-_08033BAC:
- ldr r0, =gUnknown_02022D10
- movs r1, 0
- strb r1, [r0, 0xC]
- strb r1, [r0, 0xD]
- adds r4, r0, 0
-_08033BB6:
- movs r0, 0
- strb r0, [r4, 0xE]
- strb r0, [r4, 0xF]
- adds r0, r4, 0
- adds r0, 0x10
- ldr r1, [sp, 0x28]
- movs r2, 0x1C
- bl memcpy
- mov r0, r9
- adds r1, r4, 0
- movs r2, 0x2C
- bl dp01_prepare_buffer
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes
-
- thumb_func_start dp01_build_cmdbuf_x10_TODO
-dp01_build_cmdbuf_x10_TODO: @ 8033BE4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, =gUnknown_02022D10
- movs r0, 0x10
- strb r0, [r2]
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- lsrs r1, 8
- strb r1, [r2, 0x3]
- adds r0, r2, 0x4
- mov r12, r0
- ldr r4, =gCurrentMove
- ldrh r0, [r4]
- strh r0, [r2, 0x4]
- ldr r0, =gUnknown_020241EC
- ldrh r0, [r0]
- mov r1, r12
- strh r0, [r1, 0x2]
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- strh r0, [r1, 0x4]
- ldr r0, =gLastUsedAbility
- ldrb r0, [r0]
- strb r0, [r1, 0x6]
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- strb r0, [r1, 0x7]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x52
- ldrb r1, [r1]
- mov r3, r12
- strb r1, [r3, 0x8]
- adds r0, 0xB1
- ldrb r0, [r0]
- strb r0, [r3, 0x9]
- ldr r0, =gStringBank
- ldrb r0, [r0]
- strb r0, [r3, 0xA]
- ldr r3, =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x2]
- mov r7, r12
- strb r0, [r7, 0xB]
- movs r3, 0
- mov r9, r2
- ldr r0, =gBattleTextBuff3
- mov r8, r0
- adds r2, 0x10
- ldr r0, =gBattleMons
- adds r4, r0, 0
- adds r4, 0x20
-_08033C6A:
- adds r1, r2, r3
- ldrb r0, [r4]
- strb r0, [r1]
- adds r4, 0x58
- adds r3, 0x1
- cmp r3, 0x3
- ble _08033C6A
- movs r3, 0
- mov r5, r12
- adds r5, 0x10
- mov r4, r12
- adds r4, 0x20
- ldr r6, =gBattleTextBuff2
- mov r2, r12
- adds r2, 0x30
-_08033C88:
- adds r1, r5, r3
- ldr r7, =gBattleTextBuff1
- adds r0, r3, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r4, r3
- adds r0, r3, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r3
- mov r7, r8
- adds r0, r3, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x1
- cmp r3, 0xF
- ble _08033C88
- mov r0, r10
- mov r1, r9
- movs r2, 0x44
- bl dp01_prepare_buffer
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x10_TODO
-
- thumb_func_start dp01_build_cmdbuf_x11_TODO
-dp01_build_cmdbuf_x11_TODO: @ 8033CFC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, =gUnknown_02022D10
- movs r0, 0x11
- strb r0, [r2]
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- lsrs r1, 8
- strb r1, [r2, 0x3]
- adds r0, r2, 0x4
- mov r12, r0
- ldr r0, =gCurrentMove
- ldrh r0, [r0]
- strh r0, [r2, 0x4]
- ldr r0, =gUnknown_020241EC
- ldrh r0, [r0]
- mov r1, r12
- strh r0, [r1, 0x2]
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- strh r0, [r1, 0x4]
- ldr r0, =gLastUsedAbility
- ldrb r0, [r0]
- strb r0, [r1, 0x6]
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- strb r0, [r1, 0x7]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x52
- ldrb r0, [r0]
- strb r0, [r1, 0x8]
- movs r3, 0
- mov r9, r2
- ldr r7, =gBattleTextBuff3
- mov r8, r7
- mov r4, r9
- adds r4, 0x10
- ldr r0, =gBattleMons
- adds r2, r0, 0
- adds r2, 0x20
-_08033D5E:
- adds r1, r4, r3
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x58
- adds r3, 0x1
- cmp r3, 0x3
- ble _08033D5E
- movs r3, 0
- mov r5, r12
- adds r5, 0x10
- mov r4, r12
- adds r4, 0x20
- ldr r6, =gBattleTextBuff2
- mov r2, r12
- adds r2, 0x30
-_08033D7C:
- adds r1, r5, r3
- ldr r7, =gBattleTextBuff1
- adds r0, r3, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r4, r3
- adds r0, r3, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r3
- mov r7, r8
- adds r0, r3, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x1
- cmp r3, 0xF
- ble _08033D7C
- mov r0, r10
- mov r1, r9
- movs r2, 0x44
- bl dp01_prepare_buffer
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x11_TODO
-
- thumb_func_start dp01_build_cmdbuf_x12_a_bb
-dp01_build_cmdbuf_x12_a_bb: @ 8033DE4
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- ldr r1, =gUnknown_02022D10
- movs r3, 0x12
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- lsrs r2, 8
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x12_a_bb
-
- thumb_func_start sub_8033E10
-sub_8033E10: @ 8033E10
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x13
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8033E10
-
- thumb_func_start sub_8033E30
-sub_8033E30: @ 8033E30
- push {r4-r6,lr}
- adds r5, r3, 0
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r3, =gUnknown_02022D10
- movs r4, 0
- movs r0, 0x14
- strb r0, [r3]
- strb r1, [r3, 0x1]
- strb r2, [r3, 0x2]
- strb r4, [r3, 0x3]
- movs r2, 0
- adds r1, r3, 0
- adds r4, r1, 0x4
-_08033E4C:
- adds r0, r5, r2
- ldrb r0, [r0]
- strb r0, [r4]
- adds r4, 0x1
- adds r2, 0x1
- cmp r2, 0x13
- bls _08033E4C
- adds r0, r6, 0
- movs r2, 0x18
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8033E30
-
- thumb_func_start sub_8033E6C
-sub_8033E6C: @ 8033E6C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, =gUnknown_02022D10
- movs r0, 0x15
- strb r0, [r1]
- movs r2, 0
- adds r3, r1, 0x1
-_08033E7E:
- adds r0, r4, r2
- ldrb r0, [r0]
- strb r0, [r3]
- adds r3, 0x1
- adds r2, 0x1
- cmp r2, 0x2
- ble _08033E7E
- adds r0, r5, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8033E6C
-
- thumb_func_start dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
-dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f: @ 8033EA0
- push {r4-r6,lr}
- ldr r6, [sp, 0x10]
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, =gUnknown_02022D10
- movs r0, 0x16
- strb r0, [r4]
- strb r1, [r4, 0x1]
- strb r2, [r4, 0x2]
- strb r3, [r4, 0x3]
- movs r2, 0
- adds r1, r4, 0
- adds r3, r1, 0x4
-_08033EBA:
- adds r0, r6, r2
- ldrb r0, [r0]
- strb r0, [r3]
- adds r3, 0x1
- adds r2, 0x1
- cmp r2, 0x2
- ble _08033EBA
- adds r0, r5, 0
- movs r2, 0x8
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
-
- thumb_func_start dp01_build_cmdbuf_x17_17_17_17
-dp01_build_cmdbuf_x17_17_17_17: @ 8033EDC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x17
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x17_17_17_17
-
- thumb_func_start dp01_build_cmdbuf_x18_0_aa_health_bar_update
-dp01_build_cmdbuf_x18_0_aa_health_bar_update: @ 8033EFC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r3, =gUnknown_02022D10
- movs r4, 0
- movs r2, 0x18
- strb r2, [r3]
- strb r4, [r3, 0x1]
- strb r1, [r3, 0x2]
- lsls r1, 16
- asrs r1, 16
- movs r2, 0xFF
- lsls r2, 8
- ands r1, r2
- asrs r1, 8
- strb r1, [r3, 0x3]
- adds r1, r3, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x18_0_aa_health_bar_update
-
- thumb_func_start dp01_build_cmdbuf_x19_a_bb
-dp01_build_cmdbuf_x19_a_bb: @ 8033F34
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- ldr r1, =gUnknown_02022D10
- movs r3, 0x19
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- lsls r2, 16
- asrs r2, 16
- movs r3, 0xFF
- lsls r3, 8
- ands r2, r3
- asrs r2, 8
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x19_a_bb
-
- thumb_func_start dp01_build_cmdbuf_x1A_aaaa_bbbb
-dp01_build_cmdbuf_x1A_aaaa_bbbb: @ 8033F68
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r3, 0x1A
- strb r3, [r1]
- strb r4, [r1, 0x1]
- movs r6, 0xFF
- lsls r6, 8
- adds r3, r4, 0
- ands r3, r6
- lsrs r3, 8
- strb r3, [r1, 0x2]
- movs r5, 0xFF
- lsls r5, 16
- adds r3, r4, 0
- ands r3, r5
- lsrs r3, 16
- strb r3, [r1, 0x3]
- lsrs r4, 24
- strb r4, [r1, 0x4]
- strb r2, [r1, 0x5]
- adds r3, r2, 0
- ands r3, r6
- lsrs r3, 8
- strb r3, [r1, 0x6]
- adds r3, r2, 0
- ands r3, r5
- lsrs r3, 16
- strb r3, [r1, 0x7]
- lsrs r2, 24
- strb r2, [r1, 0x8]
- movs r2, 0x9
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x1A_aaaa_bbbb
-
- thumb_func_start dp01_build_cmdbuf_x1B_aaaa_b
-dp01_build_cmdbuf_x1B_aaaa_b: @ 8033FBC
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r3, 0x1B
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- movs r3, 0xFF
- lsls r3, 8
- ands r3, r2
- lsrs r3, 8
- strb r3, [r1, 0x3]
- movs r3, 0xFF
- lsls r3, 16
- ands r3, r2
- lsrs r3, 16
- strb r3, [r1, 0x4]
- lsrs r2, 24
- strb r2, [r1, 0x5]
- movs r2, 0x6
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x1B_aaaa_b
-
- thumb_func_start dp01_build_cmdbuf_x1C_a
-dp01_build_cmdbuf_x1C_a: @ 8033FF8
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x1C
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x1C_a
-
- thumb_func_start dp01_build_cmdbuf_x1D_1D_numargs_varargs
-dp01_build_cmdbuf_x1D_1D_numargs_varargs: @ 8034018
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- ldr r1, =gUnknown_02022D10
- movs r0, 0x1D
- strb r0, [r1]
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- lsrs r0, r4, 8
- strb r0, [r1, 0x3]
- adds r5, r1, 0
- cmp r4, 0
- beq _08034048
- adds r1, r5, 0x4
- adds r3, r4, 0
-_0803403A:
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _0803403A
-_08034048:
- adds r2, r4, 0x4
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x1D_1D_numargs_varargs
-
- thumb_func_start sub_8034060
-sub_8034060: @ 8034060
- push {r4-r6,lr}
- adds r4, r3, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 16
- lsrs r5, r2, 16
- ldr r2, =gUnknown_02022D10
- movs r0, 0x1E
- strb r0, [r2]
- strb r1, [r2, 0x1]
- movs r3, 0xFF
- lsls r3, 8
- adds r0, r1, 0
- ands r0, r3
- lsrs r0, 8
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r0, 16
- strb r0, [r2, 0x3]
- lsrs r1, 24
- strb r1, [r2, 0x4]
- strb r5, [r2, 0x5]
- adds r0, r5, 0
- ands r0, r3
- lsrs r0, 8
- strb r0, [r2, 0x6]
- adds r1, r2, 0
- cmp r5, 0
- beq _080340B0
- adds r3, r1, 0x7
- adds r2, r5, 0
-_080340A2:
- ldrb r0, [r4]
- strb r0, [r3]
- adds r4, 0x1
- adds r3, 0x1
- subs r2, 0x1
- cmp r2, 0
- bne _080340A2
-_080340B0:
- adds r2, r5, 0x7
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8034060
-
- thumb_func_start sub_80340C8
-sub_80340C8: @ 80340C8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- ldr r1, =gUnknown_02022D10
- movs r0, 0x1F
- strb r0, [r1]
- strb r4, [r1, 0x1]
- lsrs r0, r4, 8
- strb r0, [r1, 0x2]
- adds r5, r1, 0
- cmp r4, 0
- beq _080340F6
- adds r1, r5, 0x3
- adds r3, r4, 0
-_080340E8:
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _080340E8
-_080340F6:
- adds r2, r4, 0x3
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80340C8
-
- thumb_func_start sub_8034110
-sub_8034110: @ 8034110
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r4, r1, 16
- ldr r1, =gUnknown_02022D10
- movs r0, 0x20
- strb r0, [r1]
- strb r4, [r1, 0x1]
- lsrs r0, r4, 8
- strb r0, [r1, 0x2]
- adds r5, r1, 0
- cmp r4, 0
- beq _0803413E
- adds r1, r5, 0x3
- adds r3, r4, 0
-_08034130:
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r1, 0x1
- subs r3, 0x1
- cmp r3, 0
- bne _08034130
-_0803413E:
- adds r2, r4, 0x3
- lsls r2, 16
- lsrs r2, 16
- adds r0, r6, 0
- adds r1, r5, 0
- bl dp01_prepare_buffer
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8034110
-
- thumb_func_start dp01_build_cmdbuf_x21_a_bb
-dp01_build_cmdbuf_x21_a_bb: @ 8034158
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- ldr r1, =gUnknown_02022D10
- movs r3, 0x21
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- lsrs r2, 8
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x21_a_bb
-
- thumb_func_start dp01_build_cmdbuf_x22_a_three_bytes
-dp01_build_cmdbuf_x22_a_three_bytes: @ 8034184
- push {r4,r5,lr}
- adds r4, r2, 0
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, =gUnknown_02022D10
- movs r0, 0x22
- strb r0, [r2]
- strb r1, [r2, 0x1]
- movs r3, 0
- adds r1, r2, 0x2
-_08034198:
- adds r0, r4, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, 0x1
- adds r3, 0x1
- cmp r3, 0x2
- ble _08034198
- adds r0, r5, 0
- adds r1, r2, 0
- movs r2, 0x5
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x22_a_three_bytes
-
- thumb_func_start dp01_build_cmdbuf_x23_aa_0
-dp01_build_cmdbuf_x23_aa_0: @ 80341BC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r3, =gUnknown_02022D10
- movs r4, 0
- movs r2, 0x23
- strb r2, [r3]
- strb r1, [r3, 0x1]
- lsrs r1, 8
- strb r1, [r3, 0x2]
- strb r4, [r3, 0x3]
- adds r1, r3, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x23_aa_0
-
- thumb_func_start dp01_build_cmdbuf_x24_aa_0
-dp01_build_cmdbuf_x24_aa_0: @ 80341E8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r3, =gUnknown_02022D10
- movs r4, 0
- movs r2, 0x24
- strb r2, [r3]
- strb r1, [r3, 0x1]
- lsrs r1, 8
- strb r1, [r3, 0x2]
- strb r4, [r3, 0x3]
- adds r1, r3, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x24_aa_0
-
- thumb_func_start dp01_build_cmdbuf_x25_25_25_25
-dp01_build_cmdbuf_x25_25_25_25: @ 8034214
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x25
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x25_25_25_25
-
- thumb_func_start dp01_build_cmdbuf_x26_a
-dp01_build_cmdbuf_x26_a: @ 8034234
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x26
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x26_a
-
- thumb_func_start dp01_build_cmdbuf_x27_27_27_27
-dp01_build_cmdbuf_x27_27_27_27: @ 8034254
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x27
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x27_27_27_27
-
- thumb_func_start dp01_build_cmdbuf_x28_28_28_28
-dp01_build_cmdbuf_x28_28_28_28: @ 8034274
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x28
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x28_28_28_28
-
- thumb_func_start dp01_build_cmdbuf_x29_29_29_29
-dp01_build_cmdbuf_x29_29_29_29: @ 8034294
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x29
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x29_29_29_29
-
- thumb_func_start dp01_build_cmdbuf_x2A_2A_2A_2A
-dp01_build_cmdbuf_x2A_2A_2A_2A: @ 80342B4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x2A
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x2A_2A_2A_2A
-
- thumb_func_start dp01_build_cmdbuf_x2B_aa_0
-dp01_build_cmdbuf_x2B_aa_0: @ 80342D4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r3, =gUnknown_02022D10
- movs r4, 0
- movs r2, 0x2B
- strb r2, [r3]
- strb r1, [r3, 0x1]
- lsrs r1, 8
- strb r1, [r3, 0x2]
- strb r4, [r3, 0x3]
- adds r1, r3, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x2B_aa_0
-
- thumb_func_start sub_8034300
-sub_8034300: @ 8034300
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r4, =gUnknown_02022D10
- movs r3, 0x2C
- strb r3, [r4]
- strb r1, [r4, 0x1]
- lsrs r1, 8
- strb r1, [r4, 0x2]
- strb r2, [r4, 0x3]
- adds r1, r4, 0
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8034300
-
- thumb_func_start dp01_build_cmdbuf_x2D_2D_2D_2D
-dp01_build_cmdbuf_x2D_2D_2D_2D: @ 803432C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x2D
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x2D_2D_2D_2D
-
- thumb_func_start dp01_build_cmdbuf_x2E_a
-dp01_build_cmdbuf_x2E_a: @ 803434C
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x2E
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x2E_a
-
- thumb_func_start dp01_build_cmdbuf_x2F_2F_2F_2F
-dp01_build_cmdbuf_x2F_2F_2F_2F: @ 803436C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x2F
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x2F_2F_2F_2F
-
- thumb_func_start dp01_build_cmdbuf_x30_TODO
-dp01_build_cmdbuf_x30_TODO: @ 803438C
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r1, =gUnknown_02022D10
- movs r3, 0x30
- strb r3, [r1]
- movs r0, 0x7F
- ands r0, r2
- strb r0, [r1, 0x1]
- movs r0, 0x80
- ands r0, r2
- lsls r0, 24
- lsrs r0, 31
- strb r0, [r1, 0x2]
- strb r3, [r1, 0x3]
- movs r2, 0
- adds r3, r1, 0x4
-_080343B4:
- adds r0, r4, r2
- ldrb r0, [r0]
- strb r0, [r3]
- adds r3, 0x1
- adds r2, 0x1
- cmp r2, 0x2F
- ble _080343B4
- adds r0, r5, 0
- movs r2, 0x34
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x30_TODO
-
- thumb_func_start dp01_build_cmdbuf_x31_31_31_31
-dp01_build_cmdbuf_x31_31_31_31: @ 80343D4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x31
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x31_31_31_31
-
- thumb_func_start dp01_build_cmdbuf_x32_32_32_32
-dp01_build_cmdbuf_x32_32_32_32: @ 80343F4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x32
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x32_32_32_32
-
- thumb_func_start dp01_build_cmdbuf_x33_a_33_33
-dp01_build_cmdbuf_x33_a_33_33: @ 8034414
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x33
- strb r2, [r1]
- strb r3, [r1, 0x1]
- strb r2, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x33_a_33_33
-
- thumb_func_start dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
-dp01_build_cmdbuf_x34_a_bb_aka_battle_anim: @ 8034438
- push {r4,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- ldr r1, =gUnknown_02022D10
- movs r3, 0x34
- strb r3, [r1]
- strb r4, [r1, 0x1]
- strb r2, [r1, 0x2]
- lsrs r2, 8
- strb r2, [r1, 0x3]
- movs r2, 0x4
- bl dp01_prepare_buffer
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x34_a_bb_aka_battle_anim
-
- thumb_func_start sub_8034464
-sub_8034464: @ 8034464
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r4, =gUnknown_02022D10
- movs r0, 0x35
- strb r0, [r4]
- strb r1, [r4, 0x1]
- cmp r2, 0
- beq _0803448C
- adds r0, r4, 0x4
- bl sub_81850DC
- strb r0, [r4, 0x2]
- strb r0, [r4, 0x3]
- b _08034490
- .pool
-_0803448C:
- strb r2, [r4, 0x2]
- strb r2, [r4, 0x3]
-_08034490:
- ldr r1, =gUnknown_02022D10
- ldrb r2, [r1, 0x2]
- adds r2, 0x4
- adds r0, r5, 0
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8034464
-
- thumb_func_start dp01_build_cmdbuf_x38_a
-dp01_build_cmdbuf_x38_a: @ 80344A8
- push {lr}
- adds r3, r1, 0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gUnknown_02022D10
- movs r2, 0x36
- strb r2, [r1]
- strb r3, [r1, 0x1]
- movs r2, 0x2
- bl dp01_prepare_buffer
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x38_a
-
- thumb_func_start dp01_build_cmdbuf_x37_a
-dp01_build_cmdbuf_x37_a: @ 80344C8
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r4, =gUnknown_02022D10
- movs r0, 0x37
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r0, =0x00000ca9
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 28
- lsrs r0, 31
- strb r0, [r4, 0x2]
- ldrb r0, [r1]
- lsls r0, 28
- lsrs r0, 31
- strb r0, [r4, 0x3]
- adds r0, r4, 0x6
- bl sub_81850DC
- strb r0, [r4, 0x4]
- strb r0, [r4, 0x5]
- ldrb r2, [r4, 0x4]
- adds r2, 0x6
- adds r0, r5, 0
- adds r1, r4, 0
- bl dp01_prepare_buffer
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end dp01_build_cmdbuf_x37_a
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom4.s b/asm/rom4.s
index 9fb9e2bd6..bf682fc51 100644
--- a/asm/rom4.s
+++ b/asm/rom4.s
@@ -36,15 +36,15 @@ flag_var_implications_of_teleport_: @ 8084660
push {lr}
bl player_avatar_init_params_reset
ldr r0, =0x0000088b
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000889
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
@@ -55,15 +55,15 @@ sub_808469C: @ 808469C
push {lr}
bl player_avatar_init_params_reset
ldr r0, =0x0000088b
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000889
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
ldr r0, =gUnknown_08271862
bl ScriptContext2_RunNewScript
pop {r0}
@@ -76,15 +76,15 @@ flagmods_08054D70: @ 80846E4
push {lr}
bl player_avatar_init_params_reset
ldr r0, =0x0000088b
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000889
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
@@ -95,15 +95,15 @@ sub_8084720: @ 8084720
push {r4,lr}
bl player_avatar_init_params_reset
ldr r0, =0x0000088b
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000889
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
ldr r4, =0x00004039
adds r0, r4, 0
bl VarGet
@@ -128,7 +128,7 @@ _08084764:
sub_8084788: @ 8084788
push {lr}
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
bl sub_8085B2C
bl wild_pokemon_reroll
bl UpdateLocationHistoryForRoamer
@@ -324,8 +324,8 @@ _080848F4:
.pool
thumb_func_end CopyFieldObjectTemplateCoordsToSav1
- thumb_func_start update_saveblock1_field_object_coords
-update_saveblock1_field_object_coords: @ 8084910
+ thumb_func_start Overworld_SetMapObjTemplateCoords
+Overworld_SetMapObjTemplateCoords: @ 8084910
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -356,10 +356,10 @@ _08084944:
pop {r4-r6}
pop {r0}
bx r0
- thumb_func_end update_saveblock1_field_object_coords
+ thumb_func_end Overworld_SetMapObjTemplateCoords
- thumb_func_start update_saveblock1_field_object_movement_behavior
-update_saveblock1_field_object_movement_behavior: @ 808494C
+ thumb_func_start Overworld_SetMapObjTemplateMovementType
+Overworld_SetMapObjTemplateMovementType: @ 808494C
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -387,7 +387,7 @@ _08084978:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end update_saveblock1_field_object_movement_behavior
+ thumb_func_end Overworld_SetMapObjTemplateMovementType
thumb_func_start mapdata_load_assets_to_gpu_and_full_redraw
mapdata_load_assets_to_gpu_and_full_redraw: @ 8084980
@@ -710,9 +710,9 @@ warp_in: @ 8084BD8
bx r0
thumb_func_end warp_in
- thumb_func_start warp1_set
-@ void warp1_set(char bank, char map, char warpid, char enter_x, char enter_y)
-warp1_set: @ 8084BEC
+ thumb_func_start Overworld_SetWarpDestination
+@ void Overworld_SetWarpDestination(char bank, char map, char warpid, char enter_x, char enter_y)
+Overworld_SetWarpDestination: @ 8084BEC
push {r4-r6,lr}
sub sp, 0x8
adds r4, r0, 0
@@ -741,7 +741,7 @@ warp1_set: @ 8084BEC
pop {r0}
bx r0
.pool
- thumb_func_end warp1_set
+ thumb_func_end Overworld_SetWarpDestination
thumb_func_start warp1_set_2
@ void warp1_set_2(char bank, char map, char warpid)
@@ -757,7 +757,7 @@ warp1_set_2: @ 8084C28
movs r3, 0x1
negs r3, r3
str r3, [sp]
- bl warp1_set
+ bl Overworld_SetWarpDestination
add sp, 0x4
pop {r0}
bx r0
@@ -857,7 +857,7 @@ sub_8084CCC: @ 8084CCC
lsls r4, 24
asrs r4, 24
str r4, [sp]
- bl warp1_set
+ bl Overworld_SetWarpDestination
_08084CFA:
add sp, 0x4
pop {r4}
@@ -879,8 +879,8 @@ copy_saved_warp3_bank_and_enter_x_to_warp1: @ 8084D04
.pool
thumb_func_end copy_saved_warp3_bank_and_enter_x_to_warp1
- thumb_func_start sub_8084D1C
-sub_8084D1C: @ 8084D1C
+ thumb_func_start Overworld_SetHealLocationWarp
+Overworld_SetHealLocationWarp: @ 8084D1C
push {r4,r5,lr}
sub sp, 0x8
lsls r0, 24
@@ -911,7 +911,7 @@ _08084D50:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8084D1C
+ thumb_func_end Overworld_SetHealLocationWarp
thumb_func_start sub_8084D5C
sub_8084D5C: @ 8084D5C
@@ -1126,7 +1126,7 @@ _08084EF0:
lsls r4, r6, 24
asrs r4, 24
str r4, [sp]
- bl warp1_set
+ bl Overworld_SetWarpDestination
_08084F0A:
add sp, 0x4
pop {r4-r6}
@@ -1289,7 +1289,7 @@ sub_8084FF8: @ 8084FF8
lsls r4, r5, 24
asrs r4, 24
str r4, [sp]
- bl warp1_set
+ bl Overworld_SetWarpDestination
b _0808504C
_08085030:
bl mapheader_run_script_with_tag_x6
@@ -1365,7 +1365,7 @@ mliX_load_map: @ 8085098
negs r3, r3
str r3, [sp]
adds r2, r3, 0
- bl warp1_set
+ bl Overworld_SetWarpDestination
ldr r4, =gMapHeader
ldrb r0, [r4, 0x14]
cmp r0, 0x3A
@@ -1375,14 +1375,14 @@ _080850C8:
bl warp_shift
bl set_current_map_header_from_sav1_save_old_name
bl CopyFieldObjectTemplatesToSav1
- bl sav2_set_x9_depending_on_sav1_map
+ bl TrySetMapSaveWarpStatus
bl ClearTempFieldEventData
bl wild_pokemon_reroll
bl prev_quest_postbuffer_cursor_backup_reset
adds r0, r6, 0
adds r1, r5, 0
bl sub_80B21B4
- bl sub_809E7B0
+ bl DoTimeBasedEvents
bl sub_80AEDBC
bl sub_8085B2C
bl update_sav1_flash_used_on_map
@@ -1404,7 +1404,7 @@ _08085116:
bl sub_80A0A2C
bl UpdateLocationHistoryForRoamer
bl RoamerMove
- bl sub_80AEE20
+ bl DoCurrentWeather
bl wild_encounter_reset_coro_args
bl mapheader_run_script_with_tag_x5
ldr r2, =gMapHeader
@@ -1463,7 +1463,7 @@ _080851A2:
lsls r0, 24
lsrs r6, r0, 24
bl sub_80EB218
- bl sav2_set_x9_depending_on_sav1_map
+ bl TrySetMapSaveWarpStatus
bl ClearTempFieldEventData
bl wild_pokemon_reroll
bl prev_quest_postbuffer_cursor_backup_reset
@@ -1481,14 +1481,14 @@ _080851A2:
bl sub_80B21B4
cmp r7, 0x1
beq _080851EE
- bl sub_809E7B0
+ bl DoTimeBasedEvents
_080851EE:
bl sub_80AEDBC
bl sub_8085B2C
cmp r5, 0
beq _08085200
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
_08085200:
bl update_sav1_flash_used_on_map
bl sav1_reset_battle_music_maybe
@@ -1699,19 +1699,19 @@ _080853AC:
lsls r4, 24
lsrs r5, r4, 24
adds r0, r5, 0
- bl sub_8088F74
+ bl MetatileBehavior_IsDeepSouthWarp
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _080853E8
adds r0, r5, 0
- bl sub_8088F58
+ bl MetatileBehavior_IsNonAnimDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _08085442
adds r0, r5, 0
- bl sub_8088EFC
+ bl MetatileBehavior_IsDoor
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1858,8 +1858,8 @@ _080854DE:
.pool
thumb_func_end update_sav1_flash_used_on_map
- thumb_func_start sub_80854EC
-sub_80854EC: @ 80854EC
+ thumb_func_start Overworld_SetFlashLevel
+Overworld_SetFlashLevel: @ 80854EC
push {lr}
adds r1, r0, 0
cmp r1, 0
@@ -1878,7 +1878,7 @@ _080854FE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80854EC
+ thumb_func_end Overworld_SetFlashLevel
thumb_func_start sav1_get_flash_used_on_map
sav1_get_flash_used_on_map: @ 8085514
@@ -2263,14 +2263,14 @@ _080857E8:
.pool
thumb_func_end sub_8085784
- thumb_func_start sav1_set_battle_music_maybe
-sav1_set_battle_music_maybe: @ 80857F4
+ thumb_func_start Overworld_SetSavedMusic
+Overworld_SetSavedMusic: @ 80857F4
ldr r1, =gSaveBlock1Ptr
ldr r1, [r1]
strh r0, [r1, 0x2C]
bx lr
.pool
- thumb_func_end sav1_set_battle_music_maybe
+ thumb_func_end Overworld_SetSavedMusic
thumb_func_start sav1_reset_battle_music_maybe
sav1_reset_battle_music_maybe: @ 8085800
@@ -2339,8 +2339,8 @@ _08085890:
bx r0
thumb_func_end sub_8085810
- thumb_func_start sub_8085898
-sub_8085898: @ 8085898
+ thumb_func_start Overworld_ChangeMusicToDefault
+Overworld_ChangeMusicToDefault: @ 8085898
push {r4,lr}
bl GetCurrentMapMusic
adds r4, r0, 0
@@ -2360,10 +2360,10 @@ _080858BE:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_8085898
+ thumb_func_end Overworld_ChangeMusicToDefault
- thumb_func_start sub_80858C4
-sub_80858C4: @ 80858C4
+ thumb_func_start Overworld_ChangeMusicTo
+Overworld_ChangeMusicTo: @ 80858C4
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
@@ -2383,7 +2383,7 @@ _080858E4:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80858C4
+ thumb_func_end Overworld_ChangeMusicTo
thumb_func_start is_warp1_light_level_8_or_9
is_warp1_light_level_8_or_9: @ 80858F0
@@ -3175,7 +3175,7 @@ CB2_NewGame: @ 8085EF8
bl ScriptContext1_Init
bl ScriptContext2_Disable
ldr r1, =gFieldCallback
- ldr r0, =sub_80FB4E0
+ ldr r0, =ExecuteTruckSequence
str r0, [r1]
ldr r1, =gUnknown_03005DB0
movs r0, 0
@@ -3525,8 +3525,8 @@ _08086278:
_08086286:
bl CopyFieldObjectTemplateCoordsToSav1
_0808628A:
- bl sub_809757C
- bl sub_809E7B0
+ bl UnfreezeMapObjects
+ bl DoTimeBasedEvents
bl sub_8084788
ldr r0, =gMapHeader
ldrh r1, [r0, 0x12]
@@ -3640,7 +3640,7 @@ VBlankCB_Field: @ 8086390
bl sub_80BA0A8
bl FieldUpdateBgTilemapScroll
bl TransferPlttBuffer
- bl sub_80A09D0
+ bl TransferTilesetAnimsBuffer
pop {r0}
bx r0
thumb_func_end VBlankCB_Field
diff --git a/asm/rom6.s b/asm/rom6.s
index b18ec1b3e..b729369c8 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -167,7 +167,7 @@ sub_8135578: @ 8135578
cmp r4, 0
bne _081355FC
bl player_get_direction_lower_nybble
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r6, 0x4]
@@ -258,7 +258,7 @@ sub_813561C: @ 813561C
thumb_func_start sub_8135654
sub_8135654: @ 8135654
push {r4,lr}
- bl sub_81797DC
+ bl ShouldDoBrailleStrengthEffect
lsls r0, 24
cmp r0, 0
beq _0813568C
@@ -303,7 +303,7 @@ _081356AC:
sub_81356C4: @ 81356C4
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -380,7 +380,7 @@ hm2_dig: @ 8135760
movs r0, 0x26
bl FieldEffectStart
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -404,7 +404,7 @@ sub_8135780: @ 8135780
lsrs r0, r2, 16
strh r0, [r1, 0x18]
strh r2, [r1, 0x1A]
- bl sub_81795E8
+ bl ShouldDoBrailleDigEffect
lsls r0, 24
cmp r0, 0
bne _081357AC
@@ -422,12 +422,12 @@ sub_81357BC: @ 81357BC
push {r4,lr}
movs r0, 0x26
bl FieldEffectActiveListRemove
- bl sub_81795E8
+ bl ShouldDoBrailleDigEffect
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0
beq _081357D6
- bl sub_817963C
+ bl DoBrailleDigEffect
b _081357EE
_081357D6:
ldr r0, =task08_080A1C44
@@ -3329,7 +3329,7 @@ _081370E2:
thumb_func_start sub_81370FC
sub_81370FC: @ 81370FC
push {r4,lr}
- bl sub_81798D0
+ bl ShouldDoBrailleFlyEffect
lsls r0, 24
cmp r0, 0
beq _08137134
@@ -3381,7 +3381,7 @@ hm2_flash: @ 8137178
lsls r4, 24
lsrs r4, 24
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -4121,7 +4121,7 @@ _081377BC:
add r2, sp, 0x18
bl SetMonData
adds r0, r4, 0
- bl sub_80EE5A4
+ bl GetRibbonCount
strb r0, [r5, 0x1]
movs r7, 0x1
_0813780A:
@@ -4337,7 +4337,7 @@ sub_8137988: @ 8137988
.pool
_081379C8:
ldr r0, =0x0000089a
- bl FlagReset
+ bl FlagClear
_081379CE:
pop {r0}
bx r0
@@ -4629,7 +4629,7 @@ sub_8137C10: @ 8137C10
ldr r0, =gSpecialVar_0x8004
ldrh r0, [r0]
bl sub_8137A98
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r0}
bx r0
.pool
@@ -4705,7 +4705,7 @@ _08137CAC:
thumb_func_start sub_8137CB4
sub_8137CB4: @ 8137CB4
push {lr}
- ldr r0, =sub_8177888
+ ldr r0, =CB2_ShowDiploma
bl SetMainCallback2
bl ScriptContext2_Enable
pop {r0}
@@ -5030,7 +5030,7 @@ _08137F6E:
movs r1, 0
bl VarSet
movs r0, 0
- bl sav1_set_battle_music_maybe
+ bl Overworld_SetSavedMusic
_08137F7C:
pop {r4}
pop {r0}
@@ -5056,14 +5056,14 @@ sub_8137F90: @ 8137F90
sub_8137FB0: @ 8137FB0
push {lr}
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
thumb_func_end sub_8137FB0
- thumb_func_start sub_8137FC0
-sub_8137FC0: @ 8137FC0
+ thumb_func_start CountSSTidalStep
+CountSSTidalStep: @ 8137FC0
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
@@ -5091,10 +5091,10 @@ _08137FF6:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_8137FC0
+ thumb_func_end CountSSTidalStep
- thumb_func_start sub_8137FFC
-sub_8137FFC: @ 8137FFC
+ thumb_func_start GetSSTidalLocation
+GetSSTidalLocation: @ 8137FFC
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -5203,7 +5203,7 @@ _081380CE:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_8137FFC
+ thumb_func_end GetSSTidalLocation
thumb_func_start is_tile_that_overrides_player_control
is_tile_that_overrides_player_control: @ 81380D8
@@ -5399,13 +5399,13 @@ sub_8138240: @ 8138240
bl GetMultiplayerId
lsls r0, 24
lsrs r7, r0, 24
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
cmp r4, r5
bcs _0813828A
- ldr r0, =gUnknown_0858D144
+ ldr r0, =gTVStringVarPtrs
mov r8, r0
_08138262:
cmp r7, r4
@@ -6378,7 +6378,7 @@ sub_8138AA4: @ 8138AA4
sub_8138AC0: @ 8138AC0
push {lr}
ldr r0, =gStringVar4
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r0}
bx r0
.pool
@@ -6485,7 +6485,7 @@ sub_8138B8C: @ 8138B8C
movs r0, 0x13
movs r1, 0
movs r3, 0x6
- bl warp1_set
+ bl Overworld_SetWarpDestination
b _08138BC2
.pool
_08138BB0:
@@ -6496,7 +6496,7 @@ _08138BB0:
movs r0, 0x13
movs r1, 0x1
movs r3, 0x6
- bl warp1_set
+ bl Overworld_SetWarpDestination
_08138BC2:
add sp, 0x4
pop {r0}
@@ -6537,7 +6537,7 @@ _08138BF6:
thumb_func_start sub_8138C04
sub_8138C04: @ 8138C04
push {r4,lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7051,7 +7051,7 @@ sub_8138FEC: @ 8138FEC
ldr r1, =gSpecialVar_0x8004
ldr r0, =0x000001f5
strh r0, [r1]
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
@@ -7060,7 +7060,7 @@ sub_8138FEC: @ 8138FEC
thumb_func_start sub_8139004
sub_8139004: @ 8139004
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7084,7 +7084,7 @@ _0813902A:
thumb_func_start sub_8139030
sub_8139030: @ 8139030
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7108,7 +7108,7 @@ _08139056:
thumb_func_start sub_813905C
sub_813905C: @ 813905C
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7132,7 +7132,7 @@ _08139082:
thumb_func_start sub_8139088
sub_8139088: @ 8139088
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7156,7 +7156,7 @@ _081390AE:
thumb_func_start sub_81390B4
sub_81390B4: @ 81390B4
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7295,7 +7295,7 @@ RemoveScriptFieldObject: @ 81391AC
thumb_func_start sub_81391D0
sub_81391D0: @ 81391D0
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7347,7 +7347,7 @@ sub_8139228: @ 8139228
sub_8139238: @ 8139238
push {lr}
ldr r0, =gStringVar1
- bl sub_8165284
+ bl GetEreaderTrainerName
pop {r0}
bx r0
.pool
@@ -7479,7 +7479,7 @@ _08139342:
thumb_func_start sub_8139348
sub_8139348: @ 8139348
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7507,7 +7507,7 @@ sub_8139370: @ 8139370
movs r1, 0x1
mov r0, sp
strb r1, [r0]
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7519,7 +7519,7 @@ sub_8139370: @ 8139370
mov r2, sp
bl SetMonData
adds r0, r4, 0
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -7538,7 +7538,7 @@ _081393B6:
thumb_func_start sub_81393C8
sub_81393C8: @ 81393C8
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7858,7 +7858,7 @@ sub_8139648: @ 8139648
cmp r0, 0x1
beq _08139664
movs r0, 0x14
- bl sub_80AED7C
+ bl SetSav1Weather
_08139664:
pop {r0}
bx r0
@@ -7876,14 +7876,14 @@ sub_8139668: @ 8139668
cmp r0, 0x1
beq _08139684
movs r0, 0x15
- bl sub_80AED7C
+ bl SetSav1Weather
_08139684:
pop {r0}
bx r0
thumb_func_end sub_8139668
- thumb_func_start sub_8139688
-sub_8139688: @ 8139688
+ thumb_func_start GetLeadMonIndex
+GetLeadMonIndex: @ 8139688
push {r4-r6,lr}
bl CalculatePlayerPartyCount
lsls r0, 24
@@ -7926,7 +7926,7 @@ _081396D8:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_8139688
+ thumb_func_end GetLeadMonIndex
thumb_func_start sub_81396E0
sub_81396E0: @ 81396E0
@@ -8050,7 +8050,7 @@ sub_81397C4: @ 81397C4
cmp r1, r0
bls _081397E0
movs r0, 0
- bl sub_80EF340
+ bl TV_PrintIntToStringVar
b _08139862
.pool
_081397E0:
@@ -9094,7 +9094,7 @@ _0813A062:
lsls r0, 2
adds r0, r7
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r4-r7}
pop {r0}
bx r0
@@ -9996,7 +9996,7 @@ _0813A7C6:
lsrs r0, 22
adds r0, r1
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r0}
bx r0
.pool
@@ -10036,7 +10036,7 @@ sub_813A820: @ 813A820
lsls r0, r4, 2
adds r0, r1
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
ldr r0, =0x00004031
adds r1, r4, 0
bl VarSet
@@ -10056,7 +10056,7 @@ sub_813A854: @ 813A854
lsrs r0, 14
adds r0, r4
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r4}
pop {r0}
bx r0
@@ -11039,7 +11039,7 @@ _0813B0F8:
ldr r0, =sub_813B160
movs r1, 0x8
bl CreateTask
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r0, 0x1
str r0, [r3]
movs r0, 0x3A
@@ -11074,7 +11074,7 @@ _0813B13A:
adds r0, r5, r0
ldrb r2, [r0]
movs r0, 0x1
- bl update_saveblock1_field_object_coords
+ bl Overworld_SetMapObjTemplateCoords
add sp, 0x4
pop {r4,r5}
pop {r0}
@@ -11238,7 +11238,7 @@ _0813B27E:
cmp r0, r4
beq _0813B2A6
ldr r0, =0x000008d7
- bl FlagReset
+ bl FlagClear
_0813B2A6:
ldr r0, =0x00004036
lsrs r1, r7, 16
@@ -11564,7 +11564,7 @@ sub_813B534: @ 813B534
str r0, [r2]
movs r0, 0
str r0, [r1]
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0813B552
@@ -11651,11 +11651,11 @@ _0813B5FE:
lsrs r0, 24
ldr r1, =gSpecialVar_0x8004
movs r2, 0x2
- bl link_0800A448
+ bl SendBlock
b _0813B708
.pool
_0813B614:
- bl sub_800A550
+ bl GetBlockReceivedStatus
movs r1, 0x2
ands r1, r0
cmp r1, 0
@@ -11669,14 +11669,14 @@ _0813B622:
b _0813B790
_0813B62E:
ldr r5, =gSpecialVar_0x8005
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
movs r1, 0x80
lsls r1, 1
adds r0, r1
ldrh r0, [r0]
strh r0, [r5]
movs r0, 0x1
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
ldr r0, =gSpecialVar_0x8004
ldrh r0, [r0]
cmp r0, 0x1
@@ -11738,11 +11738,11 @@ _0813B6C2:
lsrs r0, 24
ldr r1, =gScriptResult
movs r2, 0x2
- bl link_0800A448
+ bl SendBlock
b _0813B708
.pool
_0813B6E4:
- bl sub_800A550
+ bl GetBlockReceivedStatus
movs r1, 0x1
ands r1, r0
cmp r1, 0
@@ -11752,11 +11752,11 @@ _0813B6E4:
cmp r0, 0
beq _0813B790
ldr r1, =gScriptResult
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
ldrh r0, [r0]
strh r0, [r1]
movs r0, 0
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
_0813B708:
ldr r1, =gTasks
lsls r0, r4, 2
@@ -11778,7 +11778,7 @@ _0813B728:
cmp r0, 0x2
bne _0813B790
ldr r0, =gUnknown_0824979B
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
b _0813B790
.pool
_0813B74C:
@@ -11787,7 +11787,7 @@ _0813B74C:
cmp r0, 0x3
bne _0813B790
ldr r0, =gUnknown_0824979B
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
b _0813B790
.pool
_0813B764:
@@ -12075,7 +12075,7 @@ sub_813B9A0: @ 813B9A0
cmp r1, r0
bne _0813B9B6
movs r0, 0x3
- bl sub_8084D1C
+ bl Overworld_SetHealLocationWarp
_0813B9B6:
pop {r0}
bx r0
@@ -12187,16 +12187,16 @@ sub_813BA60: @ 813BA60
adds r1, r2
strh r0, [r1]
ldr r0, =0x00000315
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000316
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000317
- bl FlagReset
+ bl FlagClear
movs r0, 0xC6
lsls r0, 2
- bl FlagReset
+ bl FlagClear
ldr r0, =0x000002da
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00004095
movs r1, 0x1
bl VarSet
diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s
index ea75d4e2b..bf273ac53 100644
--- a/asm/rom_80A5C6C.s
+++ b/asm/rom_80A5C6C.s
@@ -74,7 +74,7 @@ _080A5D00:
lsls r0, 24
cmp r0, 0
beq _080A5D28
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0x18]
ldrb r1, [r2, 0x4]
@@ -94,7 +94,7 @@ _080A5D28:
lsls r0, 24
cmp r0, 0
beq _080A5D60
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
@@ -112,7 +112,7 @@ _080A5D28:
b _080A5D7E
.pool
_080A5D60:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
@@ -180,7 +180,7 @@ _080A5DDA:
lsls r0, 24
cmp r0, 0
beq _080A5E04
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0x18]
ldrb r1, [r2, 0x4]
@@ -195,7 +195,7 @@ _080A5E00:
ldr r2, [r2, 0x8]
b _080A5E42
_080A5E04:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
lsls r1, r4, 2
@@ -285,7 +285,7 @@ _080A5EC0:
_080A5EC8:
cmp r5, 0xC9
bne _080A5F58
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
lsls r1, r4, 2
@@ -344,7 +344,7 @@ _080A5F44:
lsls r0, 16
lsrs r0, 16
_080A5F4E:
- ldr r1, =gUnknown_08300D38
+ ldr r1, =gMonFrontPicCoords
lsls r0, 2
b _080A5F90
.pool
@@ -352,7 +352,7 @@ _080A5F58:
ldr r0, =0x00000181
cmp r5, r0
bne _080A5F7C
- ldr r0, =gUnknown_08525F78
+ ldr r0, =gCastformFrontSpriteCoords
ldr r1, =gBattleMonForms
adds r1, r4, r1
ldrb r1, [r1]
@@ -366,11 +366,11 @@ _080A5F7C:
lsls r0, 1
cmp r5, r0
bls _080A5F8C
- ldr r0, =gUnknown_08300D38
+ ldr r0, =gMonFrontPicCoords
b _080A5F92
.pool
_080A5F8C:
- ldr r1, =gUnknown_08300D38
+ ldr r1, =gMonFrontPicCoords
_080A5F8E:
lsls r0, r5, 2
_080A5F90:
@@ -419,11 +419,11 @@ _080A5FE8:
lsls r0, 1
cmp r4, r0
bls _080A5FF8
- ldr r0, =gUnknown_08305DCC
+ ldr r0, =gEnemyMonElevation
b _080A5FFC
.pool
_080A5FF8:
- ldr r0, =gUnknown_08305DCC
+ ldr r0, =gEnemyMonElevation
adds r0, r7, r0
_080A5FFC:
ldrb r5, [r0]
@@ -531,7 +531,7 @@ sub_80A60AC: @ 80A60AC
lsls r0, 24
cmp r0, 0
beq _080A60E8
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0x18]
ldrb r1, [r2, 0x4]
@@ -546,7 +546,7 @@ _080A60E4:
ldrh r1, [r2]
b _080A610E
_080A60E8:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r4, 2
@@ -554,7 +554,7 @@ _080A60E8:
ldrh r0, [r1, 0x2]
cmp r0, 0
bne _080A610C
- ldr r1, =gUnknown_02038438
+ ldr r1, =gAnimSpeciesByBanks
lsls r0, r4, 1
adds r0, r1
ldrh r1, [r0]
@@ -654,7 +654,7 @@ sub_80A6190: @ 80A6190
lsls r0, 24
cmp r0, 0
beq _080A61E4
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
@@ -672,7 +672,7 @@ sub_80A6190: @ 80A6190
b _080A6202
.pool
_080A61E4:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
@@ -724,9 +724,9 @@ GetAnimBankSpriteId: @ 80A6240
adds r1, r0, 0
cmp r0, 0
bne _080A6268
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _080A62B6
@@ -737,9 +737,9 @@ GetAnimBankSpriteId: @ 80A6240
_080A6268:
cmp r0, 0x1
bne _080A6288
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
- bl sub_80A6A90
+ bl AnimBankSpriteExists
lsls r0, 24
cmp r0, 0
beq _080A62B6
@@ -750,22 +750,22 @@ _080A6268:
_080A6288:
cmp r1, 0x2
bne _080A62A4
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A62B6
b _080A62C0
.pool
_080A62A4:
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _080A62C0
@@ -1242,7 +1242,7 @@ sub_80A65EC: @ 80A65EC
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x34]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -1421,7 +1421,7 @@ move_anim_8074EE0: @ 80A674C
adds r4, r0, 0
bl FreeSpriteOamMatrix
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
@@ -1439,7 +1439,7 @@ sub_80A6760: @ 80A6760
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x34]
- ldr r5, =gAnimationBankAttacker
+ ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -1518,7 +1518,7 @@ sub_80A67F4: @ 80A67F4
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
pop {r4}
pop {r0}
bx r0
@@ -1537,7 +1537,7 @@ sub_80A6814: @ 80A6814
movs r1, 0
bl SetGpuReg
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r4}
pop {r0}
bx r0
@@ -1547,7 +1547,7 @@ sub_80A6814: @ 80A6814
sub_80A6838: @ 80A6838
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -1575,13 +1575,13 @@ sub_80A6864: @ 80A6864
lsls r1, 16
lsrs r5, r1, 16
mov r8, r5
- ldr r7, =gAnimationBankAttacker
+ ldr r7, =gAnimBankAttacker
ldrb r0, [r7]
movs r1, 0
bl sub_80A5C6C
lsls r0, 24
lsrs r6, r0, 24
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0
bl sub_80A5C6C
@@ -1729,7 +1729,7 @@ sub_80A6980: @ 80A6980
lsls r1, 24
cmp r1, 0
bne _080A69A8
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_80A60AC
@@ -1765,7 +1765,7 @@ sub_80A69CC: @ 80A69CC
lsls r1, 24
cmp r1, 0
bne _080A69F0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_80A60AC
@@ -1777,7 +1777,7 @@ sub_80A69CC: @ 80A69CC
b _080A6A04
.pool
_080A69F0:
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A60AC
@@ -1810,7 +1810,7 @@ _080A6A04:
GetBankSide: @ 80A6A30
lsls r0, 24
lsrs r0, 24
- ldr r1, =gBanksBySide
+ ldr r1, =gBanksByIdentity
adds r0, r1
ldrb r1, [r0]
movs r0, 0x1
@@ -1823,15 +1823,15 @@ GetBankSide: @ 80A6A30
GetBankIdentity: @ 80A6A44
lsls r0, 24
lsrs r0, 24
- ldr r1, =gBanksBySide
+ ldr r1, =gBanksByIdentity
adds r0, r1
ldrb r0, [r0]
bx lr
.pool
thumb_func_end GetBankIdentity
- thumb_func_start GetBankByPlayerAI
-GetBankByPlayerAI: @ 80A6A54
+ thumb_func_start GetBankByIdentity
+GetBankByIdentity: @ 80A6A54
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
@@ -1840,7 +1840,7 @@ GetBankByPlayerAI: @ 80A6A54
ldrb r2, [r0]
cmp r1, r2
bcs _080A6A7E
- ldr r4, =gBanksBySide
+ ldr r4, =gBanksByIdentity
ldrb r0, [r4]
cmp r0, r3
beq _080A6A7E
@@ -1860,10 +1860,10 @@ _080A6A7E:
pop {r1}
bx r1
.pool
- thumb_func_end GetBankByPlayerAI
+ thumb_func_end GetBankByIdentity
- thumb_func_start sub_80A6A90
-sub_80A6A90: @ 80A6A90
+ thumb_func_start AnimBankSpriteExists
+AnimBankSpriteExists: @ 80A6A90
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -1872,18 +1872,18 @@ sub_80A6A90: @ 80A6A90
lsls r0, 24
cmp r0, 0
beq _080A6ABC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
cmp r0, r4
beq _080A6B0A
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
cmp r0, r4
beq _080A6B0A
b _080A6B18
.pool
_080A6ABC:
- ldr r0, =gBanksBySide
+ ldr r0, =gBanksByIdentity
adds r0, r4, r0
ldrb r0, [r0]
cmp r0, 0xFF
@@ -1926,17 +1926,17 @@ _080A6B1A:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_80A6A90
+ thumb_func_end AnimBankSpriteExists
- thumb_func_start battle_type_is_double
-battle_type_is_double: @ 80A6B20
+ thumb_func_start IsDoubleBattle
+IsDoubleBattle: @ 80A6B20
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
bx lr
.pool
- thumb_func_end battle_type_is_double
+ thumb_func_end IsDoubleBattle
thumb_func_start sub_80A6B30
sub_80A6B30: @ 80A6B30
@@ -2061,9 +2061,9 @@ sub_80A6BFC: @ 80A6BFC
b _080A6C60
.pool
_080A6C30:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
- bl GetBankIdentity_permutated
+ bl sub_80A8364
lsls r0, 24
lsrs r1, r0, 24
cmp r1, 0x1
@@ -2271,21 +2271,21 @@ _080A6DBE:
movs r0, 0x3
movs r1, 0
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x3
movs r1, 0x1
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
b _080A6DE8
_080A6DD4:
movs r0, 0x3
movs r1, 0
movs r2, 0x1
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
movs r0, 0x3
movs r1, 0x1
movs r2, 0
- bl lcd_bg_operations
+ bl SetAnimBgAttribute
_080A6DE8:
pop {r0}
bx r0
@@ -2934,7 +2934,7 @@ sub_80A7270: @ 80A7270
cmp r0, 0
bne _080A72A6
adds r0, r7, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A72B4
@@ -2976,7 +2976,7 @@ _080A72B4:
lsls r0, 30
cmp r0, 0
bne _080A7312
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0, 0x4]
lsls r0, r7, 1
@@ -3372,7 +3372,7 @@ _080A75F6:
_080A7602:
cmp r7, 0
beq _080A7614
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
adds r1, r0, 0
adds r1, 0x10
@@ -3383,7 +3383,7 @@ _080A7614:
mov r0, r8
cmp r0, 0
beq _080A7628
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
adds r1, r0, 0
adds r1, 0x10
@@ -3394,11 +3394,11 @@ _080A7628:
mov r0, r9
cmp r0, 0
beq _080A764E
- ldr r6, =gAnimationBankAttacker
+ ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A764E
@@ -3413,11 +3413,11 @@ _080A764E:
mov r0, r10
cmp r0, 0
beq _080A7674
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A7674
@@ -3496,15 +3496,15 @@ _080A76F2:
cmp r5, 0
beq _080A771A
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A771A
movs r0, 0
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
@@ -3514,15 +3514,15 @@ _080A771A:
cmp r6, 0
beq _080A7746
movs r0, 0x2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A7746
movs r0, 0x2
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -3534,15 +3534,15 @@ _080A7746:
cmp r7, 0
beq _080A7772
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A7772
movs r0, 0x1
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -3555,15 +3555,15 @@ _080A7772:
cmp r0, 0
beq _080A77A0
movs r0, 0x3
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A77A0
movs r0, 0x3
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -3592,7 +3592,7 @@ sub_80A77B4: @ 80A77B4
push {lr}
lsls r0, 24
lsrs r0, 24
- bl GetBankByPlayerAI
+ bl GetBankByIdentity
lsls r0, 24
lsrs r0, 24
pop {r1}
@@ -3670,7 +3670,7 @@ _080A7838:
_080A7842:
adds r0, r5, 0
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -3682,7 +3682,7 @@ _080A7842:
_080A785C:
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
- ldr r4, =gAnimationBankTarget
+ ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -3701,7 +3701,7 @@ _080A785C:
strh r0, [r5, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4-r7}
@@ -3716,7 +3716,7 @@ sub_80A78AC: @ 80A78AC
adds r6, r0, 0
movs r1, 0x1
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -3730,7 +3730,7 @@ _080A78CC:
ldr r4, =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, =gAnimationBankTarget
+ ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_80A5C6C
@@ -3768,7 +3768,7 @@ sub_80A791C: @ 80A791C
cmp r0, 0
beq _080A7930
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080A7930:
pop {r4}
pop {r0}
@@ -3799,17 +3799,17 @@ _080A7954:
adds r0, r5, 0
adds r1, r4, 0
bl sub_80A69CC
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
b _080A7976
.pool
_080A796C:
adds r0, r5, 0
adds r1, r4, 0
bl sub_80A6980
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
_080A7976:
ldrb r6, [r0]
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -3844,7 +3844,7 @@ _080A798E:
strh r0, [r5, 0x36]
ldr r0, =sub_80A6EEC
str r0, [r5, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r5, 0
bl StoreSpriteCallbackInData6
pop {r4-r7}
@@ -4070,7 +4070,7 @@ _080A7B60:
cmp r1, r0
bne _080A7B90
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080A7B90:
pop {r4,r5}
pop {r0}
@@ -4090,7 +4090,7 @@ sub_80A7B98: @ 80A7B98
cmp r3, 0xFF
bne _080A7BBC
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080A7BE2
.pool
_080A7BBC:
@@ -4210,7 +4210,7 @@ _080A7C78:
b _080A7CAC
_080A7CA6:
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080A7CAC:
pop {r4,r5}
pop {r0}
@@ -4230,7 +4230,7 @@ sub_80A7CB4: @ 80A7CB4
cmp r2, 0xFF
bne _080A7CD8
adds r0, r4, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
b _080A7CEE
.pool
_080A7CD8:
@@ -4554,7 +4554,7 @@ _080A7F42:
lsls r0, 24
cmp r0, 0
beq _080A7F78
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r0, [r0, 0x18]
ldrh r2, [r0]
@@ -4571,7 +4571,7 @@ _080A7F78:
lsls r0, 24
cmp r0, 0
bne _080A7FD8
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
@@ -4606,7 +4606,7 @@ _080A7FD0:
b _080A8026
.pool
_080A7FD8:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
lsls r0, r5, 2
@@ -4641,7 +4641,7 @@ _080A8018:
b _080A8042
.pool
_080A8024:
- ldr r0, =gUnknown_08300D38
+ ldr r0, =gMonFrontPicCoords
_080A8026:
lsls r1, r2, 2
adds r1, r0
@@ -4807,7 +4807,7 @@ sub_80A8140: @ 80A8140
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, =gHappinessMoveAnim
+ ldr r0, =gAnimFriendship
ldrb r0, [r0]
movs r1, 0
cmp r0, 0x1E
@@ -4823,7 +4823,7 @@ _080A815E:
ldr r0, =gBattleAnimArgs
strh r1, [r0, 0xE]
adds r0, r2, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
pop {r0}
bx r0
.pool
@@ -4837,9 +4837,9 @@ sub_80A8174: @ 80A8174
lsls r0, 24
lsrs r4, r0, 24
adds r7, r4, 0
- ldr r6, =gAnimationBankTarget
+ ldr r6, =gAnimBankTarget
ldrb r0, [r6]
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A81B4
@@ -4863,10 +4863,10 @@ sub_80A8174: @ 80A8174
orrs r0, r2
strb r0, [r1, 0x5]
_080A81B4:
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
mov r8, r0
ldrb r0, [r0]
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A81EC
@@ -4894,7 +4894,7 @@ _080A81EC:
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A8224
@@ -4922,7 +4922,7 @@ _080A8224:
mov r1, r8
ldrb r0, [r1]
eors r0, r5
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A825C
@@ -4968,7 +4968,7 @@ _080A8286:
lsls r0, r5, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080A82C8
@@ -5083,8 +5083,8 @@ _080A835C:
bx r1
thumb_func_end sub_80A8328
- thumb_func_start GetBankIdentity_permutated
-GetBankIdentity_permutated: @ 80A8364
+ thumb_func_start sub_80A8364
+sub_80A8364: @ 80A8364
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -5109,7 +5109,7 @@ _080A838C:
pop {r4}
pop {r1}
bx r1
- thumb_func_end GetBankIdentity_permutated
+ thumb_func_end sub_80A8364
thumb_func_start sub_80A8394
sub_80A8394: @ 80A8394
@@ -5155,7 +5155,7 @@ sub_80A8394: @ 80A8394
bl AllocSpritePalette
lsls r0, 24
lsrs r5, r0, 24
- ldr r4, =gBattleSpritesGfx
+ ldr r4, =gMonSpritesGfxPtr
ldr r0, [r4]
cmp r0, 0
beq _080A8412
@@ -5200,7 +5200,7 @@ _080A8412:
lsrs r0, 24
cmp r0, 0x1
beq _080A845E
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
ldr r2, [sp, 0x40]
@@ -5213,7 +5213,7 @@ _080A845E:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
movs r3, 0xBE
lsls r3, 1
@@ -5226,7 +5226,7 @@ _080A8488:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
@@ -5263,7 +5263,7 @@ _080A84B0:
lsrs r0, 24
cmp r0, 0x1
beq _080A84F6
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r1, [r0]
ldr r3, [sp, 0x40]
@@ -5276,7 +5276,7 @@ _080A84F6:
lsls r0, r6, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
movs r2, 0xBE
lsls r2, 1
@@ -5294,7 +5294,7 @@ _080A8524:
lsls r0, r6, 3
ldr r1, =gMonBackPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
movs r3, 0xBE
lsls r3, 1
@@ -5305,7 +5305,7 @@ _080A8524:
mov r3, r8
bl LoadSpecialPokePic_2
_080A8540:
- ldr r5, =gBattleSpritesGfx
+ ldr r5, =gMonSpritesGfxPtr
ldr r0, [r5]
movs r4, 0xBE
lsls r4, 1
@@ -5338,7 +5338,7 @@ _080A8540:
mov r2, r10
lsls r1, r2, 16
asrs r1, 16
- ldr r3, =gUnknown_08300D38
+ ldr r3, =gMonFrontPicCoords
b _080A85B2
.pool
_080A85A0:
@@ -5416,7 +5416,7 @@ sub_80A861C: @ 80A861C
lsls r0, 24
cmp r0, 0
beq _080A86C4
- ldr r0, =gUnknown_02039F34
+ ldr r0, =gContestResources
ldr r0, [r0]
ldr r2, [r0, 0x18]
ldrb r1, [r2, 0x4]
@@ -5490,7 +5490,7 @@ _080A86C4:
lsls r0, 24
cmp r0, 0
bne _080A8790
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
mov r1, r8
@@ -5580,7 +5580,7 @@ _080A8784:
b _080A8864
.pool
_080A8790:
- ldr r0, =gUnknown_020244D0
+ ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r0, [r0]
mov r1, r8
@@ -5662,7 +5662,7 @@ _080A8834:
add r0, r8
ldrb r0, [r0]
lsls r0, 2
- ldr r1, =gUnknown_08525F78
+ ldr r1, =gCastformFrontSpriteCoords
adds r4, r0, r1
b _080A8866
.pool
@@ -5671,13 +5671,13 @@ _080A8850:
lsls r0, 1
cmp r7, r0
bls _080A8860
- ldr r4, =gUnknown_08300D38
+ ldr r4, =gMonFrontPicCoords
b _080A8866
.pool
_080A8860:
lsls r1, r7, 2
_080A8862:
- ldr r0, =gUnknown_08300D38
+ ldr r0, =gMonFrontPicCoords
_080A8864:
adds r4, r1, r0
_080A8866:
@@ -5807,7 +5807,7 @@ _080A8946:
bl sub_80A5C6C
lsls r0, 24
lsrs r7, r0, 24
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080A8998
@@ -5941,7 +5941,7 @@ sub_80A8A6C: @ 80A8A6C
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -5998,7 +5998,7 @@ _080A8AB6:
sub_80A8AEC: @ 80A8AEC
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -6054,7 +6054,7 @@ sub_80A8B64: @ 80A8B64
push {r4,lr}
adds r4, r0, 0
bl sub_80A6838
- ldr r0, =gAnimationBankAttacker
+ ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -6081,7 +6081,7 @@ _080A8B9C:
strh r0, [r4, 0x22]
ldr r0, =sub_80A67D8
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4}
@@ -6106,7 +6106,7 @@ sub_80A8BC4: @ 80A8BC4
lsrs r0, 24
movs r6, 0
strh r0, [r5, 0x8]
- ldr r7, =gAnimationBankAttacker
+ ldr r7, =gAnimBankAttacker
ldrb r0, [r7]
bl GetBankSide
lsls r0, 24
@@ -6283,7 +6283,7 @@ _080A8D58:
ldr r0, =0x00002771
bl FreeSpritePaletteByTag
adds r0, r5, 0
- bl move_anim_task_del
+ bl DestroyAnimVisualTask
_080A8D6C:
pop {r4,r5}
pop {r0}
@@ -6389,7 +6389,7 @@ _080A8E26:
sub_80A8E30: @ 80A8E30
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, =gAnimationBankAttacker
+ ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_80A5C6C
@@ -6465,7 +6465,7 @@ _080A8EC4:
cmp r0, r1
bge _080A8EDC
adds r0, r4, 0
- bl move_anim_8072740
+ bl DestroyAnimSprite
_080A8EDC:
pop {r4,r5}
pop {r0}
@@ -6487,7 +6487,7 @@ sub_80A8EE4: @ 80A8EE4
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x36]
- ldr r0, =gAnimationBankTarget
+ ldr r0, =gAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -6514,7 +6514,7 @@ _080A8F32:
strh r0, [r4, 0x22]
ldr r0, =sub_80A6EEC
str r0, [r4, 0x1C]
- ldr r1, =move_anim_8072740
+ ldr r1, =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData6
pop {r4,r5}
diff --git a/asm/save.s b/asm/save.s
deleted file mode 100644
index 825da0756..000000000
--- a/asm/save.s
+++ /dev/null
@@ -1,164 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start sub_8153688
-sub_8153688: @ 8153688
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0xB
- bls _081536A2
- b _081537C2
-_081536A2:
- lsls r0, 2
- ldr r1, =_081536B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081536B4:
- .4byte _081536E4
- .4byte _081536F4
- .4byte _081536FE
- .4byte _0815371A
- .4byte _0815372C
- .4byte _08153742
- .4byte _08153758
- .4byte _08153762
- .4byte _08153778
- .4byte _0815378C
- .4byte _08153796
- .4byte _081537A8
-_081536E4:
- ldr r0, =gSoftResetDisabled
- movs r1, 0x1
- strb r1, [r0]
- movs r0, 0x1
- strh r0, [r4]
- b _081537C2
- .pool
-_081536F4:
- bl sub_800ADF8
- movs r0, 0x2
- strh r0, [r4]
- b _081537C2
-_081536FE:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _081537C2
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08153714
- bl save_serialize_map
-_08153714:
- movs r0, 0x3
- strh r0, [r4]
- b _081537C2
-_0815371A:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08153726
- bl sub_8076D5C
-_08153726:
- bl sub_8153380
- b _08153752
-_0815372C:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0x5
- bne _081537C2
- movs r0, 0
- strh r0, [r4, 0x2]
- strh r1, [r4]
- b _081537C2
-_08153742:
- bl sub_81533AC
- lsls r0, 24
- cmp r0, 0
- beq _08153752
- movs r0, 0x6
- strh r0, [r4]
- b _081537C2
-_08153752:
- movs r0, 0x4
- strh r0, [r4]
- b _081537C2
-_08153758:
- bl sub_81533E0
- movs r0, 0x7
- strh r0, [r4]
- b _081537C2
-_08153762:
- movs r1, 0x4
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0815376E
- bl sav2_gender2_inplace_and_xFE
-_0815376E:
- bl sub_800ADF8
- movs r0, 0x8
- strh r0, [r4]
- b _081537C2
-_08153778:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _081537C2
- bl sub_8153408
- movs r0, 0x9
- strh r0, [r4]
- b _081537C2
-_0815378C:
- bl sub_800ADF8
- movs r0, 0xA
- strh r0, [r4]
- b _081537C2
-_08153796:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _081537C2
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _081537C2
-_081537A8:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _081537C2
- ldr r1, =gSoftResetDisabled
- movs r0, 0
- strb r0, [r1]
- adds r0, r2, 0
- bl DestroyTask
-_081537C2:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8153688
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/save_failed_screen.s b/asm/save_failed_screen.s
deleted file mode 100644
index 182ff8954..000000000
--- a/asm/save_failed_screen.s
+++ /dev/null
@@ -1,707 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8178F44
-sub_8178F44: @ 8178F44
- push {r4,r5,lr}
- sub sp, 0x18
- adds r5, r0, 0
- adds r4, r1, 0
- adds r3, r2, 0
- lsls r3, 24
- add r0, sp, 0x14
- movs r2, 0
- strb r2, [r0]
- adds r1, r0, 0
- movs r0, 0xF
- strb r0, [r1, 0x1]
- movs r0, 0x3
- strb r0, [r1, 0x2]
- ldr r0, =gUnknown_0203BD0E
- ldrb r0, [r0]
- lsls r4, 27
- lsrs r4, 24
- lsrs r3, 21
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r2, [sp]
- str r2, [sp, 0x4]
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- str r5, [sp, 0x10]
- movs r1, 0x1
- adds r2, r4, 0
- bl AddTextPrinterParametrized2
- add sp, 0x18
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178F44
-
- thumb_func_start DoSaveFailedScreen
-DoSaveFailedScreen: @ 8178F90
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, =sub_8178FDC
- bl SetMainCallback2
- ldr r0, =gUnknown_0203BCFC
- strh r4, [r0]
- ldr r1, =gUnknown_0203BCFE
- movs r2, 0
- movs r0, 0
- strh r0, [r1]
- strh r0, [r1, 0x2]
- ldr r0, =gUnknown_0203BD0E
- strb r2, [r0]
- strb r2, [r0, 0x1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoSaveFailedScreen
-
- thumb_func_start sub_8178FC8
-sub_8178FC8: @ 8178FC8
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8178FC8
-
- thumb_func_start sub_8178FDC
-sub_8178FDC: @ 8178FDC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r0, =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r7, r0, r1
- ldrb r0, [r7]
- cmp r0, 0
- beq _08178FF8
- cmp r0, 0x1
- bne _08178FF8
- b _0817925C
-_08178FF8:
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xE
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- add r1, sp, 0x4
- movs r0, 0
- strh r0, [r1]
- ldr r2, =0x040000d4
- str r1, [r2]
- movs r1, 0xC0
- lsls r1, 19
- str r1, [r2, 0x4]
- ldr r0, =0x8100c000
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r3, 0
- mov r8, r3
- str r3, [sp, 0x8]
- add r4, sp, 0x8
- str r4, [r2]
- movs r0, 0xE0
- lsls r0, 19
- str r0, [r2, 0x4]
- ldr r0, =0x85000100
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- add r0, sp, 0x4
- mov r3, r8
- strh r3, [r0]
- str r0, [r2]
- movs r0, 0xA0
- lsls r0, 19
- str r0, [r2, 0x4]
- ldr r0, =0x81000200
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r0, =gUnknown_085B0E04
- bl LZ77UnCompVram
- ldr r0, =gUnknown_085B0A80
- ldr r1, =0x06007000
- bl LZ77UnCompVram
- ldr r0, =gUnknown_085B0C0C
- ldr r1, =0x06007800
- bl LZ77UnCompVram
- ldr r0, =gUnknown_085EFDE4
- ldr r1, =0x06010020
- bl LZ77UnCompVram
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085EFD88
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r5, =0x0201e000
- movs r0, 0
- adds r1, r5, 0
- bl SetBgTilemapBuffer
- mov r0, r8
- str r0, [sp, 0x8]
- ldr r2, =0x05000200
- adds r0, r4, 0
- adds r1, r5, 0
- bl CpuSet
- ldr r1, =gUnknown_0850E87C
- movs r2, 0x90
- lsls r2, 1
- movs r6, 0x85
- lsls r6, 2
- movs r0, 0
- adds r3, r6, 0
- bl LoadBgTiles
- ldr r0, =gUnknown_085EFD94
- bl InitWindows
- ldr r0, =gUnknown_085EFD9C
- bl AddWindowWithoutTileMap
- ldr r4, =gUnknown_0203BD0E
- strb r0, [r4]
- ldrb r0, [r4]
- movs r1, 0x80
- lsls r1, 4
- adds r2, r5, r1
- movs r1, 0x7
- bl SetWindowAttribute
- ldr r0, =gUnknown_085EFDA4
- bl AddWindowWithoutTileMap
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x1]
- movs r3, 0xE8
- lsls r3, 5
- adds r5, r3
- movs r1, 0x7
- adds r2, r5, 0
- bl SetWindowAttribute
- bl DeactivateAllTextPrinters
- bl ResetSpriteData
- bl ResetTasks
- bl ResetPaletteFade
- ldr r0, =gUnknown_085B0A00
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
- ldr r0, =gUnknown_085EFDC4
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_0850FEFC
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_0860F074
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldrb r0, [r4]
- movs r1, 0
- adds r2, r6, 0
- movs r3, 0xE
- bl SetWindowBorderStyle
- ldrb r0, [r4, 0x1]
- movs r1, 0
- adds r2, r6, 0
- movs r3, 0xE
- bl SetWindowBorderStyle
- ldrb r0, [r4, 0x1]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r4, 0x1]
- movs r1, 0x2
- bl CopyWindowToVram
- ldrb r0, [r4]
- movs r1, 0x1
- bl CopyWindowToVram
- ldr r0, =gText_SaveFailedCheckingBackup
- movs r1, 0x1
- movs r2, 0
- bl sub_8178F44
- movs r0, 0x1
- negs r0, r0
- mov r1, r8
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, =sub_8178FC8
- bl SetVBlankCallback
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- b _08179272
- .pool
-_0817925C:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08179272
- ldr r0, =sub_8179288
- bl SetMainCallback2
- ldr r0, =sub_8179454
- bl SetVBlankCallback
-_08179272:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8178FDC
-
- thumb_func_start sub_8179288
-sub_8179288: @ 8179288
- push {r4-r6,lr}
- movs r5, 0
- ldr r0, =gUnknown_0203BCFE
- movs r1, 0x1
- strh r1, [r0]
- ldr r1, =gDamagedSaveSectors
- ldr r0, [r1]
- cmp r0, 0
- beq _081792EC
- adds r6, r1, 0
-_0817929C:
- ldr r0, [r6]
- bl sub_81795AC
- lsls r0, 24
- cmp r0, 0
- bne _08179348
- ldr r4, =gUnknown_0203BD0E
- ldrb r0, [r4]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, =gText_CheckCompleted
- movs r1, 0x1
- movs r2, 0
- bl sub_8178F44
- ldr r0, =gUnknown_0203BCFC
- ldrb r0, [r0]
- bl HandleSavingData
- ldr r0, [r6]
- cmp r0, 0
- beq _081792DC
- ldrb r0, [r4]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, =gText_SaveFailedCheckingBackup
- movs r1, 0x1
- movs r2, 0
- bl sub_8178F44
-_081792DC:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r6]
- cmp r0, 0
- beq _081792EC
- cmp r5, 0x2
- bls _0817929C
-_081792EC:
- cmp r5, 0x3
- bne _0817931C
- ldr r0, =gUnknown_0203BD0E
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, =gText_BackupMemoryDamaged
- b _08179330
- .pool
-_0817931C:
- ldr r0, =gUnknown_0203BD0E
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, =gGameContinueCallback
- ldr r0, [r0]
- cmp r0, 0
- bne _08179370
- ldr r0, =gText_SaveCompleteGameCannotContinue
-_08179330:
- movs r1, 0x1
- movs r2, 0
- bl sub_8178F44
- b _0817937A
- .pool
-_08179348:
- ldr r0, =gUnknown_0203BD0E
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, =gText_BackupMemoryDamaged
- movs r1, 0x1
- movs r2, 0
- bl sub_8178F44
- ldr r0, =sub_8179390
- bl SetMainCallback2
- b _08179380
- .pool
-_08179370:
- ldr r0, =gText_SaveCompletePressA
- movs r1, 0x1
- movs r2, 0
- bl sub_8178F44
-_0817937A:
- ldr r0, =sub_81793E0
- bl SetMainCallback2
-_08179380:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8179288
-
- thumb_func_start sub_8179390
-sub_8179390: @ 8179390
- push {lr}
- ldr r1, =gUnknown_0203BCFE
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081793C4
- ldr r0, =gUnknown_0203BD0E
- ldrb r0, [r0]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, =gText_GamePlayCannotBeContinued
- movs r1, 0x1
- movs r2, 0
- bl sub_8178F44
- ldr r0, =sub_8178FC8
- bl SetVBlankCallback
- ldr r0, =sub_81793E0
- bl SetMainCallback2
-_081793C4:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8179390
-
- thumb_func_start sub_81793E0
-sub_81793E0: @ 81793E0
- push {lr}
- sub sp, 0x4
- ldr r0, =gUnknown_0203BCFE
- movs r2, 0
- strh r2, [r0]
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08179410
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =sub_8178FC8
- bl SetVBlankCallback
- ldr r0, =sub_8179428
- bl SetMainCallback2
-_08179410:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81793E0
-
- thumb_func_start sub_8179428
-sub_8179428: @ 8179428
- push {r4,r5,lr}
- bl UpdatePaletteFade
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0817944E
- ldr r5, =gGameContinueCallback
- ldr r0, [r5]
- cmp r0, 0
- bne _08179448
- bl DoSoftReset
- b _0817944E
- .pool
-_08179448:
- bl SetMainCallback2
- str r4, [r5]
-_0817944E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8179428
-
- thumb_func_start sub_8179454
-sub_8179454: @ 8179454
- push {r4,r5,lr}
- ldr r5, =gMain
- ldr r0, [r5, 0x24]
- lsrs r4, r0, 3
- movs r0, 0x7
- ands r4, r0
- ldr r0, =gUnknown_085EFD80
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [r5, 0x38]
- str r1, [r5, 0x3C]
- ldrh r1, [r5, 0x3A]
- ldr r0, =0xfffffe00
- ands r0, r1
- movs r1, 0x70
- orrs r0, r1
- strh r0, [r5, 0x3A]
- adds r1, r5, 0
- adds r1, 0x38
- movs r0, 0x48
- strb r0, [r1]
- ldr r0, =gUnknown_0203BCFE
- ldrh r0, [r0]
- cmp r0, 0
- beq _081794DC
- ldr r3, =gUnknown_085EFDAC
- lsls r2, r4, 1
- adds r2, r4
- adds r0, r2, r3
- ldrb r4, [r0]
- ldrh r1, [r5, 0x3C]
- ldr r0, =0xfffffc00
- ands r0, r1
- orrs r0, r4
- strh r0, [r5, 0x3C]
- adds r0, r3, 0x2
- adds r0, r2, r0
- ldrb r1, [r0]
- lsls r1, 4
- adds r3, 0x1
- adds r2, r3
- ldrb r0, [r2]
- lsls r0, 3
- orrs r1, r0
- adds r3, r5, 0
- adds r3, 0x3B
- movs r0, 0x1F
- ands r1, r0
- lsls r1, 1
- ldrb r2, [r3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- b _081794E8
- .pool
-_081794DC:
- ldrh r0, [r5, 0x3C]
- ldr r1, =0xfffffc00
- ands r1, r0
- movs r0, 0x1
- orrs r1, r0
- strh r1, [r5, 0x3C]
-_081794E8:
- ldr r0, =gUnknown_030022F8
- movs r1, 0xE0
- lsls r1, 19
- movs r2, 0x1
- bl CpuFastSet
- ldr r1, =gUnknown_0203BCFE
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- beq _08179500
- subs r0, 0x1
- strh r0, [r1, 0x2]
-_08179500:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8179454
-
- thumb_func_start sub_8179514
-sub_8179514: @ 8179514
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gSaveDataBuffer
- movs r3, 0x80
- lsls r3, 5
- movs r1, 0
- adds r2, r4, 0
- bl ReadFlash
- movs r1, 0
- ldr r2, =0x000003ff
-_0817952C:
- ldr r0, [r4]
- cmp r0, 0
- beq _08179540
- movs r0, 0x1
- b _0817954E
- .pool
-_08179540:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- adds r4, 0x4
- cmp r1, r2
- bls _0817952C
- movs r0, 0
-_0817954E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8179514
-
- thumb_func_start sub_8179554
-sub_8179554: @ 8179554
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r6, r0, 16
- movs r0, 0
- ldr r1, =0x00000fff
- mov r8, r1
- ldr r7, =ProgramFlashByte
-_08179566:
- movs r4, 0
- adds r5, r0, 0x1
-_0817956A:
- ldr r3, [r7]
- adds r0, r6, 0
- adds r1, r4, 0
- movs r2, 0
- bl _call_via_r3
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r8
- bls _0817956A
- adds r0, r6, 0
- bl sub_8179514
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r5, 16
- lsrs r0, 16
- cmp r1, 0
- beq _08179596
- cmp r0, 0x81
- bls _08179566
-_08179596:
- adds r0, r1, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8179554
-
- thumb_func_start sub_81795AC
-sub_81795AC: @ 81795AC
- push {r4-r6,lr}
- adds r5, r0, 0
- movs r6, 0
-_081795B2:
- movs r4, 0x1
- lsls r4, r6
- adds r0, r5, 0
- ands r0, r4
- cmp r0, 0
- beq _081795CC
- adds r0, r6, 0
- bl sub_8179554
- lsls r0, 24
- cmp r0, 0
- bne _081795CC
- bics r5, r4
-_081795CC:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x1F
- bls _081795B2
- cmp r5, 0
- beq _081795DE
- movs r0, 0x1
- b _081795E0
-_081795DE:
- movs r0, 0
-_081795E0:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81795AC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/save_location.s b/asm/save_location.s
deleted file mode 100755
index 1a5b3c6da..000000000
--- a/asm/save_location.s
+++ /dev/null
@@ -1,205 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sav1_are_mapnumbers_in_given_list
-sav1_are_mapnumbers_in_given_list: @ 81AFC84
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- lsls r1, 8
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r0, [r2]
- ldr r1, =0x0000ffff
- cmp r0, r1
- beq _081AFCC4
- adds r4, r1, 0
- adds r1, r2, 0
-_081AFCAA:
- ldrh r0, [r1]
- cmp r0, r3
- bne _081AFCBC
- movs r0, 0x1
- b _081AFCC6
- .pool
-_081AFCBC:
- adds r1, 0x2
- ldrh r0, [r1]
- cmp r0, r4
- bne _081AFCAA
-_081AFCC4:
- movs r0, 0
-_081AFCC6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sav1_are_mapnumbers_in_given_list
-
- thumb_func_start sav1_is_in_pokecenter
-sav1_is_in_pokecenter: @ 81AFCCC
- push {lr}
- ldr r0, =gUnknown_086143BC
- bl sav1_are_mapnumbers_in_given_list
- pop {r1}
- bx r1
- .pool
- thumb_func_end sav1_is_in_pokecenter
-
- thumb_func_start sub_81AFCDC
-sub_81AFCDC: @ 81AFCDC
- push {lr}
- ldr r0, =gUnknown_0861440A
- bl sav1_are_mapnumbers_in_given_list
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81AFCDC
-
- thumb_func_start sub_81AFCEC
-sub_81AFCEC: @ 81AFCEC
- push {lr}
- ldr r0, =gUnknown_0861440E
- bl sav1_are_mapnumbers_in_given_list
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81AFCEC
-
- thumb_func_start sav2_set_x9_bit3_when_sav1_in_pokecenter
-sav2_set_x9_bit3_when_sav1_in_pokecenter: @ 81AFCFC
- push {lr}
- bl sav1_is_in_pokecenter
- cmp r0, 0
- bne _081AFD18
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0xFD
- ands r0, r1
- b _081AFD22
- .pool
-_081AFD18:
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x2
- orrs r0, r1
-_081AFD22:
- strb r0, [r2, 0x9]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sav2_set_x9_bit3_when_sav1_in_pokecenter
-
- thumb_func_start sub_81AFD2C
-sub_81AFD2C: @ 81AFD2C
- push {lr}
- bl sub_81AFCDC
- cmp r0, 0
- bne _081AFD48
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0xFB
- ands r0, r1
- b _081AFD52
- .pool
-_081AFD48:
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x4
- orrs r0, r1
-_081AFD52:
- strb r0, [r2, 0x9]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81AFD2C
-
- thumb_func_start sub_81AFD5C
-sub_81AFD5C: @ 81AFD5C
- push {lr}
- bl sub_81AFCEC
- cmp r0, 0
- bne _081AFD78
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0xF7
- ands r0, r1
- b _081AFD82
- .pool
-_081AFD78:
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x8
- orrs r0, r1
-_081AFD82:
- strb r0, [r2, 0x9]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81AFD5C
-
- thumb_func_start sav2_set_x9_depending_on_sav1_map
-sav2_set_x9_depending_on_sav1_map: @ 81AFD8C
- push {lr}
- bl sav2_set_x9_bit3_when_sav1_in_pokecenter
- bl sub_81AFD2C
- bl sub_81AFD5C
- pop {r0}
- bx r0
- thumb_func_end sav2_set_x9_depending_on_sav1_map
-
- thumb_func_start sub_81AFDA0
-sub_81AFDA0: @ 81AFDA0
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- adds r2, 0xA8
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 8
- orrs r0, r1
- movs r1, 0x1
- orrs r0, r1
- movs r1, 0x2
- orrs r0, r1
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x10
- orrs r0, r1
- movs r1, 0x20
- orrs r0, r1
- movs r1, 0x8
- orrs r0, r1
- str r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_81AFDA0
-
- thumb_func_start sub_81AFDD0
-sub_81AFDD0: @ 81AFDD0
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x80
- orrs r0, r1
- strb r0, [r2, 0x9]
- bx lr
- .pool
- thumb_func_end sub_81AFDD0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/scrcmd.s b/asm/scrcmd.s
deleted file mode 100644
index 7980ba564..000000000
--- a/asm/scrcmd.s
+++ /dev/null
@@ -1,5744 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start s00_nop
-s00_nop: @ 80992CC
- movs r0, 0
- bx lr
- thumb_func_end s00_nop
-
- thumb_func_start s01_nop
-s01_nop: @ 80992D0
- movs r0, 0
- bx lr
- thumb_func_end s01_nop
-
- thumb_func_start s02_end
-s02_end: @ 80992D4
- push {lr}
- bl StopScript
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s02_end
-
- thumb_func_start s24_execute_ASM_2
-s24_execute_ASM_2: @ 80992E0
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s24_execute_ASM_2
-
- thumb_func_start s25_extended_cmd
-s25_extended_cmd: @ 80992F8
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- ldr r1, =gUnknown_081DBA64
- lsrs r0, 14
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s25_extended_cmd
-
- thumb_func_start s26_extended_cmd_setvar
-s26_extended_cmd_setvar: @ 8099318
- push {r4-r6,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r6, r0, 0
- ldr r4, =gUnknown_081DBA64
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 14
- adds r0, r4
- ldr r0, [r0]
- bl _call_via_r0
- strh r0, [r6]
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s26_extended_cmd_setvar
-
- thumb_func_start s23_execute_ASM
-s23_execute_ASM: @ 809934C
- push {lr}
- bl ScriptReadWord
- bl _call_via_r0
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s23_execute_ASM
-
- thumb_func_start s27_set_to_waitstate
-s27_set_to_waitstate: @ 809935C
- push {lr}
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s27_set_to_waitstate
-
- thumb_func_start s05_goto
-s05_goto: @ 8099368
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- adds r0, r4, 0
- bl ScriptJump
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s05_goto
-
- thumb_func_start s03_return
-s03_return: @ 8099380
- push {lr}
- bl ScriptReturn
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s03_return
-
- thumb_func_start s04_call
-s04_call: @ 809938C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- adds r0, r4, 0
- bl ScriptCall
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s04_call
-
- thumb_func_start s06_if_jump
-@ int s06_if_jump(script_env *env)
-s06_if_jump: @ 80993A4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r1, =gUnknown_085102C0
- lsls r0, r4, 1
- adds r0, r4
- ldrb r3, [r5, 0x2]
- adds r0, r3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080993D2
- adds r0, r5, 0
- adds r1, r2, 0
- bl ScriptJump
-_080993D2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s06_if_jump
-
- thumb_func_start s07_if_call
-s07_if_call: @ 80993E0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r1, =gUnknown_085102C0
- lsls r0, r4, 1
- adds r0, r4
- ldrb r3, [r5, 0x2]
- adds r0, r3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0809940E
- adds r0, r5, 0
- adds r1, r2, 0
- bl ScriptCall
-_0809940E:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s07_if_call
-
- thumb_func_start sB8_set_virtual_address
-@ int sB8_set_virtual_address(script_env *env)
-sB8_set_virtual_address: @ 809941C
- push {r4,lr}
- ldr r4, [r0, 0x8]
- subs r4, 0x1
- bl ScriptReadWord
- ldr r1, =gUnknown_020375C4
- subs r0, r4
- str r0, [r1]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sB8_set_virtual_address
-
- thumb_func_start sB9_virtual_jump
-@ int sB9_virtual_jump(script_env *env)
-sB9_virtual_jump: @ 8099438
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_020375C4
- ldr r0, [r0]
- subs r1, r0
- adds r0, r4, 0
- bl ScriptJump
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sB9_virtual_jump
-
- thumb_func_start sBA_virtual_call
-sBA_virtual_call: @ 809945C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_020375C4
- ldr r0, [r0]
- subs r1, r0
- adds r0, r4, 0
- bl ScriptCall
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBA_virtual_call
-
- thumb_func_start sBB_virtual_if_jump
-sBB_virtual_if_jump: @ 8099480
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadWord
- ldr r1, =gUnknown_020375C4
- ldr r1, [r1]
- subs r2, r0, r1
- ldr r1, =gUnknown_085102C0
- lsls r0, r4, 1
- adds r0, r4
- ldrb r3, [r5, 0x2]
- adds r0, r3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080994B2
- adds r0, r5, 0
- adds r1, r2, 0
- bl ScriptJump
-_080994B2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBB_virtual_if_jump
-
- thumb_func_start sBC_virtual_if_call
-sBC_virtual_if_call: @ 80994C4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadWord
- ldr r1, =gUnknown_020375C4
- ldr r1, [r1]
- subs r2, r0, r1
- ldr r1, =gUnknown_085102C0
- lsls r0, r4, 1
- adds r0, r4
- ldrb r3, [r5, 0x2]
- adds r0, r3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080994F6
- adds r0, r5, 0
- adds r1, r2, 0
- bl ScriptCall
-_080994F6:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBC_virtual_if_call
-
- thumb_func_start s08_jumpstd
-s08_jumpstd: @ 8099508
- push {lr}
- adds r2, r0, 0
- ldr r0, [r2, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r2, 0x8]
- lsls r1, 2
- ldr r0, =gUnknown_081DC2A0
- adds r1, r0
- ldr r0, =gUnknown_081DC2CC
- cmp r1, r0
- bcs _08099528
- ldr r1, [r1]
- adds r0, r2, 0
- bl ScriptJump
-_08099528:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s08_jumpstd
-
- thumb_func_start s09_callstd
-s09_callstd: @ 8099538
- push {lr}
- adds r2, r0, 0
- ldr r0, [r2, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r2, 0x8]
- lsls r1, 2
- ldr r0, =gUnknown_081DC2A0
- adds r1, r0
- ldr r0, =gUnknown_081DC2CC
- cmp r1, r0
- bcs _08099558
- ldr r1, [r1]
- adds r0, r2, 0
- bl ScriptCall
-_08099558:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s09_callstd
-
- thumb_func_start s0A_jumpstd_if
-s0A_jumpstd_if: @ 8099568
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, [r3, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r3, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r3, 0x8]
- ldr r1, =gUnknown_085102C0
- lsls r0, r2, 1
- adds r0, r2
- ldrb r2, [r3, 0x2]
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080995A0
- lsls r0, r4, 2
- ldr r1, =gUnknown_081DC2A0
- adds r1, r0, r1
- ldr r0, =gUnknown_081DC2CC
- cmp r1, r0
- bcs _080995A0
- ldr r1, [r1]
- adds r0, r3, 0
- bl ScriptJump
-_080995A0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s0A_jumpstd_if
-
- thumb_func_start s0B_callstd_if
-s0B_callstd_if: @ 80995B4
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, [r3, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r3, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r3, 0x8]
- ldr r1, =gUnknown_085102C0
- lsls r0, r2, 1
- adds r0, r2
- ldrb r2, [r3, 0x2]
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080995EC
- lsls r0, r4, 2
- ldr r1, =gUnknown_081DC2A0
- adds r1, r0, r1
- ldr r0, =gUnknown_081DC2CC
- cmp r1, r0
- bcs _080995EC
- ldr r1, [r1]
- adds r0, r3, 0
- bl ScriptCall
-_080995EC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s0B_callstd_if
-
- thumb_func_start s0C_restore_execution_after_sCF
-s0C_restore_execution_after_sCF: @ 8099600
- push {lr}
- ldr r1, =gUnknown_020375C0
- ldr r1, [r1]
- bl ScriptJump
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s0C_restore_execution_after_sCF
-
- thumb_func_start s0D_endscript_killram
-s0D_endscript_killram: @ 8099614
- push {r4,lr}
- adds r4, r0, 0
- bl ClearRamScript
- adds r0, r4, 0
- bl StopScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s0D_endscript_killram
-
- thumb_func_start s0E_set_byte
-s0E_set_byte: @ 809962C
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl sub_81538C4
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s0E_set_byte
-
- thumb_func_start s0F_u32_var_to_const
-@ int s0F_u32_var_to_const(script_env *env)
-s0F_u32_var_to_const: @ 8099644
- 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
- lsls r5, 2
- adds r4, 0x64
- adds r4, r5
- str r0, [r4]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s0F_u32_var_to_const
-
- thumb_func_start s12_u32_var_to_ptr
-@ int s12_u32_var_to_ptr(script_env *env)
-s12_u32_var_to_ptr: @ 8099668
- 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
- lsls r5, 2
- adds r4, 0x64
- adds r4, r5
- ldrb r0, [r0]
- str r0, [r4]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s12_u32_var_to_ptr
-
- thumb_func_start s11_u8_ptr_to_const
-@ int s11_u8_ptr_to_const(script_env *env)
-s11_u8_ptr_to_const: @ 809968C
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadWord
- strb r4, [r0]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s11_u8_ptr_to_const
-
- thumb_func_start s10_u8_var_to_const
-@ int s10_u8_var_to_const(script_env *env)
-s10_u8_var_to_const: @ 80996A4
- ldr r1, [r0, 0x8]
- ldrb r3, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- lsls r3, 2
- adds r2, r0, 0
- adds r2, 0x64
- adds r2, r3
- ldrb r3, [r1]
- str r3, [r2]
- adds r1, 0x1
- str r1, [r0, 0x8]
- movs r0, 0
- bx lr
- thumb_func_end s10_u8_var_to_const
-
- thumb_func_start s13_u8_var_to_ptr
-@ int s13_u8_var_to_ptr(script_env *env)
-s13_u8_var_to_ptr: @ 80996C0
- 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
- lsls r5, 2
- adds r4, 0x64
- adds r4, r5
- ldr r1, [r4]
- strb r1, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s13_u8_var_to_ptr
-
- thumb_func_start s14_u32_var_to_var
-s14_u32_var_to_var: @ 80996E4
- ldr r1, [r0, 0x8]
- ldrb r3, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- lsls r3, 2
- adds r0, 0x64
- adds r3, r0, r3
- lsls r2, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r3]
- movs r0, 0
- bx lr
- thumb_func_end s14_u32_var_to_var
-
- thumb_func_start s15_u8_ptr_to_ptr
-s15_u8_ptr_to_ptr: @ 8099704
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadWord
- ldrb r0, [r0]
- strb r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s15_u8_ptr_to_ptr
-
- thumb_func_start s16_u16_gvar_to_const
-s16_u16_gvar_to_const: @ 8099720
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r4, r0, 0
- adds r0, r5, 0
- bl ScriptReadHalfword
- strh r0, [r4]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s16_u16_gvar_to_const
-
- thumb_func_start s19_u16_gvar_gvar
-s19_u16_gvar_gvar: @ 8099744
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- ldrh r0, [r0]
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s19_u16_gvar_gvar
-
- thumb_func_start s1A_u16_gvar_gvar
-s1A_u16_gvar_gvar: @ 8099770
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s1A_u16_gvar_gvar
-
- thumb_func_start compare_012
-compare_012: @ 809979C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- cmp r0, r1
- bcs _080997AE
- movs r0, 0
- b _080997B8
-_080997AE:
- cmp r0, r1
- beq _080997B6
- movs r0, 0x2
- b _080997B8
-_080997B6:
- movs r0, 0x1
-_080997B8:
- pop {r1}
- bx r1
- thumb_func_end compare_012
-
- thumb_func_start s1B_cmp_u8_var_var
-s1B_cmp_u8_var_var: @ 80997BC
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r0, [r2]
- lsls r0, 2
- adds r3, r4, 0
- adds r3, 0x64
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r2, 0x1
- str r2, [r4, 0x8]
- ldrb r1, [r2]
- lsls r1, 2
- adds r3, r1
- ldrb r1, [r3]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s1B_cmp_u8_var_var
-
- thumb_func_start s1C_cmp_u8_var_const
-s1C_cmp_u8_var_const: @ 80997EC
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r1, [r2]
- lsls r1, 2
- adds r0, 0x64
- adds r0, r1
- ldrb r0, [r0]
- adds r2, 0x1
- str r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s1C_cmp_u8_var_const
-
- thumb_func_start s1D_cmp_u8_var_ptr
-s1D_cmp_u8_var_ptr: @ 8099814
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r1, [r2]
- lsls r1, 2
- adds r0, 0x64
- adds r0, r1
- ldrb r5, [r0]
- adds r2, 0x1
- str r2, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- ldrb r1, [r0]
- adds r0, r5, 0
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s1D_cmp_u8_var_ptr
-
- thumb_func_start s1E_cmp_u8_ptr_var
-s1E_cmp_u8_ptr_var: @ 8099840
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- ldrb r0, [r0]
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- lsls r2, 2
- adds r1, r4, 0
- adds r1, 0x64
- adds r1, r2
- ldrb r1, [r1]
- adds r3, 0x1
- str r3, [r4, 0x8]
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s1E_cmp_u8_ptr_var
-
- thumb_func_start s1F_cmp_u8_ptr_const
-s1F_cmp_u8_ptr_const: @ 809986C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- ldrb r0, [r0]
- ldr r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s1F_cmp_u8_ptr_const
-
- thumb_func_start s20_cmp_u8_ptr_ptr
-s20_cmp_u8_ptr_ptr: @ 809988C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- ldrb r5, [r0]
- adds r0, r4, 0
- bl ScriptReadWord
- ldrb r1, [r0]
- adds r0, r5, 0
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s20_cmp_u8_ptr_ptr
-
- thumb_func_start s21_cmp_u16_gvar_const
-s21_cmp_u16_gvar_const: @ 80998B0
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- ldrh r5, [r0]
- adds r0, r4, 0
- bl ScriptReadHalfword
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s21_cmp_u16_gvar_const
-
- thumb_func_start s22_cmp_u16_gvar_gvar
-s22_cmp_u16_gvar_gvar: @ 80998E0
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- ldrh r2, [r5]
- ldrh r1, [r0]
- adds r0, r2, 0
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s22_cmp_u16_gvar_gvar
-
- thumb_func_start s17_u16_gvar_add_const
-s17_u16_gvar_add_const: @ 8099914
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r4, r0, 0
- adds r0, r5, 0
- bl ScriptReadHalfword
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r4]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s17_u16_gvar_add_const
-
- thumb_func_start sub_809993C
-sub_809993C: @ 809993C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldrh r1, [r5]
- subs r1, r0
- strh r1, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809993C
-
- thumb_func_start s8F_get_random_val
-s8F_get_random_val: @ 809996C
- push {r4,r5,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r5, =gScriptResult
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl __umodsi3
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s8F_get_random_val
-
- thumb_func_start sub_80999A0
-sub_80999A0: @ 80999A0
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, =gScriptResult
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80999A0
-
- thumb_func_start sub_80999E4
-sub_80999E4: @ 80999E4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, =gScriptResult
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RemoveBagItem
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80999E4
-
- thumb_func_start sub_8099A28
-sub_8099A28: @ 8099A28
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, =gScriptResult
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl CheckBagHasSpace
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099A28
-
- thumb_func_start sub_8099A6C
-sub_8099A6C: @ 8099A6C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, =gScriptResult
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl CheckBagHasItem
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099A6C
-
- thumb_func_start s48_get_item_type
-s48_get_item_type: @ 8099AB0
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gScriptResult
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s48_get_item_type
-
- thumb_func_start sub_8099ADC
-sub_8099ADC: @ 8099ADC
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r5, =gScriptResult
- adds r0, r4, 0
- bl sub_80D6D70
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099ADC
-
- thumb_func_start sub_8099B20
-sub_8099B20: @ 8099B20
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r5, =gScriptResult
- adds r0, r4, 0
- bl sub_80D6D1C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099B20
-
- thumb_func_start sub_8099B64
-sub_8099B64: @ 8099B64
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl DecorationAdd
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099B64
-
- thumb_func_start sub_8099B90
-sub_8099B90: @ 8099B90
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl DecorationRemove
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099B90
-
- thumb_func_start sub_8099BBC
-sub_8099BBC: @ 8099BBC
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl DecorationCheckSpace
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099BBC
-
- thumb_func_start sub_8099BE8
-sub_8099BE8: @ 8099BE8
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl sub_8161918
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099BE8
-
- thumb_func_start s29_flag_set
-@ int s29_flag_set(script_env *env)
-s29_flag_set: @ 8099C14
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s29_flag_set
-
- thumb_func_start s2A_flag_clear
-@ int s2A_flag_clear(script_env *env)
-s2A_flag_clear: @ 8099C28
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl FlagReset
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s2A_flag_clear
-
- thumb_func_start s2B_flag_check
-@ int s2B_flag_check(script_env *env)
-s2B_flag_check: @ 8099C3C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s2B_flag_check
-
- thumb_func_start sC3_unknown
-@ int sC3_unknown(script_env *env)
-sC3_unknown: @ 8099C58
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl IncrementGameStat
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sC3_unknown
-
- thumb_func_start s9A_unknown
-@ int s9A_unknown(script_env *env)
-s9A_unknown: @ 8099C70
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl sub_80B009C
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s9A_unknown
-
- thumb_func_start s99_unknown
-@ int s99_unknown(script_env *env)
-s99_unknown: @ 8099C8C
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl sub_80854EC
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s99_unknown
-
- thumb_func_start sub_8099CA8
-sub_8099CA8: @ 8099CA8
- push {lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08099CC0
- movs r0, 0
- b _08099CC2
- .pool
-_08099CC0:
- movs r0, 0x1
-_08099CC2:
- pop {r1}
- bx r1
- thumb_func_end sub_8099CA8
-
- thumb_func_start s97_screen_special_effect
-@ int s97_screen_special_effect(script_env *env)
-s97_screen_special_effect: @ 8099CC8
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x8]
- ldrb r0, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- movs r1, 0
- bl fade_screen
- ldr r1, =sub_8099CA8
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s97_screen_special_effect
-
- thumb_func_start s98_refade_with_timer
-@ int s98_refade_with_timer(script_env *env)
-s98_refade_with_timer: @ 8099CF0
- 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]
- lsls r1, 24
- asrs r1, 24
- bl fade_screen
- ldr r1, =sub_8099CA8
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s98_refade_with_timer
-
- thumb_func_start sub_8099D20
-@ int sub_8099D20(script_env *env)
-sub_8099D20: @ 8099D20
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- cmp r4, 0x1
- beq _08099D3E
- cmp r4, 0x1
- bgt _08099D3A
- cmp r4, 0
- beq _08099D60
- b _08099D3E
-_08099D3A:
- cmp r4, 0x2
- beq _08099D60
-_08099D3E:
- ldr r0, =gPlttBufferUnfaded
- ldr r1, =gPaletteDecompressionBuffer
- ldr r2, =0x04000100
- bl CpuSet
- adds r0, r4, 0
- movs r1, 0
- bl fade_screen
- b _08099D72
- .pool
-_08099D60:
- ldr r0, =gPaletteDecompressionBuffer
- ldr r1, =gPlttBufferUnfaded
- ldr r2, =0x04000100
- bl CpuSet
- adds r0, r4, 0
- movs r1, 0
- bl fade_screen
-_08099D72:
- ldr r1, =sub_8099CA8
- adds r0, r5, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099D20
-
- thumb_func_start s28_pause_asm
-s28_pause_asm: @ 8099D94
- push {lr}
- ldr r1, =gUnknown_020375C8
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _08099DAC
- movs r0, 0
- b _08099DAE
- .pool
-_08099DAC:
- movs r0, 0x1
-_08099DAE:
- pop {r1}
- bx r1
- thumb_func_end s28_pause_asm
-
- thumb_func_start s28_pause
-@ int s28_pause(script_env *env)
-s28_pause: @ 8099DB4
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- ldr r1, =gUnknown_020375C8
- strh r0, [r1]
- ldr r1, =s28_pause_asm
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s28_pause
-
- thumb_func_start s2C_unknown
-@ int s2C_unknown(script_env *env)
-s2C_unknown: @ 8099DD8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RtcInitLocalTimeOffset
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s2C_unknown
-
- thumb_func_start s2D_unknown
-@ int s2D_unknown(script_env *env)
-s2D_unknown: @ 8099E10
- push {lr}
- bl sub_809E7B0
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s2D_unknown
-
- thumb_func_start s2E_unknown
-@ int s2E_unknown(script_env *env)
-s2E_unknown: @ 8099E1C
- push {lr}
- bl RtcCalcLocalTime
- ldr r2, =gSpecialVar_0x8000
- ldr r1, =gLocalTime
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- strh r0, [r2]
- ldr r2, =gSpecialVar_0x8001
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- strh r0, [r2]
- ldr r2, =gSpecialVar_0x8002
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- strh r0, [r2]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s2E_unknown
-
- thumb_func_start sA4_set_weather_data
-@ int sA4_set_weather_data(script_env *env)
-sA4_set_weather_data: @ 8099E54
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl sub_80AED7C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sA4_set_weather_data
-
- thumb_func_start sA3_set_standard_weather_data
-@ int sA3_set_standard_weather_data(script_env *env)
-sA3_set_standard_weather_data: @ 8099E70
- push {lr}
- bl sub_80AEDBC
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sA3_set_standard_weather_data
-
- thumb_func_start sub_8099E7C
-@ int sub_8099E7C(script_env *env)
-sub_8099E7C: @ 8099E7C
- push {lr}
- bl sub_80AEE20
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8099E7C
-
- thumb_func_start sA6_activate_per_step_callback_eg_ash
-@ int sA6_activate_per_step_callback_eg_ash(script_env *env)
-sA6_activate_per_step_callback_eg_ash: @ 8099E88
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl activate_per_step_callback
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sA6_activate_per_step_callback_eg_ash
-
- thumb_func_start sA7_set_new_map_footer
-@ int sA7_set_new_map_footer(script_env *env)
-sA7_set_new_map_footer: @ 8099EA0
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl sub_8085524
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sA7_set_new_map_footer
-
- thumb_func_start s39_warp_sfx
-@ int s39_warp_sfx(script_env *env)
-s39_warp_sfx: @ 8099EBC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF734
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s39_warp_sfx
-
- thumb_func_start s3A_warp_new_music
-@ int s3A_warp_new_music(script_env *env)
-s3A_warp_new_music: @ 8099F44
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sp13E_warp_to_last_warp
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s3A_warp_new_music
-
- thumb_func_start s3B_warp_keep_music
-@ int s3B_warp_keep_music(script_env *env)
-s3B_warp_keep_music: @ 8099FCC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF7D0
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s3B_warp_keep_music
-
- thumb_func_start sub_809A054
-sub_809A054: @ 809A054
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r1, [r0, 0x8]
- ldrb r6, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- mov r4, sp
- adds r4, 0x6
- add r0, sp, 0x4
- adds r1, r4, 0
- bl PlayerGetDestCoords
- cmp r6, 0xFF
- bne _0809A092
- cmp r5, 0xFF
- bne _0809A092
- add r0, sp, 0x4
- ldrh r0, [r0]
- subs r0, 0x7
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r4]
- subs r1, 0x7
- lsls r1, 16
- asrs r1, 16
- bl sub_8084EBC
- b _0809A0B6
-_0809A092:
- lsls r0, r6, 24
- asrs r0, 24
- lsls r1, r5, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- add r3, sp, 0x4
- ldrb r3, [r3]
- subs r3, 0x7
- lsls r3, 24
- asrs r3, 24
- ldrb r4, [r4]
- subs r4, 0x7
- lsls r4, 24
- asrs r4, 24
- str r4, [sp]
- bl warp1_set
-_0809A0B6:
- bl sp13F_fall_to_last_warp
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809A054
-
- thumb_func_start s3D_warp_v4
-s3D_warp_v4: @ 809A0C8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF848
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s3D_warp_v4
-
- thumb_func_start sub_809A150
-sub_809A150: @ 809A150
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF87C
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809A150
-
- thumb_func_start s3E_set_new_map
-s3E_set_new_map: @ 809A1D8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- 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 s3E_set_new_map
-
- thumb_func_start s3F_set_new_map_DMA
-s3F_set_new_map_DMA: @ 809A258
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- str r4, [sp]
- lsls r0, 24
- asrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0
- mov r1, r9
- mov r2, r8
- adds r3, r6, 0
- bl saved_warp2_set_2
- movs r0, 0
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s3F_set_new_map_DMA
-
- thumb_func_start sub_809A2DC
-sub_809A2DC: @ 809A2DC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_8084E2C
- 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_809A2DC
-
- thumb_func_start sub_809A35C
-sub_809A35C: @ 809A35C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_8084E80
- 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_809A35C
-
- thumb_func_start sC4_unknown
-sC4_unknown: @ 809A3DC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_8084DD4
- 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 sC4_unknown
-
- thumb_func_start s42_get_map_camera_pos
-@ int s42_get_map_camera_pos(script_env *env)
-s42_get_map_camera_pos: @ 809A45C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- ldr r2, =gSaveBlock1Ptr
- ldr r1, [r2]
- ldrh r1, [r1]
- strh r1, [r5]
- ldr r1, [r2]
- ldrh r1, [r1, 0x2]
- strh r1, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s42_get_map_camera_pos
-
- thumb_func_start s43_get_player_party_count
-s43_get_player_party_count: @ 809A498
- push {r4,lr}
- ldr r4, =gScriptResult
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s43_get_player_party_count
-
- thumb_func_start s2F_music_play
-s2F_music_play: @ 809A4B4
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl PlaySE
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s2F_music_play
-
- thumb_func_start s30_music_check_asm
-s30_music_check_asm: @ 809A4C8
- push {lr}
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _0809A4D8
- movs r0, 0
- b _0809A4DA
-_0809A4D8:
- movs r0, 0x1
-_0809A4DA:
- pop {r1}
- bx r1
- thumb_func_end s30_music_check_asm
-
- thumb_func_start s30_music_check
-s30_music_check: @ 809A4E0
- push {lr}
- ldr r1, =s30_music_check_asm
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end s30_music_check
-
- thumb_func_start s31_PlayFanfare
-s31_PlayFanfare: @ 809A4F4
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl PlayFanfare
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s31_PlayFanfare
-
- thumb_func_start s32_fanfare_wait_asm
-s32_fanfare_wait_asm: @ 809A508
- push {lr}
- bl IsFanfareTaskInactive
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end s32_fanfare_wait_asm
-
- thumb_func_start s32_fanfare_wait
-s32_fanfare_wait: @ 809A518
- push {lr}
- ldr r1, =s32_fanfare_wait_asm
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end s32_fanfare_wait
-
- thumb_func_start s33_play_music
-@ int s33_play_music(script_env *env)
-s33_play_music: @ 809A52C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r2, r0, 16
- adds r5, r2, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0x1
- bne _0809A54C
- adds r0, r2, 0
- bl sav1_set_battle_music_maybe
-_0809A54C:
- adds r0, r5, 0
- bl PlayNewMapMusic
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s33_play_music
-
- thumb_func_start s34_unknown
-s34_unknown: @ 809A55C
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl sav1_set_battle_music_maybe
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s34_unknown
-
- thumb_func_start s35_fade_to_default
-s35_fade_to_default: @ 809A570
- push {lr}
- bl sub_8085898
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s35_fade_to_default
-
- thumb_func_start s36_fade_to_music
-s36_fade_to_music: @ 809A57C
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl sub_80858C4
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s36_fade_to_music
-
- thumb_func_start s37_fadeout
-s37_fadeout: @ 809A590
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0
- beq _0809A5AA
- lsls r0, r1, 26
- lsrs r0, 24
- bl FadeOutBGMTemporarily
- b _0809A5B0
-_0809A5AA:
- movs r0, 0x4
- bl FadeOutBGMTemporarily
-_0809A5B0:
- ldr r1, =IsBGMPausedOrStopped
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s37_fadeout
-
- thumb_func_start s38_fadein
-s38_fadein: @ 809A5C4
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- cmp r2, 0
- beq _0809A5DC
- lsls r0, r2, 26
- lsrs r0, 24
- bl FadeInBGM
- b _0809A5E2
-_0809A5DC:
- movs r0, 0x4
- bl FadeInBGM
-_0809A5E2:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s38_fadein
-
- thumb_func_start s4F_execute_movement
-s4F_execute_movement: @ 809A5E8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadWord
- adds r3, r0, 0
- lsls r0, r4, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl exec_movement
- ldr r0, =gUnknown_020375CA
- strh r4, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s4F_execute_movement
-
- thumb_func_start s50_execute_movement_remote
-s50_execute_movement_remote: @ 809A62C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadWord
- adds r3, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- lsls r0, r4, 24
- lsrs r0, 24
- bl exec_movement
- ldr r0, =gUnknown_020375CA
- strh r4, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s50_execute_movement_remote
-
- thumb_func_start s51a_0806B288
-s51a_0806B288: @ 809A670
- push {lr}
- ldr r0, =gUnknown_020375CA
- ldrb r0, [r0]
- ldr r1, =gUnknown_020375CE
- ldrb r1, [r1]
- ldr r2, =gUnknown_020375CC
- ldrb r2, [r2]
- bl sub_80D3340
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end s51a_0806B288
-
- thumb_func_start s51_waitmove
-s51_waitmove: @ 809A698
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _0809A6B4
- ldr r0, =gUnknown_020375CA
- strh r1, [r0]
-_0809A6B4:
- ldr r1, =gUnknown_020375CC
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- ldr r1, =gUnknown_020375CE
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- ldr r1, =s51a_0806B288
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s51_waitmove
-
- thumb_func_start s52_waitmove_remote
-s52_waitmove_remote: @ 809A6EC
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _0809A708
- ldr r0, =gUnknown_020375CA
- strh r1, [r0]
-_0809A708:
- ldr r0, [r4, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- ldr r0, =gUnknown_020375CC
- strh r2, [r0]
- ldr r0, =gUnknown_020375CE
- strh r1, [r0]
- ldr r1, =s51a_0806B288
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s52_waitmove_remote
-
- thumb_func_start s53_hide_sprite
-s53_hide_sprite: @ 809A740
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl RemoveFieldObjectByLocalIdAndMap
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s53_hide_sprite
-
- thumb_func_start s54_hide_sprite_set_coords
-s54_hide_sprite_set_coords: @ 809A768
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl RemoveFieldObjectByLocalIdAndMap
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s54_hide_sprite_set_coords
-
- thumb_func_start s55_show_sprite
-s55_show_sprite: @ 809A798
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl show_sprite
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s55_show_sprite
-
- thumb_func_start s56_show_sprite_set_coords
-s56_show_sprite_set_coords: @ 809A7C0
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl show_sprite
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s56_show_sprite_set_coords
-
- thumb_func_start s57_move_sprites
-s57_move_sprites: @ 809A7F0
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r6, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- lsls r4, 16
- asrs r4, 16
- lsls r0, 16
- asrs r0, 16
- str r0, [sp]
- adds r0, r5, 0
- adds r3, r4, 0
- bl sub_808EBA8
- movs r0, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s57_move_sprites
-
- thumb_func_start s63_new_sprite_location_permanent
-s63_new_sprite_location_permanent: @ 809A858
- push {r4-r6,lr}
- adds r6, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r6, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r2, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 16
- asrs r4, 16
- lsls r2, 16
- asrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl update_saveblock1_field_object_coords
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s63_new_sprite_location_permanent
-
- thumb_func_start s64_set_sprite_top_left_corner
-s64_set_sprite_top_left_corner: @ 809A8B0
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl sub_808F254
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s64_set_sprite_top_left_corner
-
- thumb_func_start s58_npc_f1_clear_x20
-s58_npc_f1_clear_x20: @ 809A8D8
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- bl npc_by_local_id_and_map_set_field_1_bit_x20
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s58_npc_f1_clear_x20
-
- thumb_func_start s59_npc_f1_set_x20
-s59_npc_f1_set_x20: @ 809A908
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0x1
- bl npc_by_local_id_and_map_set_field_1_bit_x20
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s59_npc_f1_set_x20
-
- thumb_func_start sA8_unknown
-sA8_unknown: @ 809A938
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r5, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r5, 0x8]
- ldrb r1, [r3]
- adds r4, r3, 0x1
- str r4, [r5, 0x8]
- ldrb r3, [r3, 0x1]
- adds r4, 0x1
- str r4, [r5, 0x8]
- lsls r0, 24
- lsrs r0, 24
- adds r3, 0x53
- lsls r3, 24
- lsrs r3, 24
- bl sub_808E78C
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sA8_unknown
-
- thumb_func_start sA9_unknown
-sA9_unknown: @ 809A974
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl sub_808E7E4
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sA9_unknown
-
- thumb_func_start s5A_face_player
-s5A_face_player: @ 809A9A4
- push {r4,lr}
- ldr r2, =gMapObjects
- ldr r0, =gSelectedMapObject
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- ldrb r0, [r4]
- lsls r0, 31
- cmp r0, 0
- beq _0809A9CC
- bl player_get_direction_lower_nybble
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectFaceOppositeDirection
-_0809A9CC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s5A_face_player
-
- thumb_func_start s5B_npc_set_direction
-s5B_npc_set_direction: @ 809A9DC
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r1, [r4, 0x8]
- ldrb r3, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl FieldObjectTurnByLocalIdAndMap
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s5B_npc_set_direction
-
- thumb_func_start s65_set_sprite_behaviour
-s65_set_sprite_behaviour: @ 809AA10
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl update_saveblock1_field_object_movement_behavior
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s65_set_sprite_behaviour
-
- thumb_func_start sAA_create_new_sprite
-sAA_create_new_sprite: @ 809AA38
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r6, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r3, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- lsls r4, 16
- asrs r4, 16
- lsls r3, 16
- asrs r3, 16
- str r2, [sp]
- str r1, [sp, 0x4]
- mov r0, r8
- adds r1, r6, 0
- adds r2, r4, 0
- bl sprite_new
- movs r0, 0
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sAA_create_new_sprite
-
- thumb_func_start sAB_unknown
-sAB_unknown: @ 809AAA8
- push {lr}
- ldr r2, [r0, 0x8]
- ldrb r3, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- adds r0, r3, 0
- bl sub_8097B78
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sAB_unknown
-
- thumb_func_start sub_809AAC4
-sub_809AAC4: @ 809AAC4
- push {r4,lr}
- adds r4, r0, 0
- bl is_c1_link_related_active
- cmp r0, 0
- bne _0809AAE4
- bl sub_80983E8
- ldr r1, =sub_80983C4
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- b _0809AAE6
- .pool
-_0809AAE4:
- movs r0, 0
-_0809AAE6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809AAC4
-
- thumb_func_start sub_809AAEC
-sub_809AAEC: @ 809AAEC
- push {r4,lr}
- adds r4, r0, 0
- bl is_c1_link_related_active
- cmp r0, 0
- beq _0809AAFC
- movs r0, 0
- b _0809AB3A
-_0809AAFC:
- ldr r2, =gMapObjects
- ldr r0, =gSelectedMapObject
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0809AB2C
- bl sub_80984A0
- ldr r1, =sub_809847C
- adds r0, r4, 0
- bl SetupNativeScript
- b _0809AB38
- .pool
-_0809AB2C:
- bl sub_80983E8
- ldr r1, =sub_80983C4
- adds r0, r4, 0
- bl SetupNativeScript
-_0809AB38:
- movs r0, 0x1
-_0809AB3A:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809AAEC
-
- thumb_func_start s6B_release
-s6B_release: @ 809AB44
- push {lr}
- bl textbox_close
- 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, =gMapObjects
- adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
- bl sub_80D338C
- bl sub_809757C
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s6B_release
-
- thumb_func_start s6C_release_2
-s6C_release_2: @ 809AB7C
- push {r4,lr}
- bl textbox_close
- ldr r4, =gMapObjects
- ldr r0, =gSelectedMapObject
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r4
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _0809AB9E
- adds r0, r1, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
-_0809AB9E:
- 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
- bl FieldObjectClearAnimIfSpecialAnimFinished
- bl sub_80D338C
- bl sub_809757C
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s6C_release_2
-
- thumb_func_start s67_execute_box
-s67_execute_box: @ 809ABD4
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- cmp r0, 0
- bne _0809ABE2
- ldr r0, [r4, 0x64]
-_0809ABE2:
- bl box_related_two__2
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s67_execute_box
-
- thumb_func_start sub_809ABF0
-sub_809ABF0: @ 809ABF0
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- cmp r0, 0
- bne _0809ABFE
- ldr r0, [r4, 0x64]
-_0809ABFE:
- bl sub_8098238
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809ABF0
-
- thumb_func_start s9B_unknown
-s9B_unknown: @ 809AC0C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r3, r0, 0
- cmp r3, 0
- bne _0809AC1C
- ldr r3, [r4, 0x64]
-_0809AC1C:
- ldr r2, =gTextFlags
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- adds r0, r3, 0
- bl box_related_two__3
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s9B_unknown
-
- thumb_func_start sub_809AC3C
-sub_809AC3C: @ 809AC3C
- push {r4,r5,lr}
- sub sp, 0xC
- adds r5, r0, 0
- bl ScriptReadWord
- adds r4, r0, 0
- cmp r4, 0
- bne _0809AC4E
- ldr r4, [r5, 0x64]
-_0809AC4E:
- bl sub_81973A4
- movs r0, 0
- movs r1, 0x1
- bl sub_81973C4
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809AC3C
-
- thumb_func_start sub_809AC78
-sub_809AC78: @ 809AC78
- push {lr}
- ldr r1, =sub_809833C
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809AC78
-
- thumb_func_start s68_close_box
-s68_close_box: @ 809AC8C
- push {lr}
- bl textbox_close
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s68_close_box
-
- thumb_func_start sub_809AC98
-sub_809AC98: @ 809AC98
- push {lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0809ACB8
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0809ACB8
- movs r0, 0
- b _0809ACBA
- .pool
-_0809ACB8:
- movs r0, 0x1
-_0809ACBA:
- pop {r1}
- bx r1
- thumb_func_end sub_809AC98
-
- thumb_func_start sub_809ACC0
-sub_809ACC0: @ 809ACC0
- push {lr}
- ldr r1, =sub_809AC98
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809ACC0
-
- thumb_func_start s6E_yes_no
-s6E_yes_no: @ 809ACD4
- push {lr}
- ldr r2, [r0, 0x8]
- ldrb r3, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- adds r0, r3, 0
- bl yes_no_box
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809ACF6
- movs r0, 0
- b _0809ACFC
-_0809ACF6:
- bl ScriptContext1_Stop
- movs r0, 0x1
-_0809ACFC:
- pop {r1}
- bx r1
- thumb_func_end s6E_yes_no
-
- thumb_func_start s6F_multichoice
-s6F_multichoice: @ 809AD00
- push {r4,r5,lr}
- ldr r2, [r0, 0x8]
- ldrb r5, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r3, r2, 0x1
- str r3, [r0, 0x8]
- ldrb r2, [r2, 0x1]
- adds r4, r3, 0x1
- str r4, [r0, 0x8]
- ldrb r3, [r3, 0x1]
- adds r4, 0x1
- str r4, [r0, 0x8]
- adds r0, r5, 0
- bl Multichoice
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809AD2E
- movs r0, 0
- b _0809AD34
-_0809AD2E:
- bl ScriptContext1_Stop
- movs r0, 0x1
-_0809AD34:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s6F_multichoice
-
- thumb_func_start sub_809AD3C
-sub_809AD3C: @ 809AD3C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- ldr r2, [r0, 0x8]
- ldrb r1, [r2]
- mov r8, r1
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r3, r2, 0x1
- str r3, [r0, 0x8]
- ldrb r2, [r2, 0x1]
- adds r5, r3, 0x1
- str r5, [r0, 0x8]
- ldrb r6, [r3, 0x1]
- adds r4, r5, 0x1
- str r4, [r0, 0x8]
- ldrb r3, [r5, 0x1]
- adds r4, 0x1
- str r4, [r0, 0x8]
- str r6, [sp]
- mov r0, r8
- bl sub_80E1E58
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809AD7A
- movs r0, 0
- b _0809AD80
-_0809AD7A:
- bl ScriptContext1_Stop
- movs r0, 0x1
-_0809AD80:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809AD3C
-
- thumb_func_start sub_809AD8C
-sub_809AD8C: @ 809AD8C
- movs r0, 0
- bx lr
- thumb_func_end sub_809AD8C
-
- thumb_func_start sub_809AD90
-sub_809AD90: @ 809AD90
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- ldr r2, [r0, 0x8]
- ldrb r1, [r2]
- mov r8, r1
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r3, r2, 0x1
- str r3, [r0, 0x8]
- ldrb r2, [r2, 0x1]
- adds r5, r3, 0x1
- str r5, [r0, 0x8]
- ldrb r6, [r3, 0x1]
- adds r4, r5, 0x1
- str r4, [r0, 0x8]
- ldrb r3, [r5, 0x1]
- adds r4, 0x1
- str r4, [r0, 0x8]
- str r6, [sp]
- mov r0, r8
- bl sub_80E21D0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809ADCE
- movs r0, 0
- b _0809ADD4
-_0809ADCE:
- bl ScriptContext1_Stop
- movs r0, 0x1
-_0809ADD4:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809AD90
-
- thumb_func_start s73_nop_skip_word
-s73_nop_skip_word: @ 809ADE0
- ldr r1, [r0, 0x8]
- adds r1, 0x4
- str r1, [r0, 0x8]
- movs r0, 0
- bx lr
- thumb_func_end s73_nop_skip_word
-
- thumb_func_start sub_809ADEC
-sub_809ADEC: @ 809ADEC
- ldr r1, [r0, 0x8]
- adds r1, 0x4
- str r1, [r0, 0x8]
- movs r0, 0
- bx lr
- thumb_func_end sub_809ADEC
-
- thumb_func_start sub_809ADF8
-sub_809ADF8: @ 809ADF8
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- bl sub_80E2900
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809ADF8
-
- thumb_func_start s76_close_picture_box
-s76_close_picture_box: @ 809AE28
- push {r4,lr}
- adds r4, r0, 0
- bl picbox_close
- adds r1, r0, 0
- cmp r1, 0
- beq _0809AE40
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- b _0809AE42
-_0809AE40:
- movs r0, 0
-_0809AE42:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s76_close_picture_box
-
- thumb_func_start sub_809AE48
-sub_809AE48: @ 809AE48
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- cmp r2, 0
- beq _0809AE5C
- adds r0, r2, 0
- bl sub_812FDA8
-_0809AE5C:
- bl sub_80F8ADC
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809AE48
-
- thumb_func_start sub_809AE6C
-sub_809AE6C: @ 809AE6C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x20
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r4, =gStringVar4
- adds r1, 0x6
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x6
- adds r1, r4, 0
- bl GetStringWidth
- lsrs r0, 3
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x1C
- bls _0809AE9C
- movs r7, 0x1C
-_0809AE9C:
- movs r5, 0x4
- ldrb r0, [r4]
- adds r2, r7, 0x2
- add r1, sp, 0x18
- mov r8, r1
- cmp r0, 0xFF
- beq _0809AEC0
- adds r1, r4, 0
-_0809AEAC:
- ldrb r0, [r1]
- adds r1, 0x1
- cmp r0, 0xFE
- bne _0809AEBA
- adds r0, r5, 0x3
- lsls r0, 24
- lsrs r5, r0, 24
-_0809AEBA:
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _0809AEAC
-_0809AEC0:
- cmp r5, 0x12
- bls _0809AEC6
- movs r5, 0x12
-_0809AEC6:
- lsls r0, r2, 24
- lsrs r0, 24
- movs r2, 0x1E
- subs r2, r0
- lsrs r0, r2, 31
- adds r2, r0
- asrs r2, 1
- lsls r2, 24
- adds r0, r5, 0x2
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0x14
- subs r4, r0
- lsrs r0, r4, 31
- adds r4, r0
- asrs r4, 1
- lsls r4, 24
- lsrs r6, r2, 24
- movs r0, 0x80
- lsls r0, 17
- adds r2, r0
- lsrs r2, 24
- lsrs r3, r4, 24
- movs r1, 0x80
- lsls r1, 18
- adds r4, r1
- lsrs r4, 24
- subs r6, r2, r6
- subs r6, 0x1
- lsls r6, 3
- adds r6, 0x3
- lsls r6, 24
- lsrs r6, 24
- subs r4, r3
- subs r4, 0x1
- lsls r4, 27
- lsrs r4, 24
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- str r5, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0x1
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- movs r1, 0
- bl sub_8198A50
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- ldr r5, =gUnknown_03000F30
- mov r0, r8
- bl AddWindow
- strb r0, [r5]
- ldrb r0, [r5]
- movs r1, 0x85
- lsls r1, 2
- movs r2, 0xE0
- bl sub_809882C
- ldrb r0, [r5]
- movs r1, 0
- bl sub_81973FC
- ldrb r0, [r5]
- bl PutWindowTilemap
- ldrb r0, [r5]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r5]
- ldr r2, =gStringVar4
- str r4, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x6
- adds r3, r6, 0
- bl PrintTextOnWindow
- ldrb r0, [r5]
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0
- add sp, 0x20
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809AE6C
-
- thumb_func_start sub_809AF94
-sub_809AF94: @ 809AF94
- push {lr}
- bl sub_809BDB4
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_809AF94
-
- thumb_func_start sBD_virtual_message
-sBD_virtual_message: @ 809AFA0
- push {lr}
- bl ScriptReadWord
- ldr r1, =gUnknown_020375C4
- ldr r1, [r1]
- subs r0, r1
- bl box_related_two__2
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBD_virtual_message
-
- thumb_func_start s7D_load_pokename
-s7D_load_pokename: @ 809AFBC
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r2, [r4]
- movs r1, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s7D_load_pokename
-
- thumb_func_start s7E_load_first_pokenames
-s7E_load_first_pokenames: @ 809AFFC
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldr r0, =gUnknown_085102D4
- lsls r2, 2
- adds r2, r0
- ldr r4, [r2]
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s7E_load_first_pokenames
-
- thumb_func_start s7F_load_pokename_team
-s7F_load_pokename_team: @ 809B048
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r4, [r4]
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s7F_load_pokename_team
-
- thumb_func_start s80_load_item_name
-s80_load_item_name: @ 809B090
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r1, [r4]
- bl CopyItemName
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s80_load_item_name
-
- thumb_func_start sub_809B0C4
-sub_809B0C4: @ 809B0C4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r6, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r0, =gUnknown_085102D4
- lsls r6, 2
- adds r6, r0
- ldr r1, [r6]
- adds r0, r4, 0
- bl CopyItemNameHandlePlural
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B0C4
-
- thumb_func_start sub_809B114
-sub_809B114: @ 809B114
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- ldr r0, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- lsrs r1, 11
- ldr r2, =gDecorations + 1
- adds r1, r2
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B114
-
- thumb_func_start s82_load_item_name
-s82_load_item_name: @ 809B150
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r2, [r4]
- movs r1, 0xD
- muls r1, r0
- ldr r0, =gMoveNames
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s82_load_item_name
-
- thumb_func_start s83_load_textvar_var
-s83_load_textvar_var: @ 809B190
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- bl sub_80EF370
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =gUnknown_085102D4
- lsls r5, 2
- adds r5, r0
- ldr r0, [r5]
- adds r1, r4, 0
- movs r2, 0
- bl ConvertIntToDecimalStringN
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s83_load_textvar_var
-
- thumb_func_start s84_load_textvar_std_expression
-s84_load_textvar_std_expression: @ 809B1D4
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r2, [r4]
- ldr r1, =gUnknown_0858BAF0
- lsrs r0, 14
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s84_load_textvar_std_expression
-
- thumb_func_start sub_809B214
-sub_809B214: @ 809B214
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r0, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- lsls r1, 24
- lsrs r1, 24
- bl sub_818E868
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B214
-
- thumb_func_start s85_load_textvar_pointer
-s85_load_textvar_pointer: @ 809B248
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s85_load_textvar_pointer
-
- thumb_func_start sBE_virtual_load_text
-sBE_virtual_load_text: @ 809B270
- push {lr}
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_020375C4
- ldr r0, [r0]
- subs r1, r0
- ldr r0, =gStringVar4
- bl StringExpandPlaceholders
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBE_virtual_load_text
-
- thumb_func_start sBF_virtual_load_textbuffer
-sBF_virtual_load_textbuffer: @ 809B294
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_020375C4
- ldr r0, [r0]
- subs r1, r0
- ldr r0, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBF_virtual_load_textbuffer
-
- thumb_func_start sC6_load_textvar_box_label
-sC6_load_textvar_box_label: @ 809B2C8
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r4, [r4]
- lsls r0, 24
- lsrs r0, 24
- bl sav3_get_box_name
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sC6_load_textvar_box_label
-
- thumb_func_start s79_give_pokemon
-s79_give_pokemon: @ 809B304
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x8
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- bl ScriptReadWord
- mov r8, r0
- adds r0, r4, 0
- bl ScriptReadWord
- ldr r1, [r4, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- ldr r4, =gScriptResult
- str r0, [sp]
- str r2, [sp, 0x4]
- adds r0, r6, 0
- mov r1, r9
- adds r2, r5, 0
- mov r3, r8
- bl sub_80F9244
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s79_give_pokemon
-
- thumb_func_start s7A_create_egg
-s7A_create_egg: @ 809B384
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gScriptResult
- bl sub_80F92C8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s7A_create_egg
-
- thumb_func_start s7B_change_pokedata_AP
-s7B_change_pokedata_AP: @ 809B3B0
- 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 r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- adds r2, r4, 0
- bl sub_80F9400
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s7B_change_pokedata_AP
-
- thumb_func_start sub_809B3DC
-sub_809B3DC: @ 809B3DC
- push {r4-r7,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r1, =gScriptResult
- movs r0, 0x6
- strh r0, [r1]
- movs r6, 0
- b _0809B42A
- .pool
-_0809B3F4:
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0809B424
- adds r0, r4, 0
- adds r1, r7, 0
- bl pokemon_has_move
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809B424
- ldr r0, =gScriptResult
- strh r6, [r0]
- ldr r0, =gSpecialVar_0x8004
- strh r5, [r0]
- b _0809B44A
- .pool
-_0809B424:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0809B42A:
- cmp r6, 0x5
- bhi _0809B44A
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- bne _0809B3F4
-_0809B44A:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B3DC
-
- thumb_func_start s90_AddMoney
-@ int s90_AddMoney(script_env *env)
-s90_AddMoney: @ 809B458
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0
- bne _0809B47E
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- adds r1, r2, 0
- bl AddMoney
-_0809B47E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s90_AddMoney
-
- thumb_func_start s91_SubtractMoney
-@ int s91_SubtractMoney(script_env *env)
-s91_SubtractMoney: @ 809B48C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0
- bne _0809B4B2
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- adds r1, r2, 0
- bl SubtractMoney
-_0809B4B2:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s91_SubtractMoney
-
- thumb_func_start s92_check_money
-@ int s92_check_money(script_env *env)
-s92_check_money: @ 809B4C0
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0
- bne _0809B4EE
- ldr r4, =gScriptResult
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- adds r1, r2, 0
- bl IsEnoughMoney
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
-_0809B4EE:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s92_check_money
-
- thumb_func_start s93_display_money
-@ int s93_display_money(script_env *env)
-s93_display_money: @ 809B500
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r2, r1, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r1, 0x1]
- adds r2, 0x1
- str r2, [r0, 0x8]
- cmp r1, 0
- bne _0809B530
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- bl GetMoney
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_80E52EC
-_0809B530:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s93_display_money
-
- thumb_func_start s94_hide_money
-s94_hide_money: @ 809B53C
- push {lr}
- bl sub_80E5384
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s94_hide_money
-
- thumb_func_start s95_update_money
-@ int s95_update_money(script_env *env)
-s95_update_money: @ 809B548
- push {lr}
- ldr r1, [r0, 0x8]
- adds r1, 0x1
- adds r2, r1, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r1, 0x1]
- adds r2, 0x1
- str r2, [r0, 0x8]
- cmp r1, 0
- bne _0809B56E
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- bl GetMoney
- bl sub_80E52D4
-_0809B56E:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s95_update_money
-
- thumb_func_start sub_809B578
-sub_809B578: @ 809B578
- 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 GetCoins
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- adds r2, r4, 0
- bl ShowCoinsWindow
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809B578
-
- thumb_func_start sC1_hide_coins
-sC1_hide_coins: @ 809B5A0
- push {lr}
- ldr r1, [r0, 0x8]
- adds r1, 0x2
- str r1, [r0, 0x8]
- bl HideCoinsWindow
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sC1_hide_coins
-
- thumb_func_start sC2_update_coins
-sC2_update_coins: @ 809B5B4
- push {lr}
- ldr r1, [r0, 0x8]
- adds r1, 0x2
- str r1, [r0, 0x8]
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- bl PrintCoinsString
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sC2_update_coins
-
- thumb_func_start s5C_trainer_battle_configure_and_start
-s5C_trainer_battle_configure_and_start: @ 809B5D0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- bl TrainerBattleConfigure
- str r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s5C_trainer_battle_configure_and_start
-
- thumb_func_start sub_809B5E4
-sub_809B5E4: @ 809B5E4
- push {lr}
- bl sub_80B17E0
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B5E4
-
- thumb_func_start sub_809B5F0
-sub_809B5F0: @ 809B5F0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80B1AF8
- str r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809B5F0
-
- thumb_func_start sub_809B604
-@ bool8 sub_809B604(struct script_env *env)
-sub_809B604: @ 809B604
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80B1B10
- str r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809B604
-
- thumb_func_start s60_check_trainer_flag
-s60_check_trainer_flag: @ 809B618
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl trainer_flag_check
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s60_check_trainer_flag
-
- thumb_func_start s61_set_trainer_flag
-s61_set_trainer_flag: @ 809B63C
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl trainer_flag_set
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s61_set_trainer_flag
-
- thumb_func_start s62_unset_trainer_flag
-s62_unset_trainer_flag: @ 809B658
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl trainer_flag_clear
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s62_unset_trainer_flag
-
- thumb_func_start sB6_load_battle
-sB6_load_battle: @ 809B674
- push {r4-r6,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- ldr r0, [r4, 0x8]
- ldrb r6, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadHalfword
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_80F93A0
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sB6_load_battle
-
- thumb_func_start sub_809B6A8
-sub_809B6A8: @ 809B6A8
- push {lr}
- bl sub_80B08A8
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B6A8
-
- thumb_func_start s86_pokemart
-s86_pokemart: @ 809B6B8
- push {lr}
- bl ScriptReadWord
- bl CreatePokemartMenu
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s86_pokemart
-
- thumb_func_start s87_pokemartdecor
-s87_pokemartdecor: @ 809B6CC
- push {lr}
- bl ScriptReadWord
- bl CreateDecorationShop1Menu
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s87_pokemartdecor
-
- thumb_func_start s88_pokemartbp
-s88_pokemartbp: @ 809B6E0
- push {lr}
- bl ScriptReadWord
- bl CreateDecorationShop2Menu
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s88_pokemartbp
-
- thumb_func_start s89_open_casino_game1
-s89_open_casino_game1: @ 809B6F4
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl sub_812A540
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end s89_open_casino_game1
-
- thumb_func_start berry_script_cmd
-@ bool8 berry_script_cmd(struct script_env *env)
-berry_script_cmd: @ 809B71C
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r3, [r1]
- adds r2, r1, 0x1
- str r2, [r0, 0x8]
- ldrb r4, [r1, 0x1]
- adds r2, 0x1
- str r2, [r0, 0x8]
- cmp r3, 0
- bne _0809B744
- adds r0, r5, 0
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0
- bl PlantBerryTree
- b _0809B750
-_0809B744:
- adds r0, r5, 0
- adds r1, r3, 0
- adds r2, r4, 0
- movs r3, 0
- bl PlantBerryTree
-_0809B750:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end berry_script_cmd
-
- thumb_func_start sub_809B758
-sub_809B758: @ 809B758
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl GetPriceReduction
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B758
-
- thumb_func_start sub_809B784
-sub_809B784: @ 809B784
- push {lr}
- bl sub_81B9404
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B784
-
- thumb_func_start sub_809B794
-sub_809B794: @ 809B794
- push {lr}
- bl sub_80F840C
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B794
-
- thumb_func_start sub_809B7A4
-sub_809B7A4: @ 809B7A4
- push {lr}
- bl sub_80F8484
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B7A4
-
- thumb_func_start sub_809B7B4
-sub_809B7B4: @ 809B7B4
- push {lr}
- ldr r0, =gUnknown_02039F2C
- ldrb r0, [r0]
- bl sub_80F84C4
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B7B4
-
- thumb_func_start s9C_execute_HM
-s9C_execute_HM: @ 809B7CC
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_020375D0
- strh r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- bl FieldEffectStart
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s9C_execute_HM
-
- thumb_func_start s9D_set_HM_animation_data
-s9D_set_HM_animation_data: @ 809B7F4
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r1, =gFieldEffectSpawnParams
- lsls r4, 2
- adds r4, r1
- lsls r0, 16
- asrs r0, 16
- str r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s9D_set_HM_animation_data
-
- thumb_func_start sub_809B824
-sub_809B824: @ 809B824
- push {lr}
- ldr r0, =gUnknown_020375D0
- ldrb r0, [r0]
- bl FieldEffectActiveListContains
- lsls r0, 24
- cmp r0, 0
- beq _0809B83C
- movs r0, 0
- b _0809B83E
- .pool
-_0809B83C:
- movs r0, 0x1
-_0809B83E:
- pop {r1}
- bx r1
- thumb_func_end sub_809B824
-
- thumb_func_start s9E_checkarray_HM_animation
-s9E_checkarray_HM_animation: @ 809B844
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r1, =gUnknown_020375D0
- strh r0, [r1]
- ldr r1, =sub_809B824
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s9E_checkarray_HM_animation
-
- thumb_func_start s9F_changeposition_fly
-s9F_changeposition_fly: @ 809B870
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl sub_8084D1C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s9F_changeposition_fly
-
- thumb_func_start sA0_check_gender
-sA0_check_gender: @ 809B88C
- ldr r1, =gScriptResult
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- strh r0, [r1]
- movs r0, 0
- bx lr
- .pool
- thumb_func_end sA0_check_gender
-
- thumb_func_start sA1_play_cry
-sA1_play_cry: @ 809B8A4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl PlayCry5
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sA1_play_cry
-
- thumb_func_start sub_809B8DC
-sub_809B8DC: @ 809B8DC
- push {lr}
- ldr r1, =IsCryFinished
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B8DC
-
- thumb_func_start sA2_setmaptile
-sA2_setmaptile: @ 809B8F0
- push {r4-r7,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r7, r0, 16
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- adds r1, r6, 0x7
- lsls r1, 16
- lsrs r6, r1, 16
- adds r1, r5, 0x7
- lsls r1, 16
- lsrs r5, r1, 16
- cmp r0, 0
- bne _0809B954
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r7, 0
- bl MapGridSetMetatileIdAt
- b _0809B966
-_0809B954:
- movs r1, 0xC0
- lsls r1, 4
- adds r0, r1, 0
- adds r2, r7, 0
- orrs r2, r0
- adds r0, r6, 0
- adds r1, r5, 0
- bl MapGridSetMetatileIdAt
-_0809B966:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sA2_setmaptile
-
- thumb_func_start sAC_open_door
-sAC_open_door: @ 809B970
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- adds r5, 0x7
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0xE0
- lsls r0, 11
- adds r4, r0
- lsrs r4, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl cur_mapdata_get_door_sound_at
- lsls r0, 16
- lsrs r0, 16
- bl PlaySE
- adds r0, r5, 0
- adds r1, r4, 0
- bl task_overworld_door_add_if_role_69_for_opening_door_at
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sAC_open_door
-
- thumb_func_start sub_809B9C8
-sub_809B9C8: @ 809B9C8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- adds r4, 0x7
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0xE0
- lsls r0, 11
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_808A8AC
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809B9C8
-
- thumb_func_start sub_809BA0C
-sub_809BA0C: @ 809BA0C
- push {lr}
- bl sub_808A91C
- lsls r0, 24
- cmp r0, 0
- beq _0809BA1C
- movs r0, 0
- b _0809BA1E
-_0809BA1C:
- movs r0, 0x1
-_0809BA1E:
- pop {r1}
- bx r1
- thumb_func_end sub_809BA0C
-
- thumb_func_start sub_809BA24
-sub_809BA24: @ 809BA24
- push {lr}
- ldr r1, =sub_809BA0C
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BA24
-
- thumb_func_start sub_809BA38
-sub_809BA38: @ 809BA38
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- adds r4, 0x7
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0xE0
- lsls r0, 11
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_808A854
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809BA38
-
- thumb_func_start sub_809BA7C
-sub_809BA7C: @ 809BA7C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- adds r4, 0x7
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0xE0
- lsls r0, 11
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_808A880
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809BA7C
-
- thumb_func_start sub_809BAC0
-sub_809BAC0: @ 809BAC0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809BAC0
-
- thumb_func_start sub_809BAFC
-sub_809BAFC: @ 809BAFC
- movs r0, 0
- bx lr
- thumb_func_end sub_809BAFC
-
- thumb_func_start sB3_get_coin_amount
-sB3_get_coin_amount: @ 809BB00
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r4, r0, 0
- bl GetCoins
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sB3_get_coin_amount
-
- thumb_func_start sub_809BB20
-sub_809BB20: @ 809BB20
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl AddCoins
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809BB48
- ldr r1, =gScriptResult
- movs r0, 0
- b _0809BB4C
- .pool
-_0809BB48:
- ldr r1, =gScriptResult
- movs r0, 0x1
-_0809BB4C:
- strh r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BB20
-
- thumb_func_start sub_809BB58
-sub_809BB58: @ 809BB58
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl SubtractCoins
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809BB80
- ldr r1, =gScriptResult
- movs r0, 0
- b _0809BB84
- .pool
-_0809BB80:
- ldr r1, =gScriptResult
- movs r0, 0x1
-_0809BB84:
- strh r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BB58
-
- thumb_func_start sub_809BB90
-sub_809BB90: @ 809BB90
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl sub_81A89A0
- ldr r1, =gUnknown_020375CA
- strh r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BB90
-
- thumb_func_start sub_809BBB4
-sub_809BBB4: @ 809BBB4
- push {lr}
- bl sub_81A8AF8
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_809BBB4
-
- thumb_func_start ScrCmd_MossdeepGymSwitch
-ScrCmd_MossdeepGymSwitch: @ 809BBC0
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl sub_81A8934
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_MossdeepGymSwitch
-
- thumb_func_start sub_809BBDC
-sub_809BBDC: @ 809BBDC
- push {lr}
- bl sub_81A895C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_809BBDC
-
- thumb_func_start sub_809BBE8
-sub_809BBE8: @ 809BBE8
- push {lr}
- bl sub_80B47BC
- ldr r1, =gSelectedMapObject
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BBE8
-
- thumb_func_start sub_809BBFC
-sub_809BBFC: @ 809BBFC
- push {r4,lr}
- adds r4, r0, 0
- bl is_c1_link_related_active
- cmp r0, 0
- beq _0809BC0C
- movs r0, 0
- b _0809BC30
-_0809BC0C:
- ldr r2, =gMapObjects
- ldr r0, =gSelectedMapObject
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0809BC2E
- bl sub_8098630
- ldr r1, =sub_8098734
- adds r0, r4, 0
- bl SetupNativeScript
-_0809BC2E:
- movs r0, 0x1
-_0809BC30:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BBFC
-
- thumb_func_start sCD_set_obedient_bit
-sCD_set_obedient_bit: @ 809BC44
- push {lr}
- sub sp, 0x4
- movs r2, 0x1
- mov r1, sp
- strb r2, [r1]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x50
- mov r2, sp
- bl SetMonData
- movs r0, 0
- add sp, 0x4
- pop {r1}
- bx r1
- .pool
- thumb_func_end sCD_set_obedient_bit
-
- thumb_func_start sCE_check_obedient_bit
-sCE_check_obedient_bit: @ 809BC7C
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gScriptResult
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x50
- movs r2, 0
- bl GetMonData
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sCE_check_obedient_bit
-
- thumb_func_start sCF_execute_RAM_script_DMA
-sCF_execute_RAM_script_DMA: @ 809BCB4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8099244
- adds r2, r0, 0
- cmp r2, 0
- beq _0809BCD0
- ldr r1, =gUnknown_020375C0
- ldr r0, [r4, 0x8]
- str r0, [r1]
- adds r0, r4, 0
- adds r1, r2, 0
- bl ScriptJump
-_0809BCD0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sCF_execute_RAM_script_DMA
-
- thumb_func_start sD1_warp_v5
-sD1_warp_v5: @ 809BCDC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- bl sub_808D074
- bl sub_80B0244
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sD1_warp_v5
-
- thumb_func_start sub_809BD70
-sub_809BD70: @ 809BD70
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, [r4, 0x8]
- ldrb r2, [r0]
- mov r1, sp
- strb r2, [r1]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r3, 0x5
- bhi _0809BDA6
- movs r0, 0x64
- muls r0, r3
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x23
- mov r2, sp
- bl SetMonData
-_0809BDA6:
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BD70
-
- thumb_func_start sub_809BDB4
-sub_809BDB4: @ 809BDB4
- push {r4,lr}
- ldr r4, =gUnknown_03000F30
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_819746C
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809BDB4
-
- thumb_func_start sub_809BDD0
-sub_809BDD0: @ 809BDD0
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r4, [r4]
- bl GetTrainerClassNameFromId
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BDD0
-
- thumb_func_start sub_809BE0C
-sub_809BE0C: @ 809BE0C
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r4, [r4]
- bl GetTrainerNameFromId
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BE0C
-
- thumb_func_start sub_809BE48
-sub_809BE48: @ 809BE48
- ldr r1, =gUnknown_020375CA
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_809BE48
-
- thumb_func_start sub_809BE54
-sub_809BE54: @ 809BE54
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF79C
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809BE54
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_menu.s b/asm/script_menu.s
index 8aecbf696..55ce5736a 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -5,9 +5,9 @@
.text
- thumb_func_start Multichoice
-@ bool8 Multichoice(u8 x, u8 y, u8 menuId, bool8 noCancelling)
-Multichoice: @ 80E1E08
+ thumb_func_start ScriptMenu_Multichoice
+@ bool8 ScriptMenu_Multichoice(u8 x, u8 y, u8 menuId, bool8 noCancelling)
+ScriptMenu_Multichoice: @ 80E1E08
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 24
@@ -44,10 +44,10 @@ _080E1E4E:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end Multichoice
+ thumb_func_end ScriptMenu_Multichoice
- thumb_func_start sub_80E1E58
-sub_80E1E58: @ 80E1E58
+ thumb_func_start ScriptMenu_MultichoiceWithDefault
+ScriptMenu_MultichoiceWithDefault: @ 80E1E58
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -91,7 +91,7 @@ _080E1EAA:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_80E1E58
+ thumb_func_end ScriptMenu_MultichoiceWithDefault
thumb_func_start sub_80E1EB8
sub_80E1EB8: @ 80E1EB8
@@ -379,8 +379,8 @@ _080E20FC:
.pool
thumb_func_end sub_80E2058
- thumb_func_start yes_no_box
-yes_no_box: @ 80E2108
+ thumb_func_start ScriptMenu_YesNo
+ScriptMenu_YesNo: @ 80E2108
push {r4,lr}
ldr r4, =task_yes_no_maybe
adds r0, r4, 0
@@ -405,7 +405,7 @@ _080E213A:
pop {r4}
pop {r1}
bx r1
- thumb_func_end yes_no_box
+ thumb_func_end ScriptMenu_YesNo
thumb_func_start sub_80E2140
sub_80E2140: @ 80E2140
@@ -485,8 +485,8 @@ _080E21C4:
.pool
thumb_func_end task_yes_no_maybe
- thumb_func_start sub_80E21D0
-sub_80E21D0: @ 80E21D0
+ thumb_func_start ScriptMenu_MultichoiceGrid
+ScriptMenu_MultichoiceGrid: @ 80E21D0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -627,7 +627,7 @@ _080E22E8:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80E21D0
+ thumb_func_end ScriptMenu_MultichoiceGrid
thumb_func_start sub_80E2308
sub_80E2308: @ 80E2308
@@ -1334,8 +1334,8 @@ _080E28F8:
bx r0
thumb_func_end task_picbox
- thumb_func_start sub_80E2900
-sub_80E2900: @ 80E2900
+ thumb_func_start ScriptMenu_ShowPokemonPic
+ScriptMenu_ShowPokemonPic: @ 80E2900
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1422,10 +1422,10 @@ _080E29BA:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_80E2900
+ thumb_func_end ScriptMenu_ShowPokemonPic
- thumb_func_start picbox_close
-picbox_close: @ 80E29C4
+ thumb_func_start ScriptMenu_GetPicboxWaitFunc
+ScriptMenu_GetPicboxWaitFunc: @ 80E29C4
push {lr}
ldr r0, =task_picbox
bl FindTaskIdByFunc
@@ -1449,7 +1449,7 @@ _080E29F4:
_080E29F6:
pop {r1}
bx r1
- thumb_func_end picbox_close
+ thumb_func_end ScriptMenu_GetPicboxWaitFunc
thumb_func_start sub_80E29FC
sub_80E29FC: @ 80E29FC
diff --git a/asm/script_movement.s b/asm/script_movement.s
index f28fc9d44..5f06fd179 100755
--- a/asm/script_movement.s
+++ b/asm/script_movement.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start exec_movement
-exec_movement: @ 80D32E8
+ thumb_func_start ScriptMovement_StartObjectMovementScript
+ScriptMovement_StartObjectMovementScript: @ 80D32E8
push {r4,lr}
sub sp, 0x4
adds r4, r3, 0
@@ -47,10 +47,10 @@ _080D3332:
pop {r1}
bx r1
.pool
- thumb_func_end exec_movement
+ thumb_func_end ScriptMovement_StartObjectMovementScript
- thumb_func_start sub_80D3340
-sub_80D3340: @ 80D3340
+ thumb_func_start ScriptMovement_IsObjectMovementFinished
+ScriptMovement_IsObjectMovementFinished: @ 80D3340
push {r4,lr}
sub sp, 0x4
lsls r0, 24
@@ -87,7 +87,7 @@ _080D3384:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_80D3340
+ thumb_func_end ScriptMovement_IsObjectMovementFinished
thumb_func_start sub_80D338C
sub_80D338C: @ 80D338C
diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s
index e26194298..18d7b7fe3 100644
--- a/asm/script_pokemon_util_80F87D8.s
+++ b/asm/script_pokemon_util_80F87D8.s
@@ -83,7 +83,7 @@ sub_80F8850: @ 80F8850
thumb_func_start sub_80F8864
sub_80F8864: @ 80F8864
push {lr}
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080F88A4
@@ -222,7 +222,7 @@ sub_80F8970: @ 80F8970
mov r12, r0
ldr r1, =gSpecialVar_0x8006
mov r9, r1
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
mov r10, r2
mov r2, r12
mov r1, sp
@@ -397,8 +397,8 @@ sub_80F8ACC: @ 80F8ACC
.pool
thumb_func_end sub_80F8ACC
- thumb_func_start sub_80F8ADC
-sub_80F8ADC: @ 80F8ADC
+ thumb_func_start ShowContestWinner
+ShowContestWinner: @ 80F8ADC
push {lr}
ldr r0, =sub_812FDEC
bl SetMainCallback2
@@ -408,7 +408,7 @@ sub_80F8ADC: @ 80F8ADC
pop {r0}
bx r0
.pool
- thumb_func_end sub_80F8ADC
+ thumb_func_end ShowContestWinner
thumb_func_start sub_80F8AFC
sub_80F8AFC: @ 80F8AFC
@@ -625,7 +625,7 @@ sub_80F8C7C: @ 80F8C7C
ldrb r0, [r6]
muls r0, r5
adds r0, r4
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -670,7 +670,7 @@ sub_80F8D28: @ 80F8D28
beq _080F8D44
b _080F8E9C
_080F8D44:
- bl init_uns_table_pokemon_copy
+ bl AllocateMonSpritesGfx
movs r0, 0xA
mov r9, r0
movs r1, 0x3
@@ -710,7 +710,7 @@ _080F8D44:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r6, 0
@@ -722,7 +722,7 @@ _080F8DC4:
lsls r0, r6, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r6, 0
@@ -842,7 +842,7 @@ sub_80F8EB8: @ 80F8EB8
ldrh r0, [r1, 0x8]
adds r0, 0x1
strh r0, [r1, 0x8]
- bl sub_805F094
+ bl FreeMonSpritesGfx
_080F8EDC:
pop {r0}
bx r0
@@ -1093,7 +1093,7 @@ sub_80F90DC: @ 80F90DC
ands r0, r1
cmp r0, 0
beq _080F90FE
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080F90FE
@@ -1116,7 +1116,7 @@ sub_80F910C: @ 80F910C
ands r0, r1
cmp r0, 0
beq _080F9126
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080F9126
@@ -1269,9 +1269,9 @@ _080F922C:
.pool
thumb_func_end sp000_heal_pokemon
- thumb_func_start sub_80F9244
-@ void sub_80F9244(s16 species_num, u8 level, int held_item)
-sub_80F9244: @ 80F9244
+ thumb_func_start ScriptGiveMon
+@ void ScriptGiveMon(s16 species_num, u8 level, int held_item)
+ScriptGiveMon: @ 80F9244
push {r4-r6,lr}
mov r6, r8
push {r6}
@@ -1332,10 +1332,10 @@ _080F92B8:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_80F9244
+ thumb_func_end ScriptGiveMon
- thumb_func_start sub_80F92C8
-sub_80F92C8: @ 80F92C8
+ thumb_func_start ScriptGiveEgg
+ScriptGiveEgg: @ 80F92C8
push {lr}
sub sp, 0x68
adds r1, r0, 0
@@ -1357,7 +1357,7 @@ sub_80F92C8: @ 80F92C8
add sp, 0x68
pop {r1}
bx r1
- thumb_func_end sub_80F92C8
+ thumb_func_end ScriptGiveEgg
thumb_func_start sub_80F92F8
sub_80F92F8: @ 80F92F8
@@ -1450,8 +1450,8 @@ _080F9392:
.pool
thumb_func_end sub_80F9370
- thumb_func_start sub_80F93A0
-sub_80F93A0: @ 80F93A0
+ thumb_func_start CreateScriptedWildMon
+CreateScriptedWildMon: @ 80F93A0
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1496,10 +1496,10 @@ _080F93EE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80F93A0
+ thumb_func_end CreateScriptedWildMon
- thumb_func_start sub_80F9400
-sub_80F9400: @ 80F9400
+ thumb_func_start ScriptSetMonMoveSlot
+ScriptSetMonMoveSlot: @ 80F9400
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
@@ -1525,7 +1525,7 @@ _080F941C:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80F9400
+ thumb_func_end ScriptSetMonMoveSlot
thumb_func_start sub_80F9438
sub_80F9438: @ 80F9438
diff --git a/asm/secret_base.s b/asm/secret_base.s
index e514e88f1..69cfff512 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -861,7 +861,7 @@ sub_80E916C: @ 80E916C
asrs r0, 24
str r0, [sp]
adds r0, r5, 0
- bl warp1_set
+ bl Overworld_SetWarpDestination
bl warp_in
ldr r1, =gFieldCallback
ldr r0, =sub_80E9108
@@ -1163,13 +1163,13 @@ _080E941E:
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_8089350
+ bl MetatileBehavior_IsMB_B5
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
beq _080E9462
adds r0, r4, 0
- bl sub_8089364
+ bl MetatileBehavior_IsMB_C3
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1192,7 +1192,7 @@ _080E9462:
mov r3, r10
ldrb r1, [r3]
lsls r1, 5
- ldr r2, =gUnknown_085A5C24
+ ldr r2, =gDecorations + 0x1c
adds r1, r2
ldr r1, [r1]
ldrh r1, [r1]
@@ -1208,7 +1208,7 @@ _080E9462:
adds r0, 0xAE
lsls r0, 16
lsrs r0, 16
- bl FlagReset
+ bl FlagClear
ldrb r0, [r6]
ldr r5, =gSaveBlock1Ptr
ldr r2, [r5]
@@ -3288,7 +3288,7 @@ _080EA62C:
.pool
_080EA668:
adds r0, r5, 0
- bl sub_80893C8
+ bl MetatileBehavior_IsSecretBaseGlitterMat
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3308,7 +3308,7 @@ _080EA680:
.pool
_080EA698:
adds r0, r5, 0
- bl sub_808938C
+ bl MetatileBehavior_IsSecretBaseBalloon
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3377,7 +3377,7 @@ _080EA714:
.pool
_080EA72C:
adds r0, r5, 0
- bl sub_80893A0
+ bl MetatileBehavior_IsMB_BE
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3409,7 +3409,7 @@ _080EA75E:
.pool
_080EA778:
adds r0, r5, 0
- bl sub_80893B4
+ bl MetatileBehavior_IsSecretBaseSoundMat
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3429,7 +3429,7 @@ _080EA778:
.pool
_080EA7A8:
adds r0, r5, 0
- bl MetatileBehavior_0xBB
+ bl MetatileBehavior_IsSecretBaseJumpMat
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3449,7 +3449,7 @@ _080EA7A8:
.pool
_080EA7D8:
adds r0, r5, 0
- bl MetatileBehavior_0xBC
+ bl MetatileBehavior_IsSecretBaseSpinMat
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4494,7 +4494,7 @@ sub_80EAF80: @ 80EAF80
bne _080EAF9A
b _080EB16A
_080EAF9A:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
diff --git a/asm/shop.s b/asm/shop.s
index f4dacaa76..94756624c 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -1125,7 +1125,7 @@ BuyMenuInitBgs: @ 80E036C
BuyMenuDecompressBgGraphics: @ 80E0424
push {lr}
sub sp, 0x4
- ldr r1, =gUnknown_08D9AFBC
+ ldr r1, =gBuyMenuFrame_Gfx
movs r2, 0xE8
lsls r2, 2
ldr r3, =0x000003e3
@@ -1133,11 +1133,11 @@ BuyMenuDecompressBgGraphics: @ 80E0424
str r0, [sp]
movs r0, 0x1
bl decompress_and_copy_tile_data_to_vram
- ldr r0, =gUnknown_08D9B0F0
+ ldr r0, =gBuyMenuFrame_Tilemap
ldr r1, =gUnknown_02039F70
ldr r1, [r1]
bl LZDecompressWram
- ldr r0, =gUnknown_08D9B0C8
+ ldr r0, =gMenuMoneyPal
movs r1, 0xC0
movs r2, 0x20
bl LoadCompressedPalette
@@ -1259,7 +1259,7 @@ BuyMenuDrawGraphics: @ 80E0524
movs r0, 0
movs r1, 0x1
movs r2, 0xD
- bl set_window_border_style_and_print_money_box
+ bl PrintMoneyAmountInMoneyBoxWithBorder
movs r0, 0
bl schedule_bg_copy_tilemap_to_vram
movs r0, 0x1
@@ -2465,7 +2465,7 @@ BuyMenuSubtractMoney: @ 80E0F88
lsls r2, 6
adds r1, r2
ldr r1, [r1]
- bl SubtractMoney
+ bl RemoveMoney
movs r0, 0x5F
bl PlaySE
ldr r0, [r5]
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 6bd62ed9f..6390ae992 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -55,8 +55,8 @@ _0812A530:
.pool
thumb_func_end sub_812A4DC
- thumb_func_start sub_812A540
-sub_812A540: @ 812A540
+ thumb_func_start PlaySlotMachine
+PlaySlotMachine: @ 812A540
push {r4-r6,lr}
adds r4, r0, 0
adds r6, r1, 0
@@ -85,7 +85,7 @@ sub_812A540: @ 812A540
pop {r0}
bx r0
.pool
- thumb_func_end sub_812A540
+ thumb_func_end PlaySlotMachine
thumb_func_start sub_812A588
sub_812A588: @ 812A588
diff --git a/asm/starter_choose.s b/asm/starter_choose.s
index 7e998c45f..da42959ea 100644
--- a/asm/starter_choose.s
+++ b/asm/starter_choose.s
@@ -122,12 +122,12 @@ set_256color_bg_bg0: @ 8133F0C
ldr r0, =0x81000200
str r0, [r2, 0x8]
ldr r0, [r2, 0x8]
- ldr r0, =gUnknown_085B0E04
+ ldr r0, =gBirchHelpGfx
bl LZ77UnCompVram
- ldr r0, =gUnknown_085B0A80
+ ldr r0, =gBirchBagTilemap
ldr r1, =0x06003000
bl LZ77UnCompVram
- ldr r0, =gUnknown_085B0C0C
+ ldr r0, =gBirchGrassTilemap
ldr r1, =0x06003800
bl LZ77UnCompVram
movs r0, 0
@@ -155,7 +155,7 @@ set_256color_bg_bg0: @ 8133F0C
movs r1, 0xE0
movs r2, 0x20
bl LoadPalette
- ldr r0, =gUnknown_085B0A00
+ ldr r0, =gBirchBagGrassPal
movs r1, 0
movs r2, 0x40
bl LoadPalette
diff --git a/asm/tileset.s b/asm/tileset.s
deleted file mode 100644
index 0605c7621..000000000
--- a/asm/tileset.s
+++ /dev/null
@@ -1,1793 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80A0954
-@ void sub_80A0954()
-sub_80A0954: @ 80A0954
- push {lr}
- sub sp, 0x4
- ldr r1, =gUnknown_03000F34
- movs r0, 0
- strb r0, [r1]
- movs r0, 0
- str r0, [sp]
- ldr r1, =gUnknown_02037624
- ldr r2, =0x0500003c
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A0954
-
- thumb_func_start sub_80A0980
-sub_80A0980: @ 80A0980
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 16
- lsrs r6, r2, 16
- ldr r3, =gUnknown_03000F34
- ldrb r0, [r3]
- cmp r0, 0x13
- bhi _080A09C0
- ldr r2, =gUnknown_02037624
- adds r1, r0, 0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- str r4, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r2, 0x4
- adds r0, r1
- str r5, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r6, [r0, 0x8]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
-_080A09C0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A0980
-
- thumb_func_start sub_80A09D0
-sub_80A09D0: @ 80A09D0
- push {r4-r6,lr}
- movs r3, 0
- ldr r4, =gUnknown_03000F34
- adds r6, r4, 0
- ldrb r0, [r4]
- cmp r3, r0
- bge _080A0A02
- ldr r2, =0x040000d4
- ldr r1, =gUnknown_02037624
- movs r5, 0x80
- lsls r5, 24
-_080A09E6:
- ldr r0, [r1]
- str r0, [r2]
- ldr r0, [r1, 0x4]
- str r0, [r2, 0x4]
- ldrh r0, [r1, 0x8]
- lsrs r0, 1
- orrs r0, r5
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- adds r1, 0xC
- adds r3, 0x1
- ldrb r0, [r4]
- cmp r3, r0
- blt _080A09E6
-_080A0A02:
- movs r0, 0
- strb r0, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A09D0
-
- thumb_func_start cur_mapheader_run_tileset_funcs_after_some_cpuset
-cur_mapheader_run_tileset_funcs_after_some_cpuset: @ 80A0A18
- push {lr}
- bl sub_80A0954
- bl cur_mapheader_run_tileset1_func
- bl cur_mapheader_run_tileset2_func
- pop {r0}
- bx r0
- thumb_func_end cur_mapheader_run_tileset_funcs_after_some_cpuset
-
- thumb_func_start sub_80A0A2C
-sub_80A0A2C: @ 80A0A2C
- push {lr}
- bl cur_mapheader_run_tileset2_func
- pop {r0}
- bx r0
- thumb_func_end sub_80A0A2C
-
- thumb_func_start sub_80A0A38
-sub_80A0A38: @ 80A0A38
- push {r4,lr}
- bl sub_80A0954
- ldr r2, =gUnknown_03000F36
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- ldr r1, =gUnknown_03000F38
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- cmp r0, r1
- bcc _080A0A56
- movs r0, 0
- strh r0, [r2]
-_080A0A56:
- ldr r4, =gUnknown_03000F3A
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- ldr r1, =gUnknown_03000F3C
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- cmp r0, r1
- bcc _080A0A6E
- movs r0, 0
- strh r0, [r4]
-_080A0A6E:
- ldr r0, =gUnknown_03000F40
- ldr r1, [r0]
- cmp r1, 0
- beq _080A0A7C
- ldrh r0, [r2]
- bl _call_via_r1
-_080A0A7C:
- ldr r0, =gUnknown_03000F44
- ldr r1, [r0]
- cmp r1, 0
- beq _080A0A8A
- ldrh r0, [r4]
- bl _call_via_r1
-_080A0A8A:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A0A38
-
- thumb_func_start cur_mapheader_run_tileset1_func
-cur_mapheader_run_tileset1_func: @ 80A0AA8
- push {lr}
- ldr r0, =gUnknown_03000F36
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_03000F38
- strh r1, [r0]
- ldr r1, =gUnknown_03000F40
- movs r0, 0
- str r0, [r1]
- ldr r0, =gMapHeader
- ldr r0, [r0]
- ldr r0, [r0, 0x10]
- cmp r0, 0
- beq _080A0ACE
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _080A0ACE
- bl _call_via_r0
-_080A0ACE:
- pop {r0}
- bx r0
- .pool
- thumb_func_end cur_mapheader_run_tileset1_func
-
- thumb_func_start cur_mapheader_run_tileset2_func
-cur_mapheader_run_tileset2_func: @ 80A0AE4
- push {lr}
- ldr r0, =gUnknown_03000F3A
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_03000F3C
- strh r1, [r0]
- ldr r1, =gUnknown_03000F44
- movs r0, 0
- str r0, [r1]
- ldr r0, =gMapHeader
- ldr r0, [r0]
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _080A0B0A
- ldr r0, [r0, 0x14]
- cmp r0, 0
- beq _080A0B0A
- bl _call_via_r0
-_080A0B0A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end cur_mapheader_run_tileset2_func
-
- thumb_func_start TilesetCb_General
-TilesetCb_General: @ 80A0B20
- ldr r1, =gUnknown_03000F36
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F38
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F40
- ldr r0, =sub_80A0B70
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_General
-
- thumb_func_start TilesetCb_InsideBuilding
-TilesetCb_InsideBuilding: @ 80A0B48
- ldr r1, =gUnknown_03000F36
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F38
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F40
- ldr r0, =sub_80A0BB4
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_InsideBuilding
-
- thumb_func_start sub_80A0B70
-sub_80A0B70: @ 80A0B70
- push {r4,r5,lr}
- lsls r5, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r5
- lsrs r4, r0, 16
- cmp r4, 0
- bne _080A0B86
- lsrs r0, r5, 20
- bl sub_80A0BCC
-_080A0B86:
- cmp r4, 0x1
- bne _080A0B90
- lsrs r0, r5, 20
- bl sub_80A0BF4
-_080A0B90:
- cmp r4, 0x2
- bne _080A0B9A
- lsrs r0, r5, 20
- bl sub_80A0C1C
-_080A0B9A:
- cmp r4, 0x3
- bne _080A0BA4
- lsrs r0, r5, 20
- bl sub_80A0C44
-_080A0BA4:
- cmp r4, 0x4
- bne _080A0BAE
- lsrs r0, r5, 20
- bl sub_80A12AC
-_080A0BAE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A0B70
-
- thumb_func_start sub_80A0BB4
-sub_80A0BB4: @ 80A0BB4
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- bne _080A0BC8
- lsrs r0, r1, 19
- bl sub_80A1688
-_080A0BC8:
- pop {r0}
- bx r0
- thumb_func_end sub_80A0BB4
-
- thumb_func_start sub_80A0BCC
-sub_80A0BCC: @ 80A0BCC
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_08510764
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06003f80
- movs r2, 0x80
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A0BCC
-
- thumb_func_start sub_80A0BF4
-sub_80A0BF4: @ 80A0BF4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x7
- ands r0, r1
- ldr r1, =gUnknown_08512574
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x06003600
- movs r2, 0xF0
- lsls r2, 2
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A0BF4
-
- thumb_func_start sub_80A0C1C
-sub_80A0C1C: @ 80A0C1C
- push {lr}
- lsls r0, 16
- movs r1, 0xE0
- lsls r1, 11
- ands r1, r0
- ldr r0, =gUnknown_08512E54
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06003a00
- movs r2, 0xA0
- lsls r2, 1
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A0C1C
-
- thumb_func_start sub_80A0C44
-sub_80A0C44: @ 80A0C44
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_08513174
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06003e00
- movs r2, 0xC0
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A0C44
-
- thumb_func_start TilesetCb_Petalburg
-TilesetCb_Petalburg: @ 80A0C6C
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- movs r0, 0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Petalburg
-
- thumb_func_start TilesetCb_Rustboro
-TilesetCb_Rustboro: @ 80A0C94
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A103C
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Rustboro
-
- thumb_func_start TilesetCb_Dewford
-TilesetCb_Dewford: @ 80A0CC0
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A10B8
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Dewford
-
- thumb_func_start TilesetCb_Slateport
-TilesetCb_Slateport: @ 80A0CEC
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A10D0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Slateport
-
- thumb_func_start TilesetCb_Mauville
-TilesetCb_Mauville: @ 80A0D18
- ldr r1, =gUnknown_03000F3A
- ldr r0, =gUnknown_03000F36
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A10E8
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Mauville
-
- thumb_func_start TilesetCb_Lavaridge
-TilesetCb_Lavaridge: @ 80A0D48
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A115C
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Lavaridge
-
- thumb_func_start TilesetCb_Fallarbor
-TilesetCb_Fallarbor: @ 80A0D74
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- movs r0, 0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Fallarbor
-
- thumb_func_start TilesetCb_Fortree
-TilesetCb_Fortree: @ 80A0D9C
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- movs r0, 0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Fortree
-
- thumb_func_start TilesetCb_Lilycove
-TilesetCb_Lilycove: @ 80A0DC4
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- movs r0, 0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Lilycove
-
- thumb_func_start TilesetCb_Mossdeep
-TilesetCb_Mossdeep: @ 80A0DEC
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- movs r0, 0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Mossdeep
-
- thumb_func_start TilesetCb_EverGrande
-TilesetCb_EverGrande: @ 80A0E14
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A1188
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_EverGrande
-
- thumb_func_start TilesetCb_Pacifidlog
-TilesetCb_Pacifidlog: @ 80A0E40
- ldr r1, =gUnknown_03000F3A
- ldr r0, =gUnknown_03000F36
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A11FC
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Pacifidlog
-
- thumb_func_start TilesetCb_Sootopolis
-TilesetCb_Sootopolis: @ 80A0E70
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A122C
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Sootopolis
-
- thumb_func_start TilesetCb_BattleFrontierOutsideWest
-TilesetCb_BattleFrontierOutsideWest: @ 80A0E9C
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A127C
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_BattleFrontierOutsideWest
-
- thumb_func_start TilesetCb_BattleFrontierOutsideEast
-TilesetCb_BattleFrontierOutsideEast: @ 80A0EC8
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A1294
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_BattleFrontierOutsideEast
-
- thumb_func_start TilesetCb_Underwater
-TilesetCb_Underwater: @ 80A0EF4
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- movs r0, 0x80
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A1244
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Underwater
-
- thumb_func_start TilesetCb_SootopolisGym
-TilesetCb_SootopolisGym: @ 80A0F18
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- movs r0, 0xF0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A15D8
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_SootopolisGym
-
- thumb_func_start TilesetCb_Cave
-TilesetCb_Cave: @ 80A0F3C
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A1260
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_Cave
-
- thumb_func_start TilesetCb_EliteFour
-TilesetCb_EliteFour: @ 80A0F68
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- movs r0, 0x80
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A15F0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_EliteFour
-
- thumb_func_start TilesetCb_MauvilleGym
-TilesetCb_MauvilleGym: @ 80A0F8C
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A15C0
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_MauvilleGym
-
- thumb_func_start TilesetCb_BikeShop
-TilesetCb_BikeShop: @ 80A0FB8
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A161C
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_BikeShop
-
- thumb_func_start TilesetCb_BattlePyramid
-TilesetCb_BattlePyramid: @ 80A0FE4
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A1634
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_BattlePyramid
-
- thumb_func_start TilesetCb_BattleDome
-TilesetCb_BattleDome: @ 80A1010
- ldr r1, =gUnknown_03000F3A
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gUnknown_03000F3C
- ldr r0, =gUnknown_03000F38
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r1, =gUnknown_03000F44
- ldr r0, =sub_80A1658
- str r0, [r1]
- bx lr
- .pool
- thumb_func_end TilesetCb_BattleDome
-
- thumb_func_start sub_80A103C
-sub_80A103C: @ 80A103C
- push {r4-r6,lr}
- lsls r5, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r5
- lsrs r6, r0, 16
- cmp r6, 0
- bne _080A105C
- lsrs r4, r5, 19
- adds r0, r4, 0
- movs r1, 0
- bl sub_80A1434
- adds r0, r4, 0
- bl sub_80A1470
-_080A105C:
- cmp r6, 0x1
- bne _080A1068
- lsrs r0, r5, 19
- movs r1, 0x1
- bl sub_80A1434
-_080A1068:
- cmp r6, 0x2
- bne _080A1074
- lsrs r0, r5, 19
- movs r1, 0x2
- bl sub_80A1434
-_080A1074:
- cmp r6, 0x3
- bne _080A1080
- lsrs r0, r5, 19
- movs r1, 0x3
- bl sub_80A1434
-_080A1080:
- cmp r6, 0x4
- bne _080A108C
- lsrs r0, r5, 19
- movs r1, 0x4
- bl sub_80A1434
-_080A108C:
- cmp r6, 0x5
- bne _080A1098
- lsrs r0, r5, 19
- movs r1, 0x5
- bl sub_80A1434
-_080A1098:
- cmp r6, 0x6
- bne _080A10A4
- lsrs r0, r5, 19
- movs r1, 0x6
- bl sub_80A1434
-_080A10A4:
- cmp r6, 0x7
- bne _080A10B0
- lsrs r0, r5, 19
- movs r1, 0x7
- bl sub_80A1434
-_080A10B0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80A103C
-
- thumb_func_start sub_80A10B8
-sub_80A10B8: @ 80A10B8
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- bne _080A10CC
- lsrs r0, r1, 19
- bl sub_80A1520
-_080A10CC:
- pop {r0}
- bx r0
- thumb_func_end sub_80A10B8
-
- thumb_func_start sub_80A10D0
-sub_80A10D0: @ 80A10D0
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r1
- cmp r0, 0
- bne _080A10E4
- lsrs r0, r1, 20
- bl sub_80A1598
-_080A10E4:
- pop {r0}
- bx r0
- thumb_func_end sub_80A10D0
-
- thumb_func_start sub_80A10E8
-sub_80A10E8: @ 80A10E8
- push {r4,r5,lr}
- lsls r4, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r4
- lsrs r5, r0, 16
- cmp r5, 0
- bne _080A1100
- lsrs r0, r4, 19
- movs r1, 0
- bl sub_80A1394
-_080A1100:
- cmp r5, 0x1
- bne _080A110C
- lsrs r0, r4, 19
- movs r1, 0x1
- bl sub_80A1394
-_080A110C:
- cmp r5, 0x2
- bne _080A1118
- lsrs r0, r4, 19
- movs r1, 0x2
- bl sub_80A1394
-_080A1118:
- cmp r5, 0x3
- bne _080A1124
- lsrs r0, r4, 19
- movs r1, 0x3
- bl sub_80A1394
-_080A1124:
- cmp r5, 0x4
- bne _080A1130
- lsrs r0, r4, 19
- movs r1, 0x4
- bl sub_80A1394
-_080A1130:
- cmp r5, 0x5
- bne _080A113C
- lsrs r0, r4, 19
- movs r1, 0x5
- bl sub_80A1394
-_080A113C:
- cmp r5, 0x6
- bne _080A1148
- lsrs r0, r4, 19
- movs r1, 0x6
- bl sub_80A1394
-_080A1148:
- cmp r5, 0x7
- bne _080A1154
- lsrs r0, r4, 19
- movs r1, 0x7
- bl sub_80A1394
-_080A1154:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A10E8
-
- thumb_func_start sub_80A115C
-sub_80A115C: @ 80A115C
- push {r4,r5,lr}
- lsls r4, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r4
- lsrs r5, r0, 16
- cmp r5, 0
- bne _080A1176
- lsrs r0, r4, 20
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A12D4
-_080A1176:
- cmp r5, 0x1
- bne _080A1180
- lsrs r0, r4, 20
- bl sub_80A1498
-_080A1180:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A115C
-
- thumb_func_start sub_80A1188
-sub_80A1188: @ 80A1188
- push {r4,r5,lr}
- lsls r4, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r4
- lsrs r5, r0, 16
- cmp r5, 0
- bne _080A11A0
- lsrs r0, r4, 19
- movs r1, 0
- bl sub_80A14C0
-_080A11A0:
- cmp r5, 0x1
- bne _080A11AC
- lsrs r0, r4, 19
- movs r1, 0x1
- bl sub_80A14C0
-_080A11AC:
- cmp r5, 0x2
- bne _080A11B8
- lsrs r0, r4, 19
- movs r1, 0x2
- bl sub_80A14C0
-_080A11B8:
- cmp r5, 0x3
- bne _080A11C4
- lsrs r0, r4, 19
- movs r1, 0x3
- bl sub_80A14C0
-_080A11C4:
- cmp r5, 0x4
- bne _080A11D0
- lsrs r0, r4, 19
- movs r1, 0x4
- bl sub_80A14C0
-_080A11D0:
- cmp r5, 0x5
- bne _080A11DC
- lsrs r0, r4, 19
- movs r1, 0x5
- bl sub_80A14C0
-_080A11DC:
- cmp r5, 0x6
- bne _080A11E8
- lsrs r0, r4, 19
- movs r1, 0x6
- bl sub_80A14C0
-_080A11E8:
- cmp r5, 0x7
- bne _080A11F4
- lsrs r0, r4, 19
- movs r1, 0x7
- bl sub_80A14C0
-_080A11F4:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1188
-
- thumb_func_start sub_80A11FC
-sub_80A11FC: @ 80A11FC
- push {r4,r5,lr}
- lsls r4, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r4
- lsrs r5, r0, 16
- cmp r5, 0
- bne _080A1216
- lsrs r0, r4, 20
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A131C
-_080A1216:
- cmp r5, 0x1
- bne _080A1224
- lsrs r0, r4, 20
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A136C
-_080A1224:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A11FC
-
- thumb_func_start sub_80A122C
-sub_80A122C: @ 80A122C
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r1
- cmp r0, 0
- bne _080A1240
- lsrs r0, r1, 20
- bl sub_80A1798
-_080A1240:
- pop {r0}
- bx r0
- thumb_func_end sub_80A122C
-
- thumb_func_start sub_80A1244
-sub_80A1244: @ 80A1244
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r1
- cmp r0, 0
- bne _080A125C
- lsrs r0, r1, 20
- lsls r0, 24
- lsrs r0, 24
- bl sub_80A1344
-_080A125C:
- pop {r0}
- bx r0
- thumb_func_end sub_80A1244
-
- thumb_func_start sub_80A1260
-sub_80A1260: @ 80A1260
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r1
- lsrs r0, 16
- cmp r0, 0x1
- bne _080A1276
- lsrs r0, r1, 20
- bl sub_80A14F8
-_080A1276:
- pop {r0}
- bx r0
- thumb_func_end sub_80A1260
-
- thumb_func_start sub_80A127C
-sub_80A127C: @ 80A127C
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- bne _080A1290
- lsrs r0, r1, 19
- bl sub_80A1548
-_080A1290:
- pop {r0}
- bx r0
- thumb_func_end sub_80A127C
-
- thumb_func_start sub_80A1294
-sub_80A1294: @ 80A1294
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- bne _080A12A8
- lsrs r0, r1, 19
- bl sub_80A1570
-_080A12A8:
- pop {r0}
- bx r0
- thumb_func_end sub_80A1294
-
- thumb_func_start sub_80A12AC
-sub_80A12AC: @ 80A12AC
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_08513684
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06003c00
- movs r2, 0xA0
- lsls r2, 1
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A12AC
-
- thumb_func_start sub_80A12D4
-sub_80A12D4: @ 80A12D4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x3
- ands r0, r4
- ldr r5, =gUnknown_08513894
- lsls r0, 2
- adds r0, r5
- ldr r0, [r0]
- ldr r1, =0x06006400
- movs r2, 0x80
- bl sub_80A0980
- adds r1, r4, 0x2
- adds r0, r1, 0
- asrs r0, 2
- lsls r0, 2
- subs r0, r1, r0
- lsls r0, 24
- lsrs r0, 22
- adds r0, r5
- ldr r0, [r0]
- ldr r1, =0x06006480
- movs r2, 0x80
- bl sub_80A0980
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A12D4
-
- thumb_func_start sub_80A131C
-sub_80A131C: @ 80A131C
- push {lr}
- lsls r0, 24
- movs r1, 0xC0
- lsls r1, 18
- ands r1, r0
- ldr r0, =gUnknown_085143E4
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06007a00
- movs r2, 0xF0
- lsls r2, 2
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A131C
-
- thumb_func_start sub_80A1344
-sub_80A1344: @ 80A1344
- push {lr}
- lsls r0, 24
- movs r1, 0xC0
- lsls r1, 18
- ands r1, r0
- ldr r0, =gUnknown_085145F4
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06007e00
- movs r2, 0x80
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1344
-
- thumb_func_start sub_80A136C
-sub_80A136C: @ 80A136C
- push {lr}
- lsls r0, 24
- movs r1, 0xE0
- lsls r1, 19
- ands r1, r0
- ldr r0, =gUnknown_08514E04
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06007e00
- movs r2, 0x80
- lsls r2, 1
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A136C
-
- thumb_func_start sub_80A1394
-sub_80A1394: @ 80A1394
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r6, r1, 24
- subs r0, r5, r6
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xB
- bhi _080A13F0
- adds r0, r5, 0
- movs r1, 0xC
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- ldr r0, =gUnknown_08515384
- lsrs r4, 14
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, =gUnknown_08515344
- lsls r5, r6, 2
- adds r1, r5, r1
- ldr r1, [r1]
- movs r2, 0x80
- bl sub_80A0980
- ldr r0, =gUnknown_085153B4
- adds r4, r0
- ldr r0, [r4]
- ldr r1, =gUnknown_08515364
- adds r5, r1
- ldr r1, [r5]
- movs r2, 0x80
- bl sub_80A0980
- b _080A141C
- .pool
-_080A13F0:
- movs r0, 0x3
- ands r5, r0
- ldr r0, =gUnknown_085153E4
- lsls r5, 2
- adds r0, r5, r0
- ldr r0, [r0]
- ldr r1, =gUnknown_08515344
- lsls r4, r6, 2
- adds r1, r4, r1
- ldr r1, [r1]
- movs r2, 0x80
- bl sub_80A0980
- ldr r0, =gUnknown_085153F4
- adds r5, r0
- ldr r0, [r5]
- ldr r1, =gUnknown_08515364
- adds r4, r1
- ldr r1, [r4]
- movs r2, 0x80
- bl sub_80A0980
-_080A141C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1394
-
- thumb_func_start sub_80A1434
-sub_80A1434: @ 80A1434
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r3, r1, 24
- subs r0, r3
- lsls r0, 16
- movs r1, 0xE0
- lsls r1, 11
- ands r1, r0
- ldr r0, =gUnknown_08515824
- lsrs r1, 14
- adds r1, r0
- ldr r2, [r1]
- cmp r2, 0
- beq _080A1464
- ldr r0, =gUnknown_08515804
- lsls r1, r3, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r2, 0
- movs r2, 0x80
- bl sub_80A0980
-_080A1464:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1434
-
- thumb_func_start sub_80A1470
-sub_80A1470: @ 80A1470
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, =gUnknown_08515964
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x06007800
- movs r2, 0x80
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1470
-
- thumb_func_start sub_80A1498
-sub_80A1498: @ 80A1498
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_08515D8C
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06005400
- movs r2, 0x80
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1498
-
- thumb_func_start sub_80A14C0
-sub_80A14C0: @ 80A14C0
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r1, 24
- subs r0, r1
- lsls r0, 16
- movs r2, 0xE0
- lsls r2, 11
- ands r2, r0
- ldr r0, =gUnknown_085161DC
- lsrs r2, 14
- adds r2, r0
- ldr r0, [r2]
- ldr r2, =gUnknown_085161BC
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- movs r2, 0x80
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A14C0
-
- thumb_func_start sub_80A14F8
-sub_80A14F8: @ 80A14F8
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_08515D8C
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06007400
- movs r2, 0x80
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A14F8
-
- thumb_func_start sub_80A1520
-sub_80A1520: @ 80A1520
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_085164FC
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06005540
- movs r2, 0xC0
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1520
-
- thumb_func_start sub_80A1548
-sub_80A1548: @ 80A1548
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_0851680C
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06005b40
- movs r2, 0xC0
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1548
-
- thumb_func_start sub_80A1570
-sub_80A1570: @ 80A1570
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_08516B1C
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06005b40
- movs r2, 0xC0
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1570
-
- thumb_func_start sub_80A1598
-sub_80A1598: @ 80A1598
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_08516D2C
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06005c00
- movs r2, 0x80
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1598
-
- thumb_func_start sub_80A15C0
-sub_80A15C0: @ 80A15C0
- push {lr}
- lsls r2, r0, 16
- lsrs r0, r2, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080A15D4
- lsrs r0, r2, 17
- bl sub_80A1748
-_080A15D4:
- pop {r0}
- bx r0
- thumb_func_end sub_80A15C0
-
- thumb_func_start sub_80A15D8
-sub_80A15D8: @ 80A15D8
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- bne _080A15EC
- lsrs r0, r1, 19
- bl sub_80A16B0
-_080A15EC:
- pop {r0}
- bx r0
- thumb_func_end sub_80A15D8
-
- thumb_func_start sub_80A15F0
-sub_80A15F0: @ 80A15F0
- push {r4,r5,lr}
- lsls r4, r0, 16
- lsrs r0, r4, 16
- adds r5, r0, 0
- movs r0, 0x3F
- ands r0, r5
- cmp r0, 0x1
- bne _080A1606
- lsrs r0, r4, 22
- bl sub_80A1720
-_080A1606:
- movs r0, 0x7
- ands r0, r5
- cmp r0, 0x1
- bne _080A1614
- lsrs r0, r4, 19
- bl sub_80A16F8
-_080A1614:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80A15F0
-
- thumb_func_start sub_80A161C
-sub_80A161C: @ 80A161C
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xC0
- lsls r0, 10
- ands r0, r1
- cmp r0, 0
- bne _080A1630
- lsrs r0, r1, 18
- bl sub_80A1770
-_080A1630:
- pop {r0}
- bx r0
- thumb_func_end sub_80A161C
-
- thumb_func_start sub_80A1634
-sub_80A1634: @ 80A1634
- push {r4,lr}
- lsls r4, r0, 16
- movs r0, 0xE0
- lsls r0, 11
- ands r0, r4
- cmp r0, 0
- bne _080A1650
- lsrs r4, 19
- adds r0, r4, 0
- bl sub_80A17C0
- adds r0, r4, 0
- bl sub_80A17EC
-_080A1650:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80A1634
-
- thumb_func_start sub_80A1658
-sub_80A1658: @ 80A1658
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xC0
- lsls r0, 10
- ands r0, r1
- cmp r0, 0
- bne _080A166C
- lsrs r0, r1, 18
- bl sub_80A1818
-_080A166C:
- pop {r0}
- bx r0
- thumb_func_end sub_80A1658
-
- thumb_func_start sub_80A1670
-sub_80A1670: @ 80A1670
- push {lr}
- lsls r1, r0, 16
- movs r0, 0xC0
- lsls r0, 10
- ands r0, r1
- cmp r0, 0
- bne _080A1684
- lsrs r0, r1, 18
- bl sub_80A1884
-_080A1684:
- pop {r0}
- bx r0
- thumb_func_end sub_80A1670
-
- thumb_func_start sub_80A1688
-sub_80A1688: @ 80A1688
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, =gUnknown_08516E3C
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x06003e00
- movs r2, 0x80
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1688
-
- thumb_func_start sub_80A16B0
-sub_80A16B0: @ 80A16B0
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- ldr r0, =gUnknown_08517A44
- lsrs r4, 14
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, =0x06007e00
- movs r2, 0xC0
- lsls r2, 1
- bl sub_80A0980
- ldr r0, =gUnknown_08517A50
- adds r4, r0
- ldr r0, [r4]
- ldr r1, =0x06007a00
- movs r2, 0xA0
- lsls r2, 2
- bl sub_80A0980
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A16B0
-
- thumb_func_start sub_80A16F8
-sub_80A16F8: @ 80A16F8
- push {lr}
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- ldr r0, =gUnknown_08517BFC
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06007f00
- movs r2, 0x20
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A16F8
-
- thumb_func_start sub_80A1720
-sub_80A1720: @ 80A1720
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, =gUnknown_08517C0C
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x06007c00
- movs r2, 0x80
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1720
-
- thumb_func_start sub_80A1748
-sub_80A1748: @ 80A1748
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, =gUnknown_08518034
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x06005200
- movs r2, 0x80
- lsls r2, 2
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1748
-
- thumb_func_start sub_80A1770
-sub_80A1770: @ 80A1770
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- ldr r1, =gUnknown_0851829C
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x06007e00
- movs r2, 0x90
- lsls r2, 1
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1770
-
- thumb_func_start sub_80A1798
-sub_80A1798: @ 80A1798
- push {lr}
- lsls r0, 16
- movs r1, 0xE0
- lsls r1, 11
- ands r1, r0
- ldr r0, =gUnknown_085202C4
- lsrs r1, 14
- adds r1, r0
- ldr r0, [r1]
- ldr r1, =0x06005e00
- movs r2, 0xC0
- lsls r2, 4
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A1798
-
- thumb_func_start sub_80A17C0
-sub_80A17C0: @ 80A17C0
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- ldr r1, =gUnknown_08524864
- lsrs r0, 14
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x060052e0
- movs r2, 0x80
- lsls r2, 1
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A17C0
-
- thumb_func_start sub_80A17EC
-sub_80A17EC: @ 80A17EC
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- ldr r1, =gUnknown_08524870
- lsrs r0, 14
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x060050e0
- movs r2, 0x80
- lsls r2, 1
- bl sub_80A0980
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A17EC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/title_screen.s b/asm/title_screen.s
index 15037e80d..bc9401fb6 100644
--- a/asm/title_screen.s
+++ b/asm/title_screen.s
@@ -468,7 +468,7 @@ title_screen_vblank_callback: @ 80AA780
bl LoadOam
bl ProcessSpriteCopyRequests
bl TransferPlttBuffer
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
ldrh r1, [r0]
movs r0, 0x16
bl SetGpuReg
@@ -590,7 +590,7 @@ _080AA7E0:
b _080AAB1E
.pool
_080AA8C4:
- ldr r0, =gTitleScreenPokemonLogoTiles
+ ldr r0, =gTitleScreenPokemonLogoGfx
movs r1, 0xC0
lsls r1, 19
bl LZ77UnCompVram
@@ -602,13 +602,13 @@ _080AA8C4:
lsls r2, 1
movs r1, 0
bl LoadPalette
- ldr r0, =gTitleScreenRayquazaTiles
+ ldr r0, =gTitleScreenRayquazaGfx
ldr r1, =0x06008000
bl LZ77UnCompVram
- ldr r0, =gUnknown_0853F83C
+ ldr r0, =gTitleScreenRayquazaTilemap
ldr r1, =0x0600d000
bl LZ77UnCompVram
- ldr r0, =gTitleScreenCloudsTiles
+ ldr r0, =gTitleScreenCloudsGfx
ldr r1, =0x0600c000
bl LZ77UnCompVram
ldr r0, =gUnknown_08DDE458
@@ -627,7 +627,7 @@ _080AA8C4:
bl LoadCompressedObjectPic
ldr r0, =gUnknown_0854013C
bl LoadCompressedObjectPic
- ldr r0, =gUnknown_08DDE438
+ ldr r0, =gTitleScreenEmeraldVersionPal
movs r1, 0x80
lsls r1, 1
movs r2, 0x20
@@ -1156,14 +1156,14 @@ _080AAE30:
ldrh r0, [r3, 0x10]
adds r0, 0x1
strh r0, [r3, 0x10]
- ldr r2, =gUnknown_02022E1A
+ ldr r2, =gBattle_BG1_Y
movs r1, 0x10
ldrsh r0, [r3, r1]
lsrs r1, r0, 31
adds r0, r1
asrs r0, 1
strh r0, [r2]
- ldr r1, =gUnknown_02022E18
+ ldr r1, =gBattle_BG1_X
movs r0, 0
strh r0, [r1]
_080AAE72:
@@ -1228,7 +1228,7 @@ c2_clear_save_data_screen_1: @ 80AAEF0
lsls r0, 24
cmp r0, 0
bne _080AAF02
- ldr r0, =c2_clear_save_data_screen_2
+ ldr r0, =CB2_InitClearSaveDataScreen
bl SetMainCallback2
_080AAF02:
pop {r0}
diff --git a/asm/trade.s b/asm/trade.s
index 8712567c7..51b517a0b 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -18,7 +18,7 @@ sub_8077170: @ 8077170
lsrs r2, 16
movs r0, 0
adds r1, r4, 0
- bl link_0800A448
+ bl SendBlock
lsls r0, 24
lsrs r0, 24
b _080771A2
@@ -83,7 +83,7 @@ _080771F8:
thumb_func_start sub_8077200
sub_8077200: @ 8077200
push {lr}
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r0, 24
pop {r1}
@@ -103,7 +103,7 @@ sub_8077210: @ 8077210
b _08077230
.pool
_0807722C:
- bl sub_800A5B4
+ bl ResetBlockReceivedFlags
_08077230:
pop {r0}
bx r0
@@ -125,7 +125,7 @@ sub_8077234: @ 8077234
_08077250:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
_08077258:
pop {r4}
pop {r0}
@@ -397,7 +397,7 @@ _080774B2:
bl sub_807A19C
movs r0, 0
bl ShowBg
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r2, [r0]
cmp r2, 0
bne _0807754C
@@ -504,7 +504,7 @@ _080775D8:
b _08077B22
.pool
_080775E8:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
beq _080775F2
@@ -1832,7 +1832,7 @@ sub_80781C8: @ 80781C8
b _08078244
.pool
_08078220:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r4, [r0]
cmp r4, 0
bne _08078244
@@ -2198,7 +2198,7 @@ _08078552:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0xC8
bl sub_8078438
@@ -2237,7 +2237,7 @@ _080785B6:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0xC8
bl sub_8078438
@@ -2276,7 +2276,7 @@ _0807861A:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0xC8
bl sub_8078438
@@ -2318,7 +2318,7 @@ _0807868A:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0xD8
bl sub_8078438
@@ -2360,7 +2360,7 @@ _080786F0:
adds r1, r5, 0
eors r1, r2
lsls r1, 8
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
adds r1, r2
movs r2, 0xB
bl sub_8078438
@@ -2467,7 +2467,7 @@ sub_80787E0: @ 80787E0
ands r0, r2
cmp r0, 0
beq _08078864
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
ldrh r1, [r0]
ldr r0, =0x0000bbbb
cmp r1, r0
@@ -2521,7 +2521,7 @@ _08078864:
ands r0, r2
cmp r0, 0
beq _080788F6
- ldr r3, =gUnknown_020223C4
+ ldr r3, =gBlockRecvBuffer
movs r1, 0x80
lsls r1, 1
adds r0, r3, r1
@@ -2597,7 +2597,7 @@ sub_8078900: @ 8078900
ands r0, r5
cmp r0, 0
beq _080789E2
- ldr r2, =gUnknown_020223C4
+ ldr r2, =gBlockRecvBuffer
ldrh r1, [r2]
ldr r0, =0x0000ddee
cmp r1, r0
@@ -4052,7 +4052,7 @@ sub_80794CC: @ 80794CC
b _0807953A
.pool
_08079518:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0807953A
@@ -5954,7 +5954,7 @@ _0807A488:
asrs r0, 16
lsls r1, 16
asrs r1, 16
- bl sub_8075060
+ bl GetHPBarLevel
ldr r1, [r7]
adds r1, 0x5D
adds r1, r6
@@ -5997,7 +5997,7 @@ _0807A4E8:
asrs r0, 16
lsls r1, 16
asrs r1, 16
- bl sub_8075060
+ bl GetHPBarLevel
ldr r1, [r7]
adds r1, 0x63
adds r1, r6
@@ -6279,7 +6279,7 @@ _0807A718:
thumb_func_start sub_807A728
sub_807A728: @ 807A728
push {r4-r7,lr}
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0807A7B4
@@ -6603,7 +6603,7 @@ _0807A97C:
adds r4, 0x1C
adds r5, 0x1
_0807A980:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6632,7 +6632,7 @@ _0807A9B0:
adds r4, 0x1C
adds r5, 0x1
_0807A9B4:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -7054,7 +7054,7 @@ _0807ACC4:
thumb_func_start sub_807ACDC
sub_807ACDC: @ 807ACDC
push {lr}
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0807ACF0
@@ -7128,7 +7128,7 @@ _0807AD58:
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x8]
adds r2, r5, 0
@@ -7141,7 +7141,7 @@ _0807AD94:
lsls r0, r5, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r2, [r1]
lsls r4, r6, 1
adds r1, r4, 0x1
@@ -7254,7 +7254,7 @@ _0807AE78:
.4byte _0807B0D4
.4byte _0807B0F0
_0807AEAC:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _0807AEC0
@@ -7270,7 +7270,7 @@ _0807AEC0:
adds r0, r5, 0
bl AllocZeroed
str r0, [r4]
- bl init_uns_table_pokemon_copy
+ bl AllocateMonSpritesGfx
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
@@ -7321,7 +7321,7 @@ _0807AEC0:
b _0807B116
.pool
_0807AF58:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r5, [r0]
cmp r5, 0
bne _0807AF90
@@ -7401,7 +7401,7 @@ _0807B000:
b _0807B116
_0807B006:
bl sub_807AC64
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
beq _0807B014
@@ -7729,7 +7729,7 @@ _0807B2D0:
adds r0, r5, 0
bl AllocZeroed
str r0, [r4]
- bl init_uns_table_pokemon_copy
+ bl AllocateMonSpritesGfx
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
@@ -7989,7 +7989,7 @@ _0807B566:
_0807B57C:
mov r0, r9
bl sub_807B464
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _0807B58E
@@ -8029,7 +8029,7 @@ _0807B5D0:
ldr r1, [r4]
adds r1, 0x74
movs r2, 0x14
- bl link_0800A448
+ bl SendBlock
ldr r1, [r4]
adds r1, 0x93
ldrb r0, [r1]
@@ -8939,7 +8939,7 @@ _0807C04C:
adds r1, r0
lsls r1, 2
adds r1, r3
- ldr r2, =gUnknown_08300D38
+ ldr r2, =gMonFrontPicCoords
adds r0, r4, 0
adds r0, 0xF0
ldrh r0, [r0]
@@ -10369,7 +10369,7 @@ _0807CCEE:
lsls r0, r2, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x10]
ldr r3, [r3, 0x6C]
@@ -10395,7 +10395,7 @@ _0807CD1C:
adds r1, r0
lsls r1, 2
adds r1, r4
- ldr r3, =gUnknown_08300D38
+ ldr r3, =gMonFrontPicCoords
adds r2, 0xF2
ldrh r0, [r2]
lsls r0, 2
@@ -10663,7 +10663,7 @@ _0807CF5C:
movs r0, 0
bl GetBgTilemapBuffer
bl Free
- bl sub_805F094
+ bl FreeMonSpritesGfx
ldr r0, [r7]
bl Free
str r4, [r7]
@@ -11001,7 +11001,7 @@ _0807D428:
adds r1, r0
lsls r1, 2
adds r1, r3
- ldr r2, =gUnknown_08300D38
+ ldr r2, =gMonFrontPicCoords
adds r0, r4, 0
adds r0, 0xF0
ldrh r0, [r0]
@@ -12474,7 +12474,7 @@ _0807E13A:
lsls r0, r2, 3
ldr r1, =gMonFrontPicTable
adds r0, r1
- ldr r1, =gBattleSpritesGfx
+ ldr r1, =gMonSpritesGfxPtr
ldr r1, [r1]
ldr r1, [r1, 0x10]
ldr r3, [r3, 0x6C]
@@ -12500,7 +12500,7 @@ _0807E168:
adds r1, r0
lsls r1, 2
adds r1, r4
- ldr r3, =gUnknown_08300D38
+ ldr r3, =gMonFrontPicCoords
adds r2, 0xF2
ldrh r0, [r2]
lsls r0, 2
@@ -12768,7 +12768,7 @@ _0807E3A8:
movs r0, 0
bl GetBgTilemapBuffer
bl Free
- bl sub_805F094
+ bl FreeMonSpritesGfx
ldr r0, [r7]
bl Free
str r4, [r7]
@@ -12877,7 +12877,7 @@ _0807E4C2:
sub_807E4DC: @ 807E4DC
push {r4-r6,lr}
bl sub_807ACDC
- bl sub_800A550
+ bl GetBlockReceivedStatus
lsls r0, 24
lsrs r5, r0, 24
movs r6, 0x1
@@ -12885,7 +12885,7 @@ sub_807E4DC: @ 807E4DC
ands r0, r6
cmp r0, 0
beq _0807E51A
- ldr r4, =gUnknown_020223C4
+ ldr r4, =gBlockRecvBuffer
ldrh r1, [r4]
ldr r0, =0x0000dcba
cmp r1, r0
@@ -12903,13 +12903,13 @@ _0807E504:
strb r6, [r0]
_0807E514:
movs r0, 0
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
_0807E51A:
movs r0, 0x2
ands r0, r5
cmp r0, 0
beq _0807E542
- ldr r0, =gUnknown_020223C4
+ ldr r0, =gBlockRecvBuffer
movs r1, 0x80
lsls r1, 1
adds r0, r1
@@ -12924,7 +12924,7 @@ _0807E51A:
strb r1, [r0]
_0807E53C:
movs r0, 0x1
- bl sub_800A5EC
+ bl ResetBlockReceivedFlag
_0807E542:
pop {r4-r6}
pop {r0}
@@ -13600,7 +13600,7 @@ _0807EAEC:
ldr r1, [r4]
adds r1, 0x74
movs r2, 0x14
- bl link_0800A448
+ bl SendBlock
ldr r0, [r4]
adds r0, 0x72
movs r1, 0x2
@@ -14090,7 +14090,7 @@ _0807EFF0:
b _0807F03A
.pool
_0807F028:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r1, [r0]
cmp r1, 0
bne _0807F03A
@@ -14136,7 +14136,7 @@ c2_080543C4: @ 807F068
movs r0, 0
bl GetBgTilemapBuffer
bl Free
- bl sub_805F094
+ bl FreeMonSpritesGfx
ldr r4, =gUnknown_020322A0
ldr r0, [r4]
bl Free
diff --git a/asm/trader.s b/asm/trader.s
index 8c21648fc..8e0b17905 100644
--- a/asm/trader.s
+++ b/asm/trader.s
@@ -351,7 +351,7 @@ sub_8133CF4: @ 8133CF4
ldr r5, =gScriptResult
_08133CFA:
adds r0, r4, 0
- bl sub_8161AD0
+ bl CountDecorationCategoryN
lsls r0, 24
cmp r0, 0
beq _08133D10
@@ -395,7 +395,7 @@ sub_8133D2C: @ 8133D2C
cmp r1, r0
beq _08133D72
adds r0, r1, 0
- bl sub_81618D0
+ bl GetFirstEmptyDecorSlot
lsls r0, 24
asrs r0, 24
movs r1, 0x1
@@ -433,15 +433,15 @@ sub_8133DA0: @ 8133DA0
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- bl sub_81279C4
+ bl IsSelectedDecorInThePC
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _08133DFC
ldr r5, =gSpecialVar_0x8006
- ldr r0, =gUnknown_0203A172
+ ldr r0, =gCurDecorationIndex
ldrb r1, [r0]
- ldr r0, =gUnknown_0203A14C
+ ldr r0, =gCurDecorInventoryItems
ldr r0, [r0]
adds r0, r1
ldrb r0, [r0]
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index 7552d7ace..bee1f4f7f 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -191,7 +191,7 @@ _080C2836:
ldrb r0, [r0]
cmp r0, 0x1
bne _080C2852
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _080C2852
@@ -261,7 +261,7 @@ _080C28D8:
b _080C2ACA
.pool
_080C28E4:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r5, [r0]
cmp r5, 0
bne _080C290A
@@ -301,7 +301,7 @@ _080C293C:
bne _080C2946
b _080C2ACA
_080C2946:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080C2960
@@ -346,7 +346,7 @@ _080C299C:
ands r0, r1
cmp r0, 0
beq _080C29F4
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080C29DC
@@ -358,7 +358,7 @@ _080C299C:
cmp r0, 0x1
beq _080C2A14
_080C29C0:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080C29DC
@@ -382,7 +382,7 @@ _080C29F4:
ands r0, r1
cmp r0, 0
beq _080C2ACA
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080C2A20
@@ -430,7 +430,7 @@ _080C2A2C:
b _080C2ACA
.pool
_080C2A68:
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
bne _080C2ACA
@@ -1403,7 +1403,7 @@ sub_80C3278: @ 80C3278
movs r0, 0x40
movs r1, 0xF0
bl SetGpuReg
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080C32E0
@@ -4267,7 +4267,7 @@ _080C4BF6:
ldrb r0, [r1, 0x4]
adds r0, 0x1
strb r0, [r1, 0x4]
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0
beq _080C4B20
@@ -4745,7 +4745,7 @@ sub_80C4FF0: @ 80C4FF0
bl InUnionRoom
cmp r0, 0x1
bne _080C5060
- ldr r0, =gUnknown_03003124
+ ldr r0, =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
cmp r0, 0x1
bne _080C5060
diff --git a/asm/trainer_rematch.s b/asm/trainer_rematch.s
index 0c30cfea9..b814934a3 100755
--- a/asm/trainer_rematch.s
+++ b/asm/trainer_rematch.s
@@ -185,7 +185,7 @@ _081DA6D4:
adds r0, r1
adds r0, r6
ldrh r0, [r0]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
bne _081DA6F0
diff --git a/asm/trainer_see.s b/asm/trainer_see.s
index d57ad1815..59dd9f74b 100644
--- a/asm/trainer_see.s
+++ b/asm/trainer_see.s
@@ -267,7 +267,7 @@ CheckIfTrainerCanApproachPlayer: @ 80B3DF0
mov r8, r4
cmp r0, 0x1
bne _080B3E50
- ldr r1, =gUnknown_0855072C
+ ldr r1, =gIsTrainerInRange
ldrb r0, [r7, 0x18]
lsls r0, 28
lsrs r0, 26
@@ -300,7 +300,7 @@ _080B3E4C:
_080B3E50:
movs r5, 0
_080B3E52:
- ldr r0, =gUnknown_0855072C
+ ldr r0, =gIsTrainerInRange
lsls r4, r5, 2
adds r4, r0
ldrb r1, [r7, 0x1D]
@@ -702,7 +702,7 @@ c3_8081EDC: @ 80B4118
b _080B416C
.pool
_080B4150:
- ldr r7, =gUnknown_0855073C
+ ldr r7, =gTrainerSeeFuncList
_080B4152:
movs r1, 0x8
ldrsh r0, [r4, r1]
@@ -734,7 +734,7 @@ sub_80B417C: @ 80B417C
push {r4,r5,lr}
adds r5, r1, 0
adds r4, r2, 0
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
adds r2, r1, 0x4
adds r3, r1, 0
adds r3, 0x8
@@ -1050,7 +1050,7 @@ sub_80B43E0: @ 80B43E0
lsls r0, 24
cmp r0, 0
beq _080B4426
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r1, 0x10
ldrsh r0, [r4, r1]
str r0, [r2]
@@ -1186,7 +1186,7 @@ sub_80B44C8: @ 80B44C8
adds r0, 0x1
strh r0, [r4, 0x16]
_080B44FA:
- ldr r1, =gUnknown_0855076C
+ ldr r1, =gTrainerSeeFuncList2
movs r2, 0x8
ldrsh r0, [r4, r2]
lsls r0, 2
@@ -1303,7 +1303,7 @@ sub_80B45D0: @ 80B45D0
ldr r1, =gScriptResult
movs r0, 0x1
strh r0, [r1]
- bl sub_809757C
+ bl UnfreezeMapObjects
ldr r0, =gUnknown_03006090
ldrb r0, [r0, 0xC]
bl sub_80974D0
@@ -1322,4 +1322,324 @@ _080B4616:
.pool
thumb_func_end sub_80B45D0
+ thumb_func_start oei_exclamation_mark
+oei_exclamation_mark: @ 80B4620
+ push {lr}
+ ldr r0, =gSpriteTemplate_85507B4
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x53
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080B4648
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ movs r1, 0
+ movs r2, 0
+ bl sub_80B46D8
+_080B4648:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end oei_exclamation_mark
+
+ thumb_func_start sub_80B4658
+sub_80B4658: @ 80B4658
+ push {lr}
+ ldr r0, =gSpriteTemplate_85507B4
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080B4680
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ movs r1, 0x21
+ movs r2, 0x1
+ bl sub_80B46D8
+_080B4680:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B4658
+
+ thumb_func_start sub_80B4690
+sub_80B4690: @ 80B4690
+ push {r4,lr}
+ ldr r0, =gSpriteTemplate_85507CC
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080B46C6
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0x2E
+ movs r2, 0
+ bl sub_80B46D8
+ ldrb r1, [r4, 0x5]
+ movs r0, 0xF
+ ands r0, r1
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+_080B46C6:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B4690
+
+ thumb_func_start sub_80B46D8
+@ void sub_80B46D8(struct obj *object, s16 a2, u8 a3)
+sub_80B46D8: @ 80B46D8
+ push {r4,lr}
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r4, [r0, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ ands r3, r4
+ movs r4, 0x4
+ orrs r3, r4
+ strb r3, [r0, 0x5]
+ movs r3, 0x3E
+ adds r3, r0
+ mov r12, r3
+ ldrb r3, [r3]
+ movs r4, 0x2
+ orrs r3, r4
+ mov r4, r12
+ strb r3, [r4]
+ ldr r4, =gFieldEffectArguments
+ ldr r3, [r4]
+ strh r3, [r0, 0x2E]
+ ldr r3, [r4, 0x4]
+ strh r3, [r0, 0x30]
+ ldr r3, [r4, 0x8]
+ strh r3, [r0, 0x32]
+ ldr r3, =0x0000fffb
+ strh r3, [r0, 0x34]
+ strh r1, [r0, 0x3C]
+ adds r1, r2, 0
+ bl StartSpriteAnim
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80B46D8
+
+ thumb_func_start objc_exclamation_mark_probably
+objc_exclamation_mark_probably: @ 80B4724
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B4756
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080B4764
+_080B4756:
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldEffectStop
+ b _080B47B2
+_080B4764:
+ ldr r2, =gMapObjects
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x4]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ ldrh r3, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r2, r3, r0
+ strh r2, [r4, 0x36]
+ ldrh r0, [r1, 0x20]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x22]
+ subs r0, 0x10
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x24]
+ strh r0, [r4, 0x24]
+ ldrh r0, [r1, 0x26]
+ adds r0, r2
+ strh r0, [r4, 0x26]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0
+ beq _080B47B0
+ adds r0, r3, 0x1
+ strh r0, [r4, 0x34]
+ b _080B47B2
+ .pool
+_080B47B0:
+ strh r2, [r4, 0x34]
+_080B47B2:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end objc_exclamation_mark_probably
+
+ thumb_func_start sub_80B47BC
+sub_80B47BC: @ 80B47BC
+ push {lr}
+ ldr r0, =gUnknown_02038BFC
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080B47D4
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0, 0xC]
+ b _080B47D8
+ .pool
+_080B47D4:
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0]
+_080B47D8:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B47BC
+
+ thumb_func_start sub_80B47E0
+sub_80B47E0: @ 80B47E0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _080B47EE
+ movs r0, 0
+ b _080B4800
+_080B47EE:
+ cmp r0, 0
+ beq _080B47FC
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0, 0xC]
+ b _080B4800
+ .pool
+_080B47FC:
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0]
+_080B4800:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B47E0
+
+ thumb_func_start sub_80B4808
+sub_80B4808: @ 80B4808
+ push {lr}
+ ldr r0, =gUnknown_030060AC
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _080B4870
+ ldr r2, =gUnknown_03006090
+ ldr r0, =gUnknown_03006080
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gMapObjects
+ adds r0, r1
+ ldrb r0, [r0, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetFaceDirectionAnimId
+ ldr r3, =gUnknown_03006084
+ strb r0, [r3]
+ movs r0, 0xFE
+ strb r0, [r3, 0x1]
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ movs r0, 0xFF
+ bl ScriptMovement_StartObjectMovementScript
+ b _080B489E
+ .pool
+_080B4870:
+ ldr r0, =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gMapObjects
+ adds r0, r1
+ ldrb r0, [r0, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ ldr r3, =gUnknown_03006084
+ strb r0, [r3]
+ movs r0, 0xFE
+ strb r0, [r3, 0x1]
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ movs r0, 0xFF
+ bl ScriptMovement_StartObjectMovementScript
+_080B489E:
+ movs r0, 0xFF
+ bl sub_809BE48
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80B4808
+
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/truck_scene.s b/asm/truck_scene.s
deleted file mode 100644
index bc3388cb6..000000000
--- a/asm/truck_scene.s
+++ /dev/null
@@ -1,589 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80FB0B0
-sub_80FB0B0: @ 80FB0B0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x78
- bl __modsi3
- cmp r0, 0
- bne _080FB0C4
- movs r0, 0x1
- negs r0, r0
- b _080FB0D6
-_080FB0C4:
- adds r0, r4, 0
- movs r1, 0xA
- bl __modsi3
- cmp r0, 0x4
- ble _080FB0D4
- movs r0, 0
- b _080FB0D6
-_080FB0D4:
- movs r0, 0x1
-_080FB0D6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80FB0B0
-
- thumb_func_start sub_80FB0DC
-sub_80FB0DC: @ 80FB0DC
- push {lr}
- adds r0, 0x78
- movs r1, 0xB4
- bl __modsi3
- cmp r0, 0
- beq _080FB0EE
- movs r0, 0
- b _080FB0F2
-_080FB0EE:
- movs r0, 0x1
- negs r0, r0
-_080FB0F2:
- pop {r1}
- bx r1
- thumb_func_end sub_80FB0DC
-
- thumb_func_start sub_80FB0F8
-sub_80FB0F8: @ 80FB0F8
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTasks + 0x8
- adds r5, r1, r0
- movs r1, 0
- ldrsh r0, [r5, r1]
- adds r0, 0x1E
- bl sub_80FB0DC
- ldr r4, =gSaveBlock1Ptr
- ldr r2, [r4]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- lsls r0, 18
- movs r3, 0xC0
- lsls r3, 10
- orrs r0, r3
- asrs r0, 16
- str r0, [sp]
- movs r0, 0x1
- movs r3, 0x3
- bl sub_808E82C
- movs r3, 0
- ldrsh r0, [r5, r3]
- bl sub_80FB0DC
- ldr r2, [r4]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- lsls r0, 17
- ldr r3, =0xfffd0000
- adds r0, r3
- asrs r0, 16
- str r0, [sp]
- movs r0, 0x2
- movs r3, 0
- bl sub_808E82C
- movs r1, 0
- ldrsh r0, [r5, r1]
- bl sub_80FB0DC
- ldr r2, [r4]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- movs r4, 0
- movs r3, 0x3
- negs r3, r3
- lsls r0, 18
- asrs r0, 16
- str r0, [sp]
- movs r0, 0x3
- bl sub_808E82C
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- lsls r0, 16
- ldr r1, =0x75300000
- cmp r0, r1
- bne _080FB180
- strh r4, [r5]
-_080FB180:
- movs r3, 0
- ldrsh r0, [r5, r3]
- bl sub_80FB0B0
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- movs r0, 0
- bl SetCameraPanning
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FB0F8
-
- thumb_func_start sub_80FB1AC
-sub_80FB1AC: @ 80FB1AC
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r3, r0, 3
- ldr r4, =gTasks + 0x8
- adds r7, r3, r4
- ldrh r1, [r7]
- adds r1, 0x1
- strh r1, [r7]
- ldrh r0, [r7, 0x4]
- adds r0, 0x1
- strh r0, [r7, 0x4]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x5
- ble _080FB1DC
- movs r0, 0
- strh r0, [r7]
- ldrh r0, [r7, 0x2]
- adds r0, 0x1
- strh r0, [r7, 0x2]
-_080FB1DC:
- ldrh r0, [r7, 0x2]
- cmp r0, 0x13
- bne _080FB1F0
- adds r0, r2, 0
- bl DestroyTask
- b _080FB2A8
- .pool
-_080FB1F0:
- ldr r2, =gUnknown_0858E898
- movs r1, 0x2
- ldrsh r0, [r7, r1]
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x2
- bne _080FB20C
- adds r0, r4, 0
- subs r0, 0x8
- adds r0, r3, r0
- ldr r1, =sub_80FB2C0
- str r1, [r0]
-_080FB20C:
- movs r4, 0x2
- ldrsh r0, [r7, r4]
- adds r0, r2
- movs r5, 0
- ldrsb r5, [r0, r5]
- lsls r5, 16
- lsrs r5, 16
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- bl sub_80FB0B0
- adds r1, r0, 0
- lsls r5, 16
- asrs r5, 16
- lsls r1, 16
- asrs r1, 16
- adds r0, r5, 0
- bl SetCameraPanning
- movs r4, 0x4
- ldrsh r0, [r7, r4]
- adds r0, 0x1E
- bl sub_80FB0DC
- ldr r6, =gSaveBlock1Ptr
- ldr r2, [r6]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- movs r3, 0x3
- subs r3, r5
- lsls r3, 16
- asrs r3, 16
- lsls r0, 18
- movs r4, 0xC0
- lsls r4, 10
- orrs r0, r4
- asrs r0, 16
- str r0, [sp]
- movs r0, 0x1
- bl sub_808E82C
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- bl sub_80FB0DC
- ldr r2, [r6]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- negs r3, r5
- lsls r3, 16
- asrs r3, 16
- lsls r0, 17
- ldr r4, =0xfffd0000
- adds r0, r4
- asrs r0, 16
- str r0, [sp]
- movs r0, 0x2
- bl sub_808E82C
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- bl sub_80FB0DC
- ldr r2, [r6]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- movs r4, 0x3
- negs r4, r4
- adds r3, r4, 0
- subs r3, r5
- lsls r3, 16
- asrs r3, 16
- lsls r0, 18
- asrs r0, 16
- str r0, [sp]
- movs r0, 0x3
- bl sub_808E82C
-_080FB2A8:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FB1AC
-
- thumb_func_start sub_80FB2C0
-sub_80FB2C0: @ 80FB2C0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r2, r0, r1
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080FB2F0
- movs r0, 0
- strh r0, [r2]
- ldrh r0, [r2, 0x2]
- adds r0, 0x1
- strh r0, [r2, 0x2]
-_080FB2F0:
- ldrh r0, [r2, 0x2]
- cmp r0, 0x13
- bne _080FB304
- adds r0, r3, 0
- bl DestroyTask
- b _080FB358
- .pool
-_080FB304:
- ldr r1, =gUnknown_0858E898
- movs r3, 0x2
- ldrsh r0, [r2, r3]
- adds r0, r1
- movs r1, 0
- mov r8, r1
- movs r6, 0
- ldrsb r6, [r0, r6]
- adds r0, r6, 0
- bl SetCameraPanning
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r3, 0x3
- subs r3, r6
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x1
- bl sub_808E82C
- ldr r0, [r5]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- negs r3, r6
- mov r4, r8
- subs r4, 0x3
- str r4, [sp]
- movs r0, 0x2
- bl sub_808E82C
- ldr r0, [r5]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- subs r4, r6
- mov r3, r8
- str r3, [sp]
- movs r0, 0x3
- adds r3, r4, 0
- bl sub_808E82C
-_080FB358:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FB2C0
-
- thumb_func_start sub_80FB36C
-sub_80FB36C: @ 80FB36C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _080FB386
- b _080FB4D8
-_080FB386:
- lsls r0, 2
- ldr r1, =_080FB398
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080FB398:
- .4byte _080FB3B0
- .4byte _080FB3E8
- .4byte _080FB404
- .4byte _080FB450
- .4byte _080FB474
- .4byte _080FB492
-_080FB3B0:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5A
- beq _080FB3C0
- b _080FB4D8
-_080FB3C0:
- movs r0, 0
- bl SetCameraPanningCallback
- movs r0, 0
- strh r0, [r4, 0x2]
- ldr r0, =sub_80FB0F8
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x4]
- movs r0, 0x1
- strh r0, [r4]
- movs r0, 0x31
- bl PlaySE
- b _080FB4D8
- .pool
-_080FB3E8:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x96
- bne _080FB4D8
- bl pal_fill_black
- movs r0, 0
- strh r0, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r4]
- b _080FB4D8
-_080FB404:
- ldrh r0, [r4, 0x2]
- adds r3, r0, 0x1
- strh r3, [r4, 0x2]
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080FB4D8
- lsls r1, r3, 16
- movs r0, 0x96
- lsls r0, 17
- cmp r1, r0
- ble _080FB4D8
- strh r2, [r4, 0x2]
- ldrb r0, [r4, 0x4]
- bl DestroyTask
- ldr r0, =sub_80FB1AC
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x6]
- movs r0, 0x3
- strh r0, [r4]
- movs r0, 0x32
- bl PlaySE
- b _080FB4D8
- .pool
-_080FB450:
- ldr r2, =gTasks
- movs r0, 0x6
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r5, [r0, 0x4]
- cmp r5, 0
- bne _080FB4D8
- bl InstallCameraPanAheadCallback
- strh r5, [r4, 0x2]
- movs r0, 0x4
- strh r0, [r4]
- b _080FB4D8
- .pool
-_080FB474:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5A
- bne _080FB4D8
- movs r0, 0x33
- bl PlaySE
- movs r0, 0
- strh r0, [r4, 0x2]
- movs r0, 0x5
- strh r0, [r4]
- b _080FB4D8
-_080FB492:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- bne _080FB4D8
- movs r2, 0x82
- lsls r2, 2
- movs r0, 0xB
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- movs r2, 0x84
- lsls r2, 2
- movs r0, 0xB
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- movs r2, 0x86
- lsls r2, 2
- movs r0, 0xB
- movs r1, 0xA
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- movs r0, 0x34
- bl PlaySE
- adds r0, r5, 0
- bl DestroyTask
- bl ScriptContext2_Disable
-_080FB4D8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80FB36C
-
- thumb_func_start sub_80FB4E0
-sub_80FB4E0: @ 80FB4E0
- push {lr}
- sub sp, 0x4
- ldr r2, =0x0000020d
- movs r0, 0xB
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- ldr r2, =0x00000215
- movs r0, 0xB
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- ldr r2, =0x0000021d
- movs r0, 0xB
- movs r1, 0xA
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- bl ScriptContext2_Enable
- movs r0, 0
- str r0, [sp]
- ldr r1, =gPlttBufferFaded
- ldr r2, =0x01000100
- mov r0, sp
- bl CpuFastSet
- ldr r0, =sub_80FB36C
- movs r1, 0xA
- bl CreateTask
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FB4E0
-
- thumb_func_start sub_80FB540
-sub_80FB540: @ 80FB540
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, =sub_80FB36C
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _080FB58A
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x3
- str r0, [sp]
- movs r0, 0x1
- movs r3, 0x3
- bl sub_808E82C
- ldr r0, [r4]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r5, 0x3
- negs r5, r5
- str r5, [sp]
- movs r0, 0x2
- movs r3, 0
- bl sub_808E82C
- ldr r0, [r4]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- str r6, [sp]
- movs r0, 0x3
- adds r3, r5, 0
- bl sub_808E82C
-_080FB58A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80FB540
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/tv.s b/asm/tv.s
deleted file mode 100644
index d61392fa1..000000000
--- a/asm/tv.s
+++ /dev/null
@@ -1,16938 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ClearTVShowData
-ClearTVShowData: @ 80EBEE0
- push {r4-r7,lr}
- movs r3, 0
- ldr r6, =gSaveBlock1Ptr
- movs r5, 0
- ldr r7, =0x000027ce
-_080EBEEA:
- ldr r0, [r6]
- lsls r1, r3, 3
- adds r1, r3
- lsls r1, 2
- adds r0, r1
- ldr r2, =0x000027cc
- adds r0, r2
- strb r5, [r0]
- ldr r0, [r6]
- adds r0, r1
- adds r2, 0x1
- adds r0, r2
- strb r5, [r0]
- movs r2, 0
- adds r4, r3, 0x1
- adds r3, r1, 0
-_080EBF0A:
- ldr r0, [r6]
- adds r1, r2, r3
- adds r0, r7
- adds r0, r1
- strb r5, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x21
- bls _080EBF0A
- lsls r0, r4, 24
- lsrs r3, r0, 24
- cmp r3, 0x18
- bls _080EBEEA
- bl sub_80EEE5C
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ClearTVShowData
-
- thumb_func_start special_0x44
-special_0x44: @ 80EBF3C
- push {r4-r7,lr}
- movs r4, 0x5
- ldr r1, =gSaveBlock1Ptr
- ldr r0, [r1]
- movs r2, 0xA2
- lsls r2, 6
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EBF70
- adds r3, r1, 0
- subs r2, 0xB4
-_080EBF54:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x17
- bhi _080EBF70
- ldr r0, [r3]
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- adds r0, r1
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EBF54
-_080EBF70:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl __modsi3
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- ldr r6, =gSaveBlock1Ptr
-_080EBF86:
- ldr r1, [r6]
- lsls r0, r5, 3
- adds r0, r5
- lsls r4, r0, 2
- adds r1, r4
- ldr r0, =0x000027cc
- adds r1, r0
- ldrb r0, [r1]
- bl sub_80EFFE0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _080EBFBC
- ldr r0, [r6]
- adds r0, r4
- ldr r1, =0x000027cd
- adds r0, r1
- ldrb r0, [r0]
- b _080EBFCC
- .pool
-_080EBFBC:
- ldr r2, =0x000027cc
- adds r0, r4, r2
- ldr r1, [r6]
- adds r1, r0
- ldrh r0, [r1, 0x16]
- cmp r0, 0
- bne _080EBFD8
- ldrb r0, [r1, 0x1]
-_080EBFCC:
- cmp r0, 0x1
- bne _080EBFD8
- adds r0, r5, 0
- b _080EBFEC
- .pool
-_080EBFD8:
- cmp r5, 0
- bne _080EBFE0
- movs r5, 0x17
- b _080EBFE6
-_080EBFE0:
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EBFE6:
- cmp r5, r7
- bne _080EBF86
- movs r0, 0xFF
-_080EBFEC:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end special_0x44
-
- thumb_func_start sub_80EBFF4
-sub_80EBFF4: @ 80EBFF4
- push {lr}
- bl special_0x44
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- bne _080EC006
- movs r0, 0xFF
- b _080EC03E
-_080EC006:
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r3, =0x00002b90
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, 0
- beq _080EC03C
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2, r0
- ldr r2, =0x000027cc
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _080EC03C
- bl sub_80EC18C
- lsls r0, 24
- lsrs r0, 24
- b _080EC03E
- .pool
-_080EC03C:
- adds r0, r1, 0
-_080EC03E:
- pop {r1}
- bx r1
- thumb_func_end sub_80EBFF4
-
- thumb_func_start UpdateTVScreensOnMap
-@ void UpdateTVScreensOnMap(s32 mapWidth, s32 mapHeight)
-UpdateTVScreensOnMap: @ 80EC044
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, =0x00000891
- bl FlagSet
- bl CheckForBigMovieOrEmergencyNewsOnTV
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EC06A
- cmp r0, 0x2
- beq _080EC0BE
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r0, [r0, 0x4]
- cmp r0, 0xD
- bne _080EC080
-_080EC06A:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x3
- bl SetTVMetatilesOnMap
- b _080EC0BE
- .pool
-_080EC080:
- ldr r0, =0x00000892
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080EC0BE
- bl sub_80EBFF4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080EC0AE
- bl sub_80EEF20
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080EC0AE
- bl IsTVShowInSearchOfTrainersAiring
- lsls r0, 24
- cmp r0, 0
- beq _080EC0BE
-_080EC0AE:
- ldr r0, =0x00000891
- bl FlagReset
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x3
- bl SetTVMetatilesOnMap
-_080EC0BE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end UpdateTVScreensOnMap
-
- thumb_func_start SetTVMetatilesOnMap
-@ void SetTVMetatilesOnMap(s32 mapWidth, s32 mapHeight, u16 metatileId)
-SetTVMetatilesOnMap: @ 80EC0CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- movs r5, 0
- cmp r5, r10
- bge _080EC120
- movs r1, 0xC0
- lsls r1, 4
- adds r0, r1, 0
- mov r8, r2
- mov r1, r8
- orrs r1, r0
- mov r8, r1
-_080EC0F2:
- movs r4, 0
- adds r7, r5, 0x1
- cmp r4, r9
- bge _080EC11A
- mov r0, r8
- lsls r6, r0, 16
-_080EC0FE:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetMetatileBehaviorAt
- cmp r0, 0x86
- bne _080EC114
- adds r0, r4, 0
- adds r1, r5, 0
- lsrs r2, r6, 16
- bl MapGridSetMetatileIdAt
-_080EC114:
- adds r4, 0x1
- cmp r4, r9
- blt _080EC0FE
-_080EC11A:
- adds r5, r7, 0
- cmp r5, r10
- blt _080EC0F2
-_080EC120:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end SetTVMetatilesOnMap
-
- thumb_func_start TurnOffTVScreen
-TurnOffTVScreen: @ 80EC130
- push {lr}
- ldr r1, =gUnknown_03005DC0
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- movs r2, 0x2
- bl SetTVMetatilesOnMap
- bl DrawWholeMapView
- pop {r0}
- bx r0
- .pool
- thumb_func_end TurnOffTVScreen
-
- thumb_func_start TurnOnTVScreen
-TurnOnTVScreen: @ 80EC14C
- push {lr}
- ldr r1, =gUnknown_03005DC0
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- movs r2, 0x3
- bl SetTVMetatilesOnMap
- bl DrawWholeMapView
- pop {r0}
- bx r0
- .pool
- thumb_func_end TurnOnTVScreen
-
- thumb_func_start special_0x45
-special_0x45: @ 80EC168
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =gSpecialVar_0x8004
- ldrh r2, [r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0
- ldr r0, =0x000027cc
- adds r1, r0
- ldrb r0, [r1]
- bx lr
- .pool
- thumb_func_end special_0x45
-
- thumb_func_start sub_80EC18C
-sub_80EC18C: @ 80EC18C
- push {r4,lr}
- movs r2, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
-_080EC194:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r3, r0
- ldr r4, =0x000027cc
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EC1C0
- cmp r0, 0x29
- beq _080EC1C0
- adds r4, 0x1
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080EC1C0
- adds r0, r2, 0
- b _080EC1CC
- .pool
-_080EC1C0:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x17
- bls _080EC194
- movs r0, 0xFF
-_080EC1CC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EC18C
-
- thumb_func_start special_0x4a
-special_0x4a: @ 80EC1D4
- push {lr}
- ldr r3, =gSaveBlock1Ptr
- ldr r2, =gSpecialVar_0x8004
- ldrh r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r3, [r3]
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _080EC214
- ldr r1, =0x00002b90
- adds r0, r3, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _080EC214
- bl sub_80EC18C
- lsls r0, 24
- lsrs r0, 24
- b _080EC216
- .pool
-_080EC214:
- ldrb r0, [r2]
-_080EC216:
- pop {r1}
- bx r1
- thumb_func_end special_0x4a
-
- thumb_func_start ResetGabbyAndTy
-ResetGabbyAndTy: @ 80EC21C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- ldr r3, =gSaveBlock1Ptr
- ldr r2, [r3]
- ldr r1, =0x00002ba4
- adds r0, r2, r1
- movs r4, 0
- mov r10, r4
- movs r1, 0
- strh r1, [r0]
- ldr r4, =0x00002ba6
- adds r0, r2, r4
- strh r1, [r0]
- adds r4, 0x2
- adds r0, r2, r4
- strh r1, [r0]
- ldr r0, =0x00002baa
- adds r1, r2, r0
- ldr r0, =0x0000ffff
- strh r0, [r1]
- adds r4, 0x6
- adds r2, r4
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- mov r9, r0
- ands r0, r1
- strb r0, [r2]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x3
- negs r0, r0
- mov r8, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r6, 0x5
- negs r6, r6
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r5, 0x9
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x1F
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- ldr r2, =0x00002baf
- adds r0, r2
- ldrb r1, [r0]
- mov r4, r9
- ands r4, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r0, r2
- ldrb r1, [r0]
- mov r4, r8
- ands r4, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r0, r2
- ldrb r1, [r0]
- ands r6, r1
- strb r6, [r0]
- ldr r0, [r3]
- adds r0, r2
- ldrb r1, [r0]
- ands r5, r1
- strb r5, [r0]
- ldr r1, [r3]
- adds r1, r2
- ldrb r2, [r1]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- ldr r1, =0x00002bac
- adds r0, r1
- mov r4, r10
- strb r4, [r0]
- ldr r0, [r3]
- adds r1, 0x1
- adds r0, r1
- strb r4, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ResetGabbyAndTy
-
- thumb_func_start GabbyAndTyBeforeInterview
-GabbyAndTyBeforeInterview: @ 80EC31C
- push {r4,lr}
- ldr r3, =gSaveBlock1Ptr
- ldr r2, [r3]
- ldr r0, =gBattleResults
- mov r12, r0
- ldrh r1, [r0, 0x6]
- ldr r4, =0x00002ba4
- adds r0, r2, r4
- strh r1, [r0]
- mov r0, r12
- ldrh r1, [r0, 0x26]
- adds r4, 0x2
- adds r0, r2, r4
- strh r1, [r0]
- mov r0, r12
- ldrh r1, [r0, 0x22]
- adds r4, 0x2
- adds r0, r2, r4
- strh r1, [r0]
- ldr r0, =0x00002bad
- adds r2, r0
- ldrb r1, [r2]
- adds r0, r1, 0
- adds r4, r3, 0
- cmp r0, 0xFF
- beq _080EC354
- adds r0, r1, 0x1
- strb r0, [r2]
-_080EC354:
- ldr r2, [r4]
- mov r0, r12
- ldrb r1, [r0, 0x5]
- lsls r1, 31
- ldr r0, =0x00002bae
- adds r2, r0
- lsrs r1, 31
- ldrb r3, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- mov r1, r12
- ldrb r0, [r1]
- cmp r0, 0
- beq _080EC398
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- b _080EC3A6
- .pool
-_080EC398:
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r2, [r0]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
-_080EC3A6:
- strb r1, [r0]
- mov r1, r12
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- beq _080EC3C4
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- b _080EC3D2
- .pool
-_080EC3C4:
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
-_080EC3D2:
- strb r1, [r0]
- mov r0, r12
- ldrb r1, [r0, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080EC410
- movs r1, 0
- mov r0, r12
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EC410
-_080EC3EC:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bhi _080EC41E
- mov r0, r12
- adds r0, 0x36
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EC3EC
- ldr r0, [r4]
- ldr r4, =0x00002bae
- adds r0, r4
- b _080EC416
- .pool
-_080EC410:
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
-_080EC416:
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
-_080EC41E:
- bl TakeTVShowInSearchOfTrainersOffTheAir
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r4, =0x00002ba8
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EC436
- movs r0, 0x1
- bl FlagSet
-_080EC436:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end GabbyAndTyBeforeInterview
-
- thumb_func_start GabbyAndTyAfterInterview
-GabbyAndTyAfterInterview: @ 80EC448
- push {r4-r6,lr}
- ldr r5, =gSaveBlock1Ptr
- ldr r2, [r5]
- ldr r6, =0x00002bae
- adds r0, r2, r6
- ldrb r1, [r0]
- lsls r1, 31
- ldr r4, =0x00002baf
- adds r2, r4
- lsrs r1, 31
- ldrb r3, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r2, [r5]
- adds r0, r2, r6
- ldrb r0, [r0]
- adds r2, r4
- movs r1, 0x2
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r2, [r5]
- adds r0, r2, r6
- ldrb r0, [r0]
- adds r2, r4
- movs r1, 0x4
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r2, [r5]
- adds r0, r2, r6
- ldrb r0, [r0]
- adds r2, r4
- movs r1, 0x8
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x9
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r1, [r5]
- adds r1, r6
- ldrb r0, [r1]
- movs r2, 0x10
- orrs r0, r2
- strb r0, [r1]
- ldr r0, [r5]
- ldr r1, =gMapHeader
- ldrb r1, [r1, 0x14]
- ldr r2, =0x00002bac
- adds r0, r2
- strb r1, [r0]
- movs r0, 0x6
- bl IncrementGameStat
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end GabbyAndTyAfterInterview
-
- thumb_func_start TakeTVShowInSearchOfTrainersOffTheAir
-TakeTVShowInSearchOfTrainersOffTheAir: @ 80EC4E8
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00002bae
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end TakeTVShowInSearchOfTrainersOffTheAir
-
- thumb_func_start GabbyAndTyGetBattleNum
-GabbyAndTyGetBattleNum: @ 80EC504
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x00002bad
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0x5
- bls _080EC522
- ldrb r0, [r1]
- movs r1, 0x3
- bl __umodsi3
- adds r0, 0x6
- lsls r0, 24
- lsrs r0, 24
-_080EC522:
- pop {r1}
- bx r1
- .pool
- thumb_func_end GabbyAndTyGetBattleNum
-
- thumb_func_start IsTVShowInSearchOfTrainersAiring
-IsTVShowInSearchOfTrainersAiring: @ 80EC530
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r0, 31
- bx lr
- .pool
- thumb_func_end IsTVShowInSearchOfTrainersAiring
-
- thumb_func_start GabbyAndTyGetLastQuote
-GabbyAndTyGetLastQuote: @ 80EC548
- push {r4,r5,lr}
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r2, =0x00002baa
- adds r1, r0, r2
- ldrh r0, [r1]
- ldr r4, =0x0000ffff
- cmp r0, r4
- beq _080EC584
- ldr r0, =gStringVar1
- ldrh r1, [r1]
- bl CopyEasyChatWord
- ldr r1, [r5]
- ldr r0, =0x00002baa
- adds r1, r0
- ldrh r2, [r1]
- adds r0, r4, 0
- orrs r0, r2
- strh r0, [r1]
- movs r0, 0x1
- b _080EC586
- .pool
-_080EC584:
- movs r0, 0
-_080EC586:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GabbyAndTyGetLastQuote
-
- thumb_func_start GabbyAndTyGetLastBattleTrivia
-GabbyAndTyGetLastBattleTrivia: @ 80EC58C
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002baf
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080EC5AC
- movs r0, 0x1
- b _080EC5D2
- .pool
-_080EC5AC:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080EC5B8
- movs r0, 0x2
- b _080EC5D2
-_080EC5B8:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080EC5C4
- movs r0, 0x3
- b _080EC5D2
-_080EC5C4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080EC5D0
- movs r0, 0
- b _080EC5D2
-_080EC5D0:
- movs r0, 0x4
-_080EC5D2:
- pop {r1}
- bx r1
- thumb_func_end GabbyAndTyGetLastBattleTrivia
-
- thumb_func_start GabbyAndTySetScriptVarsToFieldObjectLocalIds
-GabbyAndTySetScriptVarsToFieldObjectLocalIds: @ 80EC5D8
- push {lr}
- bl GabbyAndTyGetBattleNum
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x7
- bhi _080EC6B0
- lsls r0, 2
- ldr r1, =_080EC5F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EC5F8:
- .4byte _080EC618
- .4byte _080EC62C
- .4byte _080EC640
- .4byte _080EC654
- .4byte _080EC668
- .4byte _080EC67C
- .4byte _080EC690
- .4byte _080EC6A4
-_080EC618:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0xE
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0xD
- b _080EC6AE
- .pool
-_080EC62C:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x5
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x6
- b _080EC6AE
- .pool
-_080EC640:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x12
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x11
- b _080EC6AE
- .pool
-_080EC654:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x15
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x16
- b _080EC6AE
- .pool
-_080EC668:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x8
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x9
- b _080EC6AE
- .pool
-_080EC67C:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x13
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x14
- b _080EC6AE
- .pool
-_080EC690:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x17
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x18
- b _080EC6AE
- .pool
-_080EC6A4:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0xA
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0xB
-_080EC6AE:
- strh r0, [r1]
-_080EC6B0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end GabbyAndTySetScriptVarsToFieldObjectLocalIds
-
- thumb_func_start InterviewAfter
-InterviewAfter: @ 80EC6BC
- push {lr}
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0x7
- bhi _080EC724
- lsls r0, 2
- ldr r1, =_080EC6DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EC6DC:
- .4byte _080EC6FC
- .4byte _080EC702
- .4byte _080EC708
- .4byte _080EC70E
- .4byte _080EC724
- .4byte _080EC714
- .4byte _080EC71A
- .4byte _080EC720
-_080EC6FC:
- bl sub_80ED548
- b _080EC724
-_080EC702:
- bl sub_80ED5B8
- b _080EC724
-_080EC708:
- bl sub_80ED610
- b _080EC724
-_080EC70E:
- bl TaskDummy5
- b _080EC724
-_080EC714:
- bl sub_80ECF5C
- b _080EC724
-_080EC71A:
- bl sub_80ED164
- b _080EC724
-_080EC720:
- bl sub_80ECA38
-_080EC724:
- pop {r0}
- bx r0
- thumb_func_end InterviewAfter
-
- thumb_func_start sub_80EC728
-sub_80EC728: @ 80EC728
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r4, 0
- bl sub_80EED88
- bl sub_80ED718
- ldr r5, =gBattleResults
- ldrh r0, [r5, 0x28]
- cmp r0, 0
- bne _080EC74C
- bl sub_80EC8FC
- b _080EC888
- .pool
-_080EC74C:
- bl sub_80EC8A4
- ldr r0, =0x0000ffff
- bl sub_80EFB38
- lsls r0, 24
- cmp r0, 0
- beq _080EC75E
- b _080EC888
-_080EC75E:
- ldrh r1, [r5, 0x28]
- movs r0, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x2A
- bl StringCompare
- cmp r0, 0
- bne _080EC776
- b _080EC888
-_080EC776:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EC888
- movs r0, 0x15
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EC888
- movs r2, 0
- adds r1, r5, 0
- adds r1, 0x36
-_080EC7A8:
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xA
- bls _080EC7A8
- cmp r4, 0
- bne _080EC7CA
- ldrb r1, [r5, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080EC888
-_080EC7CA:
- movs r4, 0
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- movs r0, 0x15
- strb r0, [r6]
- strb r4, [r6, 0x1]
- ldrb r1, [r5, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080EC81C
- movs r4, 0x1
- movs r0, 0x1
- adds r3, r6, 0
- adds r3, 0x13
- ldr r1, =gSaveBlock2Ptr
- mov r8, r1
- adds r7, r6, 0x4
- b _080EC84E
- .pool
-_080EC81C:
- movs r2, 0
- ldr r0, =gLastUsedItem
- mov r12, r0
- adds r3, r6, 0
- adds r3, 0x13
- ldr r1, =gSaveBlock2Ptr
- mov r8, r1
- adds r7, r6, 0x4
- adds r1, r5, 0
- adds r1, 0x36
-_080EC830:
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xA
- bls _080EC830
- cmp r4, 0xFF
- bls _080EC84A
- movs r4, 0xFF
-_080EC84A:
- mov r1, r12
- ldrh r0, [r1]
-_080EC84E:
- strb r4, [r6, 0x12]
- strb r0, [r6, 0xF]
- mov r0, r8
- ldr r1, [r0]
- adds r0, r3, 0
- bl StringCopy
- ldr r4, =gUnknown_03005D3A
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- adds r0, r7, 0
- bl sub_81DB604
- adds r5, r0, 0
- adds r0, r7, 0
- bl StripExtCtrlCodes
- subs r4, 0x2A
- ldrh r0, [r4, 0x28]
- strh r0, [r6, 0x10]
- adds r0, r6, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r6, 0x2]
- strb r5, [r6, 0x3]
-_080EC888:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EC728
-
- thumb_func_start sub_80EC8A4
-sub_80EC8A4: @ 80EC8A4
- push {r4,lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00002b2c
- adds r4, r1, r0
- ldrb r0, [r4]
- cmp r0, 0x19
- beq _080EC8CA
- ldr r2, =0x000027cc
- adds r0, r1, r2
- movs r1, 0x18
- bl sub_80EF910
- movs r0, 0x5
- bl GetGameStat
- strh r0, [r4, 0x6]
- movs r0, 0x19
- strb r0, [r4]
-_080EC8CA:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- ldr r1, =gBattleResults
- ldrh r0, [r1, 0x28]
- strh r0, [r4, 0x4]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x8]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r4, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EC8A4
-
- thumb_func_start sub_80EC8FC
-sub_80EC8FC: @ 80EC8FC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =0x0000ffff
- bl sub_80EFB38
- lsls r0, 24
- cmp r0, 0
- bne _080EC9B4
- movs r1, 0
- movs r5, 0
- ldr r2, =gUnknown_03005D46
-_080EC914:
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bls _080EC914
- cmp r5, 0xFF
- bls _080EC92E
- movs r5, 0xFF
-_080EC92E:
- cmp r5, 0x2
- bls _080EC9B4
- ldr r0, =gBattleOutcome
- mov r8, r0
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _080EC940
- cmp r0, 0x1
- bne _080EC9B4
-_080EC940:
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r6, =0x000027cc
- adds r0, r6
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EC9B4
- movs r0, 0x17
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EC9B4
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldr r4, [r7]
- adds r4, r0
- movs r1, 0
- movs r0, 0x17
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r1, =gBattleResults
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0xC]
- ldrh r0, [r1, 0x20]
- strh r0, [r4, 0xE]
- strb r5, [r4, 0x10]
- mov r1, r8
- ldrb r0, [r1]
- strb r0, [r4, 0x11]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r4, 0x12]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x2]
-_080EC9B4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EC8FC
-
- thumb_func_start sub_80EC9E8
-sub_80EC9E8: @ 80EC9E8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80F0020
- strb r0, [r4, 0x1E]
- lsrs r2, r0, 8
- strb r2, [r4, 0x1F]
- adds r1, r4, 0
- adds r1, 0x20
- strb r0, [r1]
- adds r1, 0x1
- strb r2, [r1]
- adds r1, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- adds r0, 0x23
- strb r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EC9E8
-
- thumb_func_start sub_80ECA10
-sub_80ECA10: @ 80ECA10
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80F0020
- adds r1, r4, 0
- adds r1, 0x20
- strb r0, [r1]
- lsrs r1, r0, 8
- adds r2, r4, 0
- adds r2, 0x21
- strb r1, [r2]
- adds r2, 0x1
- strb r0, [r2]
- adds r0, r4, 0
- adds r0, 0x23
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ECA10
-
- thumb_func_start sub_80ECA38
-sub_80ECA38: @ 80ECA38
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- ldr r7, [r0]
- ldr r1, =0x00002b2c
- adds r6, r7, r1
- ldrb r1, [r6]
- cmp r1, 0x8
- bne _080ECACE
- ldr r0, =gUnknown_030060BC
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r5, =0x000027cc
- adds r4, r5
- adds r4, r7, r4
- strb r1, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x14
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, =gUnknown_02039F2C
- ldrh r0, [r0]
- strb r0, [r4, 0x1C]
- ldr r0, =gUnknown_02039F24
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r4, 0x12]
- ldrh r0, [r6, 0x2]
- strh r0, [r4, 0x2]
- ldrb r0, [r6, 0xC]
- strb r0, [r4, 0xC]
- ldrb r0, [r6, 0xD]
- strb r0, [r4, 0xD]
- ldrb r0, [r6, 0xE]
- strb r0, [r4, 0xE]
- ldrh r0, [r6, 0x10]
- strh r0, [r4, 0x10]
- ldrb r0, [r6, 0xF]
- strb r0, [r4, 0xF]
- adds r0, r4, 0x4
- ldr r2, =0x00002b30
- adds r1, r7, r2
- bl StringCopy
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x1D]
- ldrb r0, [r6, 0x1E]
- strb r0, [r4, 0x1E]
- mov r1, r8
- ldr r0, [r1]
- adds r0, r5
- movs r1, 0x18
- bl sub_80EF910
-_080ECACE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECA38
-
- thumb_func_start sub_80ECB00
-sub_80ECB00: @ 80ECB00
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- mov r9, r2
- lsls r3, 16
- lsrs r3, 16
- mov r8, r3
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFADC
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECBEC
- movs r0, 0xA
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080ECBEC
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, [r6]
- adds r4, r1, r0
- movs r0, 0xA
- strb r0, [r4]
- movs r5, 0x1
- strb r5, [r4, 0x1]
- adds r0, r4, 0x4
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080ECBA0
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080ECBA2
- strb r5, [r4, 0x18]
- b _080ECBA4
- .pool
-_080ECBA0:
- movs r0, 0x2
-_080ECBA2:
- strb r0, [r4, 0x18]
-_080ECBA4:
- mov r0, r10
- strh r0, [r4, 0x14]
- mov r0, r9
- strh r0, [r4, 0x16]
- mov r0, r8
- strh r0, [r4, 0x2]
- lsls r0, r7, 3
- subs r0, r7
- lsls r5, r0, 2
- ldr r6, =gLinkPlayers + 8
- adds r1, r5, r6
- mov r0, sp
- bl StringCopy
- mov r0, sp
- bl StripExtCtrlCodes
- adds r0, r4, 0
- adds r0, 0xC
- mov r1, sp
- bl StringCopy
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x19]
- cmp r0, 0x1
- beq _080ECBE8
- adds r0, r6, r5
- ldrh r0, [r0, 0x12]
- cmp r0, 0x1
- bne _080ECBEA
-_080ECBE8:
- movs r0, 0x1
-_080ECBEA:
- strb r0, [r4, 0x1A]
-_080ECBEC:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECB00
-
- thumb_func_start sub_80ECC04
-sub_80ECC04: @ 80ECC04
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- mov r10, r0
- ldr r0, [sp, 0x44]
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x20]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- ldr r0, [r0]
- ldr r7, =0x000027cc
- adds r0, r7
- bl sub_80EFADC
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECC54
- movs r0, 0x9
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _080ECC68
-_080ECC54:
- movs r0, 0
- b _080ECCEE
- .pool
-_080ECC68:
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- mov r2, r8
- ldr r1, [r2]
- adds r4, r1, r0
- movs r0, 0x9
- strb r0, [r4]
- movs r7, 0x1
- strb r7, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0xC
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- mov r0, sp
- mov r1, r10
- bl StringCopy
- mov r0, sp
- bl StripExtCtrlCodes
- adds r0, r4, 0x4
- mov r1, sp
- bl StringCopy
- movs r0, 0x7
- ands r5, r0
- ldrb r1, [r4, 0x3]
- subs r0, 0xF
- ands r0, r1
- orrs r0, r5
- movs r1, 0x3
- ands r6, r1
- lsls r2, r6, 3
- subs r1, 0x1C
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- add r0, sp, 0x20
- ldrb r0, [r0]
- strb r0, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x14]
- cmp r0, 0x1
- beq _080ECCDA
- mov r1, r9
- cmp r1, 0x1
- bne _080ECCE8
-_080ECCDA:
- strb r7, [r4, 0x15]
- b _080ECCEC
- .pool
-_080ECCE8:
- mov r2, r9
- strb r2, [r4, 0x15]
-_080ECCEC:
- movs r0, 0x1
-_080ECCEE:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80ECC04
-
- thumb_func_start sub_80ECD00
-sub_80ECD00: @ 80ECD00
- push {r4-r6,lr}
- sub sp, 0x20
- ldr r6, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8006
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r6]
- adds r4, r1, r0
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- strb r0, [r4, 0x16]
- adds r0, r4, 0x2
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0xB
- strb r0, [r4]
- movs r5, 0x1
- strb r5, [r4, 0x1]
- bl sub_80F0020
- strb r0, [r4, 0xA]
- lsrs r0, 8
- strb r0, [r4, 0xB]
- ldr r1, =gStringVar1
- mov r0, sp
- bl StringCopy
- mov r0, sp
- bl StripExtCtrlCodes
- adds r0, r4, 0
- adds r0, 0xC
- mov r1, sp
- bl StringCopy
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x17]
- cmp r0, 0x1
- beq _080ECD74
- ldr r0, [r6]
- ldr r1, =0x000031a0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080ECD98
-_080ECD74:
- strb r5, [r4, 0x18]
- b _080ECD9A
- .pool
-_080ECD98:
- strb r0, [r4, 0x18]
-_080ECD9A:
- add sp, 0x20
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80ECD00
-
- thumb_func_start sub_80ECDA4
-sub_80ECDA4: @ 80ECDA4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r4, =0x000027cc
- adds r0, r4
- movs r1, 0x18
- bl sub_80EF910
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECDDC
- ldr r0, [r5]
- ldr r1, =0x00002b2c
- adds r0, r1
- strb r6, [r0, 0xD]
- movs r1, 0x8
- strb r1, [r0]
-_080ECDDC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECDA4
-
- thumb_func_start sub_80ECDF4
-sub_80ECDF4: @ 80ECDF4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002b2c
- adds r4, r0, r1
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECE1C
- strb r5, [r4, 0xE]
-_080ECE1C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECDF4
-
- thumb_func_start sub_80ECE34
-sub_80ECE34: @ 80ECE34
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002b2c
- adds r4, r0, r1
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECE5C
- strb r5, [r4, 0xF]
-_080ECE5C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECE34
-
- thumb_func_start sub_80ECE74
-sub_80ECE74: @ 80ECE74
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002b2c
- adds r4, r0, r1
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECE9C
- strh r5, [r4, 0x10]
-_080ECE9C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECE74
-
- thumb_func_start sub_80ECEB4
-sub_80ECEB4: @ 80ECEB4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r4, [r0]
- ldr r0, =0x00002b2c
- adds r5, r4, r0
- ldr r1, =0x000027cc
- adds r0, r4, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECF4C
- ldr r2, =gUnknown_02039E00
- lsls r1, r6, 6
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r5, 0x2]
- ldr r0, =0x00002b30
- adds r4, r0
- adds r2, 0xD
- adds r1, r2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- bl StripExtCtrlCodes
- strb r7, [r5, 0xC]
- adds r1, r6, 0x1
- ldr r0, =gUnknown_02039F30
- ldrb r0, [r0]
- cmp r1, r0
- ble _080ECF30
- ldr r0, =gLinkPlayers
- ldrh r0, [r0, 0x1A]
- b _080ECF4A
- .pool
-_080ECF30:
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080ECF48
- ldr r1, =gLinkPlayers
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x1A]
- cmp r0, 0x1
- bne _080ECF4A
-_080ECF48:
- movs r0, 0x1
-_080ECF4A:
- strb r0, [r5, 0x1E]
-_080ECF4C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECEB4
-
- thumb_func_start sub_80ECF5C
-sub_80ECF5C: @ 80ECF5C
- push {r4-r7,lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r6, [r0]
- ldr r0, =0x00002b2c
- adds r5, r6, r0
- ldrb r2, [r5]
- cmp r2, 0x6
- bne _080ED02C
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- adds r4, r6, r0
- strb r2, [r4]
- movs r7, 0x1
- strb r7, [r4, 0x1]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- adds r0, r4, 0
- adds r0, 0x16
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x8
- ldr r2, =0x00002b34
- adds r1, r6, r2
- bl StringCopy
- ldrb r0, [r5, 0x13]
- lsls r0, 29
- lsrs r0, 29
- ldrb r2, [r4, 0x13]
- movs r3, 0x8
- negs r3, r3
- adds r1, r3, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x13]
- ldrb r2, [r5, 0x13]
- movs r0, 0x18
- ands r0, r2
- movs r2, 0x19
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r4, 0x13]
- ldrh r0, [r5, 0x14]
- strh r0, [r4, 0x14]
- ldrb r0, [r5, 0x13]
- movs r1, 0x60
- ands r1, r0
- movs r0, 0x61
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x13]
- ldrb r1, [r5, 0x13]
- lsls r1, 29
- lsrs r1, 29
- ands r0, r3
- orrs r0, r1
- strb r0, [r4, 0x13]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x1E]
- cmp r0, 0x1
- beq _080ECFFA
- ldrb r0, [r5, 0x1F]
- cmp r0, 0x1
- bne _080ED01C
-_080ECFFA:
- strb r7, [r4, 0x1F]
- b _080ED01E
- .pool
-_080ED01C:
- strb r0, [r4, 0x1F]
-_080ED01E:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- movs r1, 0x18
- bl sub_80EF910
-_080ED02C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECF5C
-
- thumb_func_start sub_80ED03C
-sub_80ED03C: @ 80ED03C
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x00002b2c
- adds r5, r0, r1
- bl sub_80EF7B4
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ED07A
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- movs r1, 0x18
- bl sub_80EF910
- strh r6, [r5, 0x14]
- movs r0, 0x6
- strb r0, [r5]
-_080ED07A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED03C
-
- thumb_func_start sub_80ED090
-sub_80ED090: @ 80ED090
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r4, [r0]
- ldr r0, =0x00002b2c
- adds r7, r4, r0
- ldr r1, =0x000027cc
- adds r0, r4, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ED134
- movs r3, 0x3
- adds r0, r5, 0
- ands r0, r3
- lsls r0, 5
- ldrb r1, [r7, 0x13]
- movs r2, 0x61
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r7, 0x13]
- ldr r0, =gUnknown_02039F2C
- ldrb r0, [r0]
- movs r1, 0x7
- ands r1, r0
- movs r0, 0x8
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x13]
- ldr r1, =gUnknown_02039F2E
- ldrb r1, [r1]
- ands r3, r1
- lsls r3, 3
- movs r1, 0x19
- negs r1, r1
- ands r0, r1
- orrs r0, r3
- strb r0, [r7, 0x13]
- ldr r0, =gUnknown_02039F24
- mov r8, r0
- ldrb r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x2]
- mov r1, r8
- ldrb r0, [r1]
- muls r0, r6
- adds r0, r5
- ldr r1, =0x00002b34
- adds r4, r1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StripExtCtrlCodes
- mov r1, r8
- ldrb r0, [r1]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3
- bl GetMonData
- strb r0, [r7, 0x1F]
-_080ED134:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED090
-
- thumb_func_start sub_80ED164
-sub_80ED164: @ 80ED164
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- movs r0, 0x7
- strb r0, [r6]
- movs r0, 0x1
- strb r0, [r6, 0x1]
- adds r0, r6, 0x2
- ldr r4, =gSaveBlock2Ptr
- ldr r1, [r4]
- bl StringCopy
- adds r0, r6, 0
- adds r0, 0xC
- ldr r1, [r4]
- ldr r2, =0x00000bd8
- adds r1, r2
- bl StringCopy
- ldr r1, [r4]
- ldr r2, =0x00000bd4
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r6, 0xA]
- adds r2, 0x2
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r6, 0x14]
- ldr r5, =0x00000d07
- adds r1, r5
- ldrb r0, [r1]
- movs r1, 0
- bl sub_8164FCC
- strh r0, [r6, 0x16]
- ldr r0, [r4]
- ldr r1, =0x00000d06
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r6, 0x1C]
- ldr r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _080ED1F4
- movs r0, 0x32
- b _080ED1F6
- .pool
-_080ED1F4:
- movs r0, 0x64
-_080ED1F6:
- strb r0, [r6, 0x1A]
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- strb r0, [r6, 0x1B]
- adds r0, r6, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r6, 0x1D]
- cmp r0, 0x1
- beq _080ED21C
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r2, =0x00000beb
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080ED21E
-_080ED21C:
- movs r0, 0x1
-_080ED21E:
- strb r0, [r6, 0x1E]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED164
-
- thumb_func_start SaveRecordedItemPurchasesForTVShow
-@ void SaveRecordedItemPurchasesForTVShow()
-SaveRecordedItemPurchasesForTVShow: @ 80ED238
- push {r4-r7,lr}
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldrh r1, [r0, 0x4]
- ldr r0, =0x00003c1a
- cmp r1, r0
- beq _080ED2F2
- ldr r0, =0x0000371a
- cmp r1, r0
- beq _080ED2F2
- ldr r0, =0x00005555
- bl sub_80EFB38
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080ED2F2
- ldr r0, [r5]
- ldr r7, =0x000027cc
- adds r0, r7
- bl sub_80EFB08
- ldr r6, =gUnknown_030060BC
- strb r0, [r6]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ED2F2
- movs r0, 0x16
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080ED2F2
- bl sub_80EF500
- ldr r2, =gUnknown_02039F80
- ldrh r0, [r2, 0x2]
- cmp r0, 0x13
- bls _080ED2F2
- movs r1, 0
- ldrsb r1, [r6, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldr r1, [r5]
- adds r5, r1, r0
- movs r0, 0x16
- strb r0, [r5]
- strb r4, [r5, 0x1]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r5, 0x12]
- movs r4, 0
- adds r7, r5, 0x6
- mov r12, r2
- adds r6, r5, 0
- adds r6, 0xC
-_080ED2B6:
- lsls r2, r4, 1
- adds r3, r7, r2
- lsls r1, r4, 2
- add r1, r12
- ldrh r0, [r1]
- strh r0, [r3]
- adds r2, r6, r2
- ldrh r0, [r1, 0x2]
- strh r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _080ED2B6
- movs r0, 0x1
- bl GetPriceReduction
- strb r0, [r5, 0x2]
- adds r0, r5, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r5, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r5, 0x3]
-_080ED2F2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SaveRecordedItemPurchasesForTVShow
-
- thumb_func_start sub_80ED320
-sub_80ED320: @ 80ED320
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- bl sub_80EF7A8
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080ED400
- ldr r0, =gSpecialVar_0x8004
- mov r8, r0
- ldrh r0, [r0]
- movs r7, 0x64
- muls r0, r7
- ldr r6, =gPlayerParty
- adds r0, r6
- ldr r4, =gStringVar1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- ldr r1, =gSaveBlock2Ptr
- mov r9, r1
- ldr r0, [r1]
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080ED400
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080ED400
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- movs r0, 0x5
- strb r0, [r4]
- movs r5, 0x1
- strb r5, [r4, 0x1]
- mov r2, r8
- ldrh r0, [r2]
- muls r0, r7
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r4, 0x2]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- strb r0, [r4, 0x1A]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ands r0, r5
- strb r0, [r4, 0x1B]
- ldrh r0, [r4, 0x2]
- bl sub_80EFA24
- strh r0, [r4, 0x1C]
- adds r0, r4, 0
- adds r0, 0xF
- mov r2, r9
- ldr r1, [r2]
- bl StringCopy
- mov r1, r8
- ldrh r0, [r1]
- muls r0, r7
- adds r0, r6
- adds r5, r4, 0x4
- movs r1, 0x2
- adds r2, r5, 0
- bl GetMonData
- adds r0, r5, 0
- bl StripExtCtrlCodes
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x1E]
- mov r2, r8
- ldrh r0, [r2]
- muls r0, r7
- adds r0, r6
- movs r1, 0x3
- bl GetMonData
- strb r0, [r4, 0x1F]
-_080ED400:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED320
-
- thumb_func_start StartMassOutbreak
-StartMassOutbreak: @ 80ED430
- push {r4,r5,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, =0x000027cc
- adds r1, r0
- ldr r2, [r4]
- adds r1, r2, r1
- ldrh r3, [r1, 0xC]
- ldr r5, =0x00002b90
- adds r0, r2, r5
- strh r3, [r0]
- ldrb r0, [r1, 0x10]
- ldr r3, =0x00002b92
- adds r2, r3
- strb r0, [r2]
- ldr r0, [r4]
- ldrb r2, [r1, 0x11]
- adds r5, 0x3
- adds r0, r5
- strb r2, [r0]
- ldr r0, [r4]
- ldrb r2, [r1, 0x14]
- adds r3, 0x2
- adds r0, r3
- strb r2, [r0]
- ldr r0, [r4]
- ldrb r2, [r1, 0x2]
- adds r5, 0x2
- adds r0, r5
- strb r2, [r0]
- ldr r2, [r4]
- ldrh r3, [r1, 0xE]
- adds r5, 0x1
- adds r0, r2, r5
- strh r3, [r0]
- ldrh r3, [r1, 0x4]
- adds r5, 0x2
- adds r0, r2, r5
- strh r3, [r0]
- ldrh r3, [r1, 0x6]
- adds r5, 0x2
- adds r0, r2, r5
- strh r3, [r0]
- ldrh r3, [r1, 0x8]
- adds r5, 0x2
- adds r0, r2, r5
- strh r3, [r0]
- ldrh r3, [r1, 0xA]
- adds r5, 0x2
- adds r0, r2, r5
- strh r3, [r0]
- ldrb r0, [r1, 0x3]
- ldr r3, =0x00002ba0
- adds r2, r3
- strb r0, [r2]
- ldr r0, [r4]
- ldrb r1, [r1, 0x13]
- adds r5, 0x3
- adds r0, r5
- strb r1, [r0]
- ldr r0, [r4]
- ldr r1, =0x00002ba2
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end StartMassOutbreak
-
- thumb_func_start sub_80ED4DC
-sub_80ED4DC: @ 80ED4DC
- push {r4,lr}
- bl sub_80EFA88
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080ED532
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- adds r0, r4, 0
- adds r0, 0x17
- bl sub_818E848
- movs r0, 0x2
- strb r0, [r4, 0x18]
- movs r0, 0xC
- strb r0, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- adds r0, r4, 0x2
- bl sub_818E81C
- adds r0, r4, 0
- adds r0, 0xA
- adds r1, r4, 0
- adds r1, 0xB
- bl sub_818E7E0
- bl sub_818E880
- strb r0, [r4, 0x16]
- adds r0, r4, 0
- bl sub_80ECA10
-_080ED532:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED4DC
-
- thumb_func_start sub_80ED548
-sub_80ED548: @ 80ED548
- push {r4,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- movs r0, 0x1
- strb r0, [r4]
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x10
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x18]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED548
-
- thumb_func_start sub_80ED5B8
-sub_80ED5B8: @ 80ED5B8
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- movs r5, 0
- movs r0, 0x2
- strb r0, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x10
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- strh r5, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x18]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED5B8
-
- thumb_func_start sub_80ED610
-sub_80ED610: @ 80ED610
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- movs r0, 0x3
- strb r0, [r5]
- movs r0, 0x1
- mov r8, r0
- mov r1, r8
- strb r1, [r5, 0x1]
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r7, 0x64
- muls r0, r7
- ldr r6, =gPlayerParty
- adds r0, r6
- movs r1, 0x20
- movs r2, 0
- bl GetMonData
- lsrs r0, 4
- movs r1, 0xF
- ands r0, r1
- ldrb r2, [r5, 0x4]
- movs r1, 0x10
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x4]
- ldr r0, =gSpecialVar_0x8007
- ldrb r0, [r0]
- lsls r0, 4
- movs r2, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x4]
- adds r0, r5, 0x5
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- adds r0, r6
- adds r4, r5, 0
- adds r4, 0x10
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StripExtCtrlCodes
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r5, 0x2]
- adds r0, r5, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r5, 0xD]
- cmp r0, 0x1
- beq _080ED6D4
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- adds r0, r6
- movs r1, 0x3
- bl GetMonData
- cmp r0, 0x1
- bne _080ED6F4
-_080ED6D4:
- mov r0, r8
- b _080ED706
- .pool
-_080ED6F4:
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- adds r0, r6
- movs r1, 0x3
- bl GetMonData
-_080ED706:
- strb r0, [r5, 0xE]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80ED610
-
- thumb_func_start TaskDummy5
-TaskDummy5: @ 80ED714
- bx lr
- thumb_func_end TaskDummy5
-
- thumb_func_start sub_80ED718
-sub_80ED718: @ 80ED718
- push {r4-r6,lr}
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080ED7E4
- movs r1, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r3, =0x000027cc
-_080ED72E:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2, r0
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0x29
- beq _080ED7E4
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x17
- bls _080ED72E
- ldr r0, =0x00000147
- bl sub_80EFB38
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080ED7E4
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ED7E4
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- movs r2, 0
- ldrsb r2, [r4, r2]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- ldr r2, =0x000027cc
- adds r1, r2
- ldr r4, [r6]
- adds r4, r1
- movs r1, 0x29
- strb r1, [r4]
- movs r3, 0x1
- strb r3, [r4, 0x1]
- ldr r2, =gUnknown_0858D094
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0xA]
- strb r0, [r4, 0x14]
- strb r5, [r4, 0x2]
- strb r5, [r4, 0x3]
- ldrh r0, [r1]
- movs r2, 0
- strh r0, [r4, 0xC]
- strh r5, [r4, 0xE]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x4]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x6]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x8]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0xA]
- ldrb r0, [r1, 0xB]
- strb r0, [r4, 0x10]
- strb r2, [r4, 0x11]
- strb r2, [r4, 0x12]
- movs r0, 0x32
- strb r0, [r4, 0x13]
- strb r2, [r4, 0x15]
- strh r3, [r4, 0x16]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x18]
-_080ED7E4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED718
-
- thumb_func_start EndMassOutbreak
-EndMassOutbreak: @ 80ED808
- push {r4,r5,lr}
- ldr r3, =gSaveBlock1Ptr
- ldr r0, [r3]
- ldr r2, =0x00002b90
- adds r1, r0, r2
- movs r4, 0
- movs r2, 0
- strh r2, [r1]
- ldr r5, =0x00002b92
- adds r0, r5
- strb r4, [r0]
- ldr r0, [r3]
- ldr r1, =0x00002b93
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r5, 0x2
- adds r0, r5
- strb r4, [r0]
- ldr r0, [r3]
- adds r1, 0x2
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- ldr r1, =0x00002ba0
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r5, 0x3
- adds r0, r5
- strb r4, [r0]
- ldr r0, [r3]
- adds r1, 0x2
- adds r0, r1
- strh r2, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end EndMassOutbreak
-
- thumb_func_start sub_80ED888
-sub_80ED888: @ 80ED888
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- bl sub_80ED8B4
- adds r0, r4, 0
- bl UpdateMassOutbreakTimeLeft
- adds r0, r4, 0
- bl sub_80EF120
- adds r0, r4, 0
- bl sub_80EDA48
- adds r0, r4, 0
- bl sub_80EEB98
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ED888
-
- thumb_func_start sub_80ED8B4
-sub_80ED8B4: @ 80ED8B4
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, =gSaveBlock1Ptr
- ldr r0, [r1]
- ldr r2, =0x00002b90
- adds r0, r2
- ldrh r0, [r0]
- mov r12, r1
- cmp r0, 0
- bne _080ED91C
- movs r1, 0
- ldr r6, =0x000027cc
-_080ED8CE:
- mov r7, r12
- ldr r4, [r7]
- lsls r0, r1, 3
- adds r0, r1
- lsls r3, r0, 2
- adds r2, r4, r3
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _080ED912
- ldr r7, =0x000027cd
- adds r0, r2, r7
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080ED912
- adds r0, r3, r6
- adds r1, r4, r0
- ldrh r0, [r1, 0x16]
- cmp r0, r5
- bcs _080ED90C
- movs r0, 0
- strh r0, [r1, 0x16]
- b _080ED91C
- .pool
-_080ED90C:
- subs r0, r5
- strh r0, [r1, 0x16]
- b _080ED91C
-_080ED912:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x17
- bls _080ED8CE
-_080ED91C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80ED8B4
-
- thumb_func_start UpdateMassOutbreakTimeLeft
-UpdateMassOutbreakTimeLeft: @ 80ED924
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x00002ba2
- adds r1, r0, r3
- ldrh r0, [r1]
- cmp r0, r2
- bhi _080ED948
- bl EndMassOutbreak
- b _080ED94C
- .pool
-_080ED948:
- subs r0, r2
- strh r0, [r1]
-_080ED94C:
- pop {r0}
- bx r0
- thumb_func_end UpdateMassOutbreakTimeLeft
-
- thumb_func_start sub_80ED950
-sub_80ED950: @ 80ED950
- push {r4,lr}
- lsls r0, 24
- cmp r0, 0
- beq _080ED978
- ldr r4, =gUnknown_0203A026
- ldrh r0, [r4]
- lsrs r0, 8
- cmp r0, 0x4
- bls _080ED966
- bl sub_80ED9A8
-_080ED966:
- ldrb r0, [r4]
- strh r0, [r4]
- cmp r0, 0xFF
- beq _080ED99C
- adds r0, 0x1
- b _080ED99A
- .pool
-_080ED978:
- ldr r4, =gUnknown_0203A026
- ldrb r0, [r4]
- cmp r0, 0x4
- bls _080ED984
- bl sub_80ED9A8
-_080ED984:
- ldrh r0, [r4]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- strh r1, [r4]
- lsrs r0, r1, 8
- cmp r0, 0xFF
- beq _080ED99C
- movs r2, 0x80
- lsls r2, 1
- adds r0, r1, r2
-_080ED99A:
- strh r0, [r4]
-_080ED99C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED950
-
- thumb_func_start sub_80ED9A8
-sub_80ED9A8: @ 80ED9A8
- push {r4-r6,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDA18
- movs r0, 0x18
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDA18
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, [r6]
- adds r4, r0
- movs r1, 0
- movs r0, 0x18
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r1, =gUnknown_0203A026
- ldrh r0, [r1]
- strb r0, [r4, 0x2]
- ldrh r0, [r1]
- lsrs r0, 8
- strb r0, [r4, 0x3]
- ldr r0, =gUnknown_0203A024
- ldrh r0, [r0]
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x6]
-_080EDA18:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED9A8
-
- thumb_func_start sub_80EDA3C
-sub_80EDA3C: @ 80EDA3C
- ldr r1, =gUnknown_0203A024
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80EDA3C
-
- thumb_func_start sub_80EDA48
-sub_80EDA48: @ 80EDA48
- push {r4,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r2, =0x00002b2c
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0x19
- bne _080EDA6E
- ldrh r0, [r1, 0x2]
- cmp r0, 0x13
- bls _080EDA62
- bl sub_80EDA80
-_080EDA62:
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- movs r1, 0x18
- bl sub_80EF910
-_080EDA6E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDA48
-
- thumb_func_start sub_80EDA80
-sub_80EDA80: @ 80EDA80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r1, =0x00002b2c
- adds r5, r0, r1
- ldr r0, =0x0000ffff
- bl sub_80EFB38
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _080EDB1C
- ldr r0, [r7]
- ldr r1, =0x000027cc
- mov r8, r1
- add r0, r8
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDB1C
- movs r0, 0x19
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDB1C
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldr r4, [r7]
- adds r4, r0
- movs r0, 0x19
- strb r0, [r4]
- strb r6, [r4, 0x1]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- movs r0, 0x5
- bl GetGameStat
- ldrh r1, [r5, 0x6]
- subs r0, r1
- strh r0, [r4, 0x6]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x8]
- ldrb r0, [r5, 0xA]
- strb r0, [r4, 0xA]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0xB]
- ldr r0, [r7]
- add r0, r8
- movs r1, 0x18
- bl sub_80EF910
-_080EDB1C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDA80
-
- thumb_func_start sub_80EDB44
-sub_80EDB44: @ 80EDB44
- push {r4-r7,lr}
- movs r0, 0x1A
- movs r1, 0x1
- bl sub_80EF46C
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDC40
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r2, =0x000027cc
- adds r0, r2
- ldr r1, [r4]
- adds r4, r1, r0
- movs r1, 0
- movs r0, 0x1A
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r6, =0x00000867
- movs r5, 0
-_080EDB88:
- lsls r0, r6, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080EDB9C
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EDB9C:
- adds r6, 0x1
- ldr r0, =0x0000086e
- cmp r6, r0
- bls _080EDB88
- strb r5, [r4, 0x4]
- bl IsNationalPokedexEnabled
- cmp r0, 0
- beq _080EDBCC
- movs r0, 0x1
- bl pokedex_count
- b _080EDBD2
- .pool
-_080EDBCC:
- movs r0, 0x1
- bl sub_80C0844
-_080EDBD2:
- strh r0, [r4, 0x2]
- ldr r1, =gMapHeader
- ldrb r0, [r1, 0x14]
- strb r0, [r4, 0x7]
- ldrh r0, [r1, 0x12]
- movs r1, 0
- strh r0, [r4, 0xA]
- strb r1, [r4, 0x5]
- strb r1, [r4, 0x6]
- movs r6, 0
- adds r7, r4, 0
- adds r7, 0x13
-_080EDBEA:
- ldr r0, =gUnknown_0858D0DE
- lsls r5, r6, 1
- adds r0, r5, r0
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EDC04
- ldrb r0, [r4, 0x5]
- adds r0, 0x1
- strb r0, [r4, 0x5]
-_080EDC04:
- ldr r0, =gUnknown_0858D0D0
- adds r0, r5, r0
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EDC1C
- ldrb r0, [r4, 0x6]
- adds r0, 0x1
- strb r0, [r4, 0x6]
-_080EDC1C:
- adds r6, 0x1
- cmp r6, 0x6
- bls _080EDBEA
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r2, =0x00000eb8
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r4, 0x8]
- adds r0, r7, 0
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0xC]
-_080EDC40:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDB44
-
- thumb_func_start sub_80EDC60
-sub_80EDC60: @ 80EDC60
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r6, =0x000027cc
- adds r0, r6
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDCCE
- movs r0, 0x1B
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDCCE
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldr r4, [r7]
- adds r4, r0
- movs r1, 0
- movs r0, 0x1B
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r1, =gSaveBlock2Ptr
- ldr r0, [r1]
- ldrb r0, [r0, 0x8]
- strb r0, [r4, 0x8]
- ldrh r0, [r5]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x6]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x9]
-_080EDCCE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDC60
-
- thumb_func_start sub_80EDCE8
-sub_80EDCE8: @ 80EDCE8
- push {r4-r6,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDD56
- movs r0, 0x1C
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDD56
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, [r6]
- adds r4, r0
- movs r1, 0
- movs r0, 0x1C
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- strh r0, [r4, 0x2]
- ldr r1, =gMapHeader
- ldrb r0, [r1, 0x14]
- strb r0, [r4, 0x4]
- ldrh r0, [r1, 0x12]
- strh r0, [r4, 0x6]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x5]
-_080EDD56:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDCE8
-
- thumb_func_start sub_80EDD78
-sub_80EDD78: @ 80EDD78
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDE54
- movs r0, 0x1D
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDE54
- movs r5, 0
- ldr r0, =gUnknown_0203A02A
- ldrb r1, [r0]
- adds r6, r0, 0
- cmp r1, 0
- beq _080EDDCC
- cmp r1, 0x1
- beq _080EDDEE
- b _080EDE54
- .pool
-_080EDDCC:
- ldr r0, =gUnknown_0203A028
- ldrh r1, [r0]
- adds r0, r1, 0
- adds r0, 0xC8
- cmp r4, r0
- blt _080EDDE4
- movs r5, 0x1
- subs r0, r4, r1
- b _080EDE12
- .pool
-_080EDDE4:
- cmp r1, 0x63
- bls _080EDE54
- adds r0, r1, 0
- subs r0, 0x64
- b _080EDE0C
-_080EDDEE:
- ldr r0, =gUnknown_0203A028
- ldrh r1, [r0]
- adds r0, r1, 0
- adds r0, 0x32
- cmp r4, r0
- blt _080EDE04
- movs r5, 0x1
- subs r0, r4, r1
- b _080EDE12
- .pool
-_080EDE04:
- cmp r1, 0x31
- bls _080EDE54
- adds r0, r1, 0
- subs r0, 0x32
-_080EDE0C:
- cmp r4, r0
- bgt _080EDE54
- subs r0, r1, r4
-_080EDE12:
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- movs r1, 0
- movs r0, 0x1D
- strb r0, [r4]
- strb r1, [r4, 0x1]
- strh r3, [r4, 0x4]
- ldrb r0, [r6]
- strb r0, [r4, 0x3]
- strb r5, [r4, 0x2]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x8]
-_080EDE54:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDD78
-
- thumb_func_start sub_80EDE70
-sub_80EDE70: @ 80EDE70
- ldr r2, =gUnknown_0203A02A
- movs r1, 0
- strb r1, [r2]
- ldr r1, =gUnknown_0203A028
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80EDE70
-
- thumb_func_start sub_80EDE84
-sub_80EDE84: @ 80EDE84
- ldr r2, =gUnknown_0203A02A
- movs r1, 0x1
- strb r1, [r2]
- ldr r1, =gUnknown_0203A028
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80EDE84
-
- thumb_func_start sub_80EDE98
-sub_80EDE98: @ 80EDE98
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- movs r3, 0
- ldr r6, =gUnknown_030060D0
- ldr r7, =gSaveBlock1Ptr
- adds r2, r6, 0
- movs r1, 0
-_080EDEAC:
- adds r0, r3, r2
- strb r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _080EDEAC
- movs r3, 0
- movs r5, 0
-_080EDEBE:
- ldr r0, [r7]
- ldr r1, =0x00001aae
- adds r0, r1
- adds r0, r3
- ldrb r4, [r0]
- adds r3, 0x1
- cmp r4, 0
- beq _080EDF0A
- movs r1, 0
- ldrb r0, [r6]
- cmp r0, 0
- bne _080EDEE8
- strb r4, [r6]
- b _080EDF04
- .pool
-_080EDEE8:
- adds r0, r1, r6
- ldrb r0, [r0]
- cmp r0, r4
- beq _080EDF0A
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bhi _080EDF0A
- adds r2, r1, r6
- ldrb r0, [r2]
- cmp r0, 0
- bne _080EDEE8
- strb r4, [r2]
-_080EDF04:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EDF0A:
- lsls r0, r3, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _080EDEBE
- cmp r5, 0x4
- bls _080EDF1E
- movs r0, 0x4
- mov r1, r8
- strb r0, [r1, 0x3]
- b _080EDF22
-_080EDF1E:
- mov r0, r8
- strb r5, [r0, 0x3]
-_080EDF22:
- mov r1, r8
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- beq _080EDFA4
- cmp r0, 0x1
- bne _080EDF34
- ldrb r0, [r6]
- strb r0, [r1, 0x4]
- b _080EDFA4
-_080EDF34:
- movs r6, 0
- adds r7, r5, 0
- muls r7, r5
- cmp r6, r7
- bge _080EDF7E
- ldr r0, =gUnknown_030060D0
- mov r9, r0
-_080EDF42:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsls r0, 24
- lsrs r4, r0, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsls r0, 24
- lsrs r1, r0, 24
- mov r0, r9
- adds r2, r4, r0
- ldrb r3, [r2]
- add r1, r9
- ldrb r0, [r1]
- strb r0, [r2]
- strb r3, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r7
- blt _080EDF42
-_080EDF7E:
- movs r3, 0
- mov r1, r8
- ldrb r1, [r1, 0x3]
- cmp r3, r1
- bcs _080EDFA4
- mov r2, r8
- adds r2, 0x4
- ldr r4, =gUnknown_030060D0
-_080EDF8E:
- adds r1, r2, r3
- adds r0, r3, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- mov r0, r8
- ldrb r0, [r0, 0x3]
- cmp r3, r0
- bcc _080EDF8E
-_080EDFA4:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDE98
-
- thumb_func_start sub_80EDFB4
-sub_80EDFB4: @ 80EDFB4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r10, r0
- movs r7, 0
- movs r0, 0
- mov r9, r0
- ldr r1, =gUnknown_030060C0
- mov r8, r1
-_080EDFCA:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080EE094
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080EE094
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- ldr r2, =gUnknown_030060E0
- mov r3, r9
- lsls r1, r3, 3
- adds r6, r1, r2
- strb r0, [r6]
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- strh r0, [r6, 0x2]
- movs r5, 0
- adds r0, r4, 0
- movs r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080EE020
- mov r0, r8
- strh r1, [r0]
- movs r5, 0x1
-_080EE020:
- adds r0, r4, 0
- movs r1, 0xE
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080EE03C
- lsls r0, r5, 1
- add r0, r8
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EE03C:
- adds r0, r4, 0
- movs r1, 0xF
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080EE058
- lsls r0, r5, 1
- add r0, r8
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EE058:
- adds r0, r4, 0
- movs r1, 0x10
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080EE074
- lsls r0, r5, 1
- add r0, r8
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EE074:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- strh r0, [r6, 0x4]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080EE094:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x5
- bls _080EDFCA
- movs r7, 0
- movs r1, 0
- cmp r1, r9
- bcs _080EE0BE
- ldr r2, =gUnknown_030060E0
-_080EE0A8:
- lsls r0, r7, 3
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r1, r0
- lsls r0, 16
- lsrs r1, r0, 16
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, r9
- bcc _080EE0A8
-_080EE0BE:
- adds r0, r1, 0
- mov r1, r9
- bl __divsi3
- mov r1, r10
- strb r0, [r1, 0x2]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r1, r9
- bl __modsi3
- lsls r0, 16
- ldr r1, =gUnknown_030060E0
- lsrs r0, 13
- adds r0, r1
- ldrh r1, [r0, 0x2]
- mov r2, r10
- strh r1, [r2, 0x8]
- ldrh r0, [r0, 0x4]
- strh r0, [r2, 0xA]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDFB4
-
- thumb_func_start sub_80EE104
-sub_80EE104: @ 80EE104
- push {r4,lr}
- movs r0, 0x1F
- movs r1, 0x1
- bl sub_80EF46C
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE168
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r4]
- adds r4, r0
- movs r1, 0
- movs r0, 0x1F
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EDE98
- adds r0, r4, 0
- bl sub_80EDFB4
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0xC]
-_080EE168:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE104
-
- thumb_func_start sub_80EE184
-sub_80EE184: @ 80EE184
- push {r4-r7,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080EE1A4
- b _080EE2C2
-_080EE1A4:
- movs r0, 0x1E
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EE1B6
- b _080EE2C2
-_080EE1B6:
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, [r6]
- adds r4, r1, r0
- movs r1, 0
- movs r0, 0x1E
- strb r0, [r4]
- strb r1, [r4, 0x1]
- movs r5, 0
- ldr r6, =gBattleResults
- ldr r3, =gMapHeader
- ldr r7, =gSaveBlock2Ptr
- adds r2, r6, 0
- adds r2, 0x36
-_080EE1DA:
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bls _080EE1DA
- ldrb r1, [r6, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080EE1FE
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080EE1FE:
- ldrb r0, [r3, 0x14]
- strb r0, [r4, 0x4]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, [r7]
- bl StringCopy
- ldrh r0, [r6, 0x6]
- strh r0, [r4, 0xA]
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0x9
- bhi _080EE282
- lsls r0, 2
- ldr r1, =_080EE244
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EE244:
- .4byte _080EE276
- .4byte _080EE26C
- .4byte _080EE26C
- .4byte _080EE27A
- .4byte _080EE27A
- .4byte _080EE27E
- .4byte _080EE272
- .4byte _080EE27A
- .4byte _080EE282
- .4byte _080EE27E
-_080EE26C:
- movs r0, 0
- strb r0, [r4]
- b _080EE2C2
-_080EE272:
- movs r0, 0
- b _080EE280
-_080EE276:
- movs r0, 0x1
- b _080EE280
-_080EE27A:
- movs r0, 0x2
- b _080EE280
-_080EE27E:
- movs r0, 0x3
-_080EE280:
- strb r0, [r4, 0x5]
-_080EE282:
- ldr r1, =gBattleResults
- ldrh r0, [r1, 0x20]
- strh r0, [r4, 0x2]
- ldrb r0, [r4, 0x5]
- cmp r0, 0x1
- beq _080EE2B2
- cmp r0, 0x1
- bgt _080EE2B6
- cmp r0, 0
- bne _080EE2B6
- ldrb r1, [r1, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080EE2A8
- movs r0, 0x1
- b _080EE2AC
- .pool
-_080EE2A8:
- lsls r0, r1, 26
- lsrs r0, 28
-_080EE2AC:
- strh r0, [r4, 0x6]
- strh r5, [r4, 0x8]
- b _080EE2B6
-_080EE2B2:
- ldrh r0, [r1, 0x22]
- strh r0, [r4, 0xC]
-_080EE2B6:
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0xE]
-_080EE2C2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE184
-
- thumb_func_start sub_80EE2CC
-sub_80EE2CC: @ 80EE2CC
- push {r4-r6,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE33A
- movs r0, 0x20
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE33A
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, [r6]
- adds r4, r0
- movs r1, 0
- movs r0, 0x20
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, =gSpecialVar_0x8004
- ldrb r1, [r0]
- movs r0, 0x4
- subs r0, r1
- strb r0, [r4, 0x4]
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- strh r0, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x5]
-_080EE33A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE2CC
-
- thumb_func_start sub_80EE35C
-sub_80EE35C: @ 80EE35C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r7, r3, 0
- ldr r3, [sp, 0x24]
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp]
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- ldr r0, [r0]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE426
- movs r0, 0x21
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE426
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r2, r8
- ldr r1, [r2]
- adds r4, r1, r0
- movs r1, 0
- movs r0, 0x21
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- mov r0, r10
- strh r0, [r4, 0x4]
- mov r1, r9
- strh r1, [r4, 0x6]
- lsls r0, r6, 1
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r4, 0x2]
- movs r2, 0
- movs r3, 0
- adds r5, r4, 0
- adds r5, 0x8
-_080EE3EE:
- cmp r2, r6
- beq _080EE408
- lsls r0, r2, 1
- adds r0, r7
- ldrh r1, [r0]
- cmp r1, 0
- beq _080EE408
- lsls r0, r3, 1
- adds r0, r5, r0
- strh r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
-_080EE408:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080EE3EE
- strb r3, [r4, 0x10]
- mov r2, sp
- ldrh r2, [r2]
- strh r2, [r4, 0xE]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x11]
-_080EE426:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE35C
-
- thumb_func_start sub_80EE44C
-sub_80EE44C: @ 80EE44C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE4BE
- movs r0, 0x27
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE4BE
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, [r6]
- adds r4, r0
- movs r1, 0
- movs r0, 0x27
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- mov r0, r8
- strb r0, [r4, 0x2]
- strb r7, [r4, 0x3]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x4]
-_080EE4BE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE44C
-
- thumb_func_start sub_80EE4DC
-sub_80EE4DC: @ 80EE4DC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE59A
- movs r0, 0x23
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE59A
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, [r7]
- adds r5, r1, r0
- movs r1, 0
- movs r0, 0x23
- strb r0, [r5]
- strb r1, [r5, 0x1]
- adds r0, r5, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r4, r5, 0x4
- adds r0, r6, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StripExtCtrlCodes
- adds r0, r6, 0
- bl sub_80EE5A4
- strb r0, [r5, 0x2]
- mov r0, r8
- bl sub_80EE69C
- strb r0, [r5, 0x3]
- adds r0, r5, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r5, 0xF]
- cmp r0, 0x1
- beq _080EE578
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonData
- cmp r0, 0x1
- bne _080EE590
-_080EE578:
- movs r0, 0x1
- b _080EE598
- .pool
-_080EE590:
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonData
-_080EE598:
- strb r0, [r5, 0x10]
-_080EE59A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EE4DC
-
- thumb_func_start sub_80EE5A4
-sub_80EE5A4: @ 80EE5A4
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x32
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x33
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x34
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x35
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x36
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x43
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x44
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x45
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x46
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x47
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x48
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x49
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4A
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4B
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4C
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4D
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4E
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80EE5A4
-
- thumb_func_start sub_80EE69C
-sub_80EE69C: @ 80EE69C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x43
- beq _080EE722
- cmp r0, 0x32
- bne _080EE6AE
- movs r0, 0x1
- b _080EE728
-_080EE6AE:
- cmp r0, 0x33
- bne _080EE6B6
- movs r0, 0x5
- b _080EE728
-_080EE6B6:
- cmp r0, 0x34
- bne _080EE6BE
- movs r0, 0x9
- b _080EE728
-_080EE6BE:
- cmp r0, 0x35
- bne _080EE6C6
- movs r0, 0xD
- b _080EE728
-_080EE6C6:
- cmp r0, 0x36
- bne _080EE6CE
- movs r0, 0x11
- b _080EE728
-_080EE6CE:
- cmp r0, 0x44
- bne _080EE6D6
- movs r0, 0x15
- b _080EE728
-_080EE6D6:
- cmp r0, 0x45
- bne _080EE6DE
- movs r0, 0x16
- b _080EE728
-_080EE6DE:
- cmp r0, 0x46
- bne _080EE6E6
- movs r0, 0x17
- b _080EE728
-_080EE6E6:
- cmp r0, 0x47
- bne _080EE6EE
- movs r0, 0x18
- b _080EE728
-_080EE6EE:
- cmp r0, 0x48
- bne _080EE6F6
- movs r0, 0x19
- b _080EE728
-_080EE6F6:
- cmp r0, 0x49
- bne _080EE6FE
- movs r0, 0x1A
- b _080EE728
-_080EE6FE:
- cmp r0, 0x4A
- bne _080EE706
- movs r0, 0x1B
- b _080EE728
-_080EE706:
- cmp r0, 0x4B
- bne _080EE70E
- movs r0, 0x1C
- b _080EE728
-_080EE70E:
- cmp r0, 0x4C
- bne _080EE716
- movs r0, 0x1D
- b _080EE728
-_080EE716:
- cmp r0, 0x4D
- bne _080EE71E
- movs r0, 0x1E
- b _080EE728
-_080EE71E:
- cmp r0, 0x4E
- beq _080EE726
-_080EE722:
- movs r0, 0
- b _080EE728
-_080EE726:
- movs r0, 0x1F
-_080EE728:
- pop {r1}
- bx r1
- thumb_func_end sub_80EE69C
-
- thumb_func_start sub_80EE72C
-sub_80EE72C: @ 80EE72C
- push {r4-r6,lr}
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r6, =0x000027cc
- adds r0, r6
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE79C
- movs r0, 0x22
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE79C
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldr r4, [r5]
- adds r4, r0
- movs r1, 0
- movs r0, 0x22
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, [r5]
- ldr r2, =0x00002bb0
- adds r1, r0, r2
- ldrh r1, [r1]
- strh r1, [r4, 0x4]
- ldr r1, =0x00002bb2
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4, 0x6]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x8]
-_080EE79C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE72C
-
- thumb_func_start sub_80EE7C0
-sub_80EE7C0: @ 80EE7C0
- push {r4,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE810
- movs r0, 0xB
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080EE810
- ldr r0, [r4]
- ldr r1, =0x00003150
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080EE810
- movs r0, 0
- b _080EE812
- .pool
-_080EE810:
- movs r0, 0x1
-_080EE812:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EE7C0
-
- thumb_func_start sub_80EE818
-sub_80EE818: @ 80EE818
- push {r4-r7,lr}
- movs r0, 0x24
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EE870
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r7, r0, r1
- bl sub_80F0020
- adds r4, r0, 0
- movs r6, 0x5
- lsrs r5, r4, 8
-_080EE83C:
- lsls r0, r6, 3
- adds r0, r6
- lsls r0, 2
- adds r1, r0, r7
- ldrb r0, [r1]
- cmp r0, 0x24
- bne _080EE866
- movs r3, 0xFF
- adds r0, r4, 0
- ands r0, r3
- adds r2, r1, 0
- adds r2, 0x22
- ldrb r2, [r2]
- cmp r0, r2
- bne _080EE866
- adds r0, r5, 0
- ands r0, r3
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- beq _080EE89C
-_080EE866:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x17
- bls _080EE83C
-_080EE870:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE8C0
- movs r0, 0x1
- b _080EE8C2
- .pool
-_080EE89C:
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r4, =0x000027cc
- adds r0, r4
- adds r1, r6, 0
- bl sub_80EF910
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EF93C
- movs r0, 0x1
- b _080EE8C2
- .pool
-_080EE8C0:
- movs r0, 0
-_080EE8C2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80EE818
-
- thumb_func_start sub_80EE8C8
-sub_80EE8C8: @ 80EE8C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080EE8F4
- b _080EEA52
-_080EE8F4:
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r2, =0x000027cc
- adds r0, r2
- ldr r1, [r5]
- adds r7, r1, r0
- movs r1, 0
- movs r0, 0x24
- strb r0, [r7]
- strb r1, [r7, 0x1]
- adds r0, r7, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- strh r6, [r7, 0x2]
- strb r4, [r7, 0xD]
- subs r0, r4, 0x1
- cmp r0, 0xC
- bls _080EE926
- b _080EEA46
-_080EE926:
- lsls r0, 2
- ldr r1, =_080EE944
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EE944:
- .4byte _080EE978
- .4byte _080EE9A8
- .4byte _080EE9E8
- .4byte _080EEA00
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
-_080EE978:
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x4]
- adds r0, r4, 0
- adds r0, 0x64
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x6]
- adds r4, 0xC8
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x8]
- b _080EEA46
- .pool
-_080EE9A8:
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x4]
- adds r0, r4, 0
- adds r0, 0x64
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x6]
- adds r0, r4, 0
- adds r0, 0xC8
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x8]
- movs r1, 0x96
- lsls r1, 1
- adds r0, r4, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0xA]
- b _080EEA46
- .pool
-_080EE9E8:
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x4]
- adds r4, 0x64
- adds r0, r4, 0
- b _080EEA3C
- .pool
-_080EEA00:
- ldr r2, =gSaveBlock1Ptr
- mov r8, r2
- ldr r6, =gSaveBlock2Ptr
- ldr r0, [r6]
- ldr r1, =0x00000caa
- adds r0, r1
- ldrh r0, [r0]
- movs r5, 0x64
- adds r1, r0, 0
- muls r1, r5
- movs r4, 0xEA
- lsls r4, 1
- adds r1, r4
- ldr r0, [r2]
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x4]
- ldr r0, [r6]
- ldr r2, =0x00000cac
- adds r0, r2
- ldrh r0, [r0]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r4
- mov r2, r8
- ldr r0, [r2]
- adds r0, r1
-_080EEA3C:
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x6]
-_080EEA46:
- adds r0, r7, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r7, 0xC]
-_080EEA52:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE8C8
-
- thumb_func_start sub_80EEA70
-sub_80EEA70: @ 80EEA70
- push {r4-r7,lr}
- sub sp, 0x20
- movs r0, 0x26
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EEA86
- b _080EEB8C
-_080EEA86:
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EEB8C
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r7]
- adds r5, r1, r0
- movs r1, 0
- movs r0, 0x26
- strb r0, [r5]
- strb r1, [r5, 0x1]
- adds r0, r5, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, =0x000040ec
- bl VarGet
- strh r0, [r5, 0x2]
- bl sub_80E980C
- ldr r1, =gStringVar1
- mov r0, sp
- bl StringCopy
- mov r0, sp
- bl StripExtCtrlCodes
- adds r0, r5, 0x4
- mov r1, sp
- bl StringCopy
- ldr r0, =0x000040ed
- bl VarGet
- strh r0, [r5, 0x10]
- ldr r0, =0x000040ee
- bl VarGet
- adds r4, r0, 0
- ldr r0, =0x000040ef
- bl VarGet
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 16
- adds r4, r0
- str r4, [r5, 0xC]
- adds r0, r5, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r5, 0x1B]
- cmp r0, 0x1
- beq _080EEB3A
- ldr r4, [r7]
- ldr r6, =0x00004054
- adds r0, r6, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 5
- adds r4, r1
- ldr r0, =0x00001aa9
- adds r4, r0
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _080EEB70
-_080EEB3A:
- movs r0, 0x1
- b _080EEB8A
- .pool
-_080EEB70:
- adds r0, r6, 0
- bl VarGet
- ldr r2, [r7]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 5
- adds r2, r1
- ldr r1, =0x00001aa9
- adds r2, r1
- ldrb r0, [r2]
-_080EEB8A:
- strb r0, [r5, 0x1C]
-_080EEB8C:
- add sp, 0x20
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEA70
-
- thumb_func_start sub_80EEB98
-sub_80EEB98: @ 80EEB98
- push {r4-r7,lr}
- movs r5, 0
- ldr r6, =gUnknown_0858D0EC
- adds r7, r6, 0x2
- b _080EEBAE
- .pool
-_080EEBA8:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EEBAE:
- cmp r5, 0x6
- bhi _080EEBCE
- lsls r4, r5, 2
- adds r0, r4, r6
- ldrh r0, [r0]
- bl VarGet
- adds r4, r7
- lsls r0, 16
- lsrs r0, 16
- ldrh r4, [r4]
- cmp r0, r4
- bcc _080EEBA8
- adds r0, r5, 0
- bl sub_80EEBF4
-_080EEBCE:
- movs r5, 0
- ldr r4, =gUnknown_0858D0EC
-_080EEBD2:
- lsls r0, r5, 2
- adds r0, r4
- ldrh r0, [r0]
- movs r1, 0
- bl VarSet
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080EEBD2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEB98
-
- thumb_func_start sub_80EEBF4
-sub_80EEBF4: @ 80EEBF4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x25
- movs r1, 0x1
- bl sub_80EF46C
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EEC60
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r4]
- adds r4, r0
- movs r1, 0
- movs r0, 0x25
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- strb r5, [r4, 0x4]
- ldr r1, =gUnknown_0858D0EC
- lsls r0, r5, 2
- adds r0, r1
- ldrh r0, [r0]
- bl VarGet
- strh r0, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x5]
-_080EEC60:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEBF4
-
- thumb_func_start sub_80EEC80
-sub_80EEC80: @ 80EEC80
- push {r4,lr}
- ldr r4, =0x000040e6
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEC80
-
- thumb_func_start sub_80EECA4
-sub_80EECA4: @ 80EECA4
- push {r4,lr}
- ldr r4, =0x000040eb
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EECA4
-
- thumb_func_start sub_80EECC8
-sub_80EECC8: @ 80EECC8
- push {r4,lr}
- ldr r4, =0x000040e7
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EECC8
-
- thumb_func_start sub_80EECEC
-sub_80EECEC: @ 80EECEC
- push {r4,lr}
- ldr r4, =0x000040e8
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EECEC
-
- thumb_func_start sub_80EED10
-sub_80EED10: @ 80EED10
- push {r4,lr}
- ldr r4, =0x000040e9
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EED10
-
- thumb_func_start sub_80EED34
-sub_80EED34: @ 80EED34
- push {r4,lr}
- ldr r4, =0x000040ea
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- ldr r0, =gSpecialVar_0x8006
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EED34
-
- thumb_func_start sub_80EED60
-sub_80EED60: @ 80EED60
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r5, =0x000040f1
- adds r0, r5, 0
- bl VarGet
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl VarSet
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EED60
-
- thumb_func_start sub_80EED88
-sub_80EED88: @ 80EED88
- push {r4-r7,lr}
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080EEE0C
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r7, =0x00002b50
- adds r0, r7
- bl sub_80EEE30
- ldr r5, =gUnknown_030060BC
- strb r0, [r5]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EEE0C
- ldr r0, =0x0000028f
- bl sub_80EFB38
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EEE0C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r4, r0, 0x1
- adds r0, r4, 0
- bl sub_80EF0E4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EEE0C
- ldr r1, [r6]
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 2
- adds r1, r0
- adds r1, r7
- strb r4, [r1]
- ldr r2, [r6]
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 2
- adds r0, r2, r0
- ldr r1, =0x00002b52
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0]
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 2
- adds r2, r0
- ldr r0, =0x00002b51
- adds r2, r0
- movs r0, 0x1
- strb r0, [r2]
-_080EEE0C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EED88
-
- thumb_func_start sub_80EEE30
-sub_80EEE30: @ 80EEE30
- push {lr}
- adds r2, r0, 0
- movs r1, 0
-_080EEE36:
- lsls r0, r1, 24
- asrs r1, r0, 24
- lsls r0, r1, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EEE48
- adds r0, r1, 0
- b _080EEE58
-_080EEE48:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- asrs r0, 24
- cmp r0, 0xF
- ble _080EEE36
- movs r0, 0x1
- negs r0, r0
-_080EEE58:
- pop {r1}
- bx r1
- thumb_func_end sub_80EEE30
-
- thumb_func_start sub_80EEE5C
-sub_80EEE5C: @ 80EEE5C
- push {r4,lr}
- movs r4, 0
-_080EEE60:
- adds r0, r4, 0
- bl sub_80EEE78
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080EEE60
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EEE5C
-
- thumb_func_start sub_80EEE78
-sub_80EEE78: @ 80EEE78
- push {r4,lr}
- lsls r0, 24
- ldr r3, =gSaveBlock1Ptr
- ldr r1, [r3]
- lsrs r0, 22
- adds r1, r0
- ldr r2, =0x00002b50
- adds r1, r2
- movs r2, 0
- strb r2, [r1]
- ldr r1, [r3]
- adds r1, r0
- ldr r4, =0x00002b51
- adds r1, r4
- strb r2, [r1]
- ldr r1, [r3]
- adds r1, r0
- ldr r0, =0x00002b52
- adds r1, r0
- strh r2, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEE78
-
- thumb_func_start sub_80EEEB8
-sub_80EEEB8: @ 80EEEB8
- push {r4-r7,lr}
- movs r2, 0
- ldr r6, =gSaveBlock1Ptr
-_080EEEBE:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r1, r2, 2
- adds r0, r1
- ldr r3, =0x00002b50
- adds r0, r3
- ldrb r0, [r0]
- adds r5, r2, 0x1
- cmp r0, 0
- bne _080EEF12
- lsls r0, r5, 24
- b _080EEF0C
- .pool
-_080EEEE0:
- ldr r3, [r6]
- lsls r4, r2, 2
- adds r0, r3, r4
- ldr r7, =0x00002b50
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EEF08
- adds r0, r3, r7
- adds r1, r0, r1
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r2, 0
- bl sub_80EEE78
- b _080EEF12
- .pool
-_080EEF08:
- adds r0, r2, 0x1
- lsls r0, 24
-_080EEF0C:
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080EEEE0
-_080EEF12:
- lsls r0, r5, 24
- lsrs r2, r0, 24
- cmp r2, 0xE
- bls _080EEEBE
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EEEB8
-
- thumb_func_start sub_80EEF20
-sub_80EEF20: @ 80EEF20
- push {r4,lr}
- movs r2, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
-_080EEF28:
- lsls r0, r2, 2
- adds r1, r3, r0
- ldr r4, =0x00002b50
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EEF58
- adds r4, 0x1
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080EEF58
- adds r4, 0x1
- adds r0, r1, r4
- ldrh r0, [r0]
- cmp r0, 0x2
- bhi _080EEF58
- adds r0, r2, 0
- b _080EEF64
- .pool
-_080EEF58:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080EEF28
- movs r0, 0xFF
-_080EEF64:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EEF20
-
- thumb_func_start sub_80EEF6C
-sub_80EEF6C: @ 80EEF6C
- push {r4,r5,lr}
- bl sub_80EEF20
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _080EEF84
- ldr r1, =gScriptResult
- movs r0, 0
- b _080EF01A
- .pool
-_080EEF84:
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- lsls r4, r2, 2
- adds r1, r0, r4
- ldr r0, =0x00002b52
- adds r2, r1, r0
- ldrh r0, [r2]
- cmp r0, 0
- bne _080EEFE8
- ldr r2, =0x00002b51
- adds r1, r2
- movs r0, 0x2
- strb r0, [r1]
- ldr r0, =gLocalTime
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x13
- bgt _080EEFC8
- ldr r1, =gUnknown_0858D11C
- ldr r0, [r5]
- adds r0, r4
- subs r2, 0x1
- b _080EEFD0
- .pool
-_080EEFC8:
- ldr r1, =gUnknown_0858D130
- ldr r0, [r5]
- adds r0, r4
- ldr r2, =0x00002b50
-_080EEFD0:
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl box_related_two__2
- b _080EF016
- .pool
-_080EEFE8:
- ldrh r1, [r2]
- ldr r0, =gStringVar1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r0, [r5]
- adds r0, r4
- ldr r1, =0x00002b51
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gUnknown_0858D108
- ldr r0, [r5]
- adds r0, r4
- ldr r2, =0x00002b50
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl box_related_two__2
-_080EF016:
- ldr r1, =gScriptResult
- movs r0, 0x1
-_080EF01A:
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEF6C
-
- thumb_func_start GetPriceReduction
-GetPriceReduction: @ 80EF038
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _080EF048
- b _080EF08A
-_080EF044:
- movs r0, 0x1
- b _080EF08C
-_080EF048:
- movs r2, 0
- ldr r4, =gSaveBlock1Ptr
-_080EF04C:
- ldr r1, [r4]
- lsls r0, r2, 2
- adds r1, r0
- ldr r5, =0x00002b50
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, r3
- bne _080EF080
- ldr r2, =0x00002b51
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080EF08A
- adds r0, r3, 0
- bl IsPriceDiscounted
- lsls r0, 24
- cmp r0, 0
- bne _080EF044
- b _080EF08A
- .pool
-_080EF080:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080EF04C
-_080EF08A:
- movs r0, 0
-_080EF08C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetPriceReduction
-
- thumb_func_start IsPriceDiscounted
-IsPriceDiscounted: @ 80EF094
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EF0A6
- cmp r0, 0x3
- beq _080EF0C8
-_080EF0A2:
- movs r0, 0x1
- b _080EF0D6
-_080EF0A6:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- bne _080EF0D4
- ldr r0, =gScriptLastTalked
- ldrh r0, [r0]
- cmp r0, 0x19
- beq _080EF0A2
- b _080EF0D4
- .pool
-_080EF0C8:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- ldr r0, =0x0000150d
- cmp r1, r0
- beq _080EF0A2
-_080EF0D4:
- movs r0, 0
-_080EF0D6:
- pop {r1}
- bx r1
- .pool
- thumb_func_end IsPriceDiscounted
-
- thumb_func_start sub_80EF0E4
-sub_80EF0E4: @ 80EF0E4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080EF0F2
-_080EF0EE:
- movs r0, 0x1
- b _080EF112
-_080EF0F2:
- movs r1, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r4, =0x00002b50
-_080EF0FA:
- lsls r0, r1, 2
- adds r0, r3, r0
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, r2
- beq _080EF0EE
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080EF0FA
- movs r0, 0
-_080EF112:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80EF0E4
-
- thumb_func_start sub_80EF120
-sub_80EF120: @ 80EF120
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
-_080EF130:
- mov r1, r8
- ldr r0, [r1]
- lsls r1, r6, 2
- adds r2, r0, r1
- ldr r3, =0x00002b50
- adds r0, r2, r3
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0
- beq _080EF196
- ldr r1, =0x00002b52
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r7
- bcs _080EF164
- adds r0, r6, 0
- bl sub_80EEE78
- b _080EF196
- .pool
-_080EF164:
- ldr r5, =0x00002b51
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EF186
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- bne _080EF186
- mov r2, r8
- ldr r0, [r2]
- adds r0, r4
- adds r0, r5
- strb r1, [r0]
-_080EF186:
- mov r3, r8
- ldr r1, [r3]
- adds r1, r4
- ldr r0, =0x00002b52
- adds r1, r0
- ldrh r0, [r1]
- subs r0, r7
- strh r0, [r1]
-_080EF196:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xF
- bls _080EF130
- bl sub_80EEEB8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF120
-
- thumb_func_start sub_80EF1BC
-sub_80EF1BC: @ 80EF1BC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x1
- beq _080EF1FC
- cmp r1, 0x1
- bgt _080EF1D6
- cmp r1, 0
- beq _080EF1E0
- b _080EF244
-_080EF1D6:
- cmp r2, 0x2
- beq _080EF218
- cmp r2, 0x3
- beq _080EF234
- b _080EF244
-_080EF1E0:
- ldr r1, =gUnknown_0858D144
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x14]
- bl StringCopy
- b _080EF244
- .pool
-_080EF1FC:
- ldr r1, =gUnknown_0858D144
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x18]
- bl StringCopy
- b _080EF244
- .pool
-_080EF218:
- ldr r1, =gUnknown_0858D144
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x1C]
- bl StringCopy
- b _080EF244
- .pool
-_080EF234:
- ldr r1, =gUnknown_0858D144
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x20]
- bl StringCopy
-_080EF244:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF1BC
-
- thumb_func_start CopyContestCategoryToStringVar
-@ void CopyContestCategoryToStringVar(u8 stringVarIndex, u8 contestCategoryId)
-CopyContestCategoryToStringVar: @ 80EF250
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r0, r1, 24
- cmp r0, 0x4
- bhi _080EF300
- lsls r0, 2
- ldr r1, =_080EF26C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EF26C:
- .4byte _080EF280
- .4byte _080EF29C
- .4byte _080EF2B8
- .4byte _080EF2D4
- .4byte _080EF2F0
-_080EF280:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1]
- bl StringCopy
- b _080EF300
- .pool
-_080EF29C:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x4]
- bl StringCopy
- b _080EF300
- .pool
-_080EF2B8:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x8]
- bl StringCopy
- b _080EF300
- .pool
-_080EF2D4:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0xC]
- bl StringCopy
- b _080EF300
- .pool
-_080EF2F0:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x10]
- bl StringCopy
-_080EF300:
- pop {r0}
- bx r0
- .pool
- thumb_func_end CopyContestCategoryToStringVar
-
- thumb_func_start SetContestCategoryStringVarForInterview
-@ void SetContestCategoryStringVarForInterview()
-SetContestCategoryStringVarForInterview: @ 80EF30C
- push {lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r1, r0
- ldrb r1, [r1, 0x13]
- lsls r1, 29
- lsrs r1, 29
- movs r0, 0x1
- bl CopyContestCategoryToStringVar
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetContestCategoryStringVarForInterview
-
- thumb_func_start sub_80EF340
-sub_80EF340: @ 80EF340
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_80EF370
- adds r3, r0, 0
- ldr r0, =gUnknown_0858D144
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- lsls r3, 24
- lsrs r3, 24
- adds r1, r5, 0
- movs r2, 0
- bl ConvertIntToDecimalStringN
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF340
-
- thumb_func_start sub_80EF370
-sub_80EF370: @ 80EF370
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xA
- bl __divsi3
- cmp r0, 0
- beq _080EF3FC
- adds r0, r4, 0
- movs r1, 0x64
- bl __divsi3
- cmp r0, 0
- bne _080EF38E
- movs r0, 0x2
- b _080EF406
-_080EF38E:
- movs r1, 0xFA
- lsls r1, 2
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3A0
- movs r0, 0x3
- b _080EF406
-_080EF3A0:
- ldr r1, =0x00002710
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3B4
- movs r0, 0x4
- b _080EF406
- .pool
-_080EF3B4:
- ldr r1, =0x000186a0
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3C8
- movs r0, 0x5
- b _080EF406
- .pool
-_080EF3C8:
- ldr r1, =0x000f4240
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3DC
- movs r0, 0x6
- b _080EF406
- .pool
-_080EF3DC:
- ldr r1, =0x00989680
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3F0
- movs r0, 0x7
- b _080EF406
- .pool
-_080EF3F0:
- ldr r1, =0x05f5e100
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- beq _080EF404
-_080EF3FC:
- movs r0, 0x1
- b _080EF406
- .pool
-_080EF404:
- movs r0, 0x8
-_080EF406:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EF370
-
- thumb_func_start sub_80EF40C
-sub_80EF40C: @ 80EF40C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r7, 0
- movs r5, 0
-_080EF41E:
- lsls r4, r5, 1
- adds r0, r6, 0x6
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, 0
- beq _080EF43E
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- adds r1, 0xC
- adds r1, r4
- ldrh r1, [r1]
- muls r0, r1
- adds r7, r0
-_080EF43E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080EF41E
- ldrb r0, [r6, 0x2]
- cmp r0, 0x1
- bne _080EF458
- asrs r1, r7, 1
- mov r0, r8
- bl sub_80EF340
- b _080EF460
-_080EF458:
- mov r0, r8
- adds r1, r7, 0
- bl sub_80EF340
-_080EF460:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EF40C
-
- thumb_func_start sub_80EF46C
-sub_80EF46C: @ 80EF46C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r4, =0x000027cc
- adds r0, r4
- mov r8, r0
- bl sub_80F0020
- adds r7, r0, 0
- movs r6, 0x5
-_080EF494:
- lsls r0, r6, 3
- adds r0, r6
- lsls r0, 2
- mov r2, r8
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, r10
- bne _080EF4E4
- movs r3, 0xFF
- adds r0, r7, 0
- ands r0, r3
- adds r2, r1, 0
- adds r2, 0x22
- ldrb r2, [r2]
- cmp r0, r2
- bne _080EF4E4
- lsrs r0, r7, 8
- ands r0, r3
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080EF4E4
- mov r0, r9
- cmp r0, 0x1
- bne _080EF4D8
- ldr r0, [r5]
- adds r0, r4
- adds r1, r6, 0
- bl sub_80EF910
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EF93C
-_080EF4D8:
- movs r0, 0x1
- b _080EF4F0
- .pool
-_080EF4E4:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x17
- bls _080EF494
- movs r0, 0
-_080EF4F0:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80EF46C
-
- thumb_func_start sub_80EF500
-sub_80EF500: @ 80EF500
- push {r4-r7,lr}
- movs r2, 0
-_080EF504:
- adds r1, r2, 0x1
- lsls r0, r1, 24
- lsrs r5, r0, 24
- adds r7, r1, 0
- cmp r5, 0x2
- bhi _080EF53C
- ldr r6, =gUnknown_02039F80
- lsls r0, r2, 2
- adds r4, r0, r6
-_080EF516:
- lsls r0, r5, 2
- adds r3, r0, r6
- ldrh r0, [r4, 0x2]
- ldrh r1, [r3, 0x2]
- cmp r0, r1
- bcs _080EF532
- ldrh r1, [r4]
- adds r2, r0, 0
- ldrh r0, [r3]
- strh r0, [r4]
- ldrh r0, [r3, 0x2]
- strh r0, [r4, 0x2]
- strh r1, [r3]
- strh r2, [r3, 0x2]
-_080EF532:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080EF516
-_080EF53C:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- cmp r2, 0x1
- bls _080EF504
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF500
-
- thumb_func_start sub_80EF550
-sub_80EF550: @ 80EF550
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0
- ldr r5, =gSaveBlock1Ptr
- ldr r4, =0x000027cc
-_080EF55C:
- ldr r3, [r5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, r3, r0
- adds r0, r2, r4
- ldrb r0, [r0]
- cmp r0, r6
- bne _080EF5A4
- ldr r6, =0x000027cd
- adds r0, r2, r6
- ldrb r2, [r0]
- cmp r2, 0x1
- bne _080EF590
- ldr r0, =gScriptResult
- strh r2, [r0]
- b _080EF5B2
- .pool
-_080EF590:
- adds r0, r3, r4
- bl sub_80EF910
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EF93C
- bl sub_80EFA88
- b _080EF5B2
-_080EF5A4:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080EF55C
- bl sub_80EFA88
-_080EF5B2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80EF550
-
- thumb_func_start InterviewBefore
-InterviewBefore: @ 80EF5B8
- push {lr}
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0xA
- bhi _080EF646
- lsls r0, 2
- ldr r1, =_080EF5E0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EF5E0:
- .4byte _080EF60C
- .4byte _080EF612
- .4byte _080EF618
- .4byte _080EF61E
- .4byte _080EF624
- .4byte _080EF62A
- .4byte _080EF630
- .4byte _080EF636
- .4byte _080EF63C
- .4byte _080EF646
- .4byte _080EF642
-_080EF60C:
- bl sub_80EF64C
- b _080EF646
-_080EF612:
- bl sub_80EF6C4
- b _080EF646
-_080EF618:
- bl sub_80EF704
- b _080EF646
-_080EF61E:
- bl sub_80EF79C
- b _080EF646
-_080EF624:
- bl sub_80EF7A8
- b _080EF646
-_080EF62A:
- bl sub_80EF7B4
- b _080EF646
-_080EF630:
- bl sub_80EF80C
- b _080EF646
-_080EF636:
- bl sub_80EF7F4
- b _080EF646
-_080EF63C:
- bl sub_80EF800
- b _080EF646
-_080EF642:
- bl sub_80EF84C
-_080EF646:
- pop {r0}
- bx r0
- thumb_func_end InterviewBefore
-
- thumb_func_start sub_80EF64C
-sub_80EF64C: @ 80EF64C
- push {r4,lr}
- movs r0, 0x1
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF6A0
- ldr r4, =gStringVar1
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027d0
- adds r0, r1
- movs r1, 0x6
- bl sub_811F88C
-_080EF6A0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF64C
-
- thumb_func_start sub_80EF6C4
-sub_80EF6C4: @ 80EF6C4
- push {lr}
- movs r0, 0x2
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF6F0
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027d0
- adds r0, r1
- movs r1, 0x6
- bl sub_811F88C
-_080EF6F0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF6C4
-
- thumb_func_start sub_80EF704
-sub_80EF704: @ 80EF704
- push {r4-r6,lr}
- movs r0, 0x3
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF774
- ldr r6, =gStringVar1
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0x64
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r5
- adds r0, r4
- ldr r4, =gStringVar2
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027e8
- adds r0, r1
- movs r1, 0x2
- bl sub_811F88C
-_080EF774:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF704
-
- thumb_func_start sub_80EF79C
-sub_80EF79C: @ 80EF79C
- ldr r1, =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80EF79C
-
- thumb_func_start sub_80EF7A8
-sub_80EF7A8: @ 80EF7A8
- push {lr}
- movs r0, 0x5
- bl sub_80EF550
- pop {r0}
- bx r0
- thumb_func_end sub_80EF7A8
-
- thumb_func_start sub_80EF7B4
-sub_80EF7B4: @ 80EF7B4
- push {lr}
- movs r0, 0x6
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF7E0
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027d0
- adds r0, r1
- movs r1, 0x2
- bl sub_811F88C
-_080EF7E0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF7B4
-
- thumb_func_start sub_80EF7F4
-sub_80EF7F4: @ 80EF7F4
- push {lr}
- movs r0, 0x8
- bl sub_80EF550
- pop {r0}
- bx r0
- thumb_func_end sub_80EF7F4
-
- thumb_func_start sub_80EF800
-sub_80EF800: @ 80EF800
- push {lr}
- movs r0, 0x9
- bl sub_80EF550
- pop {r0}
- bx r0
- thumb_func_end sub_80EF800
-
- thumb_func_start sub_80EF80C
-sub_80EF80C: @ 80EF80C
- push {lr}
- movs r0, 0x7
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF838
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027e4
- adds r0, r1
- movs r1, 0x1
- bl sub_811F88C
-_080EF838:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF80C
-
- thumb_func_start sub_80EF84C
-sub_80EF84C: @ 80EF84C
- push {lr}
- movs r0, 0xB
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF878
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027e0
- adds r0, r1
- movs r1, 0x1
- bl sub_811F88C
-_080EF878:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF84C
-
- thumb_func_start sub_80EF88C
-sub_80EF88C: @ 80EF88C
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- ldr r6, =gStringVar1
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
- mov r4, sp
- adds r0, r5, 0
- movs r1, 0x3
- mov r2, sp
- bl GetMonData
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080EF8EC
- adds r0, r5, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- adds r1, r6, 0
- bl StringCompare
- cmp r0, 0
- bne _080EF8EC
- movs r0, 0
- b _080EF8EE
- .pool
-_080EF8EC:
- movs r0, 0x1
-_080EF8EE:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80EF88C
-
- thumb_func_start sub_80EF8F8
-sub_80EF8F8: @ 80EF8F8
- push {lr}
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- bl sub_80EF88C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80EF8F8
-
- thumb_func_start sub_80EF910
-sub_80EF910: @ 80EF910
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- lsls r2, r1, 3
- adds r2, r1
- lsls r2, 2
- adds r2, r0
- movs r0, 0
- strb r0, [r2]
- strb r0, [r2, 0x1]
- movs r1, 0
- adds r2, 0x2
- movs r3, 0
-_080EF92A:
- adds r0, r2, r1
- strb r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x21
- bls _080EF92A
- pop {r0}
- bx r0
- thumb_func_end sub_80EF910
-
- thumb_func_start sub_80EF93C
-sub_80EF93C: @ 80EF93C
- push {r4-r7,lr}
- adds r4, r0, 0
- movs r5, 0
-_080EF942:
- lsls r0, r5, 3
- adds r0, r5
- lsls r1, r0, 2
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EF986
- adds r0, r5, 0x1
- b _080EF97E
-_080EF954:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r4
- ldrb r0, [r3]
- cmp r0, 0
- beq _080EF97C
- adds r1, r4
- adds r0, r3, 0
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80EF910
- b _080EF986
-_080EF97C:
- adds r0, r2, 0x1
-_080EF97E:
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x4
- bls _080EF954
-_080EF986:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _080EF942
- movs r5, 0x5
-_080EF992:
- lsls r0, r5, 3
- adds r0, r5
- lsls r1, r0, 2
- adds r0, r1, r4
- ldrb r0, [r0]
- adds r5, 0x1
- cmp r0, 0
- bne _080EF9D8
- lsls r0, r5, 24
- b _080EF9D2
-_080EF9A6:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r4
- ldrb r0, [r3]
- cmp r0, 0
- beq _080EF9CE
- adds r1, r4
- adds r0, r3, 0
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80EF910
- b _080EF9D8
-_080EF9CE:
- adds r0, r2, 0x1
- lsls r0, 24
-_080EF9D2:
- lsrs r2, r0, 24
- cmp r2, 0x17
- bls _080EF9A6
-_080EF9D8:
- lsls r0, r5, 24
- lsrs r5, r0, 24
- cmp r5, 0x17
- bls _080EF992
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EF93C
-
- thumb_func_start sub_80EF9E8
-sub_80EF9E8: @ 80EF9E8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- lsrs r0, 16
- bl sub_80EFA24
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- ldr r0, =gUnknown_0858D144
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0xB
- muls r1, r5
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80EF9E8
-
- thumb_func_start sub_80EFA24
-sub_80EFA24: @ 80EFA24
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0x0000019b
- bl __umodsi3
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, r4, 0
- b _080EFA62
- .pool
-_080EFA48:
- cmp r4, 0x1
- bne _080EFA54
- ldr r4, =0x0000019b
- b _080EFA5A
- .pool
-_080EFA54:
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_080EFA5A:
- cmp r4, r6
- bne _080EFA62
- adds r4, r5, 0
- b _080EFA7E
-_080EFA62:
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _080EFA48
- cmp r4, r5
- beq _080EFA48
-_080EFA7E:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80EFA24
-
- thumb_func_start sub_80EFA88
-sub_80EFA88: @ 80EFA88
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- ldr r2, =gSpecialVar_0x8006
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- strh r1, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080EFACC
- ldr r1, =gScriptResult
- movs r0, 0x1
- b _080EFAD0
- .pool
-_080EFACC:
- ldr r1, =gScriptResult
- movs r0, 0
-_080EFAD0:
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFA88
-
- thumb_func_start sub_80EFADC
-sub_80EFADC: @ 80EFADC
- push {lr}
- adds r2, r0, 0
- movs r1, 0
-_080EFAE2:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EFAF6
- lsls r0, r1, 24
- asrs r0, 24
- b _080EFB04
-_080EFAF6:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080EFAE2
- movs r0, 0x1
- negs r0, r0
-_080EFB04:
- pop {r1}
- bx r1
- thumb_func_end sub_80EFADC
-
- thumb_func_start sub_80EFB08
-sub_80EFB08: @ 80EFB08
- push {lr}
- adds r2, r0, 0
- movs r1, 0x5
-_080EFB0E:
- lsls r0, r1, 24
- asrs r1, r0, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EFB24
- adds r0, r1, 0
- b _080EFB34
-_080EFB24:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- asrs r0, 24
- cmp r0, 0x17
- ble _080EFB0E
- movs r0, 0x1
- negs r0, r0
-_080EFB34:
- pop {r1}
- bx r1
- thumb_func_end sub_80EFB08
-
- thumb_func_start sub_80EFB38
-sub_80EFB38: @ 80EFB38
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bls _080EFB50
- movs r0, 0x1
- b _080EFB52
-_080EFB50:
- movs r0, 0
-_080EFB52:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EFB38
-
- thumb_func_start sub_80EFB58
-sub_80EFB58: @ 80EFB58
- push {r4-r6,lr}
- adds r4, r0, 0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r2, r0, 24
- adds r5, r4, 0x4
- ldr r6, =0x0000ffff
- b _080EFB7E
- .pool
-_080EFB78:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080EFB7E:
- cmp r2, 0x6
- bne _080EFB84
- movs r2, 0
-_080EFB84:
- lsls r1, r2, 1
- adds r0, r5, r1
- ldrh r0, [r0]
- adds r3, r4, 0x4
- cmp r0, r6
- beq _080EFB78
- ldr r0, =gStringVar3
- adds r1, r3, r1
- ldrh r1, [r1]
- bl CopyEasyChatWord
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFB58
-
- thumb_func_start sub_80EFBA4
-sub_80EFBA4: @ 80EFBA4
- push {lr}
- adds r2, r0, 0
- movs r3, 0
- movs r1, 0
- ldrb r0, [r2, 0x4]
- cmp r0, 0xFF
- beq _080EFBD0
- adds r2, 0x4
-_080EFBB4:
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r0, r3, r0
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bhi _080EFBD0
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080EFBB4
-_080EFBD0:
- movs r0, 0x7
- ands r3, r0
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end sub_80EFBA4
-
- thumb_func_start sub_80EFBDC
-sub_80EFBDC: @ 80EFBDC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- ldr r4, [sp, 0x2C]
- ldr r5, [sp, 0x30]
- mov r8, r5
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 16
- lsrs r3, 16
- lsls r4, 16
- lsrs r4, 16
- movs r2, 0
- movs r7, 0xFF
-_080EFC06:
- mov r1, sp
- adds r0, r1, r2
- ldrb r1, [r0]
- orrs r1, r7
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _080EFC06
- cmp r3, 0
- bne _080EFC72
- mov r4, r8
- adds r4, 0xF
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r6, 0
- bne _080EFC36
- mov r0, sp
- adds r1, r4, r5
- b _080EFC40
-_080EFC36:
- cmp r6, 0x1
- bne _080EFC46
- mov r0, sp
- subs r1, r2, r5
- adds r1, r4, r1
-_080EFC40:
- ldrb r1, [r1]
- strb r1, [r0]
- b _080EFC6C
-_080EFC46:
- cmp r6, 0x2
- bne _080EFC56
- mov r1, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- b _080EFC66
-_080EFC56:
- mov r1, sp
- subs r0, r2, 0x2
- subs r0, r5
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1]
- subs r0, r2, 0x1
- subs r0, r5
-_080EFC66:
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
-_080EFC6C:
- mov r2, r8
- ldrb r1, [r2, 0x1E]
- b _080EFCC8
-_080EFC72:
- cmp r3, 0x1
- bne _080EFCD0
- mov r4, r8
- adds r4, 0x4
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r6, 0
- bne _080EFC8E
- mov r0, sp
- adds r1, r4, r5
- b _080EFC98
-_080EFC8E:
- cmp r6, 0x1
- bne _080EFC9E
- mov r0, sp
- subs r1, r2, r5
- adds r1, r4, r1
-_080EFC98:
- ldrb r1, [r1]
- strb r1, [r0]
- b _080EFCC4
-_080EFC9E:
- cmp r6, 0x2
- bne _080EFCAE
- mov r1, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- b _080EFCBE
-_080EFCAE:
- mov r1, sp
- subs r0, r2, 0x2
- subs r0, r5
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1]
- subs r0, r2, 0x1
- subs r0, r5
-_080EFCBE:
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
-_080EFCC4:
- mov r5, r8
- ldrb r1, [r5, 0x1F]
-_080EFCC8:
- mov r0, sp
- bl ConvertInternationalString
- b _080EFD30
-_080EFCD0:
- movs r0, 0xB
- muls r4, r0
- ldr r7, =gSpeciesNames
- adds r0, r4, r7
- bl StringLength
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r6, 0
- bne _080EFCF0
- mov r0, sp
- adds r1, r5, r4
- b _080EFCFA
- .pool
-_080EFCF0:
- cmp r6, 0x1
- bne _080EFD02
- mov r0, sp
- subs r1, r2, r5
- adds r1, r4
-_080EFCFA:
- adds r1, r7
- ldrb r1, [r1]
- strb r1, [r0]
- b _080EFD30
-_080EFD02:
- cmp r6, 0x2
- bne _080EFD16
- mov r1, sp
- adds r0, r5, r4
- adds r0, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r4, 0x1
- adds r0, r5, r0
- b _080EFD2A
-_080EFD16:
- mov r1, sp
- subs r0, r2, 0x2
- subs r0, r5
- adds r0, r4
- adds r0, r7
- ldrb r0, [r0]
- strb r0, [r1]
- subs r0, r2, 0x1
- subs r0, r5
- adds r0, r4
-_080EFD2A:
- adds r0, r7
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
-_080EFD30:
- ldr r0, =gUnknown_0858D144
- mov r2, r9
- lsls r1, r2, 2
- adds r1, r0
- ldr r0, [r1]
- mov r1, sp
- bl StringCopy
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFBDC
-
- thumb_func_start sub_80EFD54
-sub_80EFD54: @ 80EFD54
- push {r4,lr}
- movs r1, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r0, =gSpecialVar_0x8004
- ldrh r2, [r0]
- ldr r4, =0x000027cc
-_080EFD62:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, r2
- bne _080EFD84
- movs r0, 0x1
- b _080EFD90
- .pool
-_080EFD84:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080EFD62
- movs r0, 0
-_080EFD90:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EFD54
-
- thumb_func_start sub_80EFD98
-sub_80EFD98: @ 80EFD98
- push {r4,lr}
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r4, =gStringVar1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- ldr r0, =gStringVar3
- adds r1, r4, 0
- bl StringCompare
- cmp r0, 0
- beq _080EFDD4
- bl sub_80ED320
- movs r0, 0x1
- b _080EFDD6
- .pool
-_080EFDD4:
- movs r0, 0
-_080EFDD6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EFD98
-
- thumb_func_start sub_80EFDDC
-sub_80EFDDC: @ 80EFDDC
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x8
- ldr r0, =gSpecialVar_0x8004
- mov r9, r0
- ldrh r0, [r0]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r6, =gPlayerParty
- adds r0, r6
- ldr r2, =gStringVar3
- movs r1, 0x2
- bl GetMonData
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- ldr r1, =gStringVar2
- mov r10, r1
- movs r1, 0x2
- mov r2, r10
- bl GetMonData
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- bl GetMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- ldr r0, =c2_080CC144
- str r0, [sp, 0x4]
- movs r0, 0x3
- mov r1, r10
- adds r2, r5, 0
- adds r3, r4, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFDDC
-
- thumb_func_start c2_080CC144
-c2_080CC144: @ 80EFE98
- push {lr}
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r2, =gStringVar2
- movs r1, 0x2
- bl SetMonData
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_080CC144
-
- thumb_func_start sub_80EFEC4
-sub_80EFEC4: @ 80EFEC4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- ldr r0, =gSpecialVar_0x8012
- ldrb r0, [r0]
- ldr r1, =gSpecialVar_0x8013
- ldrb r1, [r1]
- bl GetBoxedMonPtr
- adds r6, r0, 0
- ldr r2, =gStringVar3
- movs r1, 0x2
- bl GetBoxMonData
- ldr r0, =gStringVar2
- mov r8, r0
- adds r0, r6, 0
- movs r1, 0x2
- mov r2, r8
- bl GetBoxMonData
- adds r0, r6, 0
- movs r1, 0xB
- movs r2, 0
- bl GetBoxMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- bl GetBoxMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0
- bl GetBoxMonData
- str r0, [sp]
- ldr r0, =sub_80EFF48
- str r0, [sp, 0x4]
- movs r0, 0x3
- mov r1, r8
- adds r2, r5, 0
- adds r3, r4, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFEC4
-
- thumb_func_start sub_80EFF48
-sub_80EFF48: @ 80EFF48
- push {lr}
- ldr r0, =gSpecialVar_0x8012
- ldrb r0, [r0]
- ldr r1, =gSpecialVar_0x8013
- ldrb r1, [r1]
- ldr r2, =gStringVar2
- bl SetBoxMonNickFromAnyBox
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFF48
-
- thumb_func_start sub_80EFF6C
-sub_80EFF6C: @ 80EFF6C
- push {r4,lr}
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r4, =gStringVar1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFF6C
-
- thumb_func_start sub_80EFF9C
-sub_80EFF9C: @ 80EFF9C
- push {r4,lr}
- bl sub_80F0020
- adds r4, r0, 0
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x1
- movs r2, 0
- bl GetMonData
- cmp r4, r0
- bne _080EFFD0
- ldr r1, =gScriptResult
- movs r0, 0
- b _080EFFD4
- .pool
-_080EFFD0:
- ldr r1, =gScriptResult
- movs r0, 0x1
-_080EFFD4:
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFF9C
-
- thumb_func_start sub_80EFFE0
-sub_80EFFE0: @ 80EFFE0
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- cmp r1, 0
- beq _080F0016
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _080EFFFA
- movs r0, 0x2
- b _080F001C
-_080EFFFA:
- adds r0, r1, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _080F000A
- movs r0, 0x3
- b _080F001C
-_080F000A:
- adds r0, r2, 0
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bls _080F001A
-_080F0016:
- movs r0, 0
- b _080F001C
-_080F001A:
- movs r0, 0x4
-_080F001C:
- pop {r1}
- bx r1
- thumb_func_end sub_80EFFE0
-
- thumb_func_start sub_80F0020
-sub_80F0020: @ 80F0020
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r0, [r2, 0xD]
- lsls r0, 24
- ldrb r1, [r2, 0xC]
- lsls r1, 16
- orrs r0, r1
- ldrb r1, [r2, 0xB]
- lsls r1, 8
- orrs r0, r1
- ldrb r1, [r2, 0xA]
- orrs r0, r1
- bx lr
- .pool
- thumb_func_end sub_80F0020
-
- thumb_func_start CheckForBigMovieOrEmergencyNewsOnTV
-CheckForBigMovieOrEmergencyNewsOnTV: @ 80F0040
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bne _080F0060
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _080F006C
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _080F0074
-_080F0060:
- movs r0, 0
- b _080F009E
- .pool
-_080F006C:
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bne _080F0060
-_080F0074:
- ldr r0, =0x000008bd
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F0092
- movs r0, 0x89
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F009C
-_080F0092:
- movs r0, 0x1
- b _080F009E
- .pool
-_080F009C:
- movs r0, 0x2
-_080F009E:
- pop {r1}
- bx r1
- thumb_func_end CheckForBigMovieOrEmergencyNewsOnTV
-
- thumb_func_start GetMomOrDadStringForTVMessage
-GetMomOrDadStringForTVMessage: @ 80F00A4
- push {r4,lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bne _080F0104
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _080F00EC
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bne _080F0104
- ldr r0, =gStringVar1
- ldr r1, =gText_Mom
- bl StringCopy
- ldr r0, =0x00004003
- movs r1, 0x1
- bl VarSet
- b _080F0104
- .pool
-_080F00EC:
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bne _080F0104
- ldr r0, =gStringVar1
- ldr r1, =gText_Mom
- bl StringCopy
- ldr r0, =0x00004003
- movs r1, 0x1
- bl VarSet
-_080F0104:
- ldr r4, =0x00004003
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _080F0142
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- beq _080F0158
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bls _080F016C
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080F0158
-_080F0142:
- ldr r0, =gStringVar1
- ldr r1, =gText_Mom
- bl StringCopy
- b _080F01A8
- .pool
-_080F0158:
- ldr r0, =gStringVar1
- ldr r1, =gText_Dad
- bl StringCopy
- b _080F01A8
- .pool
-_080F016C:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F0198
- ldr r0, =gStringVar1
- ldr r1, =gText_Mom
- bl StringCopy
- adds r0, r4, 0
- movs r1, 0x1
- bl VarSet
- b _080F01A8
- .pool
-_080F0198:
- ldr r0, =gStringVar1
- ldr r1, =gText_Dad
- bl StringCopy
- adds r0, r4, 0
- movs r1, 0x2
- bl VarSet
-_080F01A8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end GetMomOrDadStringForTVMessage
-
- thumb_func_start sub_80F01B8
-sub_80F01B8: @ 80F01B8
- push {lr}
- ldr r0, =0x000040bc
- movs r1, 0
- bl VarSet
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x5
- bl RemoveFieldObjectByLocalIdAndMap
- ldr r0, =0x00000396
- bl FlagSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F01B8
-
- thumb_func_start sub_80F01E8
-sub_80F01E8: @ 80F01E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- movs r0, 0xE1
- lsls r0, 4
- bl Alloc
- mov r8, r0
- cmp r0, 0
- bne _080F0206
- b _080F0344
-_080F0206:
- movs r4, 0
-_080F0208:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 5
- adds r0, r4
- lsls r0, 2
- add r0, r8
- adds r1, r4, 0
- muls r1, r5
- adds r1, r7, r1
- movs r2, 0xE1
- lsls r2, 2
- bl memcpy
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080F0208
- mov r5, r8
- movs r4, 0
- ldr r7, =gLinkPlayers
- b _080F0276
- .pool
-_080F0238:
- lsls r0, r4, 3
- subs r2, r0, r4
- lsls r0, r2, 2
- adds r3, r0, r7
- ldrb r1, [r3]
- subs r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080F025A
- lsls r0, r2, 5
- adds r0, r4
- lsls r0, 2
- adds r0, r5, r0
- bl sub_80F1254
- b _080F0270
-_080F025A:
- cmp r1, 0x3
- bne _080F0270
- ldrh r0, [r3, 0x1A]
- cmp r0, 0x1
- bne _080F0270
- lsls r0, r2, 5
- adds r0, r4
- lsls r0, 2
- adds r0, r5, r0
- bl sub_80F12A4
-_080F0270:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080F0276:
- bl sub_8009FCC
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _080F0238
- cmp r6, 0x1
- beq _080F02C4
- cmp r6, 0x1
- bgt _080F0290
- cmp r6, 0
- beq _080F029A
- b _080F031E
-_080F0290:
- cmp r6, 0x2
- beq _080F02DC
- cmp r6, 0x3
- beq _080F0304
- b _080F031E
-_080F029A:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- movs r2, 0xE1
- lsls r2, 2
- adds r1, r5, r2
- movs r3, 0xE1
- lsls r3, 3
- adds r2, r5, r3
- ldr r4, =0x00000a8c
- adds r3, r5, r4
- bl sub_80F0358
- b _080F031E
- .pool
-_080F02C4:
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x000027cc
- adds r1, r0
- movs r3, 0xE1
- lsls r3, 3
- adds r2, r5, r3
- b _080F02EA
- .pool
-_080F02DC:
- movs r0, 0xE1
- lsls r0, 2
- adds r1, r5, r0
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r3, =0x000027cc
- adds r2, r3
-_080F02EA:
- ldr r4, =0x00000a8c
- adds r3, r5, r4
- adds r0, r5, 0
- bl sub_80F0358
- b _080F031E
- .pool
-_080F0304:
- movs r0, 0xE1
- lsls r0, 2
- adds r1, r5, r0
- movs r3, 0xE1
- lsls r3, 3
- adds r2, r5, r3
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r4, =0x000027cc
- adds r3, r4
- adds r0, r5, 0
- bl sub_80F0358
-_080F031E:
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r4, =0x000027cc
- adds r0, r4
- bl sub_80EF93C
- bl sub_80F0C04
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EF93C
- bl sub_80F0708
- bl sub_80F0B64
- mov r0, r8
- bl Free
-_080F0344:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F01E8
-
- thumb_func_start sub_80F0358
-sub_80F0358: @ 80F0358
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- str r2, [sp, 0x18]
- str r3, [sp, 0x1C]
- add r0, sp, 0x10
- str r0, [sp]
- add r0, sp, 0x14
- str r0, [sp, 0x4]
- add r0, sp, 0x18
- str r0, [sp, 0x8]
- add r0, sp, 0x1C
- str r0, [sp, 0xC]
- bl sub_8009FCC
- ldr r1, =gUnknown_03001174
- strb r0, [r1]
-_080F0384:
- movs r6, 0
- ldr r0, =gUnknown_03001174
- ldrb r1, [r0]
- cmp r6, r1
- bcs _080F0384
- mov r10, r0
-_080F0390:
- cmp r6, 0
- bne _080F0398
- ldr r2, =gUnknown_0203A02C
- strb r6, [r2]
-_080F0398:
- lsls r4, r6, 2
- mov r3, sp
- adds r0, r3, r4
- ldr r0, [r0]
- ldr r0, [r0]
- bl sub_80F06D0
- ldr r1, =gUnknown_03001176
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- adds r7, r4, 0
- cmp r0, r1
- bne _080F03E0
- ldr r1, =gUnknown_0203A02C
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- mov r2, r10
- ldrb r2, [r2]
- cmp r0, r2
- beq _080F048C
- adds r6, 0x1
- mov r9, r6
- b _080F0470
- .pool
-_080F03E0:
- movs r5, 0
- mov r3, r10
- ldrb r0, [r3]
- subs r0, 0x1
- adds r2, r6, 0x1
- mov r9, r2
- cmp r5, r0
- bge _080F0456
- ldr r3, =gUnknown_03001174
- mov r8, r3
-_080F03F4:
- adds r0, r6, r5
- adds r4, r0, 0x1
- mov r0, r8
- ldrb r1, [r0]
- adds r0, r4, 0
- bl __modsi3
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r0, [r0]
- bl sub_80EFB08
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080F0446
- mov r2, r8
- ldrb r1, [r2]
- adds r0, r4, 0
- bl __modsi3
- adds r2, r0, 0
- lsls r0, r2, 2
- add r0, sp
- ldr r0, [r0]
- mov r3, sp
- adds r1, r3, r7
- ldr r1, [r1]
- lsls r2, 24
- lsrs r2, 24
- bl sub_80F049C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F0456
-_080F0446:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r8
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r5, r0
- blt _080F03F4
-_080F0456:
- mov r2, r10
- ldrb r0, [r2]
- subs r0, 0x1
- cmp r5, r0
- bne _080F0470
- mov r3, sp
- adds r0, r3, r7
- ldr r0, [r0]
- ldr r0, [r0]
- ldr r1, =gUnknown_03001176
- ldrb r1, [r1]
- bl sub_80EF910
-_080F0470:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r6, r0, 24
- mov r2, r10
- ldrb r2, [r2]
- cmp r6, r2
- bcc _080F0390
- b _080F0384
- .pool
-_080F048C:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F0358
-
- thumb_func_start sub_80F049C
-sub_80F049C: @ 80F049C
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r4, [r0]
- ldr r6, [r1]
- movs r5, 0
- ldr r2, =gUnknown_03001176
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0]
- str r2, [sp]
- bl sub_80EFFE0
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- ldr r2, [sp]
- cmp r0, 0x3
- beq _080F050C
- cmp r0, 0x3
- bgt _080F04DC
- cmp r0, 0x2
- beq _080F04E2
- b _080F055A
- .pool
-_080F04DC:
- cmp r1, 0x4
- beq _080F0534
- b _080F055A
-_080F04E2:
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r6, r1
- adds r2, r7, 0
- bl sub_80F0580
- b _080F0556
- .pool
-_080F050C:
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r6, r1
- adds r2, r7, 0
- bl sub_80F05E8
- b _080F0556
- .pool
-_080F0534:
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r6, r1
- adds r2, r7, 0
- bl sub_80F0668
-_080F0556:
- lsls r0, 24
- lsrs r5, r0, 24
-_080F055A:
- cmp r5, 0x1
- beq _080F0568
- movs r0, 0
- b _080F0574
- .pool
-_080F0568:
- ldr r0, =gUnknown_03001176
- ldrb r1, [r0]
- adds r0, r6, 0
- bl sub_80EF910
- movs r0, 0x1
-_080F0574:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80F049C
-
- thumb_func_start sub_80F0580
-sub_80F0580: @ 80F0580
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_800A2A4
- adds r5, r0, 0
- movs r2, 0xFF
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F05B0
- lsrs r0, r5, 8
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F05B0
- movs r0, 0
- b _080F05E0
-_080F05B0:
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r0, [r1]
- adds r2, r4, 0
- adds r2, 0x22
- strb r0, [r2]
- adds r3, r4, 0
- adds r3, 0x21
- ldrb r0, [r3]
- adds r2, 0x1
- strb r0, [r2]
- strb r5, [r1]
- lsrs r0, r5, 8
- strb r0, [r3]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
-_080F05E0:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F0580
-
- thumb_func_start sub_80F05E8
-sub_80F05E8: @ 80F05E8
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_800A2A4
- adds r2, r0, 0
- movs r3, 0xFF
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0614
- lsrs r0, r2, 8
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r0, r1
- beq _080F0634
-_080F0614:
- movs r3, 0xFF
- adds r0, r2, 0
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x22
- lsrs r5, r2, 8
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0638
- adds r0, r5, 0
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0638
-_080F0634:
- movs r0, 0
- b _080F0660
-_080F0638:
- ldrb r1, [r4, 0x1E]
- adds r0, r4, 0
- adds r0, 0x20
- strb r1, [r0]
- ldrb r0, [r4, 0x1F]
- adds r1, r4, 0
- adds r1, 0x21
- strb r0, [r1]
- strb r2, [r4, 0x1E]
- strb r5, [r4, 0x1F]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
-_080F0660:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F05E8
-
- thumb_func_start sub_80F0668
-sub_80F0668: @ 80F0668
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_800A2A4
- adds r5, r0, 0
- movs r2, 0xFF
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0698
- lsrs r0, r5, 8
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0698
- movs r0, 0
- b _080F06CA
-_080F0698:
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r0, [r1]
- adds r2, r4, 0
- adds r2, 0x22
- strb r0, [r2]
- adds r3, r4, 0
- adds r3, 0x21
- ldrb r0, [r3]
- adds r2, 0x1
- strb r0, [r2]
- strb r5, [r1]
- lsrs r0, r5, 8
- strb r0, [r3]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
- strh r0, [r6, 0x16]
-_080F06CA:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F0668
-
- thumb_func_start sub_80F06D0
-sub_80F06D0: @ 80F06D0
- push {lr}
- adds r3, r0, 0
- movs r2, 0
-_080F06D6:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r3
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _080F06F6
- ldrb r0, [r1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- bhi _080F06F6
- lsls r0, r2, 24
- asrs r0, 24
- b _080F0704
-_080F06F6:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x17
- bls _080F06D6
- movs r0, 0x1
- negs r0, r0
-_080F0704:
- pop {r1}
- bx r1
- thumb_func_end sub_80F06D0
-
- thumb_func_start sub_80F0708
-sub_80F0708: @ 80F0708
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- movs r0, 0
- mov r9, r0
-_080F0716:
- ldr r3, =gSaveBlock1Ptr
- ldr r1, [r3]
- mov r4, r9
- lsls r2, r4, 3
- adds r0, r2, r4
- lsls r0, 2
- adds r1, r0
- ldr r0, =0x000027cc
- adds r1, r0
- ldrb r0, [r1]
- adds r7, r2, 0
- cmp r0, 0x29
- bls _080F0732
- b _080F0AD8
-_080F0732:
- lsls r0, 2
- ldr r1, =_080F0748
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F0748:
- .4byte _080F0AE2
- .4byte _080F0848
- .4byte _080F0AE2
- .4byte _080F0860
- .4byte _080F0878
- .4byte _080F0890
- .4byte _080F08BC
- .4byte _080F08D4
- .4byte _080F07F0
- .4byte _080F0AE2
- .4byte _080F081C
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0900
- .4byte _080F0AE2
- .4byte _080F0918
- .4byte _080F0944
- .4byte _080F095C
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0974
- .4byte _080F09A0
- .4byte _080F0AE2
- .4byte _080F09C0
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F09F4
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AD8
- .4byte _080F0AE2
-_080F07F0:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x12]
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x2]
- b _080F09E6
- .pool
-_080F081C:
- ldr r0, [r3]
- mov r2, r9
- adds r4, r7, r2
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x16]
- lsls r5, r2, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x2]
- b _080F09E6
- .pool
-_080F0848:
- ldr r0, [r3]
- mov r4, r9
- adds r1, r7, r4
- lsls r1, 2
- adds r1, r0
- ldr r0, =0x000027cc
- adds r1, r0
- ldrh r0, [r1, 0x2]
- b _080F09B0
- .pool
-_080F0860:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x2]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F0878:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x6]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F0890:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x2]
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x1C]
- b _080F09E6
- .pool
-_080F08BC:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x2]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F08D4:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0xA]
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x14]
- b _080F09E6
- .pool
-_080F0900:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x10]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F0918:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0xC]
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0xE]
- b _080F09E6
- .pool
-_080F0944:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x4]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F095C:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x8]
- b _080F09D0
- .pool
-_080F0974:
- ldr r0, [r3]
- mov r2, r9
- adds r4, r7, r2
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x2]
- lsls r5, r2, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0xA]
- b _080F09E6
- .pool
-_080F09A0:
- ldr r0, [r3]
- mov r4, r9
- adds r1, r7, r4
- lsls r1, 2
- adds r1, r0
- ldr r0, =0x000027cc
- adds r1, r0
- ldrh r0, [r1, 0x8]
-_080F09B0:
- lsls r1, r4, 24
-_080F09B2:
- lsrs r1, 24
- bl sub_80F0B24
- b _080F0AE2
- .pool
-_080F09C0:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x6]
-_080F09D0:
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x4]
-_080F09E6:
- adds r1, r5, 0
- bl sub_80F0B24
- b _080F0AE2
- .pool
-_080F09F4:
- ldr r0, [r3]
- mov r2, r9
- adds r4, r7, r2
- lsls r4, 2
- adds r0, r4, r0
- ldr r5, =0x000027cc
- adds r0, r5
- ldrh r0, [r0, 0x4]
- lsls r2, 24
- mov r8, r2
- lsrs r6, r2, 24
- adds r1, r6, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r0, r4, r0
- adds r0, r5
- ldrh r0, [r0, 0x6]
- adds r1, r6, 0
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r5
- ldrb r0, [r4, 0xD]
- subs r0, 0x1
- mov r6, r8
- cmp r0, 0xC
- bhi _080F0AE2
- lsls r0, 2
- ldr r1, =_080F0A48
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F0A48:
- .4byte _080F0A7C
- .4byte _080F0AA0
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
-_080F0A7C:
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- mov r4, r9
- adds r0, r7, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, =0x000027cc
- adds r0, r1
- ldrh r0, [r0, 0x8]
- lsrs r1, r6, 24
- bl sub_80F0B24
- b _080F0AE2
- .pool
-_080F0AA0:
- ldr r2, =gSaveBlock1Ptr
- ldr r0, [r2]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r5, =0x000027cc
- adds r0, r5
- ldrh r0, [r0, 0x8]
- lsrs r6, 24
- adds r1, r6, 0
- str r2, [sp]
- bl sub_80F0B24
- ldr r2, [sp]
- ldr r0, [r2]
- adds r4, r0
- adds r4, r5
- ldrh r0, [r4, 0xA]
- adds r1, r6, 0
- bl sub_80F0B24
- b _080F0AE2
- .pool
-_080F0AD8:
- mov r2, r9
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_80F0B00
-_080F0AE2:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r0, 0x17
- bhi _080F0AF2
- b _080F0716
-_080F0AF2:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F0708
-
- thumb_func_start sub_80F0B00
-sub_80F0B00: @ 80F0B00
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r2, r1
- ldr r0, =0x000027cd
- adds r2, r0
- movs r0, 0
- strb r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_80F0B00
-
- thumb_func_start sub_80F0B24
-sub_80F0B24: @ 80F0B24
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- asrs r2, r0, 24
- cmp r2, 0
- bne _080F0B56
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, r0
- ldr r0, =0x000027cd
- adds r1, r0
- strb r2, [r1]
-_080F0B56:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0B24
-
- thumb_func_start sub_80F0B64
-sub_80F0B64: @ 80F0B64
- push {r4-r6,lr}
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F0BA2
- movs r2, 0
- ldr r4, =0x000027cd
- movs r3, 0
- ldr r5, =gSaveBlock1Ptr
-_080F0B7C:
- ldr r0, [r5]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r0, r1
- ldr r6, =0x000027cc
- adds r0, r1, r6
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _080F0B94
- cmp r0, 0x29
- bne _080F0B98
-_080F0B94:
- adds r0, r1, r4
- strb r3, [r0]
-_080F0B98:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x17
- bls _080F0B7C
-_080F0BA2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0B64
-
- thumb_func_start sub_80F0BB8
-sub_80F0BB8: @ 80F0BB8
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, =gSaveBlock1Ptr
-_080F0BBE:
- ldr r1, [r6]
- lsls r0, r5, 3
- adds r0, r5
- lsls r4, r0, 2
- adds r1, r4
- ldr r0, =0x000027cc
- adds r1, r0
- ldrb r0, [r1]
- bl sub_80EFFE0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080F0BE6
- ldr r0, [r6]
- adds r0, r4
- ldr r1, =0x000027cd
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080F0BE6:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _080F0BBE
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0BB8
-
- thumb_func_start sub_80F0C04
-sub_80F0C04: @ 80F0C04
- push {r4,r5,lr}
- movs r3, 0
- movs r2, 0x5
- ldr r0, =gSaveBlock1Ptr
- ldr r4, [r0]
- ldr r5, =0x000027cc
-_080F0C10:
- lsls r0, r2, 24
- asrs r1, r0, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F0C2E
- lsls r0, r3, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r3, r0, 24
-_080F0C2E:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- asrs r0, 24
- cmp r0, 0x17
- ble _080F0C10
- movs r2, 0
- lsls r0, r3, 24
- asrs r0, 24
- movs r1, 0x5
- subs r0, r1, r0
- cmp r2, r0
- bge _080F0C6E
- adds r5, r0, 0
-_080F0C4A:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- lsls r1, r2, 24
- asrs r4, r1, 24
- movs r2, 0xA0
- lsls r2, 19
- adds r1, r2
- lsrs r1, 24
- bl sub_80EF910
- adds r4, 0x1
- lsls r4, 24
- lsrs r2, r4, 24
- asrs r4, 24
- cmp r4, r5
- blt _080F0C4A
-_080F0C6E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0C04
-
- thumb_func_start sub_80F0C7C
-sub_80F0C7C: @ 80F0C7C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- movs r0, 0x80
- lsls r0, 1
- bl Alloc
- adds r5, r0, 0
- cmp r5, 0
- beq _080F0D4C
- movs r4, 0
-_080F0C9A:
- lsls r0, r4, 6
- adds r0, r5
- adds r1, r4, 0
- muls r1, r7
- add r1, r8
- movs r2, 0x40
- bl memcpy
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080F0C9A
- cmp r6, 0x1
- beq _080F0CF0
- cmp r6, 0x1
- bgt _080F0CC2
- cmp r6, 0
- beq _080F0CCC
- b _080F0D3E
-_080F0CC2:
- cmp r6, 0x2
- beq _080F0D08
- cmp r6, 0x3
- beq _080F0D28
- b _080F0D3E
-_080F0CCC:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002b50
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x40
- adds r2, r5, 0
- adds r2, 0x80
- adds r3, r5, 0
- adds r3, 0xC0
- bl sub_80F0D60
- b _080F0D3E
- .pool
-_080F0CF0:
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00002b50
- adds r1, r0
- adds r2, r5, 0
- adds r2, 0x80
- b _080F0D14
- .pool
-_080F0D08:
- adds r1, r5, 0
- adds r1, 0x40
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, =0x00002b50
- adds r2, r0
-_080F0D14:
- adds r3, r5, 0
- adds r3, 0xC0
- adds r0, r5, 0
- bl sub_80F0D60
- b _080F0D3E
- .pool
-_080F0D28:
- adds r1, r5, 0
- adds r1, 0x40
- adds r2, r5, 0
- adds r2, 0x80
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r0, =0x00002b50
- adds r3, r0
- adds r0, r5, 0
- bl sub_80F0D60
-_080F0D3E:
- bl sub_80F0EEC
- bl sub_80F0F24
- adds r0, r5, 0
- bl Free
-_080F0D4C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0C7C
-
- thumb_func_start sub_80F0D60
-sub_80F0D60: @ 80F0D60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- str r2, [sp, 0x18]
- str r3, [sp, 0x1C]
- add r0, sp, 0x10
- str r0, [sp]
- add r0, sp, 0x14
- str r0, [sp, 0x4]
- add r0, sp, 0x18
- str r0, [sp, 0x8]
- add r0, sp, 0x1C
- str r0, [sp, 0xC]
- bl sub_8009FCC
- ldr r1, =gUnknown_03001175
- strb r0, [r1]
- movs r0, 0
- mov r10, r0
-_080F0D90:
- movs r7, 0
- mov r1, r10
- adds r1, 0x1
- str r1, [sp, 0x20]
- b _080F0E28
- .pool
-_080F0DA0:
- lsls r4, r7, 2
- mov r1, sp
- adds r0, r1, r4
- ldr r0, [r0]
- ldr r0, [r0]
- mov r1, r10
- bl sub_80F0ECC
- ldr r1, =gUnknown_03001176
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- mov r8, r4
- adds r1, r7, 0x1
- mov r9, r1
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080F0E22
- movs r5, 0
- ldr r1, =gUnknown_03001175
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r5, r0
- bge _080F0E22
- adds r6, r1, 0
-_080F0DD4:
- adds r0, r7, r5
- adds r4, r0, 0x1
- ldrb r1, [r6]
- adds r0, r4, 0
- bl __modsi3
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r0, [r0]
- bl sub_80EEE30
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080F0E14
- ldrb r1, [r6]
- adds r0, r4, 0
- bl __modsi3
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- mov r1, sp
- add r1, r8
- ldr r1, [r1]
- bl sub_80F0E58
-_080F0E14:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r6]
- subs r0, 0x1
- cmp r5, r0
- blt _080F0DD4
-_080F0E22:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r7, r0, 24
-_080F0E28:
- ldr r0, =gUnknown_03001175
- ldrb r0, [r0]
- cmp r7, r0
- bcc _080F0DA0
- ldr r1, [sp, 0x20]
- lsls r0, r1, 24
- lsrs r0, 24
- mov r10, r0
- cmp r0, 0xF
- bls _080F0D90
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0D60
-
- thumb_func_start sub_80F0E58
-sub_80F0E58: @ 80F0E58
- push {lr}
- ldr r0, [r0]
- ldr r1, [r1]
- ldr r2, =gUnknown_03001176
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r2, 2
- adds r1, r2
- ldr r2, =gUnknown_030060BC
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- bl sub_80F0E84
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0E58
-
- thumb_func_start sub_80F0E84
-sub_80F0E84: @ 80F0E84
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- ldrb r3, [r5]
- adds r0, r3, 0
- cmp r0, 0
- bne _080F0E9A
-_080F0E96:
- movs r0, 0
- b _080F0EC6
-_080F0E9A:
- movs r1, 0
- adds r2, r3, 0
- adds r3, r0, 0
-_080F0EA0:
- lsls r0, r1, 2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, r3
- beq _080F0E96
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080F0EA0
- lsls r0, r6, 24
- asrs r0, 22
- adds r0, r4
- strb r2, [r0]
- movs r1, 0x1
- strb r1, [r0, 0x1]
- ldrh r1, [r5, 0x2]
- strh r1, [r0, 0x2]
- movs r0, 0x1
-_080F0EC6:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F0E84
-
- thumb_func_start sub_80F0ECC
-sub_80F0ECC: @ 80F0ECC
- push {lr}
- lsls r1, 24
- lsrs r2, r1, 24
- lsls r1, r2, 2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080F0EE2
- lsls r0, r2, 24
- asrs r0, 24
- b _080F0EE6
-_080F0EE2:
- movs r0, 0x1
- negs r0, r0
-_080F0EE6:
- pop {r1}
- bx r1
- thumb_func_end sub_80F0ECC
-
- thumb_func_start sub_80F0EEC
-sub_80F0EEC: @ 80F0EEC
- push {r4,lr}
- movs r4, 0
-_080F0EF0:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r1, r4, 2
- adds r0, r1
- ldr r1, =0x00002b50
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _080F0F08
- adds r0, r4, 0
- bl sub_80EEE78
-_080F0F08:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080F0EF0
- bl sub_80EEEB8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0EEC
-
- thumb_func_start sub_80F0F24
-sub_80F0F24: @ 80F0F24
- push {r4,r5,lr}
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F0F50
- movs r2, 0
- ldr r5, =gSaveBlock1Ptr
- ldr r4, =0x00002b51
- movs r3, 0
-_080F0F3C:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r1
- adds r0, r4
- strb r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080F0F3C
-_080F0F50:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0F24
-
- thumb_func_start sub_80F0F64
-sub_80F0F64: @ 80F0F64
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- movs r0, 0x2C
- bl AllocZeroed
- adds r4, r0, 0
- movs r7, 0
-_080F0F74:
- lsls r0, r7, 3
- adds r1, r0, r7
- lsls r1, 2
- adds r1, r6
- ldrb r1, [r1]
- subs r1, 0x1
- adds r2, r0, 0
- cmp r1, 0x28
- bls _080F0F88
- b _080F11F4
-_080F0F88:
- lsls r0, r1, 2
- ldr r1, =_080F0F98
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F0F98:
- .4byte _080F103C
- .4byte _080F103C
- .4byte _080F105A
- .4byte _080F11F4
- .4byte _080F1152
- .4byte _080F111E
- .4byte _080F10E6
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F1092
- .4byte _080F10C6
- .4byte _080F118A
- .4byte _080F11AA
- .4byte _080F11CA
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11EA
-_080F103C:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4]
- adds r0, 0x10
- bl sub_8009228
- cmp r0, 0
- beq _080F1056
- ldr r1, [r4]
- movs r0, 0x1
- strb r0, [r1, 0x18]
- b _080F11F4
-_080F1056:
- ldr r0, [r4]
- b _080F11F2
-_080F105A:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x4]
- adds r0, 0x5
- bl sub_8009228
- cmp r0, 0
- beq _080F1074
- ldr r1, [r4, 0x4]
- movs r0, 0x1
- strb r0, [r1, 0xD]
- b _080F1078
-_080F1074:
- ldr r0, [r4, 0x4]
- strb r5, [r0, 0xD]
-_080F1078:
- ldr r0, [r4, 0x4]
- adds r0, 0x10
- bl sub_8009228
- cmp r0, 0
- beq _080F108C
- ldr r1, [r4, 0x4]
- movs r0, 0x1
- strb r0, [r1, 0xE]
- b _080F11F4
-_080F108C:
- ldr r0, [r4, 0x4]
- strb r5, [r0, 0xE]
- b _080F11F4
-_080F1092:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x18]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F10AC
- ldr r1, [r4, 0x18]
- movs r0, 0x1
- strb r0, [r1, 0x2]
- b _080F10B0
-_080F10AC:
- ldr r0, [r4, 0x18]
- strb r5, [r0, 0x2]
-_080F10B0:
- ldr r0, [r4, 0x18]
- adds r0, 0x4
- bl sub_8009228
- cmp r0, 0
- beq _080F10C0
- ldr r1, [r4, 0x18]
- b _080F10DA
-_080F10C0:
- ldr r0, [r4, 0x18]
- strb r5, [r0, 0x3]
- b _080F11F4
-_080F10C6:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x1C]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F10E0
- ldr r1, [r4, 0x1C]
-_080F10DA:
- movs r0, 0x1
- strb r0, [r1, 0x3]
- b _080F11F4
-_080F10E0:
- ldr r0, [r4, 0x1C]
- strb r5, [r0, 0x3]
- b _080F11F4
-_080F10E6:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x14]
- adds r0, 0x2
- bl sub_8009228
- cmp r0, 0
- beq _080F1100
- ldr r1, [r4, 0x14]
- movs r0, 0x1
- strb r0, [r1, 0x1D]
- b _080F1104
-_080F1100:
- ldr r0, [r4, 0x14]
- strb r5, [r0, 0x1D]
-_080F1104:
- ldr r0, [r4, 0x14]
- adds r0, 0xC
- bl sub_8009228
- cmp r0, 0
- beq _080F1118
- ldr r1, [r4, 0x14]
- movs r0, 0x1
- strb r0, [r1, 0x1E]
- b _080F11F4
-_080F1118:
- ldr r0, [r4, 0x14]
- strb r5, [r0, 0x1E]
- b _080F11F4
-_080F111E:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x10]
- adds r0, 0x16
- bl sub_8009228
- cmp r0, 0
- beq _080F1138
- ldr r1, [r4, 0x10]
- movs r0, 0x1
- strb r0, [r1, 0x1E]
- b _080F113C
-_080F1138:
- ldr r0, [r4, 0x10]
- strb r5, [r0, 0x1E]
-_080F113C:
- ldr r0, [r4, 0x10]
- adds r0, 0x8
- bl sub_8009228
- cmp r0, 0
- beq _080F114C
- ldr r1, [r4, 0x10]
- b _080F117E
-_080F114C:
- ldr r0, [r4, 0x10]
- strb r5, [r0, 0x1F]
- b _080F11F4
-_080F1152:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0xC]
- adds r0, 0xF
- bl sub_8009228
- cmp r0, 0
- beq _080F116C
- ldr r1, [r4, 0xC]
- movs r0, 0x1
- strb r0, [r1, 0x1E]
- b _080F1170
-_080F116C:
- ldr r0, [r4, 0xC]
- strb r5, [r0, 0x1E]
-_080F1170:
- ldr r0, [r4, 0xC]
- adds r0, 0x4
- bl sub_8009228
- cmp r0, 0
- beq _080F1184
- ldr r1, [r4, 0xC]
-_080F117E:
- movs r0, 0x1
- strb r0, [r1, 0x1F]
- b _080F11F4
-_080F1184:
- ldr r0, [r4, 0xC]
- strb r5, [r0, 0x1F]
- b _080F11F4
-_080F118A:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x8]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F11A4
- ldr r1, [r4, 0x8]
- movs r0, 0x1
- strb r0, [r1, 0x2]
- b _080F11F4
-_080F11A4:
- ldr r0, [r4, 0x8]
- strb r5, [r0, 0x2]
- b _080F11F4
-_080F11AA:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x20]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F11C4
- ldr r1, [r4, 0x20]
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _080F11F4
-_080F11C4:
- ldr r0, [r4, 0x20]
- strb r5, [r0, 0x6]
- b _080F11F4
-_080F11CA:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x24]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F11E4
- ldr r1, [r4, 0x24]
- movs r0, 0x1
- strb r0, [r1, 0xB]
- b _080F11F4
-_080F11E4:
- ldr r0, [r4, 0x24]
- strb r5, [r0, 0xB]
- b _080F11F4
-_080F11EA:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x28]
-_080F11F2:
- strb r5, [r0, 0x18]
-_080F11F4:
- adds r7, 0x1
- cmp r7, 0x17
- bgt _080F11FC
- b _080F0F74
-_080F11FC:
- adds r0, r4, 0
- bl Free
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F0F64
-
- thumb_func_start sub_80F1208
-sub_80F1208: @ 80F1208
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_80F14F8
- adds r4, r5, 0
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r4, r1
- cmp r4, r0
- bcs _080F124C
-_080F121C:
- ldrb r0, [r4]
- cmp r0, 0x7
- bne _080F1240
- ldrb r0, [r4, 0x1D]
- cmp r0, 0x1
- bne _080F1230
- ldrb r0, [r4, 0x1E]
- cmp r0, 0x1
- bne _080F1236
- b _080F1240
-_080F1230:
- ldrb r0, [r4, 0x1E]
- cmp r0, 0x1
- bne _080F1240
-_080F1236:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x24
- bl memset
-_080F1240:
- adds r4, 0x24
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r5, r1
- cmp r4, r0
- bcc _080F121C
-_080F124C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F1208
-
- thumb_func_start sub_80F1254
-sub_80F1254: @ 80F1254
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r4, 0
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r4, r1
- cmp r4, r0
- bcs _080F128A
-_080F1264:
- ldrb r0, [r4]
- cmp r0, 0x7
- bne _080F127E
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_8009228
- cmp r0, 0
- beq _080F127A
- movs r0, 0x1
- b _080F127C
-_080F127A:
- movs r0, 0x2
-_080F127C:
- strb r0, [r4, 0x1E]
-_080F127E:
- adds r4, 0x24
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r5, r1
- cmp r4, r0
- bcc _080F1264
-_080F128A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F1254
-
- thumb_func_start sub_80F1290
-sub_80F1290: @ 80F1290
- push {lr}
- bl sub_8009228
- movs r1, 0x2
- cmp r0, 0
- beq _080F129E
- movs r1, 0x1
-_080F129E:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end sub_80F1290
-
- thumb_func_start sub_80F12A4
-sub_80F12A4: @ 80F12A4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r4, 0
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r4, r1
- cmp r4, r0
- bcc _080F12B6
- b _080F14F0
-_080F12B6:
- ldrb r0, [r4]
- subs r0, 0x1
- cmp r0, 0x28
- bls _080F12C0
- b _080F14E2
-_080F12C0:
- lsls r0, 2
- ldr r1, =_080F12D0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F12D0:
- .4byte _080F1374
- .4byte _080F137A
- .4byte _080F1380
- .4byte _080F138E
- .4byte _080F139A
- .4byte _080F13A8
- .4byte _080F13BE
- .4byte _080F13CC
- .4byte _080F13E0
- .4byte _080F13F4
- .4byte _080F1408
- .4byte _080F1416
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F142A
- .4byte _080F1438
- .4byte _080F1444
- .4byte _080F1450
- .4byte _080F145C
- .4byte _080F14AC
- .4byte _080F1468
- .4byte _080F14B8
- .4byte _080F148C
- .4byte _080F1474
- .4byte _080F14AC
- .4byte _080F14B8
- .4byte _080F1480
- .4byte _080F148C
- .4byte _080F1498
- .4byte _080F14AC
- .4byte _080F14B8
- .4byte _080F14C4
- .4byte _080F14D8
- .4byte _080F14E2
- .4byte _080F14E2
-_080F1374:
- adds r0, r4, 0
- adds r0, 0x10
- b _080F1422
-_080F137A:
- adds r0, r4, 0
- adds r0, 0x10
- b _080F1422
-_080F1380:
- adds r0, r4, 0x5
- bl sub_80F1290
- strb r0, [r4, 0xD]
- adds r0, r4, 0
- adds r0, 0x10
- b _080F1478
-_080F138E:
- adds r0, r4, 0
- adds r0, 0xB
- bl sub_80F1290
- strb r0, [r4, 0x17]
- b _080F14E2
-_080F139A:
- adds r0, r4, 0
- adds r0, 0xF
- bl sub_80F1290
- strb r0, [r4, 0x1E]
- adds r0, r4, 0x4
- b _080F13B6
-_080F13A8:
- adds r0, r4, 0
- adds r0, 0x16
- bl sub_80F1290
- strb r0, [r4, 0x1E]
- adds r0, r4, 0
- adds r0, 0x8
-_080F13B6:
- bl sub_80F1290
- strb r0, [r4, 0x1F]
- b _080F14E2
-_080F13BE:
- adds r0, r4, 0x2
- bl sub_80F1290
- strb r0, [r4, 0x1D]
- adds r0, r4, 0
- adds r0, 0xC
- b _080F13D8
-_080F13CC:
- adds r0, r4, 0
- adds r0, 0x14
- bl sub_80F1290
- strb r0, [r4, 0x1D]
- adds r0, r4, 0x4
-_080F13D8:
- bl sub_80F1290
- strb r0, [r4, 0x1E]
- b _080F14E2
-_080F13E0:
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_80F1290
- strb r0, [r4, 0x14]
- adds r0, r4, 0x4
- bl sub_80F1290
- strb r0, [r4, 0x15]
- b _080F14E2
-_080F13F4:
- adds r0, r4, 0x4
- bl sub_80F1290
- strb r0, [r4, 0x19]
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_80F1290
- strb r0, [r4, 0x1A]
- b _080F14E2
-_080F1408:
- adds r0, r4, 0x2
- bl sub_80F1290
- strb r0, [r4, 0x17]
- adds r0, r4, 0
- adds r0, 0xC
- b _080F1422
-_080F1416:
- adds r0, r4, 0x2
- bl sub_80F1290
- strb r0, [r4, 0x17]
- adds r0, r4, 0
- adds r0, 0xB
-_080F1422:
- bl sub_80F1290
- strb r0, [r4, 0x18]
- b _080F14E2
-_080F142A:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x2]
- adds r0, r4, 0x4
- b _080F143C
-_080F1438:
- adds r0, r4, 0
- adds r0, 0x13
-_080F143C:
- bl sub_80F1290
- strb r0, [r4, 0x3]
- b _080F14E2
-_080F1444:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x2]
- b _080F14E2
-_080F1450:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x6]
- b _080F14E2
-_080F145C:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0xB]
- b _080F14E2
-_080F1468:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x9]
- b _080F14E2
-_080F1474:
- adds r0, r4, 0
- adds r0, 0x13
-_080F1478:
- bl sub_80F1290
- strb r0, [r4, 0xE]
- b _080F14E2
-_080F1480:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x11]
- b _080F14E2
-_080F148C:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x8]
- b _080F14E2
-_080F1498:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0xF]
- adds r0, r4, 0x4
- bl sub_80F1290
- strb r0, [r4, 0x10]
- b _080F14E2
-_080F14AC:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0xC]
- b _080F14E2
-_080F14B8:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x5]
- b _080F14E2
-_080F14C4:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x1B]
- adds r0, r4, 0x4
- bl sub_80F1290
- strb r0, [r4, 0x1C]
- b _080F14E2
-_080F14D8:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x4]
-_080F14E2:
- adds r4, 0x24
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r5, r1
- cmp r4, r0
- bcs _080F14F0
- b _080F12B6
-_080F14F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F12A4
-
- thumb_func_start sub_80F14F8
-sub_80F14F8: @ 80F14F8
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r5, 0
- movs r6, 0x17
-_080F1500:
- ldrb r0, [r4]
- cmp r0, 0x17
- beq _080F151C
- cmp r0, 0x19
- bne _080F152C
- ldrb r0, [r4, 0xA]
- cmp r0, 0x58
- bls _080F152C
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x24
- bl memset
- b _080F152C
-_080F151C:
- ldrb r0, [r4, 0x12]
- cmp r0, 0x58
- bls _080F152C
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x24
- bl memset
-_080F152C:
- adds r4, 0x24
- adds r5, 0x24
- subs r6, 0x1
- cmp r6, 0
- bge _080F1500
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80F14F8
-
- thumb_func_start sub_80F153C
-sub_80F153C: @ 80F153C
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, r0
- ldr r1, =0x000027cd
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F155A
- b _080F16E6
-_080F155A:
- subs r1, 0x1
- adds r0, r2, r1
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0x28
- bls _080F1568
- b _080F16E6
-_080F1568:
- lsls r0, 2
- ldr r1, =_080F1584
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F1584:
- .4byte _080F1628
- .4byte _080F162E
- .4byte _080F1634
- .4byte _080F163A
- .4byte _080F165E
- .4byte _080F1646
- .4byte _080F164C
- .4byte _080F1664
- .4byte _080F1670
- .4byte _080F166A
- .4byte _080F16B8
- .4byte _080F16E2
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F1652
- .4byte _080F1658
- .4byte _080F1676
- .4byte _080F167C
- .4byte _080F1682
- .4byte _080F1688
- .4byte _080F168E
- .4byte _080F1694
- .4byte _080F169A
- .4byte _080F16A0
- .4byte _080F16A6
- .4byte _080F16AC
- .4byte _080F16B2
- .4byte _080F16BE
- .4byte _080F16C4
- .4byte _080F16CA
- .4byte _080F16D0
- .4byte _080F16D6
- .4byte _080F16DC
- .4byte _080F16E6
- .4byte _080F1640
-_080F1628:
- bl DoTVShowPokemonFanClubLetter
- b _080F16E6
-_080F162E:
- bl DoTVShowRecentHappenings
- b _080F16E6
-_080F1634:
- bl DoTVShowPokemonFanClubOpinions
- b _080F16E6
-_080F163A:
- bl DoTVShowDummiedOut
- b _080F16E6
-_080F1640:
- bl DoTVShowPokemonNewsMassOutbreak
- b _080F16E6
-_080F1646:
- bl DoTVShowBravoTrainerPokemonProfile
- b _080F16E6
-_080F164C:
- bl DoTVShowBravoTrainerBattleTower
- b _080F16E6
-_080F1652:
- bl DoTVShowPokemonTodaySuccessfulCapture
- b _080F16E6
-_080F1658:
- bl DoTVShowTodaysSmartShopper
- b _080F16E6
-_080F165E:
- bl DoTVShowTheNameRaterShow
- b _080F16E6
-_080F1664:
- bl DoTVShowPokemonContestLiveUpdates
- b _080F16E6
-_080F166A:
- bl DoTVShowPokemonBattleUpdate
- b _080F16E6
-_080F1670:
- bl DoTVShow3CheersForPokeblocks
- b _080F16E6
-_080F1676:
- bl DoTVShowPokemonTodayFailedCapture
- b _080F16E6
-_080F167C:
- bl DoTVShowPokemonAngler
- b _080F16E6
-_080F1682:
- bl DoTVShowTheWorldOfMasters
- b _080F16E6
-_080F1688:
- bl DoTVShowTodaysRivalTrainer
- b _080F16E6
-_080F168E:
- bl DoTVShowDewfordTrendWatcherNetwork
- b _080F16E6
-_080F1694:
- bl DoTVShowHoennTreasureInvestigators
- b _080F16E6
-_080F169A:
- bl DoTVShowFindThatGamer
- b _080F16E6
-_080F16A0:
- bl DoTVShowBreakingNewsTV
- b _080F16E6
-_080F16A6:
- bl DoTVShowSecretBaseVisit
- b _080F16E6
-_080F16AC:
- bl DoTVShowPokemonLotterWinnerFlashReport
- b _080F16E6
-_080F16B2:
- bl DoTVShowThePokemonBattleSeminar
- b _080F16E6
-_080F16B8:
- bl DoTVShowTrainerFanClubSpecial
- b _080F16E6
-_080F16BE:
- bl DoTVShowTrainerFanClub
- b _080F16E6
-_080F16C4:
- bl DoTVShowSpotTheCuties
- b _080F16E6
-_080F16CA:
- bl DoTVShowPokemonNewsBattleFrontier
- b _080F16E6
-_080F16D0:
- bl DoTVShowWhatsNo1InHoennToday
- b _080F16E6
-_080F16D6:
- bl DoTVShowSecretBaseSecrets
- b _080F16E6
-_080F16DC:
- bl DoTVShowSafariFanClub
- b _080F16E6
-_080F16E2:
- bl DoTVShowPokemonContestLiveUpdates2
-_080F16E6:
- pop {r0}
- bx r0
- thumb_func_end sub_80F153C
-
- thumb_func_start DoTVShowBravoTrainerPokemonProfile
-DoTVShowBravoTrainerPokemonProfile: @ 80F16EC
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x8
- bls _080F1712
- b _080F1952
-_080F1712:
- lsls r0, r5, 2
- ldr r1, =_080F1734
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F1734:
- .4byte _080F1758
- .4byte _080F17B0
- .4byte _080F17E8
- .4byte _080F1818
- .4byte _080F184C
- .4byte _080F1880
- .4byte _080F18C4
- .4byte _080F190C
- .4byte _080F193C
-_080F1758:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x13]
- lsls r1, 29
- lsrs r1, 29
- movs r0, 0x1
- bl CopyContestCategoryToStringVar
- ldrb r1, [r4, 0x13]
- lsls r1, 27
- lsrs r1, 30
- movs r0, 0x2
- bl sub_80EF1BC
- ldrh r1, [r4, 0x2]
- movs r0, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- bl StringCompare
- cmp r0, 0
- bne _080F17A4
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- b _080F1950
- .pool
-_080F17A4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- b _080F1950
- .pool
-_080F17B0:
- ldr r0, =gStringVar1
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0x8
- ldrb r2, [r4, 0x1F]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x13]
- lsls r1, 29
- lsrs r1, 29
- movs r0, 0x2
- bl CopyContestCategoryToStringVar
- b _080F194C
- .pool
-_080F17E8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x13]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- bne _080F180C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- b _080F1950
- .pool
-_080F180C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- b _080F1950
- .pool
-_080F1818:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldrb r1, [r4, 0x13]
- lsls r1, 25
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- b _080F1950
- .pool
-_080F184C:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldrb r1, [r4, 0x13]
- lsls r1, 25
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- b _080F1950
- .pool
-_080F1880:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x13]
- lsls r1, 29
- lsrs r1, 29
- movs r0, 0x1
- bl CopyContestCategoryToStringVar
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldrh r0, [r4, 0x14]
- cmp r0, 0
- beq _080F18B8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- b _080F1950
- .pool
-_080F18B8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- b _080F1950
- .pool
-_080F18C4:
- ldr r0, =gStringVar1
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x14]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- b _080F1950
- .pool
-_080F190C:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
- b _080F1952
- .pool
-_080F193C:
- ldr r0, =gStringVar1
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
-_080F194C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
-_080F1950:
- strb r0, [r1]
-_080F1952:
- ldr r0, =gUnknown_0858D204
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowBravoTrainerPokemonProfile
-
- thumb_func_start DoTVShowBravoTrainerBattleTower
-DoTVShowBravoTrainerBattleTower: @ 80F1974
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0xE
- bls _080F199C
- b _080F1BEA
-_080F199C:
- lsls r0, r5, 2
- ldr r1, =_080F19C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F19C0:
- .4byte _080F19FC
- .4byte _080F1A40
- .4byte _080F1A90
- .4byte _080F1AB4
- .4byte _080F1AE0
- .4byte _080F1B28
- .4byte _080F1B38
- .4byte _080F1B48
- .4byte _080F1B4E
- .4byte _080F1B4E
- .4byte _080F1B4E
- .4byte _080F1B68
- .4byte _080F1B94
- .4byte _080F1B94
- .4byte _080F1BCC
-_080F19FC:
- ldr r0, =gStringVar1
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrh r0, [r4, 0x16]
- cmp r0, 0x6
- bls _080F1A34
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1A34:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1A40:
- ldrb r0, [r4, 0x1A]
- cmp r0, 0x32
- bne _080F1A58
- ldr r0, =gStringVar1
- ldr r1, =gText_Lv50
- bl StringCopy
- b _080F1A60
- .pool
-_080F1A58:
- ldr r0, =gStringVar1
- ldr r1, =gText_OpenLevel
- bl StringCopy
-_080F1A60:
- ldrh r1, [r4, 0x16]
- movs r0, 0x1
- bl sub_80EF340
- ldrb r0, [r4, 0x1C]
- cmp r0, 0x1
- bne _080F1A84
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1A84:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1A90:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x16]
- adds r1, 0x1
- movs r0, 0x1
- bl sub_80EF340
-_080F1AA6:
- ldrb r0, [r4, 0x1B]
- cmp r0, 0
- beq _080F1B02
- b _080F1B1C
- .pool
-_080F1AB4:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x14]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- b _080F1AA6
- .pool
-_080F1AE0:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x14]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r0, [r4, 0x1B]
- cmp r0, 0
- bne _080F1B1C
-_080F1B02:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B1C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B28:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- b _080F1B54
- .pool
-_080F1B38:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- b _080F1B54
- .pool
-_080F1B48:
- movs r0, 0xB
- strb r0, [r2]
- b _080F1BEA
-_080F1B4E:
- ldr r0, =gStringVar1
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x1D]
-_080F1B54:
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B68:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x18]
- bl CopyEasyChatWord
- ldrb r0, [r4, 0x1B]
- cmp r0, 0
- bne _080F1B88
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B88:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xD
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B94:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x18]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1BCC:
- ldr r0, =gStringVar1
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
-_080F1BEA:
- ldr r0, =gUnknown_0858D240
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowBravoTrainerBattleTower
-
- thumb_func_start DoTVShowTodaysSmartShopper
-DoTVShowTodaysSmartShopper: @ 80F1C0C
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r2, r0, 0
- cmp r6, 0xC
- bls _080F1C34
- b _080F1E2C
-_080F1C34:
- lsls r0, r6, 2
- ldr r1, =_080F1C58
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F1C58:
- .4byte _080F1C8C
- .4byte _080F1CC8
- .4byte _080F1D10
- .4byte _080F1D22
- .4byte _080F1D10
- .4byte _080F1D10
- .4byte _080F1D4C
- .4byte _080F1D7C
- .4byte _080F1DAC
- .4byte _080F1DB8
- .4byte _080F1DC6
- .4byte _080F1DD8
- .4byte _080F1E1C
-_080F1C8C:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x12]
- movs r2, 0
- bl GetMapName
- ldrh r0, [r5, 0xC]
- cmp r0, 0xFE
- bls _080F1CBC
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1CBC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1CC8:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0x6]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrh r1, [r5, 0xC]
- movs r0, 0x2
- bl sub_80EF340
- ldr r4, =gUnknown_0203A030
- bl Random
- ldrb r2, [r4]
- adds r2, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r0, r2
- strb r0, [r4]
- b _080F1E2C
- .pool
-_080F1D10:
- ldrh r0, [r5, 0x8]
- cmp r0, 0
- beq _080F1D1C
- movs r0, 0x6
- strb r0, [r2]
- b _080F1E2C
-_080F1D1C:
- movs r0, 0xA
- strb r0, [r2]
- b _080F1E2C
-_080F1D22:
- ldrh r1, [r5, 0xC]
- adds r1, 0x1
- movs r0, 0x2
- bl sub_80EF340
- ldrh r0, [r5, 0x8]
- cmp r0, 0
- beq _080F1D40
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1D40:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1D4C:
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0x8]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrh r1, [r5, 0xE]
- movs r0, 0x2
- bl sub_80EF340
- ldrh r0, [r5, 0xA]
- cmp r0, 0
- beq _080F1D94
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1D7C:
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0xA]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrh r1, [r5, 0x10]
- movs r0, 0x2
- bl sub_80EF340
-_080F1D94:
- ldrb r0, [r5, 0x2]
- cmp r0, 0x1
- beq _080F1DFA
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1DAC:
- ldrh r0, [r5, 0xC]
- cmp r0, 0xFE
- bls _080F1DD2
- movs r0, 0xC
- strb r0, [r2]
- b _080F1E2C
-_080F1DB8:
- movs r0, 0x1
- adds r1, r5, 0
- bl sub_80EF40C
- bl TVShowDone
- b _080F1E2C
-_080F1DC6:
- ldrb r0, [r5, 0x2]
- cmp r0, 0x1
- bne _080F1DD2
- movs r0, 0x8
- strb r0, [r2]
- b _080F1E2C
-_080F1DD2:
- movs r0, 0x9
- strb r0, [r2]
- b _080F1E2C
-_080F1DD8:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0x6]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r0, [r5, 0x2]
- cmp r0, 0x1
- bne _080F1E10
-_080F1DFA:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1E10:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1E1C:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- bl TVShowDone
-_080F1E2C:
- ldr r0, =gUnknown_0858D1D0
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTodaysSmartShopper
-
- thumb_func_start DoTVShowTheNameRaterShow
-DoTVShowTheNameRaterShow: @ 80F1E48
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r2, r0, 0
- cmp r6, 0x12
- bls _080F1E72
- b _080F20FE
-_080F1E72:
- lsls r0, r6, 2
- ldr r1, =_080F1E94
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F1E94:
- .4byte _080F1EE0
- .4byte _080F1F28
- .4byte _080F1F4A
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F90
- .4byte _080F1F90
- .4byte _080F1F90
- .4byte _080F20EC
- .4byte _080F1FCC
- .4byte _080F200C
- .4byte _080F202C
- .4byte _080F2074
- .4byte _080F20A4
- .4byte _080F20F0
-_080F1EE0:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0xF
- ldrb r2, [r5, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1F]
- bl sub_81DB5E8
- ldr r4, =gUnknown_0203A030
- adds r0, r5, 0
- bl sub_80EFBA4
- adds r0, 0x1
- strb r0, [r4]
- b _080F20FE
- .pool
-_080F1F28:
- ldrb r0, [r5, 0x1A]
- cmp r0, 0
- bne _080F1F34
- movs r0, 0x9
- strb r0, [r2]
- b _080F20FE
-_080F1F34:
- cmp r0, 0x1
- bne _080F1F3E
- movs r0, 0xA
- strb r0, [r2]
- b _080F20FE
-_080F1F3E:
- cmp r0, 0x2
- beq _080F1F44
- b _080F20FE
-_080F1F44:
- movs r0, 0xB
- strb r0, [r2]
- b _080F20FE
-_080F1F4A:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0xF
- ldrb r2, [r5, 0x1E]
- bl sub_81DB5E8
- ldrb r0, [r5, 0x1A]
- cmp r0, 0
- bne _080F1F6C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F1F6C:
- cmp r0, 0x1
- bne _080F1F7C
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F1F7C:
- cmp r0, 0x2
- beq _080F1F82
- b _080F20FE
-_080F1F82:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F1F90:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1F]
- bl sub_81DB5E8
- movs r4, 0
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_80EFBDC
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F1FCC:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0xF
- ldrb r2, [r5, 0x1E]
- bl sub_81DB5E8
- movs r4, 0
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x2
- movs r3, 0
- bl sub_80EFBDC
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F200C:
- movs r4, 0
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_80EFBDC
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0
- b _080F20D2
-_080F202C:
- movs r0, 0
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrh r0, [r5, 0x2]
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0x10
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F2074:
- ldrh r0, [r5, 0x2]
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x2
- bl sub_80EFBDC
- movs r0, 0
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0x11
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F20A4:
- movs r0, 0
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x1C]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrh r0, [r5, 0x1C]
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
-_080F20D2:
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0x12
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F20EC:
- movs r6, 0x12
- strb r6, [r2]
-_080F20F0:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1F]
- bl sub_81DB5E8
- bl TVShowDone
-_080F20FE:
- ldr r0, =gUnknown_0858D338
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTheNameRaterShow
-
- thumb_func_start DoTVShowPokemonTodaySuccessfulCapture
-DoTVShowPokemonTodaySuccessfulCapture: @ 80F211C
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r2, r0, 0
- cmp r6, 0xB
- bls _080F2144
- b _080F2358
-_080F2144:
- lsls r0, r6, 2
- ldr r1, =_080F2168
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2168:
- .4byte _080F2198
- .4byte _080F21EC
- .4byte _080F21F2
- .4byte _080F222C
- .4byte _080F2264
- .4byte _080F226A
- .4byte _080F22A0
- .4byte _080F22F4
- .4byte _080F22F4
- .4byte _080F2324
- .4byte _080F2324
- .4byte _080F2354
-_080F2198:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldrb r0, [r5, 0xF]
- cmp r0, 0x1
- bne _080F21E0
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F2358
- .pool
-_080F21E0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F2358
- .pool
-_080F21EC:
- movs r0, 0x2
- strb r0, [r2]
- b _080F2358
-_080F21F2:
- ldr r4, =gStringVar2
- ldrb r0, [r5, 0xF]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5, 0x12]
- movs r0, 0x2
- bl sub_80EF340
- ldrb r0, [r5, 0x12]
- cmp r0, 0x3
- bhi _080F2220
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F2358
- .pool
-_080F2220:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F2358
- .pool
-_080F222C:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- b _080F2286
- .pool
-_080F2264:
- movs r0, 0x6
- strb r0, [r2]
- b _080F2358
-_080F226A:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
-_080F2286:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F2358
- .pool
-_080F22A0:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldr r4, =gUnknown_0203A030
- bl Random
- ldrb r2, [r4]
- adds r2, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r0, r2
- strb r0, [r4]
- b _080F2358
- .pool
-_080F22F4:
- ldr r0, =gStringVar1
- ldrh r1, [r5, 0x10]
- movs r4, 0xB
- muls r1, r4
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldrh r1, [r5, 0x10]
- movs r0, 0x2
- bl sub_80EF9E8
- b _080F233E
- .pool
-_080F2324:
- ldr r0, =gStringVar1
- ldrh r1, [r5, 0x10]
- movs r4, 0xB
- muls r1, r4
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
-_080F233E:
- ldr r0, =gUnknown_0203A030
- strb r4, [r0]
- b _080F2358
- .pool
-_080F2354:
- bl TVShowDone
-_080F2358:
- ldr r0, =gUnknown_0858D1A0
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonTodaySuccessfulCapture
-
- thumb_func_start DoTVShowPokemonTodayFailedCapture
-DoTVShowPokemonTodayFailedCapture: @ 80F2370
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x6
- bls _080F2396
- b _080F24C0
-_080F2396:
- lsls r0, r5, 2
- ldr r1, =_080F23B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F23B8:
- .4byte _080F23D4
- .4byte _080F2408
- .4byte _080F245C
- .4byte _080F245C
- .4byte _080F24A0
- .4byte _080F24A0
- .4byte _080F24BC
-_080F23D4:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0xC]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F2408:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r4, 0x12]
- movs r2, 0
- bl GetMapName
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0xE]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r0, [r4, 0x11]
- cmp r0, 0x1
- bne _080F2450
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F2450:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F245C:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x10]
- movs r0, 0x1
- bl sub_80EF340
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _080F2494
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F2494:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F24A0:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F24BC:
- bl TVShowDone
-_080F24C0:
- ldr r0, =gUnknown_0858D394
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonTodayFailedCapture
-
- thumb_func_start DoTVShowPokemonFanClubLetter
-DoTVShowPokemonFanClubLetter: @ 80F24D8
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r6, r0, 0
- cmp r7, 0x33
- bls _080F2500
- b _080F26F0
-_080F2500:
- lsls r0, r7, 2
- ldr r1, =_080F2524
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2524:
- .4byte _080F25F4
- .4byte _080F2628
- .4byte _080F2654
- .4byte _080F265A
- .4byte _080F2672
- .4byte _080F2672
- .4byte _080F2672
- .4byte _080F2684
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26A6
- .4byte _080F26CC
-_080F25F4:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- ldrb r2, [r5, 0x18]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x32
- strb r0, [r1]
- b _080F26F0
- .pool
-_080F2628:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r2, r0, 0x1
- cmp r2, 0x1
- bne _080F2648
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F26F0
- .pool
-_080F2648:
- ldr r1, =gUnknown_0203A030
- adds r0, r2, 0x2
- strb r0, [r1]
- b _080F26F0
- .pool
-_080F2654:
- movs r0, 0x33
- strb r0, [r6]
- b _080F26F0
-_080F265A:
- bl Random
- ldrb r4, [r6]
- adds r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, r4
- strb r0, [r6]
- b _080F26F0
-_080F2672:
- adds r0, r5, 0
- bl sub_80EFB58
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F26F0
- .pool
-_080F2684:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1F
- bl __umodsi3
- adds r0, 0x46
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0x2
- adds r1, r2, 0
- bl sub_80EF340
- bl TVShowDone
- b _080F26F0
-_080F26A6:
- ldr r4, =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl box_related_two__2
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F26FC
- .pool
-_080F26CC:
- ldr r4, =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl box_related_two__2
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F26FC
- .pool
-_080F26F0:
- ldr r0, =gUnknown_0858D150
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
-_080F26FC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonFanClubLetter
-
- thumb_func_start DoTVShowRecentHappenings
-DoTVShowRecentHappenings: @ 80F2708
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r7, r0, 0
- cmp r6, 0x32
- bls _080F2730
- b _080F288C
-_080F2730:
- lsls r0, r6, 2
- ldr r1, =_080F2754
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2754:
- .4byte _080F2820
- .4byte _080F2844
- .4byte _080F285C
- .4byte _080F285C
- .4byte _080F285C
- .4byte _080F2862
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F2868
-_080F2820:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- ldrb r2, [r5, 0x18]
- bl sub_81DB5E8
- adds r0, r5, 0
- bl sub_80EFB58
- ldr r1, =gUnknown_0203A030
- movs r0, 0x32
- strb r0, [r1]
- b _080F288C
- .pool
-_080F2844:
- bl Random
- ldrb r4, [r7]
- adds r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, r4
- strb r0, [r7]
- b _080F288C
-_080F285C:
- movs r0, 0x5
- strb r0, [r7]
- b _080F288C
-_080F2862:
- bl TVShowDone
- b _080F288C
-_080F2868:
- ldr r4, =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl box_related_two__2
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F2898
- .pool
-_080F288C:
- ldr r0, =gUnknown_0858D170
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
-_080F2898:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowRecentHappenings
-
- thumb_func_start DoTVShowPokemonFanClubOpinions
-DoTVShowPokemonFanClubOpinions: @ 80F28A4
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r6, =gUnknown_0203A030
- ldrb r5, [r6]
- cmp r5, 0x3
- bgt _080F28E8
- cmp r5, 0x1
- bge _080F2930
- cmp r5, 0
- beq _080F28EE
- b _080F297E
- .pool
-_080F28E8:
- cmp r5, 0x4
- beq _080F2968
- b _080F297E
-_080F28EE:
- ldr r0, =gStringVar1
- adds r1, r4, 0x5
- ldrb r2, [r4, 0xD]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0x10
- ldrb r2, [r4, 0xE]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x4]
- lsrs r0, 4
- adds r0, 0x1
- strb r0, [r6]
- b _080F297E
- .pool
-_080F2930:
- ldr r0, =gStringVar1
- adds r1, r4, 0x5
- ldrb r2, [r4, 0xD]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x1C]
- bl CopyEasyChatWord
- movs r0, 0x4
- strb r0, [r6]
- b _080F297E
- .pool
-_080F2968:
- ldr r0, =gStringVar1
- adds r1, r4, 0x5
- ldrb r2, [r4, 0xD]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x1E]
- bl CopyEasyChatWord
- bl TVShowDone
-_080F297E:
- ldr r0, =gUnknown_0858D188
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonFanClubOpinions
-
- thumb_func_start DoTVShowDummiedOut
-DoTVShowDummiedOut: @ 80F299C
- bx lr
- thumb_func_end DoTVShowDummiedOut
-
- thumb_func_start DoTVShowPokemonNewsMassOutbreak
-DoTVShowPokemonNewsMassOutbreak: @ 80F29A0
- push {r4,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- ldr r0, =gStringVar1
- ldrb r1, [r4, 0x10]
- movs r2, 0
- bl GetMapName
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0xC]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
- bl StartMassOutbreak
- ldr r1, =gUnknown_0858D19C
- ldr r0, =gUnknown_0203A030
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl box_related_two__2
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonNewsMassOutbreak
-
- thumb_func_start DoTVShowPokemonContestLiveUpdates
-DoTVShowPokemonContestLiveUpdates: @ 80F2A10
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0x20
- bls _080F2A38
- b _080F311C
-_080F2A38:
- lsls r0, r7, 2
- ldr r1, =_080F2A5C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2A5C:
- .4byte _080F2AE0
- .4byte _080F2B54
- .4byte _080F2BA2
- .4byte _080F2BC8
- .4byte _080F2BF4
- .4byte _080F2D2C
- .4byte _080F2D40
- .4byte _080F2D54
- .4byte _080F2D68
- .4byte _080F2DE8
- .4byte _080F2DFC
- .4byte _080F2E10
- .4byte _080F2E24
- .4byte _080F2E38
- .4byte _080F2E4C
- .4byte _080F2ECC
- .4byte _080F2EE0
- .4byte _080F2EF4
- .4byte _080F2F08
- .4byte _080F2F1C
- .4byte _080F2F30
- .4byte _080F2F44
- .4byte _080F2F58
- .4byte _080F2F94
- .4byte _080F3064
- .4byte _080F3080
- .4byte _080F30E0
- .4byte _080F30E0
- .4byte _080F30A8
- .4byte _080F30AE
- .4byte _080F30E0
- .4byte _080F30E0
- .4byte _080F30FC
-_080F2AE0:
- ldr r0, =gStringVar1
- ldrb r1, [r6, 0x1C]
- bl sub_818E868
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r6, 0
- adds r1, 0x14
- ldrb r2, [r6, 0x1D]
- bl sub_81DB5E8
- ldrb r0, [r6, 0xD]
- ldrb r1, [r6, 0xE]
- cmp r0, r1
- bne _080F2B38
- cmp r0, 0
- bne _080F2B2C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2B2C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2B38:
- cmp r0, r1
- bls _080F2B48
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2B48:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2B54:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r6, 0xF]
- cmp r1, 0x8
- bne _080F2B6C
- b _080F2CF0
-_080F2B6C:
- cmp r1, 0x8
- bgt _080F2B88
-_080F2B70:
- cmp r1, 0x2
- bne _080F2B76
- b _080F2CD8
-_080F2B76:
- cmp r1, 0x2
- bgt _080F2B7C
- b _080F2C96
-_080F2B7C:
- b _080F2CAC
- .pool
-_080F2B88:
- cmp r1, 0x20
- bne _080F2B8E
- b _080F2D08
-_080F2B8E:
- cmp r1, 0x20
- bgt _080F2B94
- b _080F2CBA
-_080F2B94:
- cmp r1, 0x40
- bne _080F2B9A
- b _080F2D14
-_080F2B9A:
- cmp r1, 0x80
- beq _080F2BA0
- b _080F311C
-_080F2BA0:
- b _080F2D20
-_080F2BA2:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
-_080F2BB2:
- ldrb r1, [r6, 0xF]
- cmp r1, 0x8
- bne _080F2BBA
- b _080F2CF0
-_080F2BBA:
- cmp r1, 0x8
- ble _080F2B70
- b _080F2B88
- .pool
-_080F2BC8:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r6, 0
- adds r1, 0x14
- ldrb r2, [r6, 0x1D]
- bl sub_81DB5E8
- b _080F2BB2
- .pool
-_080F2BF4:
- ldrb r0, [r6, 0x1C]
- cmp r0, 0x4
- bhi _080F2C74
- lsls r0, 2
- ldr r1, =_080F2C08
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2C08:
- .4byte _080F2C1C
- .4byte _080F2C30
- .4byte _080F2C44
- .4byte _080F2C58
- .4byte _080F2C6C
-_080F2C1C:
- ldr r0, =gStringVar1
- ldr r1, =gText_Cool
- bl StringCopy
- b _080F2C74
- .pool
-_080F2C30:
- ldr r0, =gStringVar1
- ldr r1, =gText_Beauty
- bl StringCopy
- b _080F2C74
- .pool
-_080F2C44:
- ldr r0, =gStringVar1
- ldr r1, =gText_Cute
- bl StringCopy
- b _080F2C74
- .pool
-_080F2C58:
- ldr r0, =gStringVar1
- ldr r1, =gText_Smart
- bl StringCopy
- b _080F2C74
- .pool
-_080F2C6C:
- ldr r0, =gStringVar1
- ldr r1, =gText_Tough
- bl StringCopy
-_080F2C74:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r6, 0xF]
- cmp r1, 0x8
- beq _080F2CF0
- cmp r1, 0x8
- bgt _080F2CB2
- cmp r1, 0x2
- beq _080F2CD8
- cmp r1, 0x2
- bgt _080F2CAC
-_080F2C96:
- cmp r1, 0x1
- beq _080F2CCA
- b _080F311C
- .pool
-_080F2CAC:
- cmp r1, 0x4
- beq _080F2CE4
- b _080F311C
-_080F2CB2:
- cmp r1, 0x20
- beq _080F2D08
- cmp r1, 0x20
- bgt _080F2CC0
-_080F2CBA:
- cmp r1, 0x10
- beq _080F2CFC
- b _080F311C
-_080F2CC0:
- cmp r1, 0x40
- beq _080F2D14
- cmp r1, 0x80
- beq _080F2D20
- b _080F311C
-_080F2CCA:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2CD8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2CE4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2CF0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2CFC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2D08:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x14
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2D14:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x15
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2D20:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x16
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2D2C:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2D40:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2D54:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2D68:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r0, [r6, 0x1C]
- cmp r0, 0x4
- bls _080F2D80
- b _080F311C
-_080F2D80:
- lsls r0, 2
- ldr r1, =_080F2D98
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2D98:
- .4byte _080F2DAC
- .4byte _080F2DB8
- .4byte _080F2DC4
- .4byte _080F2DD0
- .4byte _080F2DDC
-_080F2DAC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DB8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DC4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DD0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DDC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xD
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DE8:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2DFC:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2E10:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2E24:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2E38:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2E4C:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r0, [r6, 0x1C]
- cmp r0, 0x4
- bls _080F2E64
- b _080F311C
-_080F2E64:
- lsls r0, 2
- ldr r1, =_080F2E7C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2E7C:
- .4byte _080F2E90
- .4byte _080F2E9C
- .4byte _080F2EA8
- .4byte _080F2EB4
- .4byte _080F2EC0
-_080F2E90:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xF
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2E9C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x10
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2EA8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x11
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2EB4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x12
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2EC0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x13
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2ECC:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2EE0:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2EF4:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F08:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F1C:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F30:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F44:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F58:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r2, [r6, 0x10]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
-_080F2F72:
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x17
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2F94:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x12]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r6, 0x4
- ldrb r2, [r6, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0x2]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldrb r0, [r6, 0xC]
- cmp r0, 0x8
- beq _080F3028
- cmp r0, 0x8
- bgt _080F2FEA
- cmp r0, 0x2
- beq _080F3010
- cmp r0, 0x2
- bgt _080F2FE4
- cmp r0, 0x1
- beq _080F3002
- b _080F311C
- .pool
-_080F2FE4:
- cmp r0, 0x4
- beq _080F301C
- b _080F311C
-_080F2FEA:
- cmp r0, 0x20
- beq _080F3040
- cmp r0, 0x20
- bgt _080F2FF8
- cmp r0, 0x10
- beq _080F3034
- b _080F311C
-_080F2FF8:
- cmp r0, 0x40
- beq _080F304C
- cmp r0, 0x80
- beq _080F3058
- b _080F311C
-_080F3002:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1F
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3010:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1E
- strb r0, [r1]
- b _080F311C
- .pool
-_080F301C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1D
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3028:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1C
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3034:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1B
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3040:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1A
- strb r0, [r1]
- b _080F311C
- .pool
-_080F304C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x19
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3058:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x18
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3064:
- ldr r0, =gStringVar1
- ldrh r2, [r6, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- b _080F30EA
- .pool
-_080F3080:
- ldr r0, =gStringVar1
- adds r1, r6, 0x4
- ldrb r2, [r6, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- b _080F30EA
- .pool
-_080F30A8:
- movs r0, 0x20
- strb r0, [r2]
- b _080F311C
-_080F30AE:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x14
- ldrb r2, [r6, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- b _080F30E2
- .pool
-_080F30E0:
- ldr r0, =gStringVar1
-_080F30E2:
- adds r1, r6, 0x4
- ldrb r2, [r6, 0x1E]
- bl sub_81DB5E8
-_080F30EA:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x20
- strb r0, [r1]
- b _080F311C
- .pool
-_080F30FC:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x14
- ldrb r2, [r6, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
-_080F311C:
- ldr r0, =gUnknown_0858D27C
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonContestLiveUpdates
-
- thumb_func_start DoTVShowPokemonBattleUpdate
-DoTVShowPokemonBattleUpdate: @ 80F3140
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0x7
- bls _080F3168
- b _080F3362
-_080F3168:
- lsls r0, r5, 2
- ldr r1, =_080F318C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F318C:
- .4byte _080F31AC
- .4byte _080F31CA
- .4byte _080F321C
- .4byte _080F3268
- .4byte _080F329C
- .4byte _080F32C0
- .4byte _080F32EC
- .4byte _080F3338
-_080F31AC:
- ldrb r1, [r4, 0x18]
- cmp r1, 0
- bge _080F31B4
- b _080F3362
-_080F31B4:
- cmp r1, 0x1
- ble _080F31BE
- cmp r1, 0x2
- beq _080F31C4
- b _080F3362
-_080F31BE:
- movs r0, 0x1
- strb r0, [r2]
- b _080F3362
-_080F31C4:
- movs r0, 0x5
- strb r0, [r2]
- b _080F3362
-_080F31CA:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x18]
- cmp r0, 0
- bne _080F3200
- ldr r0, =gStringVar3
- ldr r1, =gText_Single
- bl StringCopy
- b _080F3208
- .pool
-_080F3200:
- ldr r0, =gStringVar3
- ldr r1, =gText_Double
- bl StringCopy
-_080F3208:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F3362
- .pool
-_080F321C:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x16]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0x14]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F3362
- .pool
-_080F3268:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F3362
- .pool
-_080F329C:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- bl TVShowDone
- b _080F3362
- .pool
-_080F32C0:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F3362
- .pool
-_080F32EC:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x16]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0x14]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F3362
- .pool
-_080F3338:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
-_080F3362:
- ldr r0, =gUnknown_0858D300
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonBattleUpdate
-
- thumb_func_start DoTVShow3CheersForPokeblocks
-DoTVShow3CheersForPokeblocks: @ 80F3388
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x5
- bls _080F33AE
- b _080F3624
-_080F33AE:
- lsls r0, r5, 2
- ldr r1, =_080F33D0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F33D0:
- .4byte _080F33E8
- .4byte _080F3418
- .4byte _080F3500
- .4byte _080F350C
- .4byte _080F35F4
- .4byte _080F3620
-_080F33E8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x14]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x2]
- cmp r0, 0x14
- bls _080F340C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F3624
- .pool
-_080F340C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F3624
- .pool
-_080F3418:
- ldrb r0, [r4, 0x3]
- lsls r0, 29
- lsrs r0, 29
- cmp r0, 0x4
- bhi _080F349C
- lsls r0, 2
- ldr r1, =_080F3430
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3430:
- .4byte _080F3444
- .4byte _080F3458
- .4byte _080F346C
- .4byte _080F3480
- .4byte _080F3494
-_080F3444:
- ldr r0, =gStringVar1
- ldr r1, =gText_Spicy2
- bl StringCopy
- b _080F349C
- .pool
-_080F3458:
- ldr r0, =gStringVar1
- ldr r1, =gText_Dry2
- bl StringCopy
- b _080F349C
- .pool
-_080F346C:
- ldr r0, =gStringVar1
- ldr r1, =gText_Sweet2
- bl StringCopy
- b _080F349C
- .pool
-_080F3480:
- ldr r0, =gStringVar1
- ldr r1, =gText_Bitter2
- bl StringCopy
- b _080F349C
- .pool
-_080F3494:
- ldr r0, =gStringVar1
- ldr r1, =gText_Sour2
- bl StringCopy
-_080F349C:
- ldrb r0, [r4, 0x2]
- cmp r0, 0x18
- bls _080F34BC
- ldr r0, =gStringVar2
- ldr r1, =gText_Excellent
- bl StringCopy
- b _080F34DC
- .pool
-_080F34BC:
- cmp r0, 0x16
- bls _080F34D4
- ldr r0, =gStringVar2
- ldr r1, =gText_VeryGood
- bl StringCopy
- b _080F34DC
- .pool
-_080F34D4:
- ldr r0, =gStringVar2
- ldr r1, =gText_Good
- bl StringCopy
-_080F34DC:
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x14]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F3624
- .pool
-_080F3500:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x15]
- b _080F3606
- .pool
-_080F350C:
- ldrb r0, [r4, 0x3]
- lsls r0, 29
- lsrs r0, 29
- cmp r0, 0x4
- bhi _080F3590
- lsls r0, 2
- ldr r1, =_080F3524
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3524:
- .4byte _080F3538
- .4byte _080F354C
- .4byte _080F3560
- .4byte _080F3574
- .4byte _080F3588
-_080F3538:
- ldr r0, =gStringVar1
- ldr r1, =gText_Spicy2
- bl StringCopy
- b _080F3590
- .pool
-_080F354C:
- ldr r0, =gStringVar1
- ldr r1, =gText_Dry2
- bl StringCopy
- b _080F3590
- .pool
-_080F3560:
- ldr r0, =gStringVar1
- ldr r1, =gText_Sweet2
- bl StringCopy
- b _080F3590
- .pool
-_080F3574:
- ldr r0, =gStringVar1
- ldr r1, =gText_Bitter2
- bl StringCopy
- b _080F3590
- .pool
-_080F3588:
- ldr r0, =gStringVar1
- ldr r1, =gText_Sour2
- bl StringCopy
-_080F3590:
- ldrb r0, [r4, 0x2]
- cmp r0, 0x10
- bls _080F35B0
- ldr r0, =gStringVar2
- ldr r1, =gText_SoSo
- bl StringCopy
- b _080F35D0
- .pool
-_080F35B0:
- cmp r0, 0xD
- bls _080F35C8
- ldr r0, =gStringVar2
- ldr r1, =gText_Bad
- bl StringCopy
- b _080F35D0
- .pool
-_080F35C8:
- ldr r0, =gStringVar2
- ldr r1, =gText_TheWorst
- bl StringCopy
-_080F35D0:
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x14]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F3624
- .pool
-_080F35F4:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x15]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x14]
-_080F3606:
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F3624
- .pool
-_080F3620:
- bl TVShowDone
-_080F3624:
- ldr r0, =gUnknown_0858D228
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShow3CheersForPokeblocks
-
- thumb_func_start DoTVShowInSearchOfTrainers
-DoTVShowInSearchOfTrainers: @ 80F363C
- push {r4-r7,lr}
- ldr r0, =gScriptResult
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0x8
- bls _080F3650
- b _080F37EA
-_080F3650:
- lsls r0, r7, 2
- ldr r1, =_080F3668
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3668:
- .4byte _080F368C
- .4byte _080F36D4
- .4byte _080F36DA
- .4byte _080F372C
- .4byte _080F379C
- .4byte _080F379C
- .4byte _080F379C
- .4byte _080F379C
- .4byte _080F37A2
-_080F368C:
- ldr r0, =gStringVar1
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- ldr r2, =0x00002bac
- adds r1, r2
- ldrb r1, [r1]
- movs r2, 0
- bl GetMapName
- ldr r0, [r4]
- ldr r1, =0x00002bad
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bls _080F36C8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F37EA
- .pool
-_080F36C8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F37EA
- .pool
-_080F36D4:
- movs r0, 0x2
- strb r0, [r2]
- b _080F37EA
-_080F36DA:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080F36FC
- movs r0, 0x4
- strb r0, [r2]
- b _080F37EA
- .pool
-_080F36FC:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080F370A
- movs r0, 0x5
- strb r0, [r2]
- b _080F37EA
-_080F370A:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080F3718
- movs r0, 0x6
- strb r0, [r2]
- b _080F37EA
-_080F3718:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080F3726
- movs r0, 0x7
- strb r0, [r2]
- b _080F37EA
-_080F3726:
- movs r0, 0x3
- strb r0, [r2]
- b _080F37EA
-_080F372C:
- ldr r0, =gStringVar1
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- ldr r2, =0x00002ba4
- adds r1, r2
- ldrh r1, [r1]
- movs r6, 0xB
- muls r1, r6
- ldr r5, =gSpeciesNames
- adds r1, r5
- bl StringCopy
- ldr r0, =gStringVar2
- ldr r1, [r4]
- ldr r2, =0x00002ba8
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldr r1, [r4]
- ldr r2, =0x00002ba6
- adds r1, r2
- ldrh r1, [r1]
- muls r1, r6
- adds r1, r5
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F37EA
- .pool
-_080F379C:
- movs r0, 0x8
- strb r0, [r2]
- b _080F37EA
-_080F37A2:
- ldr r0, =gStringVar1
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- ldr r2, =0x00002baa
- adds r1, r2
- ldrh r1, [r1]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldr r1, [r4]
- ldr r2, =0x00002ba4
- adds r1, r2
- ldrh r1, [r1]
- movs r6, 0xB
- muls r1, r6
- ldr r5, =gSpeciesNames
- adds r1, r5
- bl StringCopy
- ldr r0, =gStringVar3
- ldr r1, [r4]
- ldr r2, =0x00002ba6
- adds r1, r2
- ldrh r1, [r1]
- muls r1, r6
- adds r1, r5
- bl StringCopy
- ldr r1, =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, =gUnknown_0203A030
- movs r0, 0
- strb r0, [r1]
- bl TakeTVShowInSearchOfTrainersOffTheAir
-_080F37EA:
- ldr r0, =gUnknown_0858D66C
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowInSearchOfTrainers
-
- thumb_func_start DoTVShowPokemonAngler
-DoTVShowPokemonAngler: @ 80F3828
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r0, =gScriptResult
- movs r1, 0
- strh r1, [r0]
- ldrb r0, [r4, 0x2]
- ldrb r2, [r4, 0x3]
- cmp r0, r2
- bcs _080F3868
- ldr r0, =gUnknown_0203A030
- strb r1, [r0]
- b _080F3870
- .pool
-_080F3868:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r1, 0
-_080F3870:
- ldrb r5, [r0]
- cmp r5, 0
- beq _080F3880
- cmp r5, 0x1
- beq _080F38B8
- b _080F38E0
- .pool
-_080F3880:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x6]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r4, 0x3]
- movs r0, 0x2
- bl sub_80EF340
- bl TVShowDone
- b _080F38E0
- .pool
-_080F38B8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x6]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r4, 0x2]
- movs r0, 0x2
- bl sub_80EF340
- bl TVShowDone
-_080F38E0:
- ldr r0, =gUnknown_0858D3B0
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonAngler
-
- thumb_func_start DoTVShowTheWorldOfMasters
-DoTVShowTheWorldOfMasters: @ 80F3904
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r6, =gUnknown_0203A030
- ldrb r5, [r6]
- cmp r5, 0x1
- beq _080F3974
- cmp r5, 0x1
- bgt _080F3948
- cmp r5, 0
- beq _080F394E
- b _080F39BE
- .pool
-_080F3948:
- cmp r5, 0x2
- beq _080F3994
- b _080F39BE
-_080F394E:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xB]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x6]
- movs r0, 0x1
- bl sub_80EF340
- ldrh r1, [r4, 0x2]
- movs r0, 0x2
- bl sub_80EF340
- movs r0, 0x1
- strb r0, [r6]
- b _080F39BE
- .pool
-_080F3974:
- ldr r0, =gStringVar1
- ldrh r2, [r4, 0x8]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- movs r0, 0x2
- strb r0, [r6]
- b _080F39BE
- .pool
-_080F3994:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xB]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r4, 0xA]
- movs r2, 0
- bl GetMapName
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
-_080F39BE:
- ldr r0, =gUnknown_0858D3B8
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTheWorldOfMasters
-
- thumb_func_start DoTVShowTodaysRivalTrainer
-DoTVShowTodaysRivalTrainer: @ 80F39E4
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0xA
- bls _080F3A0C
- b _080F3BE8
-_080F3A0C:
- lsls r0, r5, 2
- ldr r1, =_080F3A30
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3A30:
- .4byte _080F3A5C
- .4byte _080F3B30
- .4byte _080F3B58
- .4byte _080F3B90
- .4byte _080F3BA2
- .4byte _080F3BC4
- .4byte _080F3BD8
- .4byte _080F3A92
- .4byte _080F3AC0
- .4byte _080F3ADC
- .4byte _080F3AF8
-_080F3A5C:
- ldrb r0, [r4, 0x7]
- cmp r0, 0x56
- beq _080F3A6C
- cmp r0, 0x57
- beq _080F3A72
- movs r0, 0x7
- strb r0, [r2]
- b _080F3BE8
-_080F3A6C:
- movs r0, 0x8
- strb r0, [r2]
- b _080F3BE8
-_080F3A72:
- ldrh r1, [r4, 0xA]
- ldr r0, =0x00000117
- cmp r1, r0
- bgt _080F3A8C
- subs r0, 0x2
- cmp r1, r0
- blt _080F3A8C
- movs r0, 0xA
- strb r0, [r2]
- b _080F3BE8
- .pool
-_080F3A8C:
- movs r0, 0x9
- strb r0, [r2]
- b _080F3BE8
-_080F3A92:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r0, =gStringVar3
- ldrb r1, [r4, 0x7]
- movs r2, 0
- bl GetMapName
-_080F3AB0:
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- bne _080F3B12
- b _080F3B24
- .pool
-_080F3AC0:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- b _080F3AB0
- .pool
-_080F3ADC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- b _080F3AB0
- .pool
-_080F3AF8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _080F3B24
-_080F3B12:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3B24:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3B30:
- ldrb r1, [r4, 0x4]
- movs r0, 0
- bl sub_80EF340
- ldr r0, =0x000008a8
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080F3BCC
- ldr r0, [r4, 0x4]
- ldr r1, =0x00ffff00
- ands r0, r1
- cmp r0, 0
- bne _080F3B6E
- b _080F3B84
- .pool
-_080F3B58:
- ldr r0, =0x000008a8
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080F3BCC
- ldr r0, [r4, 0x4]
- ldr r1, =0x00ffff00
- ands r0, r1
- cmp r0, 0
- beq _080F3B84
-_080F3B6E:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3B84:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3B90:
- ldrh r0, [r4, 0x8]
- cmp r0, 0
- bne _080F3B9C
- movs r0, 0x6
- strb r0, [r2]
- b _080F3BE8
-_080F3B9C:
- movs r0, 0x5
- strb r0, [r2]
- b _080F3BE8
-_080F3BA2:
- ldrb r1, [r4, 0x6]
- movs r0, 0
- bl sub_80EF340
- ldrb r1, [r4, 0x5]
- movs r0, 0x1
- bl sub_80EF340
- ldrh r0, [r4, 0x8]
- cmp r0, 0
- beq _080F3BCC
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3BC4:
- ldrh r1, [r4, 0x8]
- movs r0, 0
- bl sub_80EF340
-_080F3BCC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3BD8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- bl TVShowDone
-_080F3BE8:
- ldr r0, =gUnknown_0858D3C4
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTodaysRivalTrainer
-
- thumb_func_start DoTVShowDewfordTrendWatcherNetwork
-DoTVShowDewfordTrendWatcherNetwork: @ 80F3C04
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x6
- bls _080F3C2A
- b _080F3D54
-_080F3C2A:
- lsls r0, r5, 2
- ldr r1, =_080F3C4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3C4C:
- .4byte _080F3C68
- .4byte _080F3CA0
- .4byte _080F3CA0
- .4byte _080F3CD4
- .4byte _080F3D0C
- .4byte _080F3D0C
- .4byte _080F3D40
-_080F3C68:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldrb r0, [r4, 0x8]
- cmp r0, 0
- bne _080F3C94
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3C94:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3CA0:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x9]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3CD4:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldrb r0, [r4, 0x8]
- cmp r0, 0
- bne _080F3D00
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3D00:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3D0C:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x9]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3D40:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- bl TVShowDone
-_080F3D54:
- ldr r0, =gUnknown_0858D3F0
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowDewfordTrendWatcherNetwork
-
- thumb_func_start DoTVShowHoennTreasureInvestigators
-DoTVShowHoennTreasureInvestigators: @ 80F3D74
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r7, =gUnknown_0203A030
- ldrb r6, [r7]
- cmp r6, 0x1
- beq _080F3E02
- cmp r6, 0x1
- bgt _080F3DB8
- cmp r6, 0
- beq _080F3DBE
- b _080F3E5C
- .pool
-_080F3DB8:
- cmp r6, 0x2
- beq _080F3E3C
- b _080F3E5C
-_080F3DBE:
- ldr r4, =gStringVar1
- ldrh r0, [r5, 0x2]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r0, [r5, 0x4]
- cmp r0, 0x57
- bne _080F3DFC
- ldrh r1, [r5, 0x6]
- ldr r0, =0x00000117
- cmp r1, r0
- bgt _080F3DF0
- subs r0, 0x2
- cmp r1, r0
- blt _080F3DF0
- movs r0, 0x2
- strb r0, [r7]
- b _080F3E5C
- .pool
-_080F3DF0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F3E5C
- .pool
-_080F3DFC:
- movs r0, 0x1
- strb r0, [r7]
- b _080F3E5C
-_080F3E02:
- ldr r4, =gStringVar1
- ldrh r0, [r5, 0x2]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x5]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrb r1, [r5, 0x4]
- movs r2, 0
- bl GetMapName
- bl TVShowDone
- b _080F3E5C
- .pool
-_080F3E3C:
- ldr r4, =gStringVar1
- ldrh r0, [r5, 0x2]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x5]
- bl sub_81DB5E8
- bl TVShowDone
-_080F3E5C:
- ldr r0, =gUnknown_0858D40C
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowHoennTreasureInvestigators
-
- thumb_func_start DoTVShowFindThatGamer
-DoTVShowFindThatGamer: @ 80F3E7C
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x1
- beq _080F3F28
- cmp r5, 0x1
- bgt _080F3EC0
- cmp r5, 0
- beq _080F3ECC
- b _080F4008
- .pool
-_080F3EC0:
- cmp r5, 0x2
- beq _080F3F78
- cmp r5, 0x3
- bne _080F3ECA
- b _080F3FCC
-_080F3ECA:
- b _080F4008
-_080F3ECC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- beq _080F3EE8
- cmp r0, 0x1
- beq _080F3EFC
- b _080F3F04
- .pool
-_080F3EE8:
- ldr r0, =gStringVar2
- ldr r1, =gText_Slots
- bl StringCopy
- b _080F3F04
- .pool
-_080F3EFC:
- ldr r0, =gStringVar2
- ldr r1, =gText_Roulette
- bl StringCopy
-_080F3F04:
- ldrb r1, [r4, 0x2]
- cmp r1, 0x1
- bne _080F3F1C
- ldr r0, =gUnknown_0203A030
- strb r1, [r0]
- b _080F4008
- .pool
-_080F3F1C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4008
- .pool
-_080F3F28:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- beq _080F3F44
- cmp r0, 0x1
- beq _080F3F58
- b _080F3F60
- .pool
-_080F3F44:
- ldr r0, =gStringVar2
- ldr r1, =gText_Slots
- bl StringCopy
- b _080F3F60
- .pool
-_080F3F58:
- ldr r0, =gStringVar2
- ldr r1, =gText_Roulette
- bl StringCopy
-_080F3F60:
- ldrh r1, [r4, 0x4]
- movs r0, 0x2
- bl sub_80EF340
- bl TVShowDone
- b _080F4008
- .pool
-_080F3F78:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- beq _080F3F94
- cmp r0, 0x1
- beq _080F3FA8
- b _080F3FB0
- .pool
-_080F3F94:
- ldr r0, =gStringVar2
- ldr r1, =gText_Slots
- bl StringCopy
- b _080F3FB0
- .pool
-_080F3FA8:
- ldr r0, =gStringVar2
- ldr r1, =gText_Roulette
- bl StringCopy
-_080F3FB0:
- ldrh r1, [r4, 0x4]
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4008
- .pool
-_080F3FCC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x3]
- cmp r1, 0
- beq _080F3FE8
- cmp r1, 0x1
- beq _080F3FFC
- b _080F4004
- .pool
-_080F3FE8:
- ldr r0, =gStringVar2
- ldr r1, =gText_Roulette
- bl StringCopy
- b _080F4004
- .pool
-_080F3FFC:
- ldr r0, =gStringVar2
- ldr r1, =gText_Slots
- bl StringCopy
-_080F4004:
- bl TVShowDone
-_080F4008:
- ldr r0, =gUnknown_0858D418
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowFindThatGamer
-
- thumb_func_start DoTVShowBreakingNewsTV
-DoTVShowBreakingNewsTV: @ 80F4028
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0xC
- bls _080F4050
- b _080F4344
-_080F4050:
- lsls r0, r7, 2
- ldr r1, =_080F4074
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4074:
- .4byte _080F40A8
- .4byte _080F40BA
- .4byte _080F40FC
- .4byte _080F4140
- .4byte _080F4168
- .4byte _080F418C
- .4byte _080F41D0
- .4byte _080F4254
- .4byte _080F42C8
- .4byte _080F42F4
- .4byte _080F42F4
- .4byte _080F4334
- .4byte _080F4284
-_080F40A8:
- ldrb r0, [r6, 0x5]
- cmp r0, 0
- bne _080F40B4
- movs r0, 0x1
- strb r0, [r2]
- b _080F4344
-_080F40B4:
- movs r0, 0x5
- strb r0, [r2]
- b _080F4344
-_080F40BA:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4344
- .pool
-_080F40FC:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4140:
- ldrh r1, [r6, 0x8]
- movs r0, 0
- bl sub_80EF340
- ldr r4, =gStringVar2
- ldrh r0, [r6, 0x6]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4168:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- bl TVShowDone
- b _080F4344
- .pool
-_080F418C:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4344
- .pool
-_080F41D0:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldrb r0, [r6, 0x5]
- cmp r0, 0x2
- beq _080F423C
- cmp r0, 0x2
- bgt _080F4218
- cmp r0, 0x1
- beq _080F421E
- b _080F4344
- .pool
-_080F4218:
- cmp r0, 0x3
- beq _080F4248
- b _080F4344
-_080F421E:
- ldrh r0, [r6, 0xC]
- cmp r0, 0
- bne _080F4230
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4230:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F4344
- .pool
-_080F423C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4248:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4254:
- ldr r0, =gStringVar1
- ldrh r2, [r6, 0xC]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- b _080F42A8
- .pool
-_080F4284:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
-_080F42A8:
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F4344
- .pool
-_080F42C8:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F4344
- .pool
-_080F42F4:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- movs r4, 0xB
- muls r1, r4
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- ldr r0, =gUnknown_0203A030
- strb r4, [r0]
- b _080F4344
- .pool
-_080F4334:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- bl TVShowDone
-_080F4344:
- ldr r0, =gUnknown_0858D428
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowBreakingNewsTV
-
- thumb_func_start DoTVShowSecretBaseVisit
-DoTVShowSecretBaseVisit: @ 80F4360
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r2, r0, 0
- cmp r6, 0xD
- bls _080F4388
- b _080F4588
-_080F4388:
- lsls r0, r6, 2
- ldr r1, =_080F43AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F43AC:
- .4byte _080F43E4
- .4byte _080F4414
- .4byte _080F44E4
- .4byte _080F4448
- .4byte _080F44E4
- .4byte _080F449C
- .4byte _080F44C0
- .4byte _080F44E4
- .4byte _080F44EA
- .4byte _080F4538
- .4byte _080F4538
- .4byte _080F4538
- .4byte _080F4538
- .4byte _080F4584
-_080F43E4:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0xC]
- bl sub_81DB5E8
- ldrb r0, [r5, 0x3]
- cmp r0, 0
- bne _080F4408
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4408:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4414:
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x4]
- lsls r1, 5
- ldr r2, =gDecorations + 1
- adds r1, r2
- bl StringCopy
- ldrb r0, [r5, 0x3]
- cmp r0, 0x1
- bne _080F443C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4588
- .pool
-_080F443C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4448:
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x5]
- lsls r1, 5
- ldr r2, =gDecorations + 1
- adds r1, r2
- bl StringCopy
- ldrb r1, [r5, 0x3]
- cmp r1, 0x3
- beq _080F4484
- cmp r1, 0x3
- bgt _080F4470
- cmp r1, 0x2
- beq _080F4476
- b _080F4588
- .pool
-_080F4470:
- cmp r1, 0x4
- beq _080F4490
- b _080F4588
-_080F4476:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4484:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4490:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F4588
- .pool
-_080F449C:
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x6]
- lsls r1, 5
- ldr r4, =gDecorations + 1
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrb r1, [r5, 0x7]
- lsls r1, 5
- adds r1, r4
- b _080F44CA
- .pool
-_080F44C0:
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x6]
- lsls r1, 5
- ldr r2, =gDecorations + 1
- adds r1, r2
-_080F44CA:
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F4588
- .pool
-_080F44E4:
- movs r0, 0x8
- strb r0, [r2]
- b _080F4588
-_080F44EA:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0xC]
- bl sub_81DB5E8
- ldrb r1, [r5, 0x2]
- cmp r1, 0x18
- bhi _080F450C
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F4588
- .pool
-_080F450C:
- cmp r1, 0x31
- bhi _080F451C
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F4588
- .pool
-_080F451C:
- cmp r1, 0x45
- bhi _080F452C
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F4588
- .pool
-_080F452C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4538:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0xC]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x8]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r5, 0xA]
- movs r4, 0xD
- muls r1, r4
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gUnknown_0203A030
- strb r4, [r0]
- b _080F4588
- .pool
-_080F4584:
- bl TVShowDone
-_080F4588:
- ldr r0, =gUnknown_0858D45C
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowSecretBaseVisit
-
- thumb_func_start DoTVShowPokemonLotterWinnerFlashReport
-DoTVShowPokemonLotterWinnerFlashReport: @ 80F45A0
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x5]
- bl sub_81DB5E8
- ldrb r0, [r5, 0x4]
- cmp r0, 0
- bne _080F45FC
- ldr r0, =gStringVar2
- ldr r1, =gText_Jackpot
- bl StringCopy
- b _080F4634
- .pool
-_080F45FC:
- cmp r0, 0x1
- bne _080F4614
- ldr r0, =gStringVar2
- ldr r1, =gText_First
- bl StringCopy
- b _080F4634
- .pool
-_080F4614:
- cmp r0, 0x2
- bne _080F462C
- ldr r0, =gStringVar2
- ldr r1, =gText_Second
- bl StringCopy
- b _080F4634
- .pool
-_080F462C:
- ldr r0, =gStringVar2
- ldr r1, =gText_Third
- bl StringCopy
-_080F4634:
- ldr r4, =gStringVar3
- ldrh r0, [r5, 0x2]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- bl TVShowDone
- ldr r1, =gUnknown_0858D494
- lsls r0, r6, 2
- adds r0, r1
- ldr r0, [r0]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonLotterWinnerFlashReport
-
- thumb_func_start DoTVShowThePokemonBattleSeminar
-DoTVShowThePokemonBattleSeminar: @ 80F466C
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- cmp r7, 0x6
- bls _080F4692
- b _080F4858
-_080F4692:
- lsls r0, r7, 2
- ldr r1, =_080F46B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F46B4:
- .4byte _080F46D0
- .4byte _080F4714
- .4byte _080F4760
- .4byte _080F47B4
- .4byte _080F47EC
- .4byte _080F4814
- .4byte _080F4838
-_080F46D0:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0x11]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x6]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0x4]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F4858
- .pool
-_080F4714:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0x11]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r2, [r6, 0x2]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4858
- .pool
-_080F4760:
- ldr r0, =gStringVar1
- ldrh r2, [r6, 0x6]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r6, 0x10]
- cmp r1, 0x2
- beq _080F479C
- cmp r1, 0x2
- bgt _080F4788
- cmp r1, 0x1
- beq _080F478E
- b _080F4824
- .pool
-_080F4788:
- cmp r1, 0x3
- beq _080F47A8
- b _080F4824
-_080F478E:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F4858
- .pool
-_080F479C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4858
- .pool
-_080F47A8:
- ldr r0, =gUnknown_0203A030
- strb r1, [r0]
- b _080F4858
- .pool
-_080F47B4:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x8]
- movs r5, 0xD
- muls r1, r5
- ldr r4, =gMoveNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0xC]
- muls r1, r5
- adds r1, r4
- b _080F4820
- .pool
-_080F47EC:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x8]
- movs r5, 0xD
- muls r1, r5
- ldr r4, =gMoveNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
- b _080F4820
- .pool
-_080F4814:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x8]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
-_080F4820:
- bl StringCopy
-_080F4824:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4858
- .pool
-_080F4838:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0xE]
- movs r5, 0xD
- muls r1, r5
- ldr r4, =gMoveNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- bl TVShowDone
-_080F4858:
- ldr r0, =gUnknown_0858D498
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowThePokemonBattleSeminar
-
- thumb_func_start DoTVShowTrainerFanClubSpecial
-DoTVShowTrainerFanClubSpecial: @ 80F487C
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x5
- bls _080F48A2
- b _080F499A
-_080F48A2:
- lsls r0, r5, 2
- ldr r1, =_080F48C4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F48C4:
- .4byte _080F48DC
- .4byte _080F4944
- .4byte _080F4944
- .4byte _080F4944
- .4byte _080F4944
- .4byte _080F4978
-_080F48DC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x18]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x17]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x14]
- bl CopyEasyChatWord
- ldrb r1, [r4, 0x16]
- cmp r1, 0x59
- bls _080F4918
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4918:
- cmp r1, 0x45
- bls _080F4928
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4928:
- cmp r1, 0x1D
- bls _080F4938
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4938:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4944:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x18]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x17]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x16]
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4978:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x18]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x17]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x14]
- bl CopyEasyChatWord
- bl TVShowDone
-_080F499A:
- ldr r0, =gUnknown_0858D320
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTrainerFanClubSpecial
-
- thumb_func_start DoTVShowTrainerFanClub
-DoTVShowTrainerFanClub: @ 80F49BC
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0xB
- bls _080F49E4
- b _080F4B3A
-_080F49E4:
- lsls r0, r5, 2
- ldr r1, =_080F4A08
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4A08:
- .4byte _080F4A38
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B1A
-_080F4A38:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- adds r0, r4, 0
- adds r0, 0x23
- ldrb r0, [r0]
- lsls r0, 8
- adds r1, r4, 0
- adds r1, 0x22
- ldrb r1, [r1]
- adds r0, r1
- movs r1, 0xA
- bl __umodsi3
- cmp r0, 0x9
- bls _080F4A60
- b _080F4B3A
-_080F4A60:
- lsls r0, 2
- ldr r1, =_080F4A74
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4A74:
- .4byte _080F4A9C
- .4byte _080F4AA8
- .4byte _080F4AB4
- .4byte _080F4AC0
- .4byte _080F4ACC
- .4byte _080F4AD8
- .4byte _080F4AE4
- .4byte _080F4AF0
- .4byte _080F4AFC
- .4byte _080F4B08
-_080F4A9C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AA8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AB4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AC0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4ACC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AD8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AE4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AF0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AFC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4B08:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4B14:
- movs r0, 0xB
- strb r0, [r2]
- b _080F4B3A
-_080F4B1A:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- bl TVShowDone
-_080F4B3A:
- ldr r0, =gUnknown_0858D4B4
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTrainerFanClub
-
- thumb_func_start DoTVShowSpotTheCuties
-DoTVShowSpotTheCuties: @ 80F4B5C
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0xF
- bls _080F4B82
- b _080F4D84
-_080F4B82:
- lsls r0, r5, 2
- ldr r1, =_080F4BA4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4BA4:
- .4byte _080F4BE4
- .4byte _080F4C30
- .4byte _080F4C30
- .4byte _080F4C30
- .4byte _080F4C64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D80
-_080F4BE4:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xF]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x10]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x2]
- cmp r1, 0x9
- bhi _080F4C14
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4C14:
- cmp r1, 0x13
- bhi _080F4C24
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4C24:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4C30:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xF]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x10]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x2]
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4C64:
- ldr r0, =gStringVar2
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x10]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0x18
- bls _080F4C76
- b _080F4D84
-_080F4C76:
- lsls r0, 2
- ldr r1, =_080F4C88
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4C88:
- .4byte _080F4CEC
- .4byte _080F4CF8
- .4byte _080F4CF8
- .4byte _080F4CF8
- .4byte _080F4CF8
- .4byte _080F4D04
- .4byte _080F4D04
- .4byte _080F4D04
- .4byte _080F4D04
- .4byte _080F4D10
- .4byte _080F4D10
- .4byte _080F4D10
- .4byte _080F4D10
- .4byte _080F4D1C
- .4byte _080F4D1C
- .4byte _080F4D1C
- .4byte _080F4D1C
- .4byte _080F4D28
- .4byte _080F4D28
- .4byte _080F4D28
- .4byte _080F4D28
- .4byte _080F4D34
- .4byte _080F4D40
- .4byte _080F4D4C
- .4byte _080F4D58
-_080F4CEC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4CF8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D04:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D10:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D1C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D28:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D34:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D40:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D4C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xD
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D58:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D64:
- ldr r0, =gStringVar2
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x10]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0xF
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D80:
- bl TVShowDone
-_080F4D84:
- ldr r0, =gUnknown_0858D4E4
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowSpotTheCuties
-
- thumb_func_start DoTVShowPokemonNewsBattleFrontier
-DoTVShowPokemonNewsBattleFrontier: @ 80F4D9C
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0x12
- bls _080F4DC4
- b _080F5014
-_080F4DC4:
- lsls r0, r7, 2
- ldr r1, =_080F4DE8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4DE8:
- .4byte _080F4E34
- .4byte _080F4F18
- .4byte _080F4ECE
- .4byte _080F4EF4
- .4byte _080F4EF4
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F3C
- .4byte _080F4F74
- .4byte _080F4F9C
- .4byte _080F4FE0
- .4byte _080F5004
-_080F4E34:
- ldrb r0, [r6, 0xD]
- subs r0, 0x1
- cmp r0, 0xC
- bls _080F4E3E
- b _080F5014
-_080F4E3E:
- lsls r0, 2
- ldr r1, =_080F4E4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4E4C:
- .4byte _080F4E80
- .4byte _080F4E86
- .4byte _080F4E8C
- .4byte _080F4E92
- .4byte _080F4E98
- .4byte _080F4E9E
- .4byte _080F4EA4
- .4byte _080F4EAA
- .4byte _080F4EB0
- .4byte _080F4EB6
- .4byte _080F4EBC
- .4byte _080F4EC2
- .4byte _080F4EC8
-_080F4E80:
- movs r0, 0x1
- strb r0, [r2]
- b _080F5014
-_080F4E86:
- movs r0, 0x2
- strb r0, [r2]
- b _080F5014
-_080F4E8C:
- movs r0, 0x3
- strb r0, [r2]
- b _080F5014
-_080F4E92:
- movs r0, 0x4
- strb r0, [r2]
- b _080F5014
-_080F4E98:
- movs r0, 0x5
- strb r0, [r2]
- b _080F5014
-_080F4E9E:
- movs r0, 0x6
- strb r0, [r2]
- b _080F5014
-_080F4EA4:
- movs r0, 0x7
- strb r0, [r2]
- b _080F5014
-_080F4EAA:
- movs r0, 0x8
- strb r0, [r2]
- b _080F5014
-_080F4EB0:
- movs r0, 0x9
- strb r0, [r2]
- b _080F5014
-_080F4EB6:
- movs r0, 0xA
- strb r0, [r2]
- b _080F5014
-_080F4EBC:
- movs r0, 0xB
- strb r0, [r2]
- b _080F5014
-_080F4EC2:
- movs r0, 0xC
- strb r0, [r2]
- b _080F5014
-_080F4EC8:
- movs r0, 0xD
- strb r0, [r2]
- b _080F5014
-_080F4ECE:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r6, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x10
- strb r0, [r1]
- b _080F5014
- .pool
-_080F4EF4:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r6, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0xF
- strb r0, [r1]
- b _080F5014
- .pool
-_080F4F18:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r6, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F5014
- .pool
-_080F4F3C:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x4]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x6]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0x8]
- muls r1, r5
- adds r1, r4
- b _080F4FEC
- .pool
-_080F4F74:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x4]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x6]
- muls r1, r5
- adds r1, r4
- b _080F4FEC
- .pool
-_080F4F9C:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x4]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x6]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0x8]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x11
- strb r0, [r1]
- b _080F5014
- .pool
-_080F4FE0:
- ldr r0, =gStringVar1
- ldrh r2, [r6, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
-_080F4FEC:
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x12
- strb r0, [r1]
- b _080F5014
- .pool
-_080F5004:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xC]
- bl sub_81DB5E8
- bl TVShowDone
-_080F5014:
- ldr r0, =gUnknown_0858D524
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonNewsBattleFrontier
-
- thumb_func_start DoTVShowWhatsNo1InHoennToday
-DoTVShowWhatsNo1InHoennToday: @ 80F5030
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x8
- bls _080F5056
- b _080F5164
-_080F5056:
- lsls r0, r5, 2
- ldr r1, =_080F5078
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F5078:
- .4byte _080F509C
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5154
-_080F509C:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x5]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x4]
- cmp r0, 0x6
- bhi _080F5164
- lsls r0, 2
- ldr r1, =_080F50C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F50C0:
- .4byte _080F50DC
- .4byte _080F50E8
- .4byte _080F50F4
- .4byte _080F5100
- .4byte _080F510C
- .4byte _080F5118
- .4byte _080F5124
-_080F50DC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F5164
- .pool
-_080F50E8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F5164
- .pool
-_080F50F4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5100:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F5164
- .pool
-_080F510C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5118:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5124:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5130:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x5]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5154:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x5]
- bl sub_81DB5E8
- bl TVShowDone
-_080F5164:
- ldr r0, =gUnknown_0858D570
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowWhatsNo1InHoennToday
-
- thumb_func_start sub_80F5180
-sub_80F5180: @ 80F5180
- push {r4,lr}
- movs r1, 0
- movs r2, 0
- ldr r3, [r0, 0xC]
- movs r4, 0x1
-_080F518A:
- adds r0, r3, 0
- lsrs r0, r1
- ands r0, r4
- cmp r0, 0
- beq _080F519A
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080F519A:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1F
- bls _080F518A
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F5180
-
- thumb_func_start sub_80F51AC
-sub_80F51AC: @ 80F51AC
- push {r4-r6,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- movs r2, 0
- movs r3, 0
- ldr r1, [r0, 0xC]
- movs r5, 0x1
- ldr r6, =gUnknown_0858D690
-_080F51BC:
- adds r0, r1, 0
- lsrs r0, r2
- ands r0, r5
- cmp r0, 0
- beq _080F51DA
- cmp r3, r4
- bne _080F51D4
- adds r0, r2, r6
- ldrb r0, [r0]
- b _080F51E6
- .pool
-_080F51D4:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
-_080F51DA:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1F
- bls _080F51BC
- movs r0, 0
-_080F51E6:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F51AC
-
- thumb_func_start DoTVShowSecretBaseSecrets
-DoTVShowSecretBaseSecrets: @ 80F51EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r2, [r0]
- mov r9, r2
- adds r2, r0, 0
- mov r0, r9
- cmp r0, 0x2B
- bls _080F521E
- b _080F552A
-_080F521E:
- lsls r0, 2
- ldr r1, =_080F5240
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F5240:
- .4byte _080F52F0
- .4byte _080F5348
- .4byte _080F53C4
- .4byte _080F5444
- .4byte _080F5498
- .4byte _080F5498
- .4byte _080F5498
- .4byte _080F54C4
- .4byte _080F54E8
- .4byte _080F54EC
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F54F0
- .4byte _080F5510
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
-_080F52F0:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1C]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- adds r0, r5, 0
- bl sub_80F5180
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _080F5328
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F552A
- .pool
-_080F5328:
- movs r0, 0x1
- strb r0, [r5, 0x12]
- bl Random
- ldr r4, =gUnknown_0203A031
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- strb r0, [r4]
- ldrb r1, [r4]
- b _080F542A
- .pool
-_080F5348:
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- adds r0, r5, 0
- bl sub_80F5180
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- beq _080F53DE
- cmp r6, 0x2
- beq _080F5370
- movs r4, 0
- b _080F538A
- .pool
-_080F5370:
- strb r6, [r5, 0x12]
- ldr r0, =gUnknown_0203A031
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F5384
- adds r0, r5, 0
- movs r1, 0x1
- b _080F542C
- .pool
-_080F5384:
- adds r0, r5, 0
- movs r1, 0
- b _080F542C
-_080F538A:
- bl Random
- ldr r7, =gUnknown_0203A031
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- strb r0, [r7, 0x1]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r7]
- cmp r0, r1
- bne _080F53B2
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =0x0000fffe
- cmp r4, r0
- bls _080F538A
-_080F53B2:
- movs r0, 0x2
- strb r0, [r5, 0x12]
- ldrb r1, [r7, 0x1]
- b _080F542A
- .pool
-_080F53C4:
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- adds r0, r5, 0
- bl sub_80F5180
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x2
- bne _080F53F0
-_080F53DE:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F552A
- .pool
-_080F53F0:
- movs r4, 0
- ldr r7, =gUnknown_0203A031
- ldr r2, =0x0000fffe
- mov r8, r2
-_080F53F8:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- strb r0, [r7, 0x2]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r7]
- cmp r0, r1
- beq _080F5418
- ldrb r2, [r7, 0x1]
- cmp r0, r2
- bne _080F5422
-_080F5418:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r8
- bls _080F53F8
-_080F5422:
- movs r0, 0x3
- strb r0, [r5, 0x12]
- ldr r0, =gUnknown_0203A031
- ldrb r1, [r0, 0x2]
-_080F542A:
- adds r0, r5, 0
-_080F542C:
- bl sub_80F51AC
- ldr r1, =gUnknown_0203A030
- strb r0, [r1]
- b _080F552A
- .pool
-_080F5444:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1C]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- ldrh r1, [r5, 0x2]
- movs r0, 0x2
- bl sub_80EF340
- ldrh r0, [r5, 0x2]
- cmp r0, 0x1E
- bhi _080F547C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F552A
- .pool
-_080F547C:
- cmp r0, 0x64
- bhi _080F548C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F552A
- .pool
-_080F548C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F552A
- .pool
-_080F5498:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1C]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F552A
- .pool
-_080F54C4:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1C]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- bl TVShowDone
- b _080F552A
- .pool
-_080F54E8:
- movs r0, 0x3
- b _080F5528
-_080F54EC:
- movs r0, 0x3
- b _080F5528
-_080F54F0:
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0x10]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- ldrb r0, [r5, 0x12]
- strb r0, [r1]
- b _080F552A
- .pool
-_080F5510:
- adds r0, r5, 0
- adds r0, 0x22
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F5522
- movs r0, 0x16
- b _080F5528
-_080F5522:
- movs r0, 0x15
- b _080F5528
-_080F5526:
- ldrb r0, [r5, 0x12]
-_080F5528:
- strb r0, [r2]
-_080F552A:
- ldr r0, =gUnknown_0858D594
- mov r2, r9
- lsls r1, r2, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowSecretBaseSecrets
-
- thumb_func_start DoTVShowSafariFanClub
-DoTVShowSafariFanClub: @ 80F5548
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0xA
- bls _080F5570
- b _080F56BC
-_080F5570:
- lsls r0, r5, 2
- ldr r1, =_080F5594
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F5594:
- .4byte _080F55C0
- .4byte _080F55DC
- .4byte _080F5614
- .4byte _080F5628
- .4byte _080F569A
- .4byte _080F562E
- .4byte _080F5650
- .4byte _080F5680
- .4byte _080F5694
- .4byte _080F569A
- .4byte _080F56B8
-_080F55C0:
- ldrb r1, [r4, 0x2]
- cmp r1, 0
- bne _080F55CC
- movs r0, 0x6
- strb r0, [r2]
- b _080F56BC
-_080F55CC:
- cmp r1, 0x3
- bhi _080F55D6
- movs r0, 0x5
- strb r0, [r2]
- b _080F56BC
-_080F55D6:
- movs r0, 0x1
- strb r0, [r2]
- b _080F56BC
-_080F55DC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x4]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- bne _080F5608
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5608:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5614:
- ldrb r1, [r4, 0x3]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5628:
- movs r0, 0x4
- strb r0, [r2]
- b _080F56BC
-_080F562E:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x4]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- beq _080F5662
- b _080F5674
- .pool
-_080F5650:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x4]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- bne _080F5674
-_080F5662:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5674:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5680:
- ldrb r1, [r4, 0x3]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5694:
- movs r0, 0x9
- strb r0, [r2]
- b _080F56BC
-_080F569A:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x4]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F56B8:
- bl TVShowDone
-_080F56BC:
- ldr r0, =gUnknown_0858D640
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowSafariFanClub
-
- thumb_func_start DoTVShowPokemonContestLiveUpdates2
-DoTVShowPokemonContestLiveUpdates2: @ 80F56D4
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r6, =gUnknown_0203A030
- ldrb r5, [r6]
- cmp r5, 0x2
- bgt _080F5718
- cmp r5, 0x1
- bge _080F5744
- cmp r5, 0
- beq _080F571E
- b _080F575E
- .pool
-_080F5718:
- cmp r5, 0x3
- beq _080F574E
- b _080F575E
-_080F571E:
- ldr r0, =gStringVar1
- ldrb r1, [r4, 0xA]
- bl sub_818E868
- ldrb r1, [r4, 0x16]
- cmp r1, 0x1
- bne _080F5734
- strb r1, [r6]
- b _080F575E
- .pool
-_080F5734:
- cmp r1, 0
- bne _080F573E
- movs r0, 0x2
- strb r0, [r6]
- b _080F575E
-_080F573E:
- movs r0, 0x3
- strb r0, [r6]
- b _080F575E
-_080F5744:
- ldr r0, =gStringVar3
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x17]
- bl sub_81DB5E8
-_080F574E:
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xB
- ldrb r2, [r4, 0x18]
- bl sub_81DB5E8
- bl TVShowDone
-_080F575E:
- ldr r0, =gUnknown_0858D384
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonContestLiveUpdates2
-
- thumb_func_start TVShowDone
-TVShowDone: @ 80F577C
- ldr r1, =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, =gUnknown_0203A030
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, r0
- ldr r0, =0x000027cd
- adds r2, r0
- movs r0, 0
- strb r0, [r2]
- bx lr
- .pool
- thumb_func_end TVShowDone
-
- thumb_func_start ResetTVShowState
-ResetTVShowState: @ 80F57B8
- ldr r1, =gUnknown_0203A030
- movs r0, 0
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end ResetTVShowState
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unk_text_util_2.s b/asm/unk_text_util_2.s
deleted file mode 100755
index 7f1a5ef70..000000000
--- a/asm/unk_text_util_2.s
+++ /dev/null
@@ -1,583 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start Font6Func
-@ int Font6Func(struct TextPrinter *x)
-Font6Func: @ 81BA250
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r6, 0
- adds r4, 0x14
- ldrb r0, [r6, 0x1C]
- cmp r0, 0x6
- bls _081BA260
- b _081BA660
-_081BA260:
- lsls r0, 2
- ldr r1, =_081BA270
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081BA270:
- .4byte _081BA28C
- .4byte _081BA554
- .4byte _081BA566
- .4byte _081BA590
- .4byte _081BA5C8
- .4byte _081BA63C
- .4byte _081BA64E
-_081BA28C:
- ldr r2, =gMain
- ldrh r1, [r2, 0x2C]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _081BA2A6
- ldrb r1, [r4]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081BA2A6
- movs r0, 0
- strb r0, [r6, 0x1E]
-_081BA2A6:
- ldrb r1, [r6, 0x1E]
- cmp r1, 0
- beq _081BA2E8
- ldrb r0, [r6, 0x1D]
- cmp r0, 0
- beq _081BA2E8
- subs r0, r1, 0x1
- strb r0, [r6, 0x1E]
- ldr r0, =gTextFlags
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _081BA2C4
- b _081BA50E
-_081BA2C4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _081BA2D0
- b _081BA50E
-_081BA2D0:
- ldrb r0, [r4]
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0
- strb r0, [r6, 0x1E]
- b _081BA50E
- .pool
-_081BA2E8:
- ldr r2, =gTextFlags
- ldrb r1, [r2]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081BA2FC
- movs r0, 0x3
- b _081BA2FE
- .pool
-_081BA2FC:
- ldrb r0, [r6, 0x1D]
-_081BA2FE:
- strb r0, [r6, 0x1E]
- ldr r0, [r6]
- ldrb r3, [r0]
- adds r0, 0x1
- str r0, [r6]
- adds r0, r3, 0
- subs r0, 0xF8
- cmp r0, 0x7
- bls _081BA312
- b _081BA52E
-_081BA312:
- lsls r0, 2
- ldr r1, =_081BA320
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081BA320:
- .4byte _081BA524
- .4byte _081BA512
- .4byte _081BA504
- .4byte _081BA500
- .4byte _081BA36E
- .4byte _081BA368
- .4byte _081BA340
- .4byte _081BA660
-_081BA340:
- ldrb r0, [r6, 0x6]
- strb r0, [r6, 0x8]
- ldrb r1, [r6, 0x5]
- ldr r0, =gFonts
- ldr r2, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r6, 0xB]
- ldrb r0, [r0, 0x5]
- adds r1, r0
- ldrb r0, [r6, 0x9]
- adds r0, r1
- strb r0, [r6, 0x9]
-_081BA35E:
- movs r0, 0x2
- b _081BA662
- .pool
-_081BA368:
- ldr r0, [r6]
- adds r0, 0x1
- b _081BA4C4
-_081BA36E:
- ldr r0, [r6]
- ldrb r3, [r0]
- adds r0, 0x1
- str r0, [r6]
- subs r0, r3, 0x1
- cmp r0, 0xF
- bls _081BA37E
- b _081BA52E
-_081BA37E:
- lsls r0, 2
- ldr r1, =_081BA38C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_081BA38C:
- .4byte _081BA3CC
- .4byte _081BA3EE
- .4byte _081BA412
- .4byte _081BA42C
- .4byte _081BA478
- .4byte _081BA47E
- .4byte _081BA35E
- .4byte _081BA498
- .4byte _081BA4A8
- .4byte _081BA4BC
- .4byte _081BA4C0
- .4byte _081BA4C8
- .4byte _081BA4D2
- .4byte _081BA4DE
- .4byte _081BA4EE
- .4byte _081BA4C0
-_081BA3CC:
- ldr r2, [r6]
- ldrb r1, [r2]
- lsls r1, 4
- ldrb r3, [r6, 0xC]
- movs r0, 0xF
- ands r0, r3
- orrs r0, r1
- strb r0, [r6, 0xC]
- adds r2, 0x1
- str r2, [r6]
- lsls r0, 24
- lsrs r0, 28
- ldrb r2, [r6, 0xD]
- lsls r1, r2, 28
- lsrs r1, 28
- lsrs r2, 4
- b _081BA472
-_081BA3EE:
- ldr r1, [r6]
- ldrb r2, [r1]
- movs r0, 0xF
- ands r0, r2
- ldrb r3, [r6, 0xD]
- movs r2, 0x10
- negs r2, r2
- ands r2, r3
- orrs r2, r0
- strb r2, [r6, 0xD]
- adds r1, 0x1
- str r1, [r6]
- ldrb r0, [r6, 0xC]
- lsrs r0, 4
- lsls r1, r2, 28
- lsrs r1, 28
- lsrs r2, 4
- b _081BA472
-_081BA412:
- ldr r1, [r6]
- ldrb r0, [r1]
- lsls r0, 4
- ldrb r3, [r6, 0xD]
- movs r2, 0xF
- ands r2, r3
- orrs r2, r0
- strb r2, [r6, 0xD]
- adds r1, 0x1
- str r1, [r6]
- ldrb r0, [r6, 0xC]
- lsrs r0, 4
- b _081BA46A
-_081BA42C:
- ldr r3, [r6]
- ldrb r1, [r3]
- lsls r1, 4
- ldrb r4, [r6, 0xC]
- movs r2, 0xF
- adds r0, r2, 0
- ands r0, r4
- orrs r0, r1
- strb r0, [r6, 0xC]
- adds r5, r3, 0x1
- str r5, [r6]
- ldrb r3, [r3, 0x1]
- adds r1, r2, 0
- ands r1, r3
- ldrb r4, [r6, 0xD]
- movs r3, 0x10
- negs r3, r3
- ands r3, r4
- orrs r3, r1
- strb r3, [r6, 0xD]
- adds r4, r5, 0x1
- str r4, [r6]
- ldrb r1, [r5, 0x1]
- lsls r1, 4
- ands r2, r3
- orrs r2, r1
- strb r2, [r6, 0xD]
- adds r4, 0x1
- str r4, [r6]
- lsls r0, 24
- lsrs r0, 28
-_081BA46A:
- lsls r1, r2, 28
- lsrs r1, 28
- lsls r2, 24
- lsrs r2, 28
-_081BA472:
- bl GenerateFontHalfRowLookupTable
- b _081BA35E
-_081BA478:
- ldr r0, [r6]
- adds r0, 0x1
- b _081BA4C4
-_081BA47E:
- ldr r0, [r6]
- ldrb r0, [r0]
- movs r1, 0xF
- ands r1, r0
- ldrb r2, [r4]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4]
- ldr r0, [r6]
- adds r0, 0x1
- b _081BA4C4
-_081BA498:
- ldr r0, [r6]
- ldrb r1, [r0]
- strb r1, [r6, 0x1E]
- adds r0, 0x1
- str r0, [r6]
- movs r0, 0x6
- strb r0, [r6, 0x1C]
- b _081BA35E
-_081BA4A8:
- movs r0, 0x1
- strb r0, [r6, 0x1C]
- ldrb r1, [r2]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _081BA50E
- movs r0, 0
- strb r0, [r4, 0x2]
- b _081BA50E
-_081BA4BC:
- movs r0, 0x5
- b _081BA64A
-_081BA4C0:
- ldr r0, [r6]
- adds r0, 0x2
-_081BA4C4:
- str r0, [r6]
- b _081BA35E
-_081BA4C8:
- ldr r1, [r6]
- adds r0, r1, 0x1
- str r0, [r6]
- ldrb r3, [r1, 0x1]
- b _081BA52E
-_081BA4D2:
- ldr r1, [r6]
- ldrb r0, [r1]
- ldrb r2, [r6, 0x6]
- adds r0, r2
- strb r0, [r6, 0x8]
- b _081BA4E8
-_081BA4DE:
- ldr r1, [r6]
- ldrb r0, [r1]
- ldrb r2, [r6, 0x7]
- adds r0, r2
- strb r0, [r6, 0x9]
-_081BA4E8:
- adds r1, 0x1
- str r1, [r6]
- b _081BA35E
-_081BA4EE:
- ldrb r0, [r6, 0x4]
- ldrb r2, [r6, 0xD]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- bl FillWindowPixelBuffer
- b _081BA35E
-_081BA500:
- movs r0, 0x2
- b _081BA506
-_081BA504:
- movs r0, 0x3
-_081BA506:
- strb r0, [r6, 0x1C]
- adds r0, r6, 0
- bl TextPrinterInitDownArrowCounters
-_081BA50E:
- movs r0, 0x3
- b _081BA662
-_081BA512:
- ldr r0, [r6]
- ldrb r3, [r0]
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- orrs r3, r1
- adds r0, 0x1
- str r0, [r6]
- b _081BA52E
-_081BA524:
- ldr r0, [r6]
- adds r0, 0x1
- str r0, [r6]
- movs r0, 0
- b _081BA662
-_081BA52E:
- adds r0, r3, 0
- bl DecompressGlyphFont6
- adds r0, r6, 0
- bl CopyGlyphToWindow
- ldr r0, =gUnknown_03002F90
- adds r0, 0x80
- ldrb r1, [r6, 0xA]
- ldrb r0, [r0]
- adds r1, r0
- ldrb r0, [r6, 0x8]
- adds r0, r1
- strb r0, [r6, 0x8]
- movs r0, 0
- b _081BA662
- .pool
-_081BA554:
- adds r0, r6, 0
- bl TextPrinterWait
- lsls r0, 16
- cmp r0, 0
- beq _081BA50E
- movs r0, 0
- strb r0, [r6, 0x1C]
- b _081BA50E
-_081BA566:
- adds r0, r6, 0
- bl TextPrinterWaitWithDownArrow
- lsls r0, 16
- cmp r0, 0
- beq _081BA50E
- ldrb r0, [r6, 0x4]
- ldrb r2, [r6, 0xD]
- lsls r2, 28
- lsrs r1, r2, 4
- orrs r1, r2
- lsrs r1, 24
- bl FillWindowPixelBuffer
- ldrb r0, [r6, 0x6]
- movs r1, 0
- strb r0, [r6, 0x8]
- ldrb r0, [r6, 0x7]
- strb r0, [r6, 0x9]
- strb r1, [r6, 0x1C]
- b _081BA50E
-_081BA590:
- adds r0, r6, 0
- bl TextPrinterWaitWithDownArrow
- lsls r0, 16
- cmp r0, 0
- beq _081BA50E
- adds r0, r6, 0
- bl TextPrinterClearDownArrow
- ldrb r1, [r6, 0x5]
- ldr r0, =gFonts
- ldr r2, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r6, 0xB]
- ldrb r0, [r0, 0x5]
- adds r1, r0
- strb r1, [r6, 0x1F]
- ldrb r0, [r6, 0x6]
- strb r0, [r6, 0x8]
- movs r0, 0x4
- strb r0, [r6, 0x1C]
- b _081BA50E
- .pool
-_081BA5C8:
- ldrb r2, [r6, 0x1F]
- cmp r2, 0
- beq _081BA638
- ldr r4, =gUnknown_08616124
- ldr r5, =gSaveBlock2Ptr
- ldr r0, [r5]
- ldrb r0, [r0, 0x14]
- lsls r1, r0, 29
- lsrs r0, r1, 29
- adds r0, r4
- ldrb r0, [r0]
- cmp r2, r0
- bcs _081BA604
- ldrb r0, [r6, 0x4]
- ldrb r1, [r6, 0xD]
- lsls r1, 28
- lsrs r3, r1, 4
- orrs r3, r1
- lsrs r3, 24
- movs r1, 0
- bl ScrollWindow
- movs r0, 0
- strb r0, [r6, 0x1F]
- b _081BA62E
- .pool
-_081BA604:
- ldrb r0, [r6, 0x4]
- lsrs r1, 29
- adds r1, r4
- ldrb r2, [r1]
- ldrb r1, [r6, 0xD]
- lsls r1, 28
- lsrs r3, r1, 4
- orrs r3, r1
- lsrs r3, 24
- movs r1, 0
- bl ScrollWindow
- ldr r0, [r5]
- ldrb r0, [r0, 0x14]
- lsls r0, 29
- lsrs r0, 29
- adds r0, r4
- ldrb r1, [r6, 0x1F]
- ldrb r0, [r0]
- subs r1, r0
- strb r1, [r6, 0x1F]
-_081BA62E:
- ldrb r0, [r6, 0x4]
- movs r1, 0x2
- bl CopyWindowToVram
- b _081BA50E
-_081BA638:
- strb r2, [r6, 0x1C]
- b _081BA50E
-_081BA63C:
- bl IsSEPlaying
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _081BA64A
- b _081BA50E
-_081BA64A:
- strb r0, [r6, 0x1C]
- b _081BA50E
-_081BA64E:
- ldrb r0, [r6, 0x1E]
- adds r1, r0, 0
- cmp r1, 0
- beq _081BA65C
- subs r0, 0x1
- strb r0, [r6, 0x1E]
- b _081BA50E
-_081BA65C:
- strb r1, [r6, 0x1C]
- b _081BA50E
-_081BA660:
- movs r0, 0x1
-_081BA662:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end Font6Func
-
- thumb_func_start DecompressGlyphFont6
-DecompressGlyphFont6: @ 81BA668
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r2, r0, 19
- lsls r2, 9
- movs r1, 0xE0
- lsls r1, 11
- ands r1, r0
- lsrs r1, 11
- ldr r0, =gFont6BrailleGlyphs
- adds r1, r0
- adds r5, r2, r1
- ldr r4, =gUnknown_03002F90
- adds r0, r5, 0
- adds r1, r4, 0
- bl DecompressGlyphTile
- adds r0, r5, 0
- adds r0, 0x10
- adds r1, r4, 0
- adds r1, 0x20
- bl DecompressGlyphTile
- movs r1, 0x80
- lsls r1, 1
- adds r0, r5, r1
- adds r1, r4, 0
- adds r1, 0x40
- bl DecompressGlyphTile
- movs r1, 0x88
- lsls r1, 1
- adds r0, r5, r1
- adds r1, r4, 0
- adds r1, 0x60
- bl DecompressGlyphTile
- adds r0, r4, 0
- adds r0, 0x80
- movs r1, 0x10
- strb r1, [r0]
- adds r0, 0x1
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DecompressGlyphFont6
-
- thumb_func_start GetGlyphWidthFont6
-GetGlyphWidthFont6: @ 81BA6CC
- movs r0, 0x10
- bx lr
- thumb_func_end GetGlyphWidthFont6
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unknown_task.s b/asm/unknown_task.s
index e3526c809..f6b96287e 100644
--- a/asm/unknown_task.s
+++ b/asm/unknown_task.s
@@ -267,35 +267,35 @@ _080BA1D8:
.4byte _080BA250
.4byte _080BA24C
_080BA214:
- ldr r0, =gUnknown_02022E14
+ ldr r0, =gBattle_BG0_X
b _080BA24E
.pool
_080BA21C:
- ldr r0, =gUnknown_02022E16
+ ldr r0, =gBattle_BG0_Y
b _080BA24E
.pool
_080BA224:
- ldr r0, =gUnknown_02022E18
+ ldr r0, =gBattle_BG1_X
b _080BA24E
.pool
_080BA22C:
- ldr r0, =gUnknown_02022E1A
+ ldr r0, =gBattle_BG1_Y
b _080BA24E
.pool
_080BA234:
- ldr r0, =gUnknown_02022E1C
+ ldr r0, =gBattle_BG2_X
b _080BA24E
.pool
_080BA23C:
- ldr r0, =gUnknown_02022E1E
+ ldr r0, =gBattle_BG2_Y
b _080BA24E
.pool
_080BA244:
- ldr r0, =gUnknown_02022E20
+ ldr r0, =gBattle_BG3_X
b _080BA24E
.pool
_080BA24C:
- ldr r0, =gUnknown_02022E22
+ ldr r0, =gBattle_BG3_Y
_080BA24E:
ldrh r6, [r0]
_080BA250:
diff --git a/asm/walda_phrase.s b/asm/walda_phrase.s
deleted file mode 100755
index be754f386..000000000
--- a/asm/walda_phrase.s
+++ /dev/null
@@ -1,543 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start walda_maybe
-walda_maybe: @ 81D99E4
- push {r4,lr}
- sub sp, 0x8
- ldr r4, =gStringVar2
- bl sub_80D2548
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- str r0, [sp]
- ldr r0, =sub_81D9A1C
- str r0, [sp, 0x4]
- movs r0, 0x4
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end walda_maybe
-
- thumb_func_start sub_81D9A1C
-sub_81D9A1C: @ 81D9A1C
- push {r4,r5,lr}
- ldr r4, =gSpecialVar_0x8004
- ldr r5, =gStringVar2
- adds r0, r5, 0
- bl sub_81D9A98
- strh r0, [r4]
- ldrh r0, [r4]
- cmp r0, 0x1
- beq _081D9A68
- cmp r0, 0x1
- bgt _081D9A44
- cmp r0, 0
- beq _081D9A62
- b _081D9A68
- .pool
-_081D9A44:
- cmp r0, 0x2
- bne _081D9A68
- bl sub_80D2578
- cmp r0, 0
- beq _081D9A5C
- ldr r0, =gText_Peekaboo
- bl sub_80D255C
- b _081D9A68
- .pool
-_081D9A5C:
- movs r0, 0x1
- strh r0, [r4]
- b _081D9A68
-_081D9A62:
- adds r0, r5, 0
- bl sub_80D255C
-_081D9A68:
- ldr r4, =gStringVar1
- bl sub_80D2548
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF168
- str r0, [r1]
- ldr r0, =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81D9A1C
-
- thumb_func_start sub_81D9A98
-sub_81D9A98: @ 81D9A98
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4]
- cmp r0, 0xFF
- bne _081D9AA6
- movs r0, 0x2
- b _081D9ABC
-_081D9AA6:
- bl sub_80D2548
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCompare
- cmp r0, 0
- beq _081D9ABA
- movs r0, 0
- b _081D9ABC
-_081D9ABA:
- movs r0, 0x1
-_081D9ABC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81D9A98
-
- thumb_func_start sub_81D9AC4
-sub_81D9AC4: @ 81D9AC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- adds r0, 0xA
- bl ReadUnalignedWord
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, =gScriptResult
- mov r8, r0
- bl sub_80D2548
- mov r7, sp
- adds r7, 0xA
- add r6, sp, 0xC
- mov r5, sp
- adds r5, 0xD
- str r4, [sp]
- str r0, [sp, 0x4]
- add r0, sp, 0x8
- adds r1, r7, 0
- adds r2, r6, 0
- adds r3, r5, 0
- bl sub_81D9B68
- mov r1, r8
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _081D9B1E
- ldrb r0, [r5]
- bl sub_80D24BC
- ldrb r0, [r6]
- bl sub_80D24F0
- add r0, sp, 0x8
- ldrh r0, [r0]
- ldrh r1, [r7]
- bl sub_80D2524
-_081D9B1E:
- mov r1, r8
- ldrh r0, [r1]
- bl sub_80D2480
- mov r1, r8
- ldrb r0, [r1]
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_81D9AC4
-
- thumb_func_start sub_81D9B40
-sub_81D9B40: @ 81D9B40
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r3, =gUnknown_0862AD14
-_081D9B4A:
- adds r0, r1, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _081D9B5C
- lsls r0, r1, 24
- lsrs r0, 24
- b _081D9B64
- .pool
-_081D9B5C:
- adds r1, 0x1
- cmp r1, 0x1F
- bls _081D9B4A
- movs r0, 0x20
-_081D9B64:
- pop {r1}
- bx r1
- thumb_func_end sub_81D9B40
-
- thumb_func_start sub_81D9B68
-sub_81D9B68: @ 81D9B68
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- mov r10, r0
- str r1, [sp, 0x20]
- str r2, [sp, 0x24]
- str r3, [sp, 0x28]
- ldr r0, [sp, 0x4C]
- ldr r5, [sp, 0x50]
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- adds r0, r5, 0
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xF
- bne _081D9C7E
- movs r4, 0
- add r7, sp, 0x10
-_081D9B98:
- adds r0, r5, r4
- ldrb r0, [r0]
- bl sub_81D9B40
- adds r1, r7, r4
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x20
- beq _081D9C7E
- adds r4, 0x1
- cmp r4, 0xE
- ble _081D9B98
- movs r6, 0x3
- movs r5, 0
- movs r0, 0x5
- mov r8, r0
- movs r4, 0xD
-_081D9BBC:
- mov r1, r8
- str r1, [sp]
- add r0, sp, 0x4
- adds r1, r7, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl sub_81D9D5C
- adds r6, 0x8
- adds r5, 0x5
- subs r4, 0x1
- cmp r4, 0
- bge _081D9BBC
- movs r0, 0x2
- str r0, [sp]
- add r0, sp, 0x4
- adds r1, r7, 0
- movs r2, 0x46
- movs r3, 0x73
- bl sub_81D9D5C
- add r0, sp, 0x4
- movs r1, 0
- movs r2, 0x3
- bl sub_81D9DAC
- adds r4, r0, 0
- adds r0, r7, 0
- movs r1, 0x75
- movs r2, 0x3
- bl sub_81D9DAC
- cmp r4, r0
- bne _081D9C7E
- add r0, sp, 0x4
- movs r1, 0x9
- movs r2, 0x15
- bl sub_81D9C90
- add r0, sp, 0x4
- ldrb r0, [r0, 0x8]
- movs r2, 0xF
- ands r2, r0
- add r0, sp, 0x4
- movs r1, 0x8
- bl sub_81D9C90
- add r0, sp, 0x4
- ldrb r2, [r0, 0x8]
- lsrs r2, 4
- movs r1, 0x8
- bl sub_81D9CDC
- add r0, sp, 0x4
- ldrb r2, [r0, 0x6]
- adds r1, r0, 0
- ldrb r0, [r0]
- ldrb r1, [r1, 0x2]
- eors r0, r1
- add r1, sp, 0x4
- ldrb r4, [r1, 0x4]
- eors r0, r4
- mov r3, r9
- lsrs r1, r3, 8
- eors r0, r1
- cmp r2, r0
- bne _081D9C7E
- add r0, sp, 0x4
- ldrb r3, [r0, 0x7]
- adds r2, r0, 0
- ldrb r1, [r0, 0x1]
- ldrb r0, [r2, 0x3]
- eors r1, r0
- adds r0, r2, 0
- ldrb r2, [r0, 0x5]
- eors r1, r2
- movs r0, 0xFF
- mov r5, r9
- ands r0, r5
- eors r1, r0
- cmp r3, r1
- bne _081D9C7E
- add r0, sp, 0x4
- ldrh r0, [r0]
- mov r1, r10
- strh r0, [r1]
- mov r0, sp
- adds r0, 0x6
- ldrh r0, [r0]
- ldr r3, [sp, 0x20]
- strh r0, [r3]
- ldr r5, [sp, 0x24]
- strb r4, [r5]
- ldr r0, [sp, 0x28]
- strb r2, [r0]
- movs r0, 0x1
- b _081D9C80
-_081D9C7E:
- movs r0, 0
-_081D9C80:
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81D9B68
-
- thumb_func_start sub_81D9C90
-sub_81D9C90: @ 81D9C90
- push {r4-r7,lr}
- adds r7, r0, 0
- mov r12, r1
- subs r3, r2, 0x1
- cmp r2, 0
- beq _081D9CD6
-_081D9C9C:
- ldrb r1, [r7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 31
- mov r2, r12
- subs r2, 0x1
- subs r5, r3, 0x1
- cmp r2, 0
- blt _081D9CCC
- movs r6, 0x80
- adds r3, r2, r7
-_081D9CB4:
- ldrb r1, [r3]
- adds r0, r6, 0
- ands r0, r1
- lsls r0, 24
- lsls r1, 1
- orrs r4, r1
- strb r4, [r3]
- lsrs r4, r0, 31
- subs r3, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _081D9CB4
-_081D9CCC:
- adds r3, r5, 0
- movs r0, 0x1
- negs r0, r0
- cmp r3, r0
- bne _081D9C9C
-_081D9CD6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D9C90
-
- thumb_func_start sub_81D9CDC
-sub_81D9CDC: @ 81D9CDC
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r3, r2, 24
- lsls r0, r3, 4
- orrs r3, r0
- lsls r0, r3, 24
- lsrs r3, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _081D9D04
-_081D9CF4:
- adds r2, r6, r4
- ldrb r1, [r2]
- adds r0, r3, 0
- eors r0, r1
- strb r0, [r2]
- adds r4, 0x1
- cmp r4, r5
- bcc _081D9CF4
-_081D9D04:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_81D9CDC
-
- thumb_func_start sub_81D9D0C
-sub_81D9D0C: @ 81D9D0C
- push {lr}
- lsrs r3, r1, 3
- movs r2, 0x7
- ands r2, r1
- movs r1, 0x80
- asrs r1, r2
- adds r0, r3
- ldrb r0, [r0]
- ands r0, r1
- cmp r0, 0
- beq _081D9D24
- movs r0, 0x1
-_081D9D24:
- pop {r1}
- bx r1
- thumb_func_end sub_81D9D0C
-
- thumb_func_start sub_81D9D28
-sub_81D9D28: @ 81D9D28
- lsrs r3, r1, 3
- movs r2, 0x7
- ands r2, r1
- movs r1, 0x80
- asrs r1, r2
- lsls r1, 24
- lsrs r1, 24
- adds r0, r3
- ldrb r2, [r0]
- orrs r1, r2
- strb r1, [r0]
- bx lr
- thumb_func_end sub_81D9D28
-
- thumb_func_start sub_81D9D40
-sub_81D9D40: @ 81D9D40
- lsrs r3, r1, 3
- movs r2, 0x7
- ands r2, r1
- movs r1, 0x80
- asrs r1, r2
- mvns r1, r1
- lsls r1, 24
- lsrs r1, 24
- adds r0, r3
- ldrb r2, [r0]
- ands r1, r2
- strb r1, [r0]
- bx lr
- thumb_func_end sub_81D9D40
-
- thumb_func_start sub_81D9D5C
-sub_81D9D5C: @ 81D9D5C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- mov r9, r1
- adds r1, r2, 0
- mov r8, r3
- ldr r7, [sp, 0x1C]
- movs r5, 0
- cmp r5, r7
- bcs _081D9DA0
- adds r4, r1, 0
-_081D9D76:
- mov r0, r8
- adds r1, r0, r5
- mov r0, r9
- bl sub_81D9D0C
- lsls r0, 24
- cmp r0, 0
- beq _081D9D90
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_81D9D28
- b _081D9D98
-_081D9D90:
- adds r0, r6, 0
- adds r1, r4, 0
- bl sub_81D9D40
-_081D9D98:
- adds r4, 0x1
- adds r5, 0x1
- cmp r5, r7
- bcc _081D9D76
-_081D9DA0:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81D9D5C
-
- thumb_func_start sub_81D9DAC
-sub_81D9DAC: @ 81D9DAC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- adds r7, r1, 0
- adds r6, r2, 0
- movs r4, 0
- movs r5, 0
- cmp r4, r6
- bcs _081D9DD6
-_081D9DC0:
- lsls r4, 1
- adds r1, r7, r5
- mov r0, r8
- bl sub_81D9D0C
- lsls r0, 24
- lsrs r0, 24
- orrs r4, r0
- adds r5, 0x1
- cmp r5, r6
- bcc _081D9DC0
-_081D9DD6:
- adds r0, r4, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81D9DAC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/wild_encounter.s b/asm/wild_encounter.s
index 2c628a5e4..9b6c901f6 100644
--- a/asm/wild_encounter.s
+++ b/asm/wild_encounter.s
@@ -68,7 +68,7 @@ _080B4920:
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl sub_8089660
+ bl MetatileBehavior_IsSurfableAndNotWaterfall
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1424,7 +1424,7 @@ _080B539C:
lsls r0, r6, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl sub_808952C
+ bl MetatileBehavior_IsLandWildEncounter
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1498,7 +1498,7 @@ _080B5418:
.pool
_080B543C:
adds r0, r4, 0
- bl sub_8089558
+ bl MetatileBehavior_IsWaterWildEncounter
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1509,7 +1509,7 @@ _080B543C:
cmp r0, 0
beq _080B54FE
adds r0, r4, 0
- bl sub_80894AC
+ bl MetatileBehavior_IsBridge
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1726,7 +1726,7 @@ _080B562C:
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl sub_808952C
+ bl MetatileBehavior_IsLandWildEncounter
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1769,7 +1769,7 @@ _080B568C:
bl MapGridGetMetatileBehaviorAt
lsls r0, 24
lsrs r0, 24
- bl sub_8089558
+ bl MetatileBehavior_IsWaterWildEncounter
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asmdiff.sh b/asmdiff.sh
new file mode 100644
index 000000000..1d2141c32
--- /dev/null
+++ b/asmdiff.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
+OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
+$OBJDUMP $OPTIONS baserom.gba > baserom.dump
+$OBJDUMP $OPTIONS pokeemerald.gba > pokeemerald.dump
+diff baserom.dump pokeemerald.dump
diff --git a/charmap.txt b/charmap.txt
index 8fe4147cc..05eff3012 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -355,12 +355,12 @@ B_LINK_OPPONENT_MON1_NAME = FD 0A
B_LINK_PLAYER_MON2_NAME = FD 0B
B_LINK_OPPONENT_MON2_NAME = FD 0C
B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D
-B_ATK_NAME = FD 0E
+B_ATK_PARTNER_NAME = FD 0E
B_ATK_NAME_WITH_PREFIX = FD 0F
B_DEF_NAME_WITH_PREFIX = FD 10
B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBank
-B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 12
-B_ACTIVE_NAME_WITH_PREFIX = FD 13
+B_ACTIVE_NAME_WITH_PREFIX = FD 12
+B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13
B_CURRENT_MOVE = FD 14
B_LAST_MOVE = FD 15
B_LAST_ITEM = FD 16
diff --git a/common_syms/tv.txt b/common_syms/tv.txt
new file mode 100644
index 000000000..0370f65e1
--- /dev/null
+++ b/common_syms/tv.txt
@@ -0,0 +1,4 @@
+sCurTVShowSlot
+sTV_SecretBaseVisitMovesTemp
+sTV_DecorationsBuffer
+sTV_SecretBaseVisitMonsTemp
diff --git a/data/battle_1.s b/data/battle_1.s
new file mode 100644
index 000000000..37f68bfd6
--- /dev/null
+++ b/data/battle_1.s
@@ -0,0 +1,12 @@
+
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+gUnknown_082FF1C8:: @ 82FF1C8
+ .byte 0x01, 0x04, 0x10, 0x40
+ .byte 0x02, 0x04, 0x08, 0x20
+ .byte 0x02, 0x04, 0x08, 0x20
+ .byte 0x00, 0x00, 0x00, 0x00
diff --git a/data/battle_4.s b/data/battle_4.s
deleted file mode 100644
index b134db586..000000000
--- a/data/battle_4.s
+++ /dev/null
@@ -1,134 +0,0 @@
-@ the second big chunk of data
-
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-
-gMoveEffectBS_Ptrs:: @ 831C224
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB386
- .4byte gUnknown_082DB395
- .4byte gUnknown_082DB3A4
- .4byte gUnknown_082DB3B3
- .4byte gUnknown_082DB3C9
- .4byte gUnknown_082DB3E6
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB3C2
- .4byte gUnknown_082DB3D6
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB3DD
- .4byte gUnknown_082DB3F4
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB36A
- .4byte gUnknown_082DB3F4
-
- .align 2
- window_template 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x003f
-
- .align 2
-gUnknown_0831C2C8:: @ 831C2C8
- .incbin "graphics/battle_interface/unk_battlebox.gbapal"
-
- .align 2
-gUnknown_0831C2E8:: @ 831C2E8
- .incbin "graphics/battle_interface/unk_battlebox.4bpp.lz"
-
- .align 2
- .byte 0x3A, 0x3E, 0x3B, 0x3F, 0x3C, 0x3D, 0x00, 0x00
-
- .align 2
-gUnknown_0831C3B8:: @ 831C3B8
- .byte 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_0831C3C0:: @ 831C3C0
- spr_template 0xd75a, 0xd75a, gUnknown_0831C3B8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_804F450
-
- .align 2
-sProtectSuccessRates:: @ 831C3D8
- .2byte 0xffff, 0x7fff, 0x3fff, 0x1fff
-
- .align 2
-gUnknown_0831C3E0:: @ 831C3E0
- .2byte MOVE_METRONOME, MOVE_STRUGGLE, MOVE_SKETCH, MOVE_MIMIC
- .2byte 0xfffe, MOVE_COUNTER, MOVE_MIRROR_COAT, MOVE_PROTECT
- .2byte MOVE_DETECT, MOVE_ENDURE, MOVE_DESTINY_BOND, MOVE_SLEEP_TALK
- .2byte MOVE_THIEF, MOVE_FOLLOW_ME, MOVE_SNATCH, MOVE_HELPING_HAND
- .2byte MOVE_COVET, MOVE_TRICK, MOVE_FOCUS_PUNCH, 0xffff
-
- .align 2
-gUnknown_0831C408:: @ 831C408
- .byte 0x01, 0xc8, 0x04, 0x96, 0x09, 0x64, 0x10, 0x50
- .byte 0x20, 0x28, 0x30, 0x14
-
- .align 2
-gUnknown_0831C414:: @ 831C414
- .2byte 0x004e, 0x004b, 0x0059, 0x0038
- .2byte 0x0039, 0x003d, 0x009d, 0x00f7
- .2byte 0x0081, 0x0081
-
- .align 2
-gUnknown_0831C428:: @ 831C428
- .2byte 0x0064, 0x0014, 0x00fa, 0x0028
- .2byte 0x01f4, 0x003c, 0x03e8, 0x0050
- .2byte 0x07d0, 0x0064, 0xffff, 0xffff
-
- .align 2
-@ 831C440
- .include "data/pickup_items.inc"
-
-sTerrainToType:: @ 831C483
- .byte 0x0c, 0x0c, 0x04, 0x0b, 0x0b, 0x0b, 0x05, 0x05
- .byte 0x00, 0x00
-
-sBallCatchBonuses:: @ 831C48D
- .byte 0x14, 0x0f, 0x0a, 0x0f, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_0831C494:: @ 831C494
- .byte 0x3d, 0x44, 0x3d, 0x44, 0x14, 0x2d, 0x54, 0x5c
- .byte 0x46, 0x55, 0x20, 0x5c, 0x26, 0x45, 0x46, 0x55
- .byte 0x14, 0x5a, 0x46, 0x5c, 0x1e, 0x32, 0x20, 0x5a
- .byte 0x38, 0x4e, 0x38, 0x4e, 0x19, 0x28, 0x4b, 0x5a
- .byte 0x45, 0x4b, 0x1c, 0x53, 0x23, 0x2d, 0x1d, 0x23
- .byte 0x3e, 0x48, 0x1e, 0x32, 0x3a, 0x5f, 0x58, 0x5e
- .byte 0x22, 0x2d, 0x1d, 0x28, 0x23, 0x28, 0x23, 0x5f
- .byte 0x38, 0x4e, 0x38, 0x4e, 0x23, 0x50, 0x22, 0x5e
- .byte 0x2c, 0x5e, 0x22, 0x28, 0x38, 0x4e, 0x38, 0x4e
- .byte 0x1e, 0x58, 0x1e, 0x58, 0x1e, 0x2b, 0x1b, 0x21
- .byte 0x28, 0x5a, 0x19, 0x57, 0x12, 0x58, 0x5a, 0x5f
- .byte 0x58, 0x5e, 0x16, 0x2a, 0x2a, 0x5c, 0x2a, 0x2f
- .byte 0x38, 0x4e, 0x38, 0x4e
-
- .align 2
-gUnknown_0831C4F8:: @ 831C4F8
- .byte 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x03, 0x00
- .byte 0x01, 0x02, 0x02, 0x00, 0x03, 0x01, 0x03, 0x01
- .byte 0x02, 0x03, 0x03, 0x02, 0x01, 0x00, 0x02, 0x02
- .byte 0x03, 0x00, 0x00, 0x00
-
diff --git a/data/battle_7.s b/data/battle_7.s
index a64a39dc2..ffd2e8daa 100644
--- a/data/battle_7.s
+++ b/data/battle_7.s
@@ -5,28 +5,40 @@
.align 2, 0
gUnknown_0832C0D0:: @ 832C0D0
- .incbin "baserom.gba", 0x32c0d0, 0x8
+ obj_tiles gUnknown_08C1F1C8, 0x1000, 0xd6ff
+ .align 2
gUnknown_0832C0D8:: @ 832C0D8
- .incbin "baserom.gba", 0x32c0d8, 0x8
+ obj_tiles gUnknown_08C1F46C, 0x1000, 0xd701
+ .align 2
gUnknown_0832C0E0:: @ 832C0E0
- .incbin "baserom.gba", 0x32c0e0, 0x8
+ obj_tiles gUnknown_08C1F5E8, 0x0800, 0xd6ff
+ .align 2
gUnknown_0832C0E8:: @ 832C0E8
- .incbin "baserom.gba", 0x32c0e8, 0x8
+ obj_tiles gUnknown_08C1F5E8, 0x0800, 0xd700
+ .align 2
gUnknown_0832C0F0:: @ 832C0F0
- .incbin "baserom.gba", 0x32c0f0, 0x8
+ obj_tiles gUnknown_08C1F76C, 0x0800, 0xd701
+ .align 2
gUnknown_0832C0F8:: @ 832C0F8
- .incbin "baserom.gba", 0x32c0f8, 0x8
+ obj_tiles gUnknown_08C1F76C, 0x0800, 0xd702
+ .align 2
gUnknown_0832C100:: @ 832C100
- .incbin "baserom.gba", 0x32c100, 0x8
+ obj_tiles gUnknown_08C1F8E8, 0x1000, 0xd70b
+ .align 2
gUnknown_0832C108:: @ 832C108
- .incbin "baserom.gba", 0x32c108, 0x20
+ obj_tiles gUnknown_08C0237C, 0x0100, 0xd704
+ obj_tiles gUnknown_08C0237C, 0x0120, 0xd705
+ obj_tiles gUnknown_08C0237C, 0x0100, 0xd706
+ obj_tiles gUnknown_08C0237C, 0x0120, 0xd707
+ .align 2
gUnknown_0832C128:: @ 832C128
- .incbin "baserom.gba", 0x32c128, 0x18
+ obj_pal gBattleInterface_BallStatusBarPal, 0xd6ff
+ obj_pal gBattleInterface_BallDisplayPal, 0xd704
diff --git a/data/battle_anim_80FE840.s b/data/battle_anim_80FE840.s
index 4b1a4d047..78631ee6e 100644
--- a/data/battle_anim_80FE840.s
+++ b/data/battle_anim_80FE840.s
@@ -4,176 +4,3874 @@
.section .rodata
.align 2, 0
+gUnknown_085920F0:: @ 85920F0
+ .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0004, 0x0005, 0x0006, 0x0005
+ .2byte 0x0008, 0x0005, 0x000a, 0x0005, 0x000c, 0x0005, 0x000e, 0x0005
+ .2byte 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08592114:: @ 8592114
+ .4byte gUnknown_085920F0
+
+ .align 2
+gUnknown_08592118:: @ 8592118
+ spr_template 0x2753, 0x2753, gUnknown_08524944, gUnknown_08592114, NULL, gDummySpriteAffineAnimTable, sub_80FE840
+ spr_template 0x2754, 0x2754, gUnknown_08524944, gUnknown_08592114, NULL, gDummySpriteAffineAnimTable, sub_80FE840
+ spr_template 0x2751, 0x2751, gUnknown_08524944, gUnknown_08592114, NULL, gDummySpriteAffineAnimTable, sub_80FE840
+
+ .align 2
+gUnknown_08592160:: @ 8592160
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592168:: @ 8592168
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592170:: @ 8592170
+ .2byte 0x0002, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592178:: @ 8592178
+ .2byte 0x0003, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592180:: @ 8592180
+ .2byte 0x0004, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592188:: @ 8592188
+ .2byte 0x0005, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592190:: @ 8592190
+ .2byte 0x0006, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592198:: @ 8592198
+ .2byte 0x0007, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085921A0:: @ 85921A0
+ .2byte 0x0008, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085921A8:: @ 85921A8
+ .4byte gUnknown_08592160
+ .4byte gUnknown_08592168
+ .4byte gUnknown_08592170
+ .4byte gUnknown_08592178
+ .4byte gUnknown_08592180
+ .4byte gUnknown_08592188
+ .4byte gUnknown_08592190
+
+ .align 2
+gUnknown_085921C4:: @ 85921C4
+ .4byte gUnknown_08592198
+
+ .align 2
+gUnknown_085921C8:: @ 85921C8
+ .4byte gUnknown_085921A0
+
+ .align 2
+gUnknown_085921CC:: @ 85921CC
+ .2byte 0xfffb, 0xfffb, 0x0100, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085921DC:: @ 85921DC
+ .4byte gUnknown_085921CC
+
+ .align 2
+gUnknown_085921E0:: @ 859216E0
+ spr_template 0x27a3, 0x27a3, gUnknown_08524A8C, gUnknown_085921C8, NULL, gUnknown_085921DC, sub_80FE8E0
+
+ .align 2
+gUnknown_085921F8:: @ 859216F8
+ spr_template 0x27a3, 0x27a3, gUnknown_08524904, gUnknown_085921A8, NULL, gDummySpriteAffineAnimTable, sub_80FE930
+
+ .align 2
gUnknown_08592210:: @ 8592210
- .incbin "baserom.gba", 0x592210, 0x4f0
+ spr_template 0x27a3, 0x27a3, gUnknown_08524904, gUnknown_085921C4, NULL, gDummySpriteAffineAnimTable, sub_80FE988
+
+ .align 2
+gUnknown_08592228:: @ 8592228
+ .2byte 0x0140, 0x0140, 0x0000, 0x0000, 0xfff2, 0xfff2, 0x0100, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592240:: @ 8592240
+ .4byte gUnknown_08592228
+
+ .align 2
+gUnknown_08592244:: @ 85922144
+ spr_template 0x27fb, 0x27fb, gUnknown_085249C4, gDummySpriteAnimTable, NULL, gUnknown_08592240, sub_80FE8E0
+
+ .align 2
+gUnknown_0859225C:: @ 859225C
+ .2byte 0xfffb, 0xfffb, 0x0100, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859226C:: @ 859226C
+ .4byte gUnknown_0859225C
+
+ .align 2
+gUnknown_08592270:: @ 8592270
+ spr_template 0x27a3, 0x27a3, gUnknown_08524A8C, gUnknown_085921C8, NULL, gUnknown_0859226C, sub_80FEAD8
+
+ .align 2
+gUnknown_08592288:: @ 8592288
+ spr_template 0x27a3, 0x27a3, gUnknown_08524904, gUnknown_085921A8, NULL, gDummySpriteAffineAnimTable, sub_80FEB44
+
+ .align 2
+gUnknown_085922A0:: @ 85922A0
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085922A8:: @ 85922A8
+ .2byte 0x0004, 0x0007, 0x0008, 0x0007, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085922B4:: @ 85922B4
+ .4byte gUnknown_085922A0
+ .4byte gUnknown_085922A8
+
+ .align 2
+gUnknown_085922BC:: @ 85922BC
+ spr_template 0x2716, 0x2716, gUnknown_0852490C, gUnknown_085922B4, NULL, gDummySpriteAffineAnimTable, sub_80FEC48
+
+ .align 2
+gUnknown_085922D4:: @ 85922D4
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085922DC:: @ 85922DC
+ .2byte 0x0004, 0x0007, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085922E4:: @ 85922E4
+ .4byte gUnknown_085922D4
+ .4byte gUnknown_085922DC
+
+ .align 2
+gUnknown_085922EC:: @ 85922EC
+ spr_template 0x27ae, 0x27ae, gUnknown_0852490C, gUnknown_085922E4, NULL, gDummySpriteAffineAnimTable, sub_80FED28
+
+ .align 2
+gUnknown_08592304:: @ 8592304
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859230C:: @ 859230C
+ .2byte 0x0004, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592314:: @ 8592314
+ .4byte gUnknown_08592304
+
+ .align 2
+gUnknown_08592318:: @ 8592318
+ .4byte gUnknown_0859230C
+
+ .align 2
+gUnknown_0859231C:: @ 859231C
+ spr_template 0x27af, 0x27af, gUnknown_0852490C, gUnknown_08592314, NULL, gDummySpriteAffineAnimTable, sub_80FEE78
+
+ .align 2
+gUnknown_08592334:: @ 8592334
+ spr_template 0x27af, 0x27af, gUnknown_08524904, gUnknown_08592318, NULL, gDummySpriteAffineAnimTable, sub_80FEF44
+
+ .align 2
+gUnknown_0859234C:: @ 859234C
+ .2byte 0x0000, 0x0005, 0x0004, 0x0005, 0x0008, 0x0005, 0x000c, 0x0005
+ .2byte 0x0010, 0x0005, 0x0014, 0x0005, 0x0010, 0x0005, 0x000c, 0x0005
+ .2byte 0x0008, 0x0005, 0x0004, 0x0005, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08592378:: @ 8592378
+ .2byte 0x0018, 0x0005, 0x001c, 0x0005, 0x0020, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592388:: @ 8592388
+ .4byte gUnknown_0859234C
+ .4byte gUnknown_08592378
+
+ .align 2
+gUnknown_08592390:: @ 8592390
+ spr_template 0x274f, 0x274f, gUnknown_0852490C, gUnknown_08592388, NULL, gDummySpriteAffineAnimTable, sub_80FEFFC
+
+ .align 2
+gUnknown_085923A8:: @ 85923A8
+ spr_template 0x274f, 0x274f, gUnknown_0852490C, gUnknown_08592388, NULL, gDummySpriteAffineAnimTable, sub_80FF268
+
+ .align 2
+gUnknown_085923C0:: @ 85923C0
+ .2byte 0x0000, 0x0003, 0x0000, 0x0043, 0x0000, 0x00c3, 0x0000, 0x0083, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085923D4:: @ 85923D4
+ .4byte gUnknown_085923C0
+
+ .align 2
+gUnknown_085923D8:: @ 85923D8
+ spr_template 0x27b0, 0x27b0, gUnknown_08524934, gUnknown_085923D4, NULL, gDummySpriteAffineAnimTable, sub_80FF0F4
+
+ .align 2
+gUnknown_085923F0:: @ 85923F0
+ .2byte 0x0000, 0x0000, 0x0100, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592400:: @ 8592400
+ .4byte gUnknown_085923F0
+
+ .align 2
+gUnknown_08592404:: @ 8592404
+ spr_template 0x27be, 0x27be, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08592400, sub_80FF0F4
+
+ .align 2
+gUnknown_0859241C:: @ 859241C
+ .2byte 0x0000, 0x0004, 0x0020, 0x0004, 0x0040, 0x0004, 0x0060, 0x0004, 0xffff, 0x0000
+ .align 2
+gUnknown_08592430:: @ 8592430
+ .2byte 0x0000, 0x0044, 0x0020, 0x0044, 0x0040, 0x0044, 0x0060, 0x0044, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592444:: @ 8592444
+ .4byte gUnknown_0859241C
+ .4byte gUnknown_08592430
+
+ .align 2
+gUnknown_0859244C:: @ 859244C
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfff5, 0x0000, 0x0600, 0x0000, 0x000b, 0x0000, 0x0600, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859246C:: @ 859246C
+ .2byte 0xff00, 0x0100, 0x0000, 0x0000, 0x000b, 0x0000, 0x0600, 0x0000, 0xfff5, 0x0000, 0x0600, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859248C:: @ 859248C
+ .4byte gUnknown_0859244C
+ .4byte gUnknown_0859246C
+
+ .align 2
+gUnknown_08592494:: @ 8592494
+ spr_template 0x27ca, 0x27ca, gUnknown_0852499C, gUnknown_08592444, NULL, gUnknown_0859248C, sub_80FF374
+
+ .align 2
+gUnknown_085924AC:: @ 85924AC
+ .2byte 0x0000, 0x0000, 0x0000, 0x0000, 0x0030, 0x0030, 0x0e00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085924C4:: @ 85924C4
+ .2byte 0xfff0, 0xfff0, 0x0100, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085924D4:: @ 85924D4
+ .4byte gUnknown_085924AC
+ .4byte gUnknown_085924C4
+
+ .align 2
+gUnknown_085924DC:: @ 85924DC
+ spr_template 0x27a3, 0x27a3, gUnknown_085249CC, gUnknown_085921C8, NULL, gUnknown_085924D4, sub_80FF698
+
+ .align 2
+gUnknown_085924F4:: @ 85924F4
+ .2byte 0x0000, 0x0007, 0x0010, 0x0007, 0x0020, 0x0007, 0x0030, 0x0007, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592508:: @ 8592508
+ .2byte 0x0000, 0x0047, 0x0010, 0x0047, 0x0020, 0x0047, 0x0030, 0x0047, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859251C:: @ 859251C
+ .2byte 0x0000, 0x0007, 0x0010, 0x0007, 0x0020, 0x0007, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859252C:: @ 859252C
+ .2byte 0x0000, 0x0047, 0x0010, 0x0047, 0x0020, 0x0047, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859253C:: @ 859253C
+ .4byte gUnknown_085924F4
+ .4byte gUnknown_08592508
+ .4byte gUnknown_0859251C
+ .4byte gUnknown_0859252C
+
+ .align 2
+gUnknown_0859254C:: @ 859254C
+ spr_template 0x27ef, 0x27ef, gUnknown_08524914, gUnknown_0859253C, NULL, gDummySpriteAffineAnimTable, sub_80FF768
+
+ .align 2
+gUnknown_08592564:: @ 8592564
+ spr_template 0x27ef, 0x27ef, gUnknown_08524914, gUnknown_0859253C, NULL, gDummySpriteAffineAnimTable, sub_80FF7EC
+
+ .align 2
+gUnknown_0859257C:: @ 859257C
+ .2byte 0x0003, 0x0003, 0x0000, 0x0005, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08592588:: @ 8592588
+ .4byte gUnknown_0859257C
+
+ .align 2
+gUnknown_0859258C:: @ 859258C
+ spr_template 0x27a3, 0x27a3, gUnknown_08524904, gUnknown_08592588, NULL, gDummySpriteAffineAnimTable, sub_80FF934
+
+ .align 2
+gUnknown_085925A4:: @ 85925A4
+ .2byte 0x0000, 0x001e, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085925AC:: @ 85925AC
+ .4byte gUnknown_085925A4
+
+ .align 2
+gUnknown_085925B0:: @ 85925B0
+ .2byte 0x0000, 0x0000, 0x0afc, 0x0000, 0x0000, 0x0000, 0x1404, 0x0000
+ .2byte 0x0000, 0x0000, 0x0afc, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085925D0:: @ 85925D0
+ .2byte 0x0000, 0x0000, 0x02ff, 0x0000, 0x0000, 0x0000, 0x0401, 0x0000
+ .2byte 0x0000, 0x0000, 0x04ff, 0x0000, 0x0000, 0x0000, 0x0401, 0x0000
+ .2byte 0x0000, 0x0000, 0x04ff, 0x0000, 0x0000, 0x0000, 0x0201, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592608:: @ 8592608
+ .4byte gUnknown_085925B0
+ .4byte gUnknown_085925D0
+
+ .align 2
+gUnknown_08592610:: @ 8592610
+ spr_template 0x27f0, 0x27f0, gUnknown_08524974, gUnknown_085925AC, NULL, gUnknown_08592608, sub_80FFB18
+
+ .align 2
+gUnknown_08592628:: @ 8592628
+ spr_template 0x27f0, 0x27f0, gUnknown_08524974, gUnknown_085925AC, NULL, gUnknown_08592608, sub_80FFBF4
+
+ .align 2
+gUnknown_08592640:: @ 8592640
+ .2byte 0x0000, 0x0004, 0x0004, 0x0004, 0x0008, 0x0004, 0x000c, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592654:: @ 8592654
+ .4byte gUnknown_08592640
+
+ .align 2
+gUnknown_08592658:: @ 8592658
+ spr_template 0x27d3, 0x27d3, gUnknown_0852490C, gUnknown_08592654, NULL, gDummySpriteAffineAnimTable, sub_80FFC70
+
+ .align 2
+gUnknown_08592670:: @ 8592670
+ spr_template 0x27f0, 0x27f0, gUnknown_08524974, gUnknown_085925AC, NULL, gUnknown_08592608, sub_80FFCB4
+
+ .align 2
+gUnknown_08592688:: @ 8592688
+ .2byte 0x0000, 0x0000, 0x0300, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592698:: @ 8592698
+ .2byte 0x0000, 0xfff6, 0x0300, 0x0000, 0x0000, 0xfffa, 0x0300, 0x0000
+ .2byte 0x0000, 0xfffe, 0x0300, 0x0000, 0x0000, 0x0000, 0x0300, 0x0000
+ .2byte 0x0000, 0x0002, 0x0300, 0x0000, 0x0000, 0x0006, 0x0300, 0x0000
+ .2byte 0x0000, 0x000a, 0x0300, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085926D8:: @ 85926D8
+ .4byte gUnknown_08592688
+ .4byte gUnknown_08592698
+ .4byte gUnknown_085925B0
+ .4byte gUnknown_085925D0
+
+ .align 2
+gUnknown_085926E8:: @ 85926E8
+ spr_template 0x27f0, 0x27f0, gUnknown_08524974, gUnknown_085925AC, NULL, gUnknown_085926D8, sub_80FFDBC
+
+ .align 2
gUnknown_08592700:: @ 8592700
- .incbin "baserom.gba", 0x592700, 0x78
+ .2byte 0x1805, 0x0001, 0x0004, 0x1008, 0x00ff, 0x0002, 0x1008, 0x0001
+ .2byte 0x0002, 0x1008, 0x0001, 0x0002, 0x1008, 0x0001, 0x0010, 0x0000
+ .2byte 0x007f, 0x0000
+
+ .align 2
+gUnknown_08592724:: @ 8592724
+ .2byte 0x001c, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859272C:: @ 859272C
+ .2byte 0x0020, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592734:: @ 8592734
+ .2byte 0x0014, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859273C:: @ 859273C
+ .2byte 0x001c, 0x0041, 0xffff, 0x0000
+ .align 2
+gUnknown_08592744:: @ 8592744
+ .2byte 0x0010, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859274C:: @ 859274C
+ .2byte 0x0010, 0x0041, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592754:: @ 8592754
+ .2byte 0x001c, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859275C:: @ 859275C
+ .4byte gUnknown_08592724
+ .4byte gUnknown_0859272C
+ .4byte gUnknown_08592734
+ .4byte gUnknown_0859273C
+ .4byte gUnknown_08592744
+ .4byte gUnknown_0859274C
+ .4byte gUnknown_08592754
+
+ .align 2
gUnknown_08592778:: @ 8592778
- .incbin "baserom.gba", 0x592778, 0x100
+ spr_template 0x274f, 0x274f, gUnknown_0852490C, gUnknown_0859275C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
+ .align 2
+gUnknown_08592790:: @ 8592790
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0104, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085927A8:: @ 85927A8
+ .4byte gUnknown_08592790
+
+ .align 2
+gUnknown_085927AC:: @ 85927AC
+ spr_template 0x27af, 0x27af, gUnknown_08524904, gUnknown_08592318, NULL, gDummySpriteAffineAnimTable, sub_8100640
+
+ .align 2
+gUnknown_085927C4:: @ 85927C4
+ spr_template 0x27af, 0x27af, gUnknown_0852496C, gUnknown_08592314, NULL, gUnknown_085927A8, sub_8100640
+
+ .align 2
+gUnknown_085927DC:: @ 85927DC
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x01f6, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085927F4:: @ 85927F4
+ .2byte 0x00c0, 0x00c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x01f4, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859280C:: @ 859280C
+ .2byte 0x008f, 0x008f, 0x0000, 0x0000, 0x0000, 0x0000, 0x01f1, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592824:: @ 8592824
+ .4byte gUnknown_085927DC
+
+ .align 2
+gUnknown_08592828:: @ 8592828
+ .4byte gUnknown_085927F4
+ .align 2
+gUnknown_0859282C:: @ 859282C
+ .4byte gUnknown_0859280C
+
+ .align 2
+gUnknown_08592830:: @ 8592830
+ spr_template 0x281f, 0x281f, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08592824, sub_8100640
+
+ .align 2
+gUnknown_08592848:: @ 8592848
+ spr_template 0x281f, 0x281f, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08592828, sub_8100640
+
+ .align 2
+gUnknown_08592860:: @ 8592860
+ spr_template 0x281f, 0x281f, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_0859282C, sub_8100640
+
+ .align 2
gUnknown_08592878:: @ 8592878
- .incbin "baserom.gba", 0x592878, 0x458
+ .2byte 0x001f, 0x027f, 0x03ff, 0x03e0, 0x7dc5, 0x7d56, 0x7eb6, 0x0000
+
+ .align 2
+gUnknown_08592888:: @ 8592888
+ spr_template 0x281a, 0x281a, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8100898
+
+ .align 2
+gUnknown_085928A0:: @ 85928A0
+ .2byte 0x0040, 0x0003, 0x0050, 0x0003, 0x0060, 0x0003, 0x0070, 0x0006, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085928B4:: @ 85928B4
+ .2byte 0x0040, 0x0043, 0x0050, 0x0043, 0x0060, 0x0043, 0x0070, 0x0046, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085928C8:: @ 85928C8
+ .4byte gUnknown_085928A0
+ .4byte gUnknown_085928B4
+
+ .align 2
+gUnknown_085928D0:: @ 85928D0
+ spr_template 0x2748, 0x2748, gUnknown_08524914, gUnknown_085928C8, NULL, gDummySpriteAffineAnimTable, sub_8100A50
+
+ .align 2
+gUnknown_085928E8:: @ 85928E8
+ spr_template 0x282f, 0x282f, gUnknown_08524914, gUnknown_085928C8, NULL, gDummySpriteAffineAnimTable, sub_8100A50
+
+ .align 2
+gUnknown_08592900:: @ 8592900
+ .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0x0040, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592918:: @ 8592918
+ .4byte gUnknown_08592900
+
+ .align 2
+gUnknown_0859291C:: @ 859291C
+ spr_template 0x2725, 0x2725, gUnknown_08524914, gUnknown_08592918, NULL, gDummySpriteAffineAnimTable, sub_81009F8
+
+ .align 2
+gUnknown_08592934:: @ 8592934
+ spr_template 0x2726, 0x2726, gUnknown_08524914, gUnknown_08592918, NULL, gDummySpriteAffineAnimTable, sub_81009F8
+
+ .align 2
+gUnknown_0859294C:: @ 859294C
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859295C:: @ 859295C
+ .2byte 0x0100, 0x0100, 0x0020, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859296C:: @ 859296C
+ .2byte 0x0100, 0x0100, 0x0040, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859297C:: @ 859297C
+ .2byte 0x0100, 0x0100, 0x0060, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859298C:: @ 859298C
+ .2byte 0x0100, 0x0100, 0x0080, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859299C:: @ 859299C
+ .2byte 0x0100, 0x0100, 0x00a0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085929AC:: @ 85929AC
+ .2byte 0x0100, 0x0100, 0x00c0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085929BC:: @ 85929BC
+ .2byte 0x0100, 0x0100, 0x00e0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085929CC:: @ 85929CC
+ .4byte gUnknown_0859294C
+ .4byte gUnknown_0859295C
+ .4byte gUnknown_0859296C
+ .4byte gUnknown_0859297C
+ .4byte gUnknown_0859298C
+ .4byte gUnknown_0859299C
+ .4byte gUnknown_085929AC
+ .4byte gUnknown_085929BC
+
+ .align 2
+gUnknown_085929EC:: @ 85929EC
+ spr_template 0x279f, 0x279f, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_085929CC, sub_8100A94
+
+ .align 2
+gUnknown_08592A04:: @ 8592A04
+ .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A18:: @ 8592A18
+ .4byte gUnknown_08592A04
+
+ .align 2
+gUnknown_08592A1C:: @ 8592A1C
+ spr_template 0x279a, 0x279a, gUnknown_08524A34, gUnknown_08592A18, NULL, gDummySpriteAffineAnimTable, sub_8100AE0
+
+ .align 2
+gUnknown_08592A34:: @ 8592A34
+ spr_template 0x279a, 0x279a, gUnknown_08524A34, gUnknown_08592A18, NULL, gDummySpriteAffineAnimTable, sub_8100B88
+
+ .align 2
+gUnknown_08592A4C:: @ 8592A4C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A54:: @ 8592A54
+ .2byte 0x0004, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A5C:: @ 8592A5C
+ .2byte 0x0008, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A64:: @ 8592A64
+ .2byte 0x000c, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A6C:: @ 8592A6C
+ .2byte 0x0010, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A74:: @ 8592A74
+ .2byte 0x0014, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A7C:: @ 8592A7C
+ .2byte 0x0000, 0x0081, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A84:: @ 8592A84
+ .2byte 0x0004, 0x0081, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A8C:: @ 8592A8C
+ .2byte 0x0008, 0x0081, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A94:: @ 8592A94
+ .2byte 0x000c, 0x0081, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592A9C:: @ 8592A9C
+ .4byte gUnknown_08592A4C
+ .4byte gUnknown_08592A54
+ .4byte gUnknown_08592A5C
+ .4byte gUnknown_08592A64
+ .4byte gUnknown_08592A6C
+ .4byte gUnknown_08592A74
+ .4byte gUnknown_08592A7C
+ .4byte gUnknown_08592A84
+ .4byte gUnknown_08592A8C
+ .4byte gUnknown_08592A94
+
+ .align 2
+gUnknown_08592AC4:: @ 8592AC4
+ spr_template 0x2758, 0x2758, gUnknown_0852490C, gUnknown_08592A9C, NULL, gDummySpriteAffineAnimTable, sub_8100E1C
+
+ .align 2
+gUnknown_08592ADC:: @ 8592ADC
+ spr_template 0x2828, 0x2828, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8100EF0
+
+ .align 2
+gUnknown_08592AF4:: @ 8592AF4
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592B04:: @ 8592B04
+ .2byte 0x0000, 0x0000, 0x0c02, 0x0000, 0x0000, 0x0000, 0x0600, 0x0000
+ .2byte 0x0000, 0x0000, 0x18fe, 0x0000, 0x0000, 0x0000, 0x0600, 0x0000
+ .2byte 0x0000, 0x0000, 0x0c02, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592B34:: @ 8592B34
+ .4byte gUnknown_08592AF4
+ .4byte gUnknown_08592B04
+
+ .align 2
+gUnknown_08592B3C:: @ 8592B3C
+ spr_template 0x2773, 0x2773, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08592B34, sub_81010CC
+
+ .align 2
+gUnknown_08592B54:: @ 8592B54
+ .2byte 0x0000, 0x0007, 0x0010, 0x0007, 0x0020, 0x0007, 0x0030, 0x0007
+ .2byte 0x0040, 0x0007, 0x0050, 0x0007, 0x0060, 0x0007, 0x0070, 0x0007
+ .2byte 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08592B78:: @ 8592B78
+ .4byte gUnknown_08592B54
+
+ .align 2
+gUnknown_08592B7C:: @ 8592B7C
+ spr_template 0x2741, 0x2741, gUnknown_08524914, gUnknown_08592B78, NULL, gDummySpriteAffineAnimTable, sub_810130C
+
+ .align 2
+gUnknown_08592B94:: @ 8592B94
+ spr_template 0x2741, 0x2741, gUnknown_08524914, gUnknown_08592B78, NULL, gDummySpriteAffineAnimTable, sub_810135C
+
+ .align 2
+gUnknown_08592BAC:: @ 8592BAC
+ .2byte 0x0000, 0x000a, 0x0004, 0x000a, 0x0008, 0x000a, 0x000c, 0x000a
+ .2byte 0x0010, 0x001a, 0x0010, 0x0005, 0x0014, 0x0005, 0x0018, 0x000f
+ .2byte 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592BD0:: @ 8592BD0
+ .2byte 0x0000, 0x004a, 0x0004, 0x004a, 0x0008, 0x004a, 0x000c, 0x004a
+ .2byte 0x0010, 0x005a, 0x0010, 0x0045, 0x0014, 0x0045, 0x0018, 0x004f
+ .2byte 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592BF4:: @ 8592BF4
+ .4byte gUnknown_08592BAC
+ .4byte gUnknown_08592BD0
+ .align 2
+gUnknown_08592BFC:: @ 8592BFC
+ spr_template 0x2730, 0x2730, gUnknown_0852490C, gUnknown_08592BF4, NULL, gDummySpriteAffineAnimTable, sub_8101440
+
+ .align 2
+gUnknown_08592C14:: @ 8592C14
+ .2byte 0x0000, 0x0028, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592C1C:: @ 8592C1C
+ .4byte gUnknown_08592C14
+
+ .align 2
+gUnknown_08592C20:: @ 8592C20
+ .2byte 0x0014, 0x0014, 0x00e2, 0x0000, 0x0008, 0x0008, 0x1801, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000, 0x7ffd, 0x0000, 0x0000, 0x0000
+ .2byte 0x0000, 0x0000, 0x1801, 0x0000, 0x7ffd, 0x000a, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592C50:: @ 8592C50
+ .2byte 0x0014, 0x0014, 0x001e, 0x0000, 0x0008, 0x0008, 0x18ff, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000, 0x7ffd, 0x0000, 0x0000, 0x0000
+ .2byte 0x0000, 0x0000, 0x18ff, 0x0000, 0x7ffd, 0x000a, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592C80:: @ 8592C80
+ .4byte gUnknown_08592C20
+ .4byte gUnknown_08592C50
+
+ .align 2
+gUnknown_08592C88:: @ 8592C88
+ spr_template 0x27f4, 0x27f4, gUnknown_08524974, gUnknown_08592C1C, NULL, gUnknown_08592C80, sub_81014F4
+
+ .align 2
+gUnknown_08592CA0:: @ 8592CA0
+ spr_template 0x271e, 0x271e, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81015AC
+
+ .align 2
+gUnknown_08592CB8:: @ 8592CB8
+ spr_template 0x271e, 0x271e, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101898
+
+ .align 2
gUnknown_08592CD0:: @ 8592CD0
- .incbin "baserom.gba", 0x592cd0, 0x1ec
+ .byte 0x40, 0x40, 0x00, 0xc0, 0xc0, 0x40, 0x20, 0xe0
+
+ .align 2
+gUnknown_08592CD8:: @ 8592CD8
+ spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101940
+
+ .align 2
+gUnknown_08592CF0:: @ 8592CF0
+ spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8101B90
+
+ .align 2
+gUnknown_08592D08:: @ 8592D08
+ .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592D1C:: @ 8592D1C
+ .2byte 0x0030, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592D24:: @ 8592D24
+ .4byte gUnknown_08592D08
+ .4byte gUnknown_08592D1C
+
+ .align 2
+gUnknown_08592D2C:: @ 8592D2C
+ spr_template 0x27c7, 0x27c7, gUnknown_08524914, gUnknown_08592D24, NULL, gDummySpriteAffineAnimTable, sub_8101F40
+
+ .align 2
+gUnknown_08592D44:: @ 8592D44
+ spr_template 0x282e, 0x282e, gUnknown_08524914, gUnknown_08592D24, NULL, gDummySpriteAffineAnimTable, sub_8101FA8
+
+ .align 2
+gUnknown_08592D5C:: @ 8592D5C
+ spr_template 0x282e, 0x282e, gUnknown_08524914, gUnknown_08592D24, NULL, gDummySpriteAffineAnimTable, sub_8101FF0
+
+ .align 2
+gUnknown_08592D74:: @ 8592D74
+ .2byte 0x0000, 0x0004, 0x0008, 0x000c, 0x0010, 0x0004, 0x0018, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592D88:: @ 8592D88
+ .4byte gUnknown_08592D74
+
+ .align 2
+gUnknown_08592D8C:: @ 8592D8C
+ spr_template 0x27c8, 0x27c8, gUnknown_08524954, gUnknown_08592D88, NULL, gDummySpriteAffineAnimTable, sub_81020D8
+
+ .align 2
+gUnknown_08592DA4:: @ 8592DA4
+ .2byte 0x0000, 0x0012, 0x0000, 0x0006, 0x0010, 0x0012, 0x0000, 0x0006
+ .2byte 0x0010, 0x0006, 0x0020, 0x0012, 0x0010, 0x0006, 0x0020, 0x0006
+ .2byte 0x0030, 0x0012, 0x0020, 0x0006, 0x0030, 0x0006, 0x0040, 0x0012
+ .2byte 0x0030, 0x0006, 0x0040, 0x0036, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592DE0:: @ 8592DE0
+ .4byte gUnknown_08592DA4
+
+ .align 2
+gUnknown_08592DE4:: @ 8592DE4
+ spr_template 0x27c9, 0x27c9, gUnknown_08524914, gUnknown_08592DE0, NULL, gDummySpriteAffineAnimTable, sub_810217C
+
+ .align 2
+gUnknown_08592DFC:: @ 8592DFC
+ spr_template 0x2721, 0x2721, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7820
+
+ .align 2
+gUnknown_08592E14:: @ 8592E14
+ .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003
+ .2byte 0x0040, 0x0003, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592E2C:: @ 8592E2C
+ .4byte gUnknown_08592E14
+ .align 2
+gUnknown_08592E30:: @ 8592E30
+ spr_template 0x272e, 0x272e, gUnknown_08524914, gUnknown_08592E2C, NULL, gDummySpriteAffineAnimTable, sub_80A77C8
+
+ .align 2
+gUnknown_08592E48:: @ 8592E48
+ .2byte 0x0003, 0x0005, 0x0002, 0x0005, 0x0001, 0x0005, 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592E5C:: @ 8592E5C
+ .4byte gUnknown_08592E48
+
+ .align 2
+gUnknown_08592E60:: @ 8592E60
+ .2byte 0x0200, 0x0200, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08592E70:: @ 8592E70
+ .4byte gUnknown_08592E60
+
+ .align 2
+gUnknown_08592E74:: @ 8592E74
+ spr_template 0x2722, 0x2722, gUnknown_08524AE4, gUnknown_08592E5C, NULL, gUnknown_08592E70, sub_8102268
+
+ .align 2
+gUnknown_08592E8C:: @ 8592E8C
+ .2byte 0x0000, 0x0005, 0x0001, 0x0005, 0x0002, 0x0005, 0x0003, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592EA0:: @ 8592EA0
+ .4byte gUnknown_08592E8C
+
+ .align 2
+gUnknown_08592EA4:: @ 8592EA4
+ spr_template 0x2722, 0x2722, gUnknown_08524AE4, gUnknown_08592EA0, NULL, gUnknown_08592E70, sub_810234C
+
+ .align 2
gUnknown_08592EBC:: @ 8592EBC
- .incbin "baserom.gba", 0x592ebc, 0x30
+ spr_template 0x27d2, 0x27d2, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81024E0
+
+ .align 2
+gUnknown_08592ED4:: @ 8592ED4
+ .2byte 0x0000, 0x0008, 0x0004, 0x0008, 0x0008, 0x0008, 0x000c, 0x0008, 0xfffe, 0x0000
+ .align 2
+gUnknown_08592EE8:: @ 8592EE8
+ .4byte gUnknown_08592ED4
+
+ .align 2
gUnknown_08592EEC:: @ 8592EEC
- .incbin "baserom.gba", 0x592eec, 0x134
+ spr_template 0x27d3, 0x27d3, gUnknown_0852490C, gUnknown_08592EE8, NULL, gDummySpriteAffineAnimTable, sub_8102540
+
+ .align 2
+gUnknown_08592F04:: @ 8592F04
+ .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0x0020, 0x0002, 0x0030, 0x0003
+ .2byte 0x0040, 0x0005, 0x0050, 0x0003, 0x0060, 0x0002, 0x0000, 0x0002
+ .2byte 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592F28:: @ 8592F28
+ .4byte gUnknown_08592F04
+
+ .align 2
+gUnknown_08592F2C:: @ 8592F2C
+ spr_template 0x272f, 0x272f, gUnknown_08524914, gUnknown_08592F28, NULL, gDummySpriteAffineAnimTable, sub_80A77C8
+
+ .align 2
+gUnknown_08592F44:: @ 8592F44
+ spr_template 0x2724, 0x2724, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8102844
+
+ .align 2
+gUnknown_08592F5C:: @ 8592F5C
+ .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0x0020, 0x0002, 0x0030, 0x0002, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592F70:: @ 8592F70
+ .4byte gUnknown_08592F5C
+
+ .align 2
+gUnknown_08592F74:: @ 8592F74
+ spr_template 0x27d0, 0x27d0, gUnknown_08524914, gUnknown_08592F70, NULL, gDummySpriteAffineAnimTable, sub_8102BCC
+
+ .align 2
+gUnknown_08592F8C:: @ 8592F8C
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592F94:: @ 8592F94
+ .2byte 0x0004, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592F9C:: @ 8592F9C
+ .2byte 0x0008, 0x0029, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592FA4:: @ 8592FA4
+ .2byte 0x000c, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592FAC:: @ 8592FAC
+ .2byte 0x0010, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592FB4:: @ 8592FB4
+ .2byte 0x0014, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592FBC:: @ 8592FBC
+ .2byte 0x0000, 0x008a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08592FC4:: @ 8592FC4
+ .2byte 0x0004, 0x008a, 0xffff, 0x0000
+ .align 2
+gUnknown_08592FCC:: @ 8592FCC
+ .4byte gUnknown_08592F8C
+ .4byte gUnknown_08592F94
+ .4byte gUnknown_08592F9C
+ .4byte gUnknown_08592FA4
+ .4byte gUnknown_08592FAC
+ .4byte gUnknown_08592FB4
+ .4byte gUnknown_08592FBC
+ .4byte gUnknown_08592FC4
+
+ .align 2
+gUnknown_08592FEC:: @ 8592FEC
+ .2byte 0x000c, 0x000c, 0x1000, 0x0000, 0xfff4, 0xfff4, 0x1000, 0x0000
+ .2byte 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593004:: @ 8593004
+ .4byte gUnknown_08592FEC
+
+ .align 2
+gUnknown_08593008:: @ 8593008
+ spr_template 0x2758, 0x2758, gUnknown_085249CC, gUnknown_08592FCC, NULL, gUnknown_08593004, sub_8102CD4
+
+ .align 2
gUnknown_08593020:: @ 8593020
- .incbin "baserom.gba", 0x593020, 0xf4
+ .2byte 0x2758, 0x7fff, 0x735f, 0x6adf, 0x623f, 0x59bf, 0x2771, 0x7fff
+ .2byte 0x6bf9, 0x57f4, 0x43ef, 0x33ea, 0x27c9, 0x7fff, 0x63ff, 0x47ff
+ .2byte 0x2bff, 0x0fff, 0x27bf, 0x7fff, 0x7f9a, 0x7f55, 0x7f10, 0x7ecc
+
+ .align 2
+gUnknown_08593050:: @ 8593050
+ spr_template 0x2758, 0x2758, gUnknown_085249CC, gUnknown_08592FCC, NULL, gUnknown_08593004, sub_8102EB0
+
+ .align 2
+gUnknown_08593068:: @ 8593068
+ spr_template 0x27d1, 0x27d1, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8102FB8
+
+ .align 2
+gUnknown_08593080:: @ 8593080
+ .2byte 0x00a0, 0x00a0, 0x0000, 0x0000, 0x0004, 0x0004, 0x0100, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593098:: @ 8593098
+ .4byte gUnknown_08593080
+
+ .align 2
+gUnknown_0859309C:: @ 859309C
+ spr_template 0x2758, 0x2758, gUnknown_085249CC, gUnknown_08592FCC, NULL, gUnknown_08593098, sub_8103028
+
+ .align 2
+gUnknown_085930B4:: @ 85930B4
+ .2byte 0x0000, 0x0042, 0x0010, 0x0042, 0x0020, 0x0042, 0x0030, 0x0042, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085930C8:: @ 85930C8
+ .2byte 0x0030, 0x0042, 0x0020, 0x0042, 0x0010, 0x0042, 0x0000, 0x0042, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085930DC:: @ 85930DC
+ .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0x0020, 0x0002, 0x0030, 0x0002, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085930F0:: @ 85930F0
+ .2byte 0x0030, 0x0002, 0x0020, 0x0002, 0x0010, 0x0002, 0x0000, 0x0002, 0xffff, 0x0000
+ .align 2
+gUnknown_08593104:: @ 8593104
+ .4byte gUnknown_085930B4
+ .4byte gUnknown_085930DC
+ .4byte gUnknown_085930C8
+ .4byte gUnknown_085930F0
+
+ .align 2
gUnknown_08593114:: @ 8593114
- .incbin "baserom.gba", 0x593114, 0x29c
+ spr_template 0x27e1, 0x27e1, gUnknown_08524914, gUnknown_08593104, NULL, gDummySpriteAffineAnimTable, sub_8103164
+
+ .align 2
+gUnknown_0859312C:: @ 859312C
+ .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x001e, 0x001e, 0x0800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593144:: @ 8593144
+ .2byte 0x0000, 0x0000, 0x0b04, 0x0000, 0x0000, 0x0000, 0x0bfc, 0x0000
+ .2byte 0x7ffd, 0x0002, 0x0000, 0x0000, 0xffe2, 0xffe2, 0x0800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000, 0x0010, 0x0010, 0x0000, 0x0000
+ .2byte 0x001e, 0x001e, 0x0800, 0x0000, 0x0000, 0x0000, 0x1000, 0x0000
+ .2byte 0x7ffd, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b04, 0x0000
+ .2byte 0x0000, 0x0000, 0x0bfc, 0x0000, 0x7ffd, 0x0002, 0x0000, 0x0000
+ .2byte 0xffe2, 0xffe2, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085931B4:: @ 85931B4
+ .4byte gUnknown_0859312C
+ .4byte gUnknown_08593144
+
+ .align 2
+gUnknown_085931BC:: @ 85931BC
+ spr_template 0x2750, 0x2750, gUnknown_085249D4, gDummySpriteAnimTable, NULL, gUnknown_085931B4, sub_8103208
+
+ .align 2
+gUnknown_085931D4:: @ 85931D4
+ spr_template 0x2750, 0x2750, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_085931B4, sub_8103284
+
+ .align 2
+gUnknown_085931EC:: @ 85931EC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085931F4:: @ 85931F4
+ .2byte 0x0000, 0x0041, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085931FC:: @ 85931FC
+ .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0010, 0x0004
+ .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859321C:: @ 859321C
+ .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0x0010, 0x0044
+ .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859323C:: @ 859323C
+ .4byte gUnknown_085931EC
+ .4byte gUnknown_085931F4
+ .4byte gUnknown_085931FC
+ .4byte gUnknown_0859321C
+
+ .align 2
+gUnknown_0859324C:: @ 859324C
+ spr_template 0x27e6, 0x27e6, gUnknown_08524914, gUnknown_0859323C, NULL, gDummySpriteAffineAnimTable, sub_8103390
+
+ .align 2
+gUnknown_08593264:: @ 8593264
+ spr_template 0x2750, 0x2750, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8103448
+ .align 2
+gUnknown_0859327C:: @ 859327C
+ .2byte 0x0004, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593284:: @ 8593284
+ .4byte gUnknown_0859327C
+
+ .align 2
+gUnknown_08593288:: @ 8593288
+ spr_template 0x2758, 0x2758, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8103498
+
+ .align 2
+gUnknown_085932A0:: @ 85932A0
+ spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810358C
+
+ .align 2
+gUnknown_085932B8:: @ 85932B8
+ spr_template 0x27a1, 0x27a1, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08597060, sub_8103620
+
+ .align 2
+gUnknown_085932D0:: @ 85932D0
+ .2byte 0x0000, 0x0009, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085932E4:: @ 85932E4
+ .4byte gUnknown_085932D0
+
+ .align 2
+gUnknown_085932E8:: @ 85932E8
+ .2byte 0x0050, 0x0050, 0x0000, 0x0000, 0x0009, 0x0009, 0x1200, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593300:: @ 8593300
+ .4byte gUnknown_085932E8
+
+ .align 2
+gUnknown_08593304:: @ 8593304
+ spr_template 0x2717, 0x2717, gUnknown_08524974, gUnknown_085932E4, NULL, gUnknown_08593300, sub_80A77C8
+
+ .align 2
+gUnknown_0859331C:: @ 859331C
+ .2byte 0x0000, 0x0043, 0x0008, 0x0043, 0x0010, 0x0043, 0x0018, 0x0043
+ .2byte 0x0020, 0x0043, 0x0028, 0x0043, 0x0030, 0x0043, 0xfffd, 0x0001
+ .2byte 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593340:: @ 8593340
+ .4byte gUnknown_0859331C
+
+ .align 2
+gUnknown_08593344:: @ 8593344
+ spr_template 0x275b, 0x275b, gUnknown_08524934, gUnknown_08593340, NULL, gDummySpriteAffineAnimTable, sub_81037D8
+
+ .align 2
+gUnknown_0859335C:: @ 859335C
+ .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0014, 0x0000, 0x0c00, 0x0000
+ .2byte 0x0000, 0x0000, 0x2000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859337C:: @ 859337C
+ .4byte gUnknown_0859335C
+
+ .align 2
+gUnknown_08593380:: @ 8593380
+ spr_template 0x2715, 0x2715, gUnknown_08524ADC, gDummySpriteAnimTable, NULL, gUnknown_0859337C, sub_810387C
+
+ .align 2
+gUnknown_08593398:: @ 8593398
+ spr_template 0x2713, 0x2713, gUnknown_08524B14, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81038C8
+
+ .align 2
gUnknown_085933B0:: @ 85933B0
- .incbin "baserom.gba", 0x5933b0, 0xf0
+ spr_template 0x2713, 0x2713, gUnknown_08524A54, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8103AA4
+
+ .align 2
+gUnknown_085933C8:: @ 85933C8
+ .2byte 0x0020, 0x0020, 0x0000, 0x0000, 0x0007, 0x0007, 0xc800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085933E0:: @ 85933E0
+ .2byte 0x0005, 0x0005, 0x0a00, 0x0000, 0xfff6, 0xfff6, 0x0a00, 0x0000
+ .2byte 0x000a, 0x000a, 0x0a00, 0x0000, 0xfff6, 0xfff6, 0x0a00, 0x0000
+ .2byte 0x000a, 0x000a, 0x0a00, 0x0000, 0xfff6, 0xfff6, 0x0a00, 0x0000
+ .2byte 0x000a, 0x000a, 0x0a00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593420:: @ 8593420
+ .4byte gUnknown_085933C8
+
+ .align 2
+gUnknown_08593424:: @ 8593424
+ .4byte gUnknown_085933E0
+
+ .align 2
+gUnknown_08593428:: @ 8593428
+ spr_template 0x27b3, 0x27b3, gUnknown_08524A14, gDummySpriteAnimTable, NULL, gUnknown_08593420, sub_80A7820
+
+ .align 2
+gUnknown_08593440:: @ 8593440
+ spr_template 0x27b4, 0x27b4, gUnknown_08524A14, gDummySpriteAnimTable, NULL, gUnknown_08593420, sub_80A7820
+
+ .align 2
+gUnknown_08593458:: @ 8593458
+ spr_template 0x2814, 0x2814, gUnknown_08524A1C, gDummySpriteAnimTable, NULL, gUnknown_08593420, sub_80A7820
+
+ .align 2
+gUnknown_08593470:: @ 8593470
+ spr_template 0x2830, 0x2830, gUnknown_08524A14, gDummySpriteAnimTable, NULL, gUnknown_08593424, sub_8108C94
+
+ .align 2
+gUnknown_08593488:: @ 8593488
+ spr_template 0x27bf, 0x27bf, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A78AC
+ .align 2
gUnknown_085934A0:: @ 85934A0
- .incbin "baserom.gba", 0x5934a0, 0x148
+ spr_template 0x27c2, 0x27c2, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8103FE8
+ .align 2
+gUnknown_085934B8:: @ 85934B8
+ .2byte 0x0008, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085934C0:: @ 85934C0
+ .4byte gUnknown_085934B8
+
+ .align 2
+gUnknown_085934C4:: @ 85934C4
+ .2byte 0x0000, 0x0000, 0x010a, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085934D4:: @ 85934D4
+ .4byte gUnknown_085934C4
+
+ .align 2
+gUnknown_085934D8:: @ 85934D8
+ spr_template 0x2774, 0x2774, gUnknown_0852496C, gUnknown_085934C0, NULL, gDummySpriteAffineAnimTable, sub_8104088
+
+ .align 2
+gUnknown_085934F0:: @ 85934F0
+ spr_template 0x2774, 0x2774, gUnknown_0852496C, gUnknown_085934C0, NULL, gUnknown_085934D4, sub_810413C
+
+ .align 2
+gUnknown_08593508:: @ 8593508
+ .2byte 0x0000, 0x0000, 0x0114, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593518:: @ 8593518
+ .4byte gUnknown_08593508
+
+ .align 2
+gUnknown_0859351C:: @ 859351C
+ spr_template 0x2716, 0x2716, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08593518, sub_81041C4
+
+ .align 2
+gUnknown_08593534:: @ 8593534
+ .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0004, 0x0000, 0x2800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859354C:: @ 859354C
+ .4byte gUnknown_08593534
+
+ .align 2
+gUnknown_08593550:: @ 8593550
+ spr_template 0x2719, 0x2719, gUnknown_085249BC, gDummySpriteAnimTable, NULL, gUnknown_0859354C, sub_8104304
+
+ .align 2
+gUnknown_08593568:: @ 8593568
+ .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0014, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593578:: @ 8593578
+ .2byte 0x0000, 0x00c3, 0x0010, 0x00c3, 0x0020, 0x00d4, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593588:: @ 8593588
+ .4byte gUnknown_08593568
+ .4byte gUnknown_08593578
+
+ .align 2
+gUnknown_08593590:: @ 8593590
+ spr_template 0x279a, 0x279a, gUnknown_08524A34, gUnknown_08593588, NULL, gDummySpriteAffineAnimTable, sub_8104364
+
+ .align 2
+gUnknown_085935A8:: @ 85935A8
+ .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0x0020, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085935B8:: @ 85935B8
+ .2byte 0x0000, 0x00c2, 0x0010, 0x00c2, 0x0020, 0x00c1, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085935C8:: @ 85935C8
+ .4byte gUnknown_085935A8
+ .4byte gUnknown_085935B8
+
+ .align 2
+gUnknown_085935D0:: @ 85935D0
+ spr_template 0x279a, 0x279a, gUnknown_08524A34, gUnknown_085935C8, NULL, gDummySpriteAffineAnimTable, sub_8104414
+
+ .align 2
gUnknown_085935E8:: @ 85935E8
- .incbin "baserom.gba", 0x5935e8, 0x20
+ .2byte 0xfffa, 0x0004, 0x0800, 0x0000, 0x000a, 0xfff6, 0x0800, 0x0000
+ .2byte 0xfffc, 0x0006, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
gUnknown_08593608:: @ 8593608
- .incbin "baserom.gba", 0x593608, 0x9c
+ .2byte 0xfffc, 0xfffb, 0x0c00, 0x0000, 0x0000, 0x0000, 0x1800, 0x0000
+ .2byte 0x0004, 0x0005, 0x0c00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593628:: @ 8593628
+ .2byte 0x0000, 0x0044, 0x0004, 0x0068, 0x0008, 0x0044, 0x000c, 0x0044, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859363C:: @ 859363C
+ .2byte 0x0000, 0x0004, 0x0004, 0x0028, 0x0008, 0x0004, 0x000c, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593650:: @ 8593650
+ .4byte gUnknown_08593628
+ .4byte gUnknown_0859363C
+
+ .align 2
+gUnknown_08593658:: @ 8593658
+ spr_template 0x2766, 0x2766, gUnknown_0852490C, gUnknown_08593650, NULL, gDummySpriteAffineAnimTable, sub_8104B1C
+
+ .align 2
+gUnknown_08593670:: @ 8593670
+ .2byte 0x000b, 0x000b, 0x0800, 0x0000, 0xfff5, 0xfff5, 0x0800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593688:: @ 8593688
+ .4byte gUnknown_08593670
+ .align 2
+gUnknown_0859368C:: @ 859368C
+ spr_template 0x2767, 0x2767, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08593688, sub_8104BAC
+
+ .align 2
gUnknown_085936A4:: @ 85936A4
- .incbin "baserom.gba", 0x5936a4, 0x20c
+ .2byte 0xfff6, 0x0009, 0x0700, 0x0000, 0x0014, 0xffec, 0x0700, 0x0000
+ .2byte 0xffec, 0x0014, 0x0700, 0x0000, 0x000a, 0xfff7, 0x0700, 0x0000
+ .2byte 0x7ffd, 0x0002, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085936D4:: @ 85936D4
+ spr_template 0x2712, 0x2712, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810501C
+
+ .align 2
+gUnknown_085936EC:: @ 85936EC
+ spr_template 0x27d5, 0x27d5, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7938
+
+ .align 2
+gUnknown_08593704:: @ 8593704
+ .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593718:: @ 8593718
+ .4byte gUnknown_08593704
+
+ .align 2
+gUnknown_0859371C:: @ 859371C
+ spr_template 0x27d6, 0x27d6, gUnknown_08524914, gUnknown_08593718, NULL, gDummySpriteAffineAnimTable, sub_80A77C8
+
+ .align 2
+gUnknown_08593734:: @ 8593734
+ .2byte 0x0000, 0x0000, 0x02f8, 0x0000, 0x0000, 0x0000, 0x0408, 0x0000
+ .2byte 0x0000, 0x0000, 0x02f8, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593754:: @ 8593754
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593764:: @ 8593764
+ .2byte 0xfff8, 0x0004, 0x0800, 0x0000, 0x7ffd, 0x0000, 0x0000, 0x0000
+ .2byte 0x0010, 0xfff8, 0x0800, 0x0000, 0xfff0, 0x0008, 0x0800, 0x0000
+ .2byte 0x7ffd, 0x0001, 0x0000, 0x0000, 0x0100, 0x0100, 0x0000, 0x0000
+ .2byte 0x0000, 0x0000, 0x0f00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085937A4:: @ 85937A4
+ .4byte gUnknown_08593734
+ .4byte gUnknown_08593754
+ .4byte gUnknown_08593764
+
+ .align 2
+gUnknown_085937B0:: @ 85937B0
+ spr_template 0x27da, 0x27da, gUnknown_08524AF4, gDummySpriteAnimTable, NULL, gUnknown_085937A4, sub_8105538
+
+ .align 2
+gUnknown_085937C8:: @ 85937C8
+ .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0010, 0x0010, 0x1e00, 0x0000
+ .2byte 0x7fff, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085937E0:: @ 85937E0
+ .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0020, 0x0020, 0x0f00, 0x0000
+ .2byte 0x7fff, 0x0001, 0x0000, 0x0000
+ .align 2
+gUnknown_085937F8:: @ 85937F8
+ .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x000b, 0x000b, 0x2d00, 0x0000
+ .2byte 0x7fff, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593810:: @ 8593810
+ .4byte gUnknown_085937C8
+ .4byte gUnknown_085937E0
+
+ .align 2
+gUnknown_08593818:: @ 8593818
+ .4byte gUnknown_085937F8
+
+ .align 2
+gUnknown_0859381C:: @ 859381C
+ spr_template 0x27db, 0x27db, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_08593810, sub_80A77C8
+
+ .align 2
+gUnknown_08593834:: @ 8593834
+ .2byte 0x0200, 0x0200, 0x0000, 0x0000, 0xfff0, 0xfff0, 0x1e00, 0x0000
+ .2byte 0x7fff, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859384C:: @ 859384C
+ .4byte gUnknown_08593834
+
+ .align 2
+gUnknown_08593850:: @ 8593850
+ spr_template 0x27db, 0x27db, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_0859384C, sub_80A77C8
+
+ .align 2
+gUnknown_08593868:: @ 8593868
+ spr_template 0x27db, 0x27db, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08593810, sub_81051C4
+
+ .align 2
+gUnknown_08593880:: @ 8593880
+ spr_template 0x27db, 0x27db, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08593818, sub_81052A4
+
+ .align 2
+gUnknown_08593898:: @ 8593898
+ spr_template 0x27db, 0x27db, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08593810, sub_81054E8
+
+ .align 2
gUnknown_085938B0:: @ 85938B0
- .incbin "baserom.gba", 0x5938b0, 0x2c
+ .2byte 0x0060, 0xfff3, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
+gUnknown_085938C0:: @ 85938C0
+ .2byte 0x0000, 0x0003, 0x0004, 0x0003, 0x0008, 0x0003, 0x0004, 0x0003
+ .2byte 0x0000, 0x0003, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085938D8:: @ 85938D8
+ .4byte gUnknown_085938C0
+
+ .align 2
gUnknown_085938DC:: @ 85938DC
- .incbin "baserom.gba", 0x5938dc, 0x18
+ spr_template 0x27df, 0x27df, gUnknown_0852490C, gUnknown_085938D8, NULL, gDummySpriteAffineAnimTable, sub_8105C48
+ .align 2
gUnknown_085938F4:: @ 85938F4
- .incbin "baserom.gba", 0x5938f4, 0x5c
+ .2byte 0x1c1e, 0x18ec, 0x1a10, 0x1cf6
+
+ .align 2
+gUnknown_085938FC:: @ 85938FC
+ .2byte 0x0000, 0x0006, 0x0010, 0x0006, 0x0020, 0x000f, 0x0010, 0x0006
+ .2byte 0x0000, 0x0006, 0x0010, 0x0046, 0x0020, 0x004f, 0x0010, 0x0046
+ .2byte 0x0000, 0x0006, 0x0010, 0x0006, 0x0020, 0x000f, 0x0010, 0x0006
+ .2byte 0x0000, 0x0006, 0xffff, 0x0000
+ .align 2
+gUnknown_08593934:: @ 8593934
+ .4byte gUnknown_085938FC
+
+ .align 2
+gUnknown_08593938:: @ 8593938
+ spr_template 0x27dd, 0x27dd, gUnknown_08524914, gUnknown_08593934, NULL, gDummySpriteAffineAnimTable, sub_80A77C8
+
+ .align 2
gUnknown_08593950:: @ 8593950
- .incbin "baserom.gba", 0x593950, 0x38
+ .2byte 0x27de, 0x270f, 0x270e, 0x0000
+
+ .align 2
+gUnknown_08593958:: @ 8593958
+ spr_template 0x27de, 0x27de, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8105DE8
+
+ .align 2
+gUnknown_08593970:: @ 8593970
+ spr_template 0x27e2, 0x27e2, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8105E60
+ .align 2
gUnknown_08593988:: @ 8593988
- .incbin "baserom.gba", 0x593988, 0x210
+ .2byte 0x000a, 0xfff3, 0x0a00, 0x0000, 0xfff6, 0x000d, 0x0a00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085939A0:: @ 85939A0
+ spr_template 0x27e8, 0x27e8, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8106140
+
+ .align 2
+gUnknown_085939B8:: @ 85939B8
+ spr_template 0x27e8, 0x27e8, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81061C4
+
+ .align 2
+gUnknown_085939D0:: @ 85939D0
+ spr_template 0x27e8, 0x27e8, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810624C
+
+ .align 2
+gUnknown_085939E8:: @ 85939E8
+ .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0008, 0x0008, 0x0100, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593A00:: @ 8593A00
+ .4byte gUnknown_085939E8
+
+ .align 2
+gUnknown_08593A04:: @ 8593A04
+ spr_template 0x27e9, 0x27e9, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08593A00, sub_810673C
+
+ .align 2
+gUnknown_08593A1C:: @ 8593A1C
+ spr_template 0x27e9, 0x27e9, gUnknown_085249CC, gDummySpriteAnimTable, NULL, gUnknown_08593A00, sub_8106878
+
+ .align 2
+gUnknown_08593A34:: @ 8593A34
+ .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0008, 0x0008, 0x0100, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593A4C:: @ 8593A4C
+ .4byte gUnknown_08593A34
+
+ .align 2
+gUnknown_08593A50:: @ 8593A50
+ spr_template 0x27fd, 0x27fd, gUnknown_085249C4, gDummySpriteAnimTable, NULL, gUnknown_08593A4C, sub_8106944
+
+ .align 2
+gUnknown_08593A68:: @ 8593A68
+ .2byte 0x0000, 0x0004, 0x0004, 0x0004, 0x0008, 0x0004, 0x0004, 0x0004
+ .2byte 0x0000, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593A80:: @ 8593A80
+ .4byte gUnknown_08593A68
+
+ .align 2
+gUnknown_08593A84:: @ 8593A84
+ spr_template 0x27ea, 0x27ea, gUnknown_0852490C, gUnknown_08593A80, NULL, gDummySpriteAffineAnimTable, sub_81069B8
+
+ .align 2
+gUnknown_08593A9C:: @ 8593A9C
+ .2byte 0x0000, 0x0018, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593AA4:: @ 8593AA4
+ .4byte gUnknown_08593A9C
+
+ .align 2
+gUnknown_08593AA8:: @ 8593AA8
+ spr_template 0x27ec, 0x27ec, gUnknown_08524914, gUnknown_08593AA4, NULL, gDummySpriteAffineAnimTable, sub_81069D0
+
+ .align 2
+gUnknown_08593AC0:: @ 8593AC0
+ spr_template 0x27eb, 0x27eb, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8106AD0
+
+ .align 2
+gUnknown_08593AD8:: @ 8593AD8
+ .2byte 0x0000, 0x0003, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08593AE0:: @ 8593AE0
+ .2byte 0x0010, 0x0003, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08593AE8:: @ 8593AE8
+ .4byte gUnknown_08593AD8
+ .4byte gUnknown_08593AE0
+
+ .align 2
+gUnknown_08593AF0:: @ 8593AF0
+ spr_template 0x27ed, 0x27ed, gUnknown_08524914, gUnknown_08593AE8, NULL, gDummySpriteAffineAnimTable, sub_8106B54
+
+ .align 2
+gUnknown_08593B08:: @ 8593B08
+ .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0xffff, 0x0000
+ .align 2
+gUnknown_08593B1C:: @ 8593B1C
+ .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0x0030, 0x0044, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593B30:: @ 8593B30
+ .4byte gUnknown_08593B08
+ .4byte gUnknown_08593B1C
+
+ .align 2
+gUnknown_08593B38:: @ 8593B38
+ spr_template 0x27ee, 0x27ee, gUnknown_08524914, gUnknown_08593B30, NULL, gDummySpriteAffineAnimTable, sub_8106C80
+
+ .align 2
+gUnknown_08593B50:: @ 8593B50
+ .2byte 0x0000, 0x0008, 0x0010, 0x0008, 0x0020, 0x0008, 0x0010, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593B64:: @ 8593B64
+ .2byte 0x0010, 0x0048, 0x0020, 0x0048, 0x0010, 0x0048, 0x0000, 0x0048, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08593B78:: @ 8593B78
+ .4byte gUnknown_08593B50
+ .4byte gUnknown_08593B64
+
+ .align 2
+gUnknown_08593B80:: @ 8593B80
+ spr_template 0x27e7, 0x27e7, gUnknown_08524914, gUnknown_08593B78, NULL, gDummySpriteAffineAnimTable, sub_8106CD0
+
+ .align 2
gUnknown_08593B98:: @ 8593B98
- .incbin "baserom.gba", 0x593b98, 0x1488
+ .2byte 0xfff4, 0x0008, 0x0400, 0x0000, 0x0014, 0xffec, 0x0400, 0x0000
+ .2byte 0xfff8, 0x000c, 0x0400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593BB8:: @ 8593BB8
+ spr_template 0x27f1, 0x27f1, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8106E00
+
+ .align 2
+gUnknown_08593BD0:: @ 8593BD0
+ .2byte 0x0000, 0x0000, 0x0500, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593BE0:: @ 8593BE0
+ .2byte 0x0000, 0x0000, 0x10f8, 0x0000, 0x7fff, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593BF0:: @ 8593BF0
+ .2byte 0x0000, 0x0000, 0x1008, 0x0000, 0x7fff, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593C00:: @ 8593C00
+ .4byte gUnknown_08593BD0
+ .4byte gUnknown_08593BE0
+ .4byte gUnknown_08593BF0
+
+ .align 2
+gUnknown_08593C0C:: @ 8593C0C
+ spr_template 0x27de, 0x27de, gUnknown_0852496C, gUnknown_08592FCC, NULL, gUnknown_08593C00, sub_8106F60
+ .align 2
+gUnknown_08593C24:: @ 8593C24
+ spr_template 0x27de, 0x27de, gUnknown_0852496C, gUnknown_08592FCC, NULL, gUnknown_08593C00, sub_8106F00
+
+ .align 2
+gUnknown_08593C3C:: @ 8593C3C
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593C4C:: @ 8593C4C
+ .2byte 0x0200, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08593C5C:: @ 8593C5C
+ .4byte gUnknown_08593C3C
+ .4byte gUnknown_08593C4C
+
+ .align 2
+gUnknown_08593C64:: @ 8593C64
+ spr_template 0x2804, 0x2804, gUnknown_08524B1C, gDummySpriteAnimTable, NULL, gUnknown_08593C5C, sub_81070AC
+
+ .align 2
+ .incbin "graphics/unknown/unknown_593C80.4bpp"
+
+ .align 2
+ .incbin "graphics/unknown/unknown_593FFC.bin"
+
+ .align 2
+gUnknown_08594FFC:: @ 8594FFC
+ .2byte 0x0000, 0x0002, 0x0008, 0x0002, 0x0010, 0x0002, 0x0018, 0x0006
+ .2byte 0x0020, 0x0002, 0x0028, 0x0002, 0x0030, 0x0002, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859501C:: @ 859501C
+ .4byte gUnknown_08594FFC
+
+ .align 2
gUnknown_08595020:: @ 8595020
- .incbin "baserom.gba", 0x595020, 0x248
+ spr_template 0x2783, 0x2783, gUnknown_08524954, gUnknown_0859501C, NULL, gDummySpriteAffineAnimTable, sub_810721C
+
+ .align 2
+gUnknown_08595038:: @ 8595038
+ .2byte 0xfffb, 0xfffb, 0x0a00, 0x0000, 0x0005, 0x0005, 0x0a00, 0x0000
+ .2byte 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595050:: @ 8595050
+ .4byte gUnknown_08595038
+
+ .align 2
+gUnknown_08595054:: @ 8595054
+ .2byte 0x0000, 0x0001, 0x0004, 0x0005, 0x0008, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595064:: @ 8595064
+ .4byte gUnknown_08595054
+ .align 2
+gUnknown_08595068:: @ 8595068
+ spr_template 0x27a2, 0x27a2, gUnknown_08524A8C, gUnknown_08595064, NULL, gUnknown_08595050, sub_8107260
+
+ .align 2
+gUnknown_08595080:: @ 8595080
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595088:: @ 8595088
+ .2byte 0x0004, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595090:: @ 8595090
+ .4byte gUnknown_08595080
+ .4byte gUnknown_08595088
+
+ .align 2
+gUnknown_08595098:: @ 8595098
+ .2byte 0x0000, 0x0000, 0x0100, 0x0000, 0x0060, 0x0060, 0x0100, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085950B0:: @ 85950B0
+ .4byte gUnknown_08595098
+
+ .align 2
+gUnknown_085950B4:: @ 85950B4
+ spr_template 0x279c, 0x279c, gUnknown_08524A04, gUnknown_08595090, NULL, gUnknown_085950B0, sub_810744C
+
+ .align 2
+gUnknown_085950CC:: @ 85950CC
+ .2byte 0x0000, 0x0001, 0x0004, 0x0001, 0x0008, 0x0001, 0x000c, 0x0001, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085950E0:: @ 85950E0
+ .4byte gUnknown_085950CC
+
+ .align 2
+gUnknown_085950E4:: @ 85950E4
+ spr_template 0x27a5, 0x27a5, gUnknown_08524A2C, gUnknown_085950E0, NULL, gDummySpriteAffineAnimTable, sub_81075EC
+
+ .align 2
+gUnknown_085950FC:: @ 85950FC
+ spr_template 0x2813, 0x2813, gUnknown_08524A2C, gUnknown_085950E0, NULL, gDummySpriteAffineAnimTable, sub_81075EC
+
+ .align 2
+gUnknown_08595114:: @ 8595114
+ spr_template 0x2818, 0x2818, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81075EC
+
+ .align 2
+gUnknown_0859512C:: @ 859512C
+ spr_template 0x2819, 0x2819, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81075EC
+
+ .align 2
+gUnknown_08595144:: @ 8595144
+ .2byte 0x0010, 0x0002, 0x0020, 0x0002, 0x0030, 0x0002, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595154:: @ 8595154
+ .4byte gUnknown_08595144
+
+ .align 2
+gUnknown_08595158:: @ 8595158
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595154, NULL, gDummySpriteAffineAnimTable, sub_81075EC
+
+ .align 2
+gUnknown_08595170:: @ 8595170
+ spr_template 0x27b5, 0x27b5, gUnknown_08524A14, gDummySpriteAnimTable, NULL, gUnknown_08593420, sub_81075EC
+
+ .align 2
+gUnknown_08595188:: @ 8595188
+ .2byte 0x0003, 0x0003, 0x320a, 0x0000, 0x0000, 0x0000, 0x0a00, 0x0000
+ .2byte 0xffec, 0xffec, 0x14f6, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085951A8:: @ 85951A8
+ .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085951B8:: @ 85951B8
+ .4byte gUnknown_08595188
+
+ .align 2
+gUnknown_085951BC:: @ 85951BC
+ .4byte gUnknown_085951A8
+
+ .align 2
+gUnknown_085951C0:: @ 85951C0
+ spr_template 0x27a5, 0x27a5, gUnknown_08524AEC, gUnknown_085950E0, NULL, gUnknown_085951B8, sub_8107730
+
+ .align 2
+gUnknown_085951D8:: @ 85951D8
+ spr_template 0x27a5, 0x27a5, gUnknown_08524AEC, gUnknown_085950E0, NULL, gUnknown_085951BC, sub_81077C0
+
+ .align 2
+gUnknown_085951F0:: @ 85951F0
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085951F8:: @ 85951F8
+ .2byte 0x0004, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595200:: @ 8595200
+ .4byte gUnknown_085951F0
+
+ .align 2
+gUnknown_08595204:: @ 8595204
+ .4byte gUnknown_085951F8
+
+ .align 2
+gUnknown_08595208:: @ 8595208
+ spr_template 0x27ab, 0x27ab, gUnknown_08524A2C, gUnknown_08595200, NULL, gDummySpriteAffineAnimTable, sub_80A78AC
+
+ .align 2
+gUnknown_08595220:: @ 8595220
+ spr_template 0x27ab, 0x27ab, gUnknown_08524AEC, gUnknown_08595204, NULL, gUnknown_08596208, sub_8107894
+
+ .align 2
+gUnknown_08595238:: @ 8595238
+ spr_template 0x279d, 0x279d, gUnknown_08524904, gUnknown_08595AB8, NULL, gDummySpriteAffineAnimTable, sub_81078D0
+
+ .align 2
+gUnknown_08595250:: @ 8595250
+ spr_template 0x27ab, 0x27ab, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8108034
+
+ .align 2
gUnknown_08595268:: @ 8595268
- .incbin "baserom.gba", 0x595268, 0xa8
+ spr_template 0x281c, 0x281c, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810851C
+
+ .align 2
+gUnknown_08595280:: @ 8595280
+ .2byte 0x0008, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595288:: @ 8595288
+ .2byte 0x0009, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595290:: @ 8595290
+ .2byte 0x0004, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595298:: @ 8595298
+ .4byte gUnknown_08595280
+ .4byte gUnknown_08595288
+
+ .align 2
+gUnknown_085952A0:: @ 85952A0
+ .4byte gUnknown_08595290
+
+ .align 2
+gUnknown_085952A4:: @ 85952A4
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfff6, 0xfff6, 0x0f00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085952BC:: @ 85952BC
+ .2byte 0x00e0, 0x00e0, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0f00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085952D4:: @ 85952D4
+ .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
+gUnknown_085952EC:: @ 85952EC
+ .4byte gUnknown_085952A4
+ .4byte gUnknown_085952BC
+
+ .align 2
+gUnknown_085952F4:: @ 85952F4
+ .4byte gUnknown_085952D4
+
+ .align 2
+gUnknown_085952F8:: @ 85952F8
+ spr_template 0x27ab, 0x27ab, gUnknown_08524904, gUnknown_08595298, NULL, gDummySpriteAffineAnimTable, sub_8108BE0
+
+ .align 2
gUnknown_08595310:: @ 8595310
- .incbin "baserom.gba", 0x595310, 0x2a4
+ spr_template 0x27ab, 0x27ab, gUnknown_08524964, gUnknown_08595298, NULL, gUnknown_085952EC, sub_8108C54
+
+ .align 2
+gUnknown_08595328:: @ 8595328
+ spr_template 0x27ab, 0x27ab, gUnknown_0852496C, gUnknown_085952A0, NULL, gUnknown_085952F4, sub_80A8EE4
+
+ .align 2
+gUnknown_08595340:: @ 8595340
+ .2byte 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595350:: @ 8595350
+ .2byte 0x0010, 0x00c4, 0x0020, 0x00c4, 0x0030, 0x00c4, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595360:: @ 8595360
+ .4byte gUnknown_08595340
+ .4byte gUnknown_08595350
+
+ .align 2
+gUnknown_08595368:: @ 8595368
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595360, NULL, gDummySpriteAffineAnimTable, sub_8108EC8
+
+ .align 2
+gUnknown_08595380:: @ 8595380
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595360, NULL, gDummySpriteAffineAnimTable, sub_8108F08
+
+ .align 2
+gUnknown_08595398:: @ 8595398
+ .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003
+ .2byte 0x0040, 0x0003, 0x0050, 0x0003, 0x0060, 0x0003, 0x0070, 0x0003
+ .2byte 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085953BC:: @ 85953BC
+ .4byte gUnknown_08595398
+
+ .align 2
+gUnknown_085953C0:: @ 85953C0
+ .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005
+ .2byte 0x0040, 0x0005, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085953D8:: @ 85953D8
+ .4byte gUnknown_085953C0
+ .align 2
+gUnknown_085953DC:: @ 85953DC
+ .2byte 0x0032, 0x0100, 0x0000, 0x0000, 0x0020, 0x0000, 0x0700, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085953F4:: @ 85953F4
+ .4byte gUnknown_085953DC
+
+ .align 2
+gUnknown_085953F8:: @ 85953F8
+ spr_template 0x2731, 0x2731, gUnknown_08524974, gUnknown_085953BC, NULL, gUnknown_085953F4, sub_8108FBC
+
+ .align 2
+gUnknown_08595410:: @ 8595410
+ spr_template 0x2731, 0x2731, gUnknown_08524914, gUnknown_085953BC, NULL, gDummySpriteAffineAnimTable, sub_8108FBC
+
+ .align 2
+gUnknown_08595428:: @ 8595428
+ spr_template 0x2733, 0x2733, gUnknown_08524914, gUnknown_085953D8, NULL, gDummySpriteAffineAnimTable, sub_8108F4C
+
+ .align 2
+gUnknown_08595440:: @ 8595440
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085953D8, NULL, gDummySpriteAffineAnimTable, sub_8108F4C
+
+ .align 2
+gUnknown_08595458:: @ 8595458
+ .2byte 0x0010, 0x0006, 0x0020, 0x0006, 0x0030, 0x0006, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595468:: @ 8595468
+ .4byte gUnknown_08595458
+
+ .align 2
+gUnknown_0859546C:: @ 859546C
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595468, NULL, gDummySpriteAffineAnimTable, sub_8109064
+
+ .align 2
+gUnknown_08595484:: @ 8595484
+ .2byte 0x0050, 0x0050, 0x0000, 0x0000, 0x0002, 0x0002, 0x010a, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859549C:: @ 859549C
+ .4byte gUnknown_08595484
+
+ .align 2
+gUnknown_085954A0:: @ 85954A0
+ spr_template 0x27ad, 0x27ad, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_0859549C, sub_810916C
+
+ .align 2
+gUnknown_085954B8:: @ 85954B8
+ .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004
+ .2byte 0x0040, 0x0004, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085954D0:: @ 85954D0
+ .4byte gUnknown_085954B8
+
+ .align 2
+gUnknown_085954D4:: @ 85954D4
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7820
+
+ .align 2
+gUnknown_085954EC:: @ 85954EC
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_8109198
+
+ .align 2
+gUnknown_08595504:: @ 8595504
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_8109200
+
+ .align 2
+gUnknown_0859551C:: @ 859551C
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_810921C
+
+ .align 2
+gUnknown_08595534:: @ 8595534
+ .2byte 0x0020, 0x0006, 0x0030, 0x0006, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595540:: @ 8595540
+ .4byte gUnknown_08595534
+
+ .align 2
+gUnknown_08595544:: @ 8595544
+ .2byte 0x0000, 0x0000, 0x0100, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595554:: @ 8595554
+ .2byte 0x00a0, 0x00a0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595564:: @ 8595564
+ .4byte gUnknown_08595544
+ .4byte gUnknown_08595554
+
+ .align 2
+gUnknown_0859556C:: @ 859556C
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08595540, NULL, gDummySpriteAffineAnimTable, sub_8109364
+
+ .align 2
+gUnknown_08595584:: @ 8595584
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_81093A4
+
+ .align 2
+gUnknown_0859559C:: @ 859559C
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_80A8EE4
+
+ .align 2
gUnknown_085955B4:: @ 85955B4
- .incbin "baserom.gba", 0x5955b4, 0x18
+ spr_template 0x27d9, 0x27d9, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81098EC
+ .align 2
gUnknown_085955CC:: @ 85955CC
- .incbin "baserom.gba", 0x5955cc, 0x2
+ .2byte 0xfffe, 0xfffb, 0xffff, 0xffff, 0x0003, 0xfffa, 0x0004, 0xfffe
+ .2byte 0x0002, 0xfff8, 0xfffb, 0xfffb, 0x0004, 0xfff9
-gUnknown_085955CE:: @ 85955CE
- .incbin "baserom.gba", 0x5955ce, 0xb6
+ .align 2
+gUnknown_085955E8:: @ 85955E8
+ spr_template 0x27d9, 0x27d9, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8109A10
+ .align 2
+gUnknown_08595600:: @ 8595600
+ .2byte 0x0000, 0x0005, 0x0004, 0x0005, 0x0008, 0x0005, 0x000c, 0x0005, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595614:: @ 8595614
+ .2byte 0x0010, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859561C:: @ 859561C
+ .2byte 0x0014, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595624:: @ 8595624
+ .2byte 0x0014, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859562C:: @ 859562C
+ .4byte gUnknown_08595600
+ .4byte gUnknown_08595614
+ .4byte gUnknown_0859561C
+ .4byte gUnknown_08595624
+
+ .align 2
+gUnknown_0859563C:: @ 859563C
+ spr_template 0x27f7, 0x27f7, gUnknown_0852490C, gUnknown_0859562C, NULL, gDummySpriteAffineAnimTable, sub_8109AFC
+
+ .align 2
+gUnknown_08595654:: @ 8595654
+ .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595668:: @ 8595668
+ .4byte gUnknown_08595654
+
+ .align 2
+gUnknown_0859566C:: @ 859566C
+ spr_template 0x27f8, 0x27f8, gUnknown_08524914, gUnknown_08595668, NULL, gDummySpriteAffineAnimTable, sub_8109CB0
+
+ .align 2
gUnknown_08595684:: @ 8595684
- .incbin "baserom.gba", 0x595684, 0x10
+ .2byte 0xffff, 0x0100, 0x0001, 0xff00, 0x01ff, 0x0001, 0xff00, 0x0100
+ .align 2
gUnknown_08595694:: @ 8595694
- .incbin "baserom.gba", 0x595694, 0x2c
+ .2byte 0x00ff, 0x0001, 0x01ff, 0xff00, 0x0100, 0xff00, 0x0100, 0x0100
+
+ .align 2
+gUnknown_085956A4:: @ 85956A4
+ .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0008, 0x0030, 0x0005
+ .2byte 0x0040, 0x0005, 0xffff, 0x0000
+ .align 2
+gUnknown_085956BC:: @ 85956BC
+ .4byte gUnknown_085956A4
+
+ .align 2
gUnknown_085956C0:: @ 85956C0
- .incbin "baserom.gba", 0x5956c0, 0x168
+ spr_template 0x2735, 0x2735, gUnknown_08524914, gUnknown_085956BC, NULL, gDummySpriteAffineAnimTable, sub_810A1A8
+
+ .align 2
+gUnknown_085956D8:: @ 85956D8
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x1400, 0x0000
+ .2byte 0x0000, 0x0000, 0x3cf0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085956F8:: @ 85956F8
+ .4byte gUnknown_085956D8
+
+ .align 2
+gUnknown_085956FC:: @ 85956FC
+ spr_template 0x279f, 0x279f, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_085956F8, sub_810A214
+
+ .align 2
+gUnknown_08595714:: @ 8595714
+ .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005
+ .2byte 0x0040, 0x0005, 0x0050, 0x0005, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595730:: @ 8595730
+ .4byte gUnknown_08595714
+
+ .align 2
+gUnknown_08595734:: @ 8595734
+ spr_template 0x275f, 0x275f, gUnknown_08524914, gUnknown_08595730, NULL, gDummySpriteAffineAnimTable, sub_810A274
+
+ .align 2
+gUnknown_0859574C:: @ 859574C
+ spr_template 0x271b, 0x271b, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810A308
+
+ .align 2
+gUnknown_08595764:: @ 8595764
+ spr_template 0x27bb, 0x27bb, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7820
+
+ .align 2
+gUnknown_0859577C:: @ 859577C
+ .2byte 0x0000, 0x0000, 0x0114, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859578C:: @ 859578C
+ .4byte gUnknown_0859577C
+
+ .align 2
+gUnknown_08595790:: @ 8595790
+ spr_template 0x271b, 0x271b, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_0859578C, sub_810A46C
+
+ .align 2
+gUnknown_085957A8:: @ 85957A8
+ .2byte 0x0000, 0x0006, 0x0010, 0x0006, 0x0020, 0x0006, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085957B8:: @ 85957B8
+ .4byte gUnknown_085957A8
+
+ .align 2
+gUnknown_085957BC:: @ 85957BC
+ .2byte 0x00e8, 0x00e8, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0a00, 0x0000
+ .2byte 0x0008, 0x0008, 0x0a00, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085957DC:: @ 85957DC
+ .4byte gUnknown_085957BC
+ .align 2
+gUnknown_085957E0:: @ 85957E0
+ spr_template 0x282a, 0x282a, gUnknown_08524974, gUnknown_085957B8, NULL, gUnknown_085957DC, sub_810A5BC
+
+ .align 2
+gUnknown_085957F8:: @ 85957F8
+ spr_template 0x271b, 0x271b, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_0859578C, sub_810A628
+
+ .align 2
+gUnknown_08595810:: @ 8595810
+ spr_template 0x271b, 0x271b, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810A75C
+
+ .align 2
gUnknown_08595828:: @ 8595828
- .incbin "baserom.gba", 0x595828, 0x18
+ spr_template 0x2711, 0x2711, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810A9DC
+ .align 2
gUnknown_08595840:: @ 8595840
- .incbin "baserom.gba", 0x595840, 0x18
+ spr_template 0x27bd, 0x27bd, gUnknown_08524934, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810AA2C
+ .align 2
gUnknown_08595858:: @ 8595858
- .incbin "baserom.gba", 0x595858, 0x50
+ .byte 0x3a, 0xc4, 0xc8, 0xdc, 0x08, 0xc8, 0xf0, 0x38
+ .byte 0x3a, 0xf6, 0xc6, 0x0a, 0x30, 0xee, 0xf8, 0x38
+ .byte 0x10, 0xc8, 0xc6, 0xd6, 0x3a, 0x1e, 0xd0, 0x28
+ .byte 0x0c, 0xd0, 0x30, 0xf4, 0xc8, 0x12, 0x30, 0x30
+
+ .align 2
+gUnknown_08595878:: @ 8595878
+ .2byte 0x0003, 0x0001, 0x0002, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0xffff, 0x0000
+ .align 2
+gUnknown_0859588C:: @ 859588C
+ .2byte 0x0000, 0x0005, 0x0001, 0x0005, 0x0002, 0x0005, 0x0003, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085958A0:: @ 85958A0
+ .4byte gUnknown_08595878
+ .4byte gUnknown_0859588C
+
+ .align 2
gUnknown_085958A8:: @ 85958A8
- .incbin "baserom.gba", 0x5958a8, 0x158
+ spr_template 0x27e3, 0x27e3, gUnknown_08524904, gUnknown_085958A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
+ .align 2
+gUnknown_085958C0:: @ 85958C0
+ .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0004, 0x0004, 0x3c00, 0x0000
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7ffd, 0x0000, 0x0000, 0x0000
+ .2byte 0xfffc, 0xfffc, 0x0500, 0x0000, 0x0004, 0x0004, 0x0500, 0x0000
+ .2byte 0x7ffd, 0x000a, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595900:: @ 8595900
+ .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0008, 0x0008, 0x1e00, 0x0000
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfffc, 0xfffc, 0x0500, 0x0000
+ .2byte 0x0004, 0x0004, 0x0500, 0x0000, 0x7ffe, 0x0003, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595930:: @ 8595930
+ .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0008, 0x0008, 0x1e00, 0x0000
+ .2byte 0xfff8, 0xfff8, 0x1e00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595950:: @ 8595950
+ .4byte gUnknown_085958C0
+ .4byte gUnknown_08595900
+ .4byte gUnknown_08595930
+
+ .align 2
+gUnknown_0859595C:: @ 859595C
+ spr_template 0x27e4, 0x27e4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08595950, sub_810ACD8
+
+ .align 2
+gUnknown_08595974:: @ 8595974
+ .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595988:: @ 8595988
+ .4byte gUnknown_08595974
+ .align 2
+gUnknown_0859598C:: @ 859598C
+ spr_template 0x27e5, 0x27e5, gUnknown_08524914, gUnknown_08595988, NULL, gDummySpriteAffineAnimTable, sub_810AD30
+
+ .align 2
+gUnknown_085959A4:: @ 85959A4
+ spr_template 0x27e4, 0x27e4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08595950, sub_810AD98
+
+ .align 2
+gUnknown_085959BC:: @ 85959BC
+ .2byte 0x0000, 0x0003, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085959C4:: @ 85959C4
+ .2byte 0x0002, 0x0003, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085959CC:: @ 85959CC
+ .2byte 0x0004, 0x0003, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085959D4:: @ 85959D4
+ .2byte 0x0006, 0x0003, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085959DC:: @ 85959DC
+ .4byte gUnknown_085959BC
+ .4byte gUnknown_085959C4
+ .4byte gUnknown_085959CC
+ .4byte gUnknown_085959D4
+
+ .align 2
+gUnknown_085959EC:: @ 85959EC
+ .2byte 0x0100, 0x0100, 0x0040, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085959FC:: @ 85959FC
+ .4byte gUnknown_085959EC
+
+ .align 2
gUnknown_08595A00:: @ 8595A00
- .incbin "baserom.gba", 0x595a00, 0x30
+ spr_template 0x2711, 0x2711, gUnknown_08524A04, gUnknown_085959DC, NULL, gUnknown_085959FC, sub_810B1F0
+
+ .align 2
+gUnknown_08595A18:: @ 8595A18
+ spr_template 0x27e4, 0x27e4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08595950, sub_810B23C
+ .align 2
gUnknown_08595A30:: @ 8595A30
- .incbin "baserom.gba", 0x595a30, 0x138
+ spr_template 0x2711, 0x2711, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810B51C
+
+ .align 2
+gUnknown_08595A48:: @ 8595A48
+ .2byte 0x0000, 0x0045, 0x0001, 0x0045, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595A54:: @ 8595A54
+ .4byte gUnknown_08595A48
+
+ .align 2
+gUnknown_08595A58:: @ 8595A58
+ spr_template 0x279d, 0x279d, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810B6C4
+ .align 2
+gUnknown_08595A70:: @ 8595A70
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595A78:: @ 8595A78
+ .2byte 0x0004, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595A80:: @ 8595A80
+ .2byte 0x0006, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595A88:: @ 8595A88
+ .2byte 0x0007, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595A90:: @ 8595A90
+ .2byte 0x0008, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595A98:: @ 8595A98
+ .2byte 0x000c, 0x0006, 0x000d, 0x0006, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595AA4:: @ 8595AA4
+ .4byte gUnknown_08595A70
+
+ .align 2
+gUnknown_08595AA8:: @ 8595AA8
+ .4byte gUnknown_08595A78
+
+ .align 2
+gUnknown_08595AAC:: @ 8595AAC
+ .4byte gUnknown_08595A80
+
+ .align 2
+gUnknown_08595AB0:: @ 8595AB0
+ .4byte gUnknown_08595A88
+
+ .align 2
+gUnknown_08595AB4:: @ 8595AB4
+ .4byte gUnknown_08595A90
+
+ .align 2
+gUnknown_08595AB8:: @ 8595AB8
+ .4byte gUnknown_08595A98
+
+ .align 2
+gUnknown_08595ABC:: @ 8595ABC
+ .2byte 0x0000, 0x0000, 0x0128, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595ACC:: @ 8595ACC
+ .4byte gUnknown_08595ABC
+
+ .align 2
+gUnknown_08595AD0:: @ 8595AD0
+ spr_template 0x279d, 0x279d, gUnknown_08524B24, gUnknown_08595AA8, NULL, gUnknown_08595ACC, sub_810B8AC
+
+ .align 2
+gUnknown_08595AE8:: @ 8595AE8
+ spr_template 0x279d, 0x279d, gUnknown_08524A24, gUnknown_08595AAC, NULL, gDummySpriteAffineAnimTable, sub_810B8AC
+
+ .align 2
+gUnknown_08595B00:: @ 8595B00
+ .2byte 0x0000, 0x0000, 0x010a, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595B10:: @ 8595B10
+ .4byte gUnknown_08595B00
+
+ .align 2
+gUnknown_08595B14:: @ 8595B14
+ spr_template 0x279d, 0x279d, gUnknown_08524AC4, gUnknown_08595AA8, NULL, gUnknown_08595B10, sub_810B8EC
+
+ .align 2
+gUnknown_08595B2C:: @ 8595B2C
+ spr_template 0x279d, 0x279d, gUnknown_08524A24, gUnknown_08595AAC, NULL, gDummySpriteAffineAnimTable, sub_810B8EC
+
+ .align 2
+gUnknown_08595B44:: @ 8595B44
+ .2byte 0x00ce, 0x00ce, 0x0000, 0x0000, 0x0005, 0x0005, 0x0a00, 0x0000
+ .2byte 0x0000, 0x0000, 0x0600, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595B64:: @ 8595B64
+ .4byte gUnknown_08595B44
+
+ .align 2
gUnknown_08595B68:: @ 8595B68
- .incbin "baserom.gba", 0x595b68, 0xf4
+ spr_template 0x279d, 0x279d, gUnknown_08524AC4, gUnknown_08595AA8, NULL, gUnknown_08595B64, sub_810B974
+
+ .align 2
+gUnknown_08595B80:: @ 8595B80
+ spr_template 0x279d, 0x279d, gUnknown_08524A84, gUnknown_08595AAC, NULL, gUnknown_08595B64, sub_810B974
+
+ .align 2
+gUnknown_08595B98:: @ 8595B98
+ spr_template 0x279d, 0x279d, gUnknown_08524904, gUnknown_08595AB0, NULL, gDummySpriteAffineAnimTable, sub_810BA24
+
+ .align 2
+gUnknown_08595BB0:: @ 8595BB0
+ spr_template 0x279d, 0x279d, gUnknown_0852490C, gUnknown_08595AB4, NULL, gDummySpriteAffineAnimTable, sub_810BC94
+
+ .align 2
+gUnknown_08595BC8:: @ 8595BC8
+ spr_template 0x279d, 0x279d, gUnknown_08524904, gUnknown_08595AB0, NULL, gDummySpriteAffineAnimTable, sub_810BC94
+ .align 2
+gUnknown_08595BE0:: @ 8595BE0
+ .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0004, 0x0005, 0x0006, 0x0005
+ .2byte 0x0004, 0x0005, 0x0002, 0x0005, 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595C00:: @ 8595C00
+ .4byte gUnknown_08595BE0
+
+ .align 2
+gUnknown_08595C04:: @ 8595C04
+ spr_template 0x279e, 0x279e, gUnknown_08524A64, gUnknown_08595C00, NULL, gDummySpriteAffineAnimTable, sub_810BE48
+
+ .align 2
+gUnknown_08595C1C:: @ 8595C1C
+ .2byte 0x0000, 0x0008, 0x0008, 0x0008, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08595C28:: @ 8595C28
+ .4byte gUnknown_08595C1C
+
+ .align 2
+gUnknown_08595C2C:: @ 8595C2C
+ spr_template 0x27a0, 0x27a0, gUnknown_08524A54, gUnknown_08595C28, NULL, gDummySpriteAffineAnimTable, sub_810BED0
+
+ .align 2
+gUnknown_08595C44:: @ 8595C44
+ spr_template 0x27bc, 0x27bc, gUnknown_08524A54, gUnknown_08595C28, NULL, gDummySpriteAffineAnimTable, sub_810BED0
+
+ .align 2
gUnknown_08595C5C:: @ 8595C5C
- .incbin "baserom.gba", 0x595c5c, 0x2c
+ .byte 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x03, 0x04
+ .byte 0x04, 0x04, 0x05, 0x06, 0x06, 0x06, 0x06, 0x07
+ .byte 0x08, 0x08, 0x08, 0x09
+ .align 2
+gUnknown_08595C70:: @ 8595C70
+ spr_template 0x27ab, 0x27ab, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810C2F0
+
+ .align 2
gUnknown_08595C88:: @ 8595C88
- .incbin "baserom.gba", 0x595c88, 0x2c
+ .byte 0x00, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02
+ .byte 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04
+ .byte 0x04, 0x04, 0x04, 0x05
+
+ .align 2
+gUnknown_08595C9C:: @ 8595C9C
+ spr_template 0x27bc, 0x27bc, gUnknown_08524A54, gUnknown_08595C28, NULL, gDummySpriteAffineAnimTable, sub_810C560
+ .align 2
gUnknown_08595CB4:: @ 8595CB4
- .incbin "baserom.gba", 0x595cb4, 0x78
+ .byte 0x64, 0xe0, 0x01, 0x20, 0x55, 0xe0, 0x01, 0x00
+ .byte 0xf2, 0xe0, 0x11, 0x10, 0x42, 0xe0, 0x21, 0x10
+ .byte 0xb6, 0xe0, 0x31, 0x00, 0x3c, 0xe0, 0x01, 0x20
+ .byte 0xd6, 0xe0, 0x11, 0x00, 0x71, 0xe0, 0x01, 0x10
+ .byte 0xd2, 0xe0, 0x31, 0x10, 0x26, 0xe0, 0x21, 0x00
+
+ .align 2
+gUnknown_08595CDC:: @ 8595CDC
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595CEC:: @ 8595CEC
+ .2byte 0x00f0, 0x00f0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595CFC:: @ 8595CFC
+ .2byte 0x00e0, 0x00e0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595D0C:: @ 8595D0C
+ .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
+gUnknown_08595D1C:: @ 8595D1C
+ .4byte gUnknown_08595CDC
+ .4byte gUnknown_08595CEC
+ .4byte gUnknown_08595CFC
+
+ .align 2
+gUnknown_08595D28:: @ 8595D28
+ .4byte gUnknown_08595D0C
+
+ .align 2
gUnknown_08595D2C:: @ 8595D2C
- .incbin "baserom.gba", 0x595d2c, 0xa14
+ spr_template 0x2817, 0x2817, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08595D1C, sub_810CB58
+
+ .align 2
+gUnknown_08595D44:: @ 8595D44
+ spr_template 0x2817, 0x2817, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08595D28, sub_80A8EE4
+
+ .align 2
+gUnknown_08595D5C:: @ 8595D5C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595D64:: @ 8595D64
+ .2byte 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004, 0x0040, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595D78:: @ 8595D78
+ .4byte gUnknown_08595D5C
+ .4byte gUnknown_08595D64
+
+ .align 2
+gUnknown_08595D80:: @ 8595D80
+ .2byte 0x00e0, 0x00e0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595D90:: @ 8595D90
+ .2byte 0x0118, 0x0118, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595DA0:: @ 8595DA0
+ .2byte 0x0150, 0x0150, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595DB0:: @ 8595DB0
+ .2byte 0x0180, 0x0180, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595DC0:: @ 8595DC0
+ .2byte 0x01c0, 0x01c0, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595DD0:: @ 8595DD0
+ .4byte gUnknown_08595D80
+ .4byte gUnknown_08595D90
+ .4byte gUnknown_08595DA0
+ .4byte gUnknown_08595DB0
+ .4byte gUnknown_08595DC0
+
+ .align 2
+gUnknown_08595DE4:: @ 8595DE4
+ spr_template 0x273b, 0x273b, gUnknown_085249D4, gUnknown_08595D78, NULL, gUnknown_08595DD0, unc_080B06FC
+
+ .align 2
+gUnknown_08595DFC:: @ 8595DFC
+ spr_template 0x279d, 0x279d, gUnknown_08524904, gUnknown_08595AAC, NULL, gDummySpriteAffineAnimTable, sub_810CD4C
+
+ .align 2
+gUnknown_08595E14:: @ 8595E14
+ spr_template 0x2742, 0x2742, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, unc_080B08A0
+
+ .align 2
+gUnknown_08595E2C:: @ 8595E2C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595E34:: @ 8595E34
+ .2byte 0x0010, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595E3C:: @ 8595E3C
+ .2byte 0x0020, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595E44:: @ 8595E44
+ .2byte 0x0030, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595E4C:: @ 8595E4C
+ .2byte 0x0030, 0x0041, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08595E54:: @ 8595E54
+ .4byte gUnknown_08595E2C
+
+ .align 2
+gUnknown_08595E58:: @ 8595E58
+ .4byte gUnknown_08595E34
+ .4byte gUnknown_08595E3C
+
+ .align 2
+gUnknown_08595E60:: @ 8595E60
+ .4byte gUnknown_08595E44
+ .4byte gUnknown_08595E4C
+
+ .align 2
+gUnknown_08595E68:: @ 8595E68
+ spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810CE68
+
+ .align 2
+gUnknown_08595E80:: @ 8595E80
+ spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810CEB4
+
+ .align 2
+gUnknown_08595E98:: @ 8595E98
+ spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810CEE0
+
+ .align 2
+gUnknown_08595EB0:: @ 8595EB0
+ spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810CF30
+
+ .align 2
+gUnknown_08595EC8:: @ 8595EC8
+ spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E60, NULL, gDummySpriteAffineAnimTable, sub_810D10C
+
+ .align 2
+gUnknown_08595EE0:: @ 8595EE0
+ spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E58, NULL, gDummySpriteAffineAnimTable, sub_810D1B4
+
+ .align 2
+gUnknown_08595EF8:: @ 8595EF8
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0114, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595F10:: @ 8595F10
+ .4byte gUnknown_08595EF8
+
+ .align 2
+gUnknown_08595F14:: @ 8595F14
+ spr_template 0x279f, 0x279f, gUnknown_085249D4, gUnknown_08595E54, NULL, gUnknown_08595F10, sub_810D278
+
+ .align 2
+gUnknown_08595F2C:: @ 8595F2C
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfffc, 0xfffc, 0x0114, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595F44:: @ 8595F44
+ .4byte gUnknown_08595F2C
+
+ .align 2
+gUnknown_08595F48:: @ 8595F48
+ spr_template 0x279f, 0x279f, gUnknown_085249D4, gUnknown_08595E54, NULL, gUnknown_08595F44, sub_810D278
+
+ .align 2
+gUnknown_08595F60:: @ 8595F60
+ spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E58, NULL, gDummySpriteAffineAnimTable, sub_810D2E4
+
+ .align 2
+gUnknown_08595F78:: @ 8595F78
+ spr_template 0x2759, 0x2759, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D37C
+
+ .align 2
+gUnknown_08595F90:: @ 8595F90
+ spr_template 0x27b7, 0x27b7, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D40C
+
+ .align 2
+gUnknown_08595FA8:: @ 8595FA8
+ spr_template 0x27e0, 0x27e0, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D4F4
+
+ .align 2
+gUnknown_08595FC0:: @ 8595FC0
+ .2byte 0x0020, 0x0020, 0x0000, 0x0000, 0x0004, 0x0004, 0x4000, 0x0000
+ .2byte 0xfffa, 0xfffa, 0x0800, 0x0000, 0x0006, 0x0006, 0x0800, 0x0000
+ .2byte 0x7ffe, 0x0002, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08595FE8:: @ 8595FE8
+ .4byte gUnknown_08595FC0
+
+ .align 2
+gUnknown_08595FEC:: @ 8595FEC
+ spr_template 0x27e4, 0x27e4, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08595FE8, sub_810D608
+
+ .align 2
+gUnknown_08596004:: @ 8596004
+ spr_template 0x2811, 0x2811, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D714
+
+ .align 2
+gUnknown_0859601C:: @ 859601C
+ spr_template 0x2810, 0x2810, gUnknown_0852491C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810D874
+
+ .align 2
+gUnknown_08596034:: @ 8596034
+ spr_template 0x279f, 0x279f, gUnknown_08524914, gUnknown_08595E54, NULL, gDummySpriteAffineAnimTable, sub_810D984
+
+ .align 2
+gUnknown_0859604C:: @ 859604C
+ .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859605C:: @ 859605C
+ .2byte 0x0000, 0x0084, 0x0010, 0x0084, 0x0020, 0x0084, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859606C:: @ 859606C
+ .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859607C:: @ 859607C
+ .4byte gUnknown_0859604C
+ .4byte gUnknown_0859605C
+ .4byte gUnknown_0859606C
+
+ .align 2
+gUnknown_08596088:: @ 8596088
+ spr_template 0x2805, 0x2805, gUnknown_08524914, gUnknown_0859607C, NULL, gDummySpriteAffineAnimTable, sub_810DA10
+
+ .align 2
+gUnknown_085960A0:: @ 85960A0
+ .2byte 0x0000, 0x0006, 0x0040, 0x0006, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085960AC:: @ 85960AC
+ .2byte 0x0000, 0x00c6, 0x0040, 0x00c6, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085960B8:: @ 85960B8
+ .2byte 0x0000, 0x0046, 0x0040, 0x0046, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085960C4:: @ 85960C4
+ .4byte gUnknown_085960A0
+ .4byte gUnknown_085960AC
+ .4byte gUnknown_085960B8
+
+ .align 2
+gUnknown_085960D0:: @ 85960D0
+ spr_template 0x2806, 0x2806, gUnknown_0852491C, gUnknown_085960C4, NULL, gDummySpriteAffineAnimTable, sub_810DA10
+
+ .align 2
+gUnknown_085960E8:: @ 85960E8
+ .2byte 0x0200, 0x0200, 0x0000, 0x0000, 0xffe0, 0xffe0, 0x0800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596100:: @ 8596100
+ .4byte gUnknown_085960E8
+
+ .align 2
+gUnknown_08596104:: @ 8596104
+ spr_template 0x279f, 0x279f, gUnknown_085249D4, gUnknown_08595E54, NULL, gUnknown_08596100, sub_810DA7C
+
+ .align 2
+gUnknown_0859611C:: @ 859611C
+ .2byte 0x0000, 0x0005, 0x0008, 0x0005, 0x0010, 0x0005, 0x0018, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596130:: @ 8596130
+ .4byte gUnknown_0859611C
+
+ .align 2
+gUnknown_08596134:: @ 8596134
+ spr_template 0x27a7, 0x27a7, gUnknown_08524954, gUnknown_08596130, NULL, gDummySpriteAffineAnimTable, sub_80A77C8
+
+ .align 2
+gUnknown_0859614C:: @ 859614C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596154:: @ 8596154
+ .2byte 0x0004, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0859615C:: @ 859615C
+ .2byte 0x0008, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596164:: @ 8596164
+ .4byte gUnknown_0859614C
+
+ .align 2
+gUnknown_08596168:: @ 8596168
+ .4byte gUnknown_08596154
+
+ .align 2
+gUnknown_0859616C:: @ 859616C
+ .4byte gUnknown_0859615C
+
+ .align 2
+gUnknown_08596170:: @ 8596170
+ .2byte 0x0160, 0x0160, 0x0000, 0x0000, 0xfff6, 0xfff6, 0x0a00, 0x0000
+ .2byte 0x000a, 0x000a, 0x0a00, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596190:: @ 8596190
+ .2byte 0x00ec, 0x00ec, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085961A0:: @ 85961A0
+ .4byte gUnknown_08596170
+
+ .align 2
+gUnknown_085961A4:: @ 85961A4
+ .4byte gUnknown_08596190
+
+ .align 2
+gUnknown_085961A8:: @ 85961A8
+ spr_template 0x27a6, 0x27a6, gUnknown_085249CC, gUnknown_08596164, NULL, gUnknown_085961A0, sub_810DBAC
+
+ .align 2
+gUnknown_085961C0:: @ 85961C0
+ spr_template 0x27a6, 0x27a6, gUnknown_085249CC, gUnknown_08596164, NULL, gUnknown_085961A0, sub_810DC2C
+
+ .align 2
+gUnknown_085961D8:: @ 85961D8
+ spr_template 0x27a6, 0x27a6, gUnknown_0852496C, gUnknown_0859616C, NULL, gUnknown_085961A4, sub_810DCD0
+
+ .align 2
+gUnknown_085961F0:: @ 85961F0
+ .2byte 0xfff0, 0x0010, 0x0600, 0x0000, 0x0010, 0xfff0, 0x0600, 0x0000
+ .2byte 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596208:: @ 8596208
+ .4byte gUnknown_085961F0
+
+ .align 2
+gUnknown_0859620C:: @ 859620C
+ spr_template 0x27a6, 0x27a6, gUnknown_085249CC, gUnknown_08596168, NULL, gUnknown_08596208, sub_810DD50
+
+ .align 2
+gUnknown_08596224:: @ 8596224
+ .2byte 0x009c, 0x009c, 0x0000, 0x0000, 0x0005, 0x0005, 0x1400, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859623C:: @ 859623C
+ .4byte gUnknown_08596224
+
+ .align 2
+gUnknown_08596240:: @ 8596240
+ spr_template 0x27a6, 0x27a6, gUnknown_0852496C, gUnknown_08596164, NULL, gUnknown_0859623C, sub_810DDC4
+
+ .align 2
+gUnknown_08596258:: @ 8596258
+ spr_template 0x27ab, 0x27ab, gUnknown_08524A8C, gUnknown_08595200, NULL, gUnknown_0859623C, sub_810DDC4
+
+ .align 2
+gUnknown_08596270:: @ 8596270
+ spr_template 0x2719, 0x2719, gUnknown_0852495C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810DE70
+
+ .align 2
+gUnknown_08596288:: @ 8596288
+ .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x000a, 0x0000, 0x1800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085962A0:: @ 85962A0
+ .4byte gUnknown_08596288
+
+ .align 2
+gUnknown_085962A4:: @ 85962A4
+ spr_template 0x2719, 0x2719, gUnknown_085249BC, gDummySpriteAnimTable, NULL, gUnknown_085962A0, sub_810DFA8
+
+ .align 2
+gUnknown_085962BC:: @ 85962BC
+ .2byte 0x0000, 0x0003, 0x0000, 0x0043, 0x0000, 0x0083, 0x0000, 0x00c3, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085962D0:: @ 85962D0
+ .4byte gUnknown_085962BC
+
+ .align 2
+gUnknown_085962D4:: @ 85962D4
+ spr_template 0x27aa, 0x27aa, gUnknown_08524934, gUnknown_085962D0, NULL, gDummySpriteAffineAnimTable, sub_810E044
+
+ .align 2
+gUnknown_085962EC:: @ 85962EC
+ .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0028, 0x0000, 0x0600, 0x0000
+ .2byte 0x0000, 0xffe0, 0x0500, 0x0000, 0xfff0, 0x0020, 0x0a00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596314:: @ 8596314
+ .4byte gUnknown_085962EC
+
+ .align 2
+gUnknown_08596318:: @ 8596318
+ .2byte 0x0000, 0x0000, 0x0132, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
+gUnknown_08596328:: @ 8596328
+ .2byte 0x0000, 0x0000, 0x01d8, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596338:: @ 8596338
+ .4byte gUnknown_08596318
+ .4byte gUnknown_08596328
+
+ .align 2
+gUnknown_08596340:: @ 8596340
+ spr_template 0x27ac, 0x27ac, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_08596314, sub_810E13C
+
+ .align 2
+gUnknown_08596358:: @ 8596358
+ spr_template 0x27ac, 0x27ac, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gUnknown_08596338, sub_810E1C8
+
+ .align 2
+gUnknown_08596370:: @ 8596370
+ .2byte 0x0000, 0x0000, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596378:: @ 8596378
+ .2byte 0x0010, 0x0040, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596380:: @ 8596380
+ .4byte gUnknown_08596370
+ .4byte gUnknown_08596378
+
+ .align 2
+gUnknown_08596388:: @ 8596388
+ spr_template 0x281e, 0x281e, gUnknown_08524974, gUnknown_08596380, NULL, gDummySpriteAffineAnimTable, sub_810E314
+
+ .align 2
+gUnknown_085963A0:: @ 85963A0
+ spr_template 0x27ab, 0x27ab, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810EA4C
+
+ .align 2
+gUnknown_085963B8:: @ 85963B8
+ .2byte 0x0000, 0x0001, 0x0008, 0x0001, 0x0010, 0x0001, 0x0008, 0x0041
+ .2byte 0x0000, 0x0041, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085963D0:: @ 85963D0
+ .4byte gUnknown_085963B8
+
+ .align 2
+gUnknown_085963D4:: @ 85963D4
+ spr_template 0x27b2, 0x27b2, gUnknown_08524934, gUnknown_085963D0, NULL, gDummySpriteAffineAnimTable, sub_810EAA0
+
+ .align 2
+gUnknown_085963EC:: @ 85963EC
+ .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0028, 0x0000, 0x0600, 0x0000
+ .2byte 0x0000, 0xffe0, 0x0500, 0x0000, 0xffec, 0x0000, 0x0700, 0x0000
+ .2byte 0xffec, 0xffec, 0x0500, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859641C:: @ 859641C
+ .4byte gUnknown_085963EC
+
+ .align 2
+gUnknown_08596420:: @ 8596420
+ spr_template 0x27ac, 0x27ac, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_0859641C, sub_810EC34
+
+ .align 2
+gUnknown_08596438:: @ 8596438
+ .2byte 0x00a0, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596448:: @ 8596448
+ .4byte gUnknown_08596438
+
+ .align 2
+gUnknown_0859644C:: @ 859644C
+ spr_template 0x27ac, 0x27ac, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_08596448, sub_810EC94
+
+ .align 2
+gUnknown_08596464:: @ 8596464
+ .2byte 0x0010, 0x0100, 0x0000, 0x0000, 0x0028, 0x0000, 0x0600, 0x0000
+ .2byte 0x0000, 0xffe0, 0x0500, 0x0000, 0xfff0, 0x0020, 0x0a00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859648C:: @ 859648C
+ .4byte gUnknown_08596464
+
+ .align 2
+gUnknown_08596490:: @ 8596490
+ spr_template 0x27ac, 0x27ac, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gUnknown_0859648C, sub_810ED28
+
+ .align 2
+gUnknown_085964A8:: @ 85964A8
+ .2byte 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0020, 0x0c00, 0x0000
+ .2byte 0x0000, 0xffe0, 0x0b00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085964C8:: @ 85964C8
+ .4byte gUnknown_085964A8
+
+ .align 2
+gUnknown_085964CC:: @ 85964CC
+ spr_template 0x2820, 0x2820, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810EE14
+
+ .align 2
+gUnknown_085964E4:: @ 85964E4
+ spr_template 0x2821, 0x2821, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810EEF8
+
+ .align 2
+gUnknown_085964FC:: @ 85964FC
+ spr_template 0x27e4, 0x27e4, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F004
+
+ .align 2
+gUnknown_08596514:: @ 8596514
+ spr_template 0x282c, 0x282c, gUnknown_085249DC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F084
+
+ .align 2
+gUnknown_0859652C:: @ 859652C
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfffe, 0xfffe, 0x78f6, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596544:: @ 8596544
+ .4byte gUnknown_0859652C
+
+ .align 2
+gUnknown_08596548:: @ 8596548
+ spr_template 0x27d4, 0x27d4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08596544, sub_80A77C8
+
+ .align 2
+gUnknown_08596560:: @ 8596560
+ spr_template 0x27b6, 0x27b6, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC
+
+ .align 2
+gUnknown_08596578:: @ 8596578
+ spr_template 0x27b7, 0x27b7, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC
+
+ .align 2
+gUnknown_08596590:: @ 8596590
+ spr_template 0x27b8, 0x27b8, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC
+
+ .align 2
+gUnknown_085965A8:: @ 85965A8
+ spr_template 0x27b9, 0x27b9, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC
+
+ .align 2
+gUnknown_085965C0:: @ 85965C0
+ spr_template 0x27ba, 0x27ba, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810F1EC
+
+ .align 2
+gUnknown_085965D8:: @ 85965D8
+ .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003
+ .2byte 0x0040, 0x0003, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085965F0:: @ 85965F0
+ .4byte gUnknown_085965D8
+
+ .align 2
+gUnknown_085965F4:: @ 85965F4
+ spr_template 0x2757, 0x2757, gUnknown_08524914, gUnknown_085965F0, NULL, gDummySpriteAffineAnimTable, sub_810F58C
+
+ .align 2
+gUnknown_0859660C:: @ 859660C
+ .2byte 0x0000, 0x0005, 0x0004, 0x0005, 0x0008, 0x0005, 0x000c, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596620:: @ 8596620
+ .4byte gUnknown_0859660C
+
+ .align 2
+gUnknown_08596624:: @ 8596624
+ spr_template 0x2756, 0x2756, gUnknown_0852490C, gUnknown_08596620, NULL, gDummySpriteAffineAnimTable, sub_810F58C
+
+ .align 2
+gUnknown_0859663C:: @ 859663C
+ spr_template 0x27b3, 0x27b3, gUnknown_08524954, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A7820
+
+ .align 2
+gUnknown_08596654:: @ 8596654
+ .2byte 0x0008, 0x007c, 0x0010, 0x0045, 0x0008, 0x0045, 0x0000, 0x0045
+ .2byte 0x0008, 0x0056, 0xfffd, 0x0000, 0x0010, 0x0045, 0x0008, 0x0045
+ .2byte 0x0000, 0x0045, 0x0008, 0x0045, 0xfffd, 0x0001, 0x0008, 0x0056
+ .2byte 0x0018, 0x0043, 0x0020, 0x0043, 0x0028, 0x0056, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596694:: @ 8596694
+ .2byte 0x0008, 0x003c, 0x0010, 0x0005, 0x0008, 0x0005, 0x0000, 0x0005
+ .2byte 0x0008, 0x0016, 0xfffd, 0x0000, 0x0010, 0x0005, 0x0008, 0x0005
+ .2byte 0x0000, 0x0005, 0x0008, 0x0005, 0xfffd, 0x0001, 0x0008, 0x0016
+ .2byte 0x0018, 0x0003, 0x0020, 0x0003, 0x0028, 0x0016, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085966D4:: @ 85966D4
+ .4byte gUnknown_08596654
+ .4byte gUnknown_08596694
+
+ .align 2
+gUnknown_085966DC:: @ 85966DC
+ spr_template 0x2771, 0x2771, gUnknown_08524954, gUnknown_085966D4, NULL, gDummySpriteAffineAnimTable, sub_810F634
+
+ .align 2
+gUnknown_085966F4:: @ 85966F4
+ .2byte 0x0000, 0x0006, 0x0010, 0x0006, 0x0020, 0x0006, 0x0030, 0x0006
+ .2byte 0x0040, 0x0006, 0x0050, 0x0006, 0x0060, 0x0012, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596714:: @ 8596714
+ .4byte gUnknown_085966F4
+
+ .align 2
+gUnknown_08596718:: @ 8596718
+ .2byte 0x0000, 0x0000, 0x0404, 0x0000, 0x0000, 0x0000, 0x08fc, 0x0000
+ .2byte 0x0000, 0x0000, 0x0404, 0x0000, 0x7ffd, 0x0002, 0x0000, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
gUnknown_08596740:: @ 8596740
- .incbin "baserom.gba", 0x596740, 0x1c
+ .4byte gUnknown_08596718
+ .align 2
+gUnknown_08596744:: @ 8596744
+ spr_template 0x276d, 0x276d, gUnknown_08524914, gUnknown_08596714, NULL, gDummySpriteAffineAnimTable, sub_810F6B0
+
+ .align 2
gUnknown_0859675C:: @ 859675C
- .incbin "baserom.gba", 0x59675c, 0x20
+ .2byte 0xfff8, 0x000a, 0x1000, 0x0000, 0x0012, 0xffee, 0x1000, 0x0000
+ .2byte 0xffec, 0x0010, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
gUnknown_0859677C:: @ 859677C
- .incbin "baserom.gba", 0x59677c, 0x18
+ .2byte 0x0040, 0xfffc, 0x1400, 0x0000, 0x0000, 0x0000, 0xc800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
gUnknown_08596794:: @ 8596794
- .incbin "baserom.gba", 0x596794, 0xd0
+ spr_template 0x2809, 0x2809, gUnknown_08524A2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
+ .align 2
+gUnknown_085967AC:: @ 85967AC
+ spr_template 0x280a, 0x280a, gUnknown_0852491C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_810FBA8
+
+ .align 2
+gUnknown_085967C4:: @ 85967C4
+ .2byte 0xfff8, 0xfff8, 0x0800, 0x0000, 0x0008, 0x0008, 0x0800, 0x0000
+ .2byte 0x7ffe, 0x0000, 0x0000, 0x0000
+ .align 2
+gUnknown_085967DC:: @ 85967DC
+ .2byte 0x00f0, 0x00f0, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0600, 0x0000
+ .2byte 0x0008, 0x0008, 0x0800, 0x0000, 0xfff8, 0xfff8, 0x0200, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596804:: @ 8596804
+ .2byte 0x00d0, 0x00d0, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0400, 0x0000
+ .2byte 0x0008, 0x0008, 0x0800, 0x0000, 0xfff8, 0xfff8, 0x0400, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859682C:: @ 859682C
+ .2byte 0x00b0, 0x00b0, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0200, 0x0000
+ .2byte 0x0008, 0x0008, 0x0800, 0x0000, 0xfff8, 0xfff8, 0x0600, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596854:: @ 8596854
+ .4byte gUnknown_085967C4
+ .4byte gUnknown_085967DC
+ .4byte gUnknown_08596804
+ .4byte gUnknown_0859682C
+
+ .align 2
gUnknown_08596864:: @ 8596864
- .incbin "baserom.gba", 0x596864, 0x35c
+ spr_template 0x280b, 0x280b, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_08596854, sub_810FDF0
+
+ .align 2
+gUnknown_0859687C:: @ 859687C
+ .2byte 0x0020, 0x0020, 0x0000, 0x0000, 0x0004, 0x0004, 0x7800, 0x0000
+ .2byte 0x7fff, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596894:: @ 8596894
+ .4byte gUnknown_0859687C
+
+ .align 2
+gUnknown_08596898:: @ 8596898
+ spr_template 0x281b, 0x281b, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08596894, sub_80A77C8
+
+ .align 2
+gUnknown_085968B0:: @ 85968B0
+ .2byte 0x0020, 0x0020, 0x0000, 0x0000, 0x0010, 0x0010, 0x1100, 0x0000
+ .2byte 0x7ffd, 0x0000, 0x0000, 0x0000, 0xfff8, 0xfff8, 0x0a00, 0x0000
+ .2byte 0x0008, 0x0008, 0x0a00, 0x0000, 0x7ffd, 0x0004, 0x0000, 0x0000
+ .2byte 0x7ffd, 0x0000, 0x0000, 0x0000, 0xfff0, 0xfff0, 0x0500, 0x0000
+ .2byte 0x0010, 0x0010, 0x0500, 0x0000, 0x7ffd, 0x0007, 0x0000, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596908:: @ 8596908
+ .2byte 0xffec, 0x0018, 0x0f00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596918:: @ 8596918
+ .4byte gUnknown_085968B0
+ .4byte gUnknown_08596908
+
+ .align 2
+gUnknown_08596920:: @ 8596920
+ spr_template 0x27e4, 0x27e4, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08596918, sub_8110240
+
+ .align 2
+gUnknown_08596938:: @ 8596938
+ .2byte 0x0100, 0x0100, 0x001e, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596948:: @ 8596948
+ .2byte 0x0100, 0x0100, 0x009d, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596958:: @ 8596958
+ .2byte 0x0100, 0x0100, 0x005e, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596968:: @ 8596968
+ .4byte gUnknown_08596938
+ .4byte gUnknown_08596948
+ .4byte gUnknown_08596958
+
+ .align 2
+gUnknown_08596974:: @ 8596974
+ spr_template 0x27a9, 0x27a9, gUnknown_085249F4, gDummySpriteAnimTable, NULL, gUnknown_08596968, sub_8110368
+
+ .align 2
+gUnknown_0859698C:: @ 859698C
+ .2byte 0x0000, 0x0000, 0x01df, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0859699C:: @ 859699C
+ .2byte 0x0000, 0x0000, 0x0160, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085969AC:: @ 85969AC
+ .2byte 0x0000, 0x0000, 0x01a0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085969BC:: @ 85969BC
+ .4byte gUnknown_0859698C
+ .4byte gUnknown_0859699C
+ .4byte gUnknown_085969AC
+
+ .align 2
+gUnknown_085969C8:: @ 85969C8
+ spr_template 0x27b1, 0x27b1, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_085969BC, sub_8110438
+
+ .align 2
+gUnknown_085969E0:: @ 85969E0
+ spr_template 0x27c4, 0x27c4, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81104E4
+
+ .align 2
+gUnknown_085969F8:: @ 85969F8
+ spr_template 0x27c3, 0x27c3, gUnknown_0852493C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81105B4
+
+ .align 2
+gUnknown_08596A10:: @ 8596A10
+ .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0006, 0x0006, 0x0100, 0x0000
+ .2byte 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596A28:: @ 8596A28
+ .4byte gUnknown_08596A10
+
+ .align 2
+gUnknown_08596A2C:: @ 8596A2C
+ spr_template 0x27c5, 0x27c5, gUnknown_08524AFC, gDummySpriteAnimTable, NULL, gUnknown_08596A28, sub_811067C
+ .align 2
+gUnknown_08596A44:: @ 8596A44
+ spr_template 0x27b1, 0x27b1, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110720
+
+ .align 2
+gUnknown_08596A5C:: @ 8596A5C
+ spr_template 0x27b1, 0x27b1, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110850
+
+ .align 2
+gUnknown_08596A74:: @ 8596A74
+ spr_template 0x2816, 0x2816, gUnknown_08524974, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110850
+
+ .align 2
+gUnknown_08596A8C:: @ 8596A8C
+ .2byte 0x0010, 0x0010, 0x0000, 0x0000, 0x0008, 0x0008, 0x1200, 0x0000
+ .2byte 0x7ffd, 0x0000, 0x0000, 0x0000, 0xfffb, 0xfffb, 0x0800, 0x0000
+ .2byte 0x0005, 0x0005, 0x0800, 0x0000, 0x7ffd, 0x0005, 0x0000, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596AC4:: @ 8596AC4
+ .4byte gUnknown_08596A8C
+
+ .align 2
+gUnknown_08596AC8:: @ 8596AC8
+ spr_template 0x27e4, 0x27e4, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08596AC4, sub_8110994
+
+ .align 2
+gUnknown_08596AE0:: @ 8596AE0
+ .2byte 0x0020, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596AE8:: @ 8596AE8
+ .2byte 0x0030, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596AF0:: @ 8596AF0
+ .2byte 0x0040, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596AF8:: @ 8596AF8
+ .4byte gUnknown_08596AE0
+ .4byte gUnknown_08596AE8
+ .4byte gUnknown_08596AF0
+
+ .align 2
+gUnknown_08596B04:: @ 8596B04
+ spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596AF8, NULL, gDummySpriteAffineAnimTable, sub_81109F0
+
+ .align 2
+gUnknown_08596B1C:: @ 8596B1C
+ spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596AF8, NULL, gDummySpriteAffineAnimTable, sub_8110AB4
+
+ .align 2
+gUnknown_08596B34:: @ 8596B34
+ spr_template 0x275a, 0x275a, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110B38
+
+ .align 2
+gUnknown_08596B4C:: @ 8596B4C
+ .2byte 0x00c0, 0x00c0, 0x0000, 0x0000, 0x0002, 0xfffd, 0x0500, 0x0000
+ .2byte 0xfffe, 0x0003, 0x0500, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596B6C:: @ 8596B6C
+ .4byte gUnknown_08596B4C
+
+ .align 2
+gUnknown_08596B70:: @ 8596B70
+ spr_template 0x27a5, 0x27a5, gUnknown_08524A8C, gUnknown_085950E0, NULL, gUnknown_08596B6C, sub_8110B38
+
+ .align 2
+gUnknown_08596B88:: @ 8596B88
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_085954D0, NULL, gDummySpriteAffineAnimTable, sub_8110B38
+
+ .align 2
+gUnknown_08596BA0:: @ 8596BA0
+ spr_template 0x2815, 0x2815, gUnknown_08524934, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8110E4C
+
+ .align 2
+gUnknown_08596BB8:: @ 8596BB8
+ .2byte 0x00f0, 0x4009, 0x0010, 0x4089
+
+ .align 2
gUnknown_08596BC0:: @ 8596BC0
- .incbin "baserom.gba", 0x596bc0, 0x50
+ .2byte 0x0002, 0x0000
+
+ .align 2
+gUnknown_08596BC4:: @ 8596BC4
+ .4byte gUnknown_08596BB8
+
+ .align 2
+gUnknown_08596BC8:: @ 8596BC8
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596BD0:: @ 8596BD0
+ .2byte 0x0010, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596BD8:: @ 8596BD8
+ .2byte 0x0020, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596BE0:: @ 8596BE0
+ .2byte 0x0030, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596BE8:: @ 8596BE8
+ .2byte 0x0040, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596BF0:: @ 8596BF0
+ .2byte 0x0050, 0x0001, 0xffff, 0x0000
+ .align 2
+gUnknown_08596BF8:: @ 8596BF8
+ .4byte gUnknown_08596BC8
+ .4byte gUnknown_08596BD0
+
+ .align 2
+gUnknown_08596C00:: @ 8596C00
+ .4byte gUnknown_08596BD8
+ .4byte gUnknown_08596BE0
+
+ .align 2
+gUnknown_08596C08:: @ 8596C08
+ .4byte gUnknown_08596BE8
+ .4byte gUnknown_08596BF0
+
+ .align 2
gUnknown_08596C10:: @ 8596C10
- .incbin "baserom.gba", 0x596c10, 0x18
+ spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596BF8, NULL, gDummySpriteAffineAnimTable, sub_8110F30
+ .align 2
gUnknown_08596C28:: @ 8596C28
- .incbin "baserom.gba", 0x596c28, 0x18
+ spr_template 0x275a, 0x275a, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_811131C
+ .align 2
gUnknown_08596C40:: @ 8596C40
- .incbin "baserom.gba", 0x596c40, 0x178
+ spr_template 0x274a, 0x274a, gUnknown_08524914, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_811131C
+
+ .align 2
+gUnknown_08596C58:: @ 8596C58
+ spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596BF8, NULL, gDummySpriteAffineAnimTable, sub_8111388
+
+ .align 2
+gUnknown_08596C70:: @ 8596C70
+ .2byte 0x0000, 0x0000, 0x05fb, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596C80:: @ 8596C80
+ .2byte 0x0000, 0x0000, 0x0505, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596C90:: @ 8596C90
+ .4byte gUnknown_08596C70
+ .4byte gUnknown_08596C80
+
+ .align 2
+gUnknown_08596C98:: @ 8596C98
+ spr_template 0x274a, 0x274a, gUnknown_08524974, gUnknown_08596BF8, NULL, gUnknown_08596C90, sub_8111418
+
+ .align 2
+gUnknown_08596CB0:: @ 8596CB0
+ spr_template 0x274a, 0x274a, gUnknown_08524974, gUnknown_08596BF8, NULL, gUnknown_08596C90, sub_8111444
+
+ .align 2
+gUnknown_08596CC8:: @ 8596CC8
+ spr_template 0x274a, 0x274a, gUnknown_08524914, gUnknown_08596C08, NULL, gUnknown_08596C90, sub_80FF268
+
+ .align 2
+gUnknown_08596CE0:: @ 8596CE0
+ spr_template 0x274a, 0x274a, gUnknown_08524974, gUnknown_08596C00, NULL, gUnknown_08596C90, sub_80A8EE4
+
+ .align 2
+gUnknown_08596CF8:: @ 8596CF8
+ .2byte 0x001e, 0x001e, 0x050a, 0x0000, 0xffe2, 0xffe2, 0x050a, 0x0000
+ .2byte 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596D10:: @ 8596D10
+ .4byte gUnknown_08596CF8
+ .align 2
+gUnknown_08596D14:: @ 8596D14
+ spr_template 0x271d, 0x271d, gUnknown_085249CC, gDummySpriteAnimTable, NULL, gUnknown_08596D10, sub_811160C
+
+ .align 2
+gUnknown_08596D2C:: @ 8596D2C
+ spr_template 0x271d, 0x271d, gUnknown_08524A2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81117F4
+
+ .align 2
+gUnknown_08596D44:: @ 8596D44
+ .2byte 0x0000, 0x0000, 0x010a, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596D54:: @ 8596D54
+ .4byte gUnknown_08596D44
+
+ .align 2
+gUnknown_08596D58:: @ 8596D58
+ spr_template 0x27c0, 0x27c0, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08596D54, sub_81119E0
+
+ .align 2
+gUnknown_08596D70:: @ 8596D70
+ .2byte 0x0000, 0x0002, 0x0008, 0x0002, 0x0010, 0x0002, 0x0018, 0x0002
+ .2byte 0x0020, 0x0002, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596D88:: @ 8596D88
+ .4byte gUnknown_08596D70
+
+ .align 2
+gUnknown_08596D8C:: @ 8596D8C
+ spr_template 0x27c1, 0x27c1, gUnknown_08524954, gUnknown_08596D88, NULL, gDummySpriteAffineAnimTable, sub_8111B9C
+
+ .align 2
+gUnknown_08596DA4:: @ 8596DA4
+ .2byte 0x0200, 0x0200, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596DB4:: @ 8596DB4
+ .4byte gUnknown_08596DA4
+
+ .align 2
gUnknown_08596DB8:: @ 8596DB8
- .incbin "baserom.gba", 0x596db8, 0x78
+ spr_template 0x27cc, 0x27cc, gUnknown_08524A5C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8112264
+
+ .align 2
+gUnknown_08596DD0:: @ 8596DD0
+ spr_template 0x27d7, 0x27d7, gUnknown_08524A54, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81129F0
+
+ .align 2
+gUnknown_08596DE8:: @ 8596DE8
+ spr_template 0x27d8, 0x27d8, gUnknown_08524A34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8112B78
+
+ .align 2
+gUnknown_08596E00:: @ 8596E00
+ spr_template 0x27ed, 0x27ed, gUnknown_08524A34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8112B78
+ .align 2
+gUnknown_08596E18:: @ 8596E18
+ .2byte 0x0000, 0x0004, 0x0008, 0x0004, 0x0010, 0x0004, 0x0018, 0x0004, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08596E2C:: @ 8596E2C
+ .4byte gUnknown_08596E18
+
+ .align 2
gUnknown_08596E30:: @ 8596E30
- .incbin "baserom.gba", 0x596e30, 0x528
+ spr_template 0x280d, 0x280d, gUnknown_08524A74, gUnknown_08596E2C, NULL, gDummySpriteAffineAnimTable, sub_8112E9C
+
+ .align 2
+gUnknown_08596E48:: @ 8596E48
+ spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8112F60
+
+ .align 2
+gUnknown_08596E60:: @ 8596E60
+ .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004
+ .2byte 0x0040, 0x0004, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08596E78:: @ 8596E78
+ .4byte gUnknown_08596E60
+
+ .align 2
+gUnknown_08596E7C:: @ 8596E7C
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08596E78, NULL, gDummySpriteAffineAnimTable, sub_8113064
+
+ .align 2
+gUnknown_08596E94:: @ 8596E94
+ .2byte 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08596EA4:: @ 8596EA4
+ .2byte 0x0010, 0x00c3, 0x0020, 0x00c3, 0x0030, 0x00c3, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08596EB4:: @ 8596EB4
+ .4byte gUnknown_08596E94
+ .4byte gUnknown_08596EA4
+
+ .align 2
+gUnknown_08596EBC:: @ 8596EBC
+ .2byte 0x0050, 0x0050, 0x007f, 0x0000, 0x000d, 0x000d, 0x6400, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596ED4:: @ 8596ED4
+ .2byte 0x0050, 0x0050, 0x0000, 0x0000, 0x000d, 0x000d, 0x6400, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596EEC:: @ 8596EEC
+ .4byte gUnknown_08596EBC
+ .4byte gUnknown_08596ED4
+
+ .align 2
+gUnknown_08596EF4:: @ 8596EF4
+ spr_template 0x272d, 0x272d, gUnknown_085249D4, gUnknown_08596EB4, NULL, gUnknown_08596EEC, sub_8113224
+
+ .align 2
+gUnknown_08596F0C:: @ 8596F0C
+ .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0030, 0x0005
+ .2byte 0x0040, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08596F24:: @ 8596F24
+ .4byte gUnknown_08596F0C
+
+ .align 2
+gUnknown_08596F28:: @ 8596F28
+ spr_template 0x2733, 0x2733, gUnknown_08524914, gUnknown_08596F24, NULL, gDummySpriteAffineAnimTable, sub_81131B4
+
+ .align 2
+gUnknown_08596F40:: @ 8596F40
+ .2byte 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08596F50:: @ 8596F50
+ .4byte gUnknown_08596F40
+ .4byte gUnknown_08596F40
+
+ .align 2
+gUnknown_08596F58:: @ 8596F58
+ .2byte 0x0064, 0x0064, 0x017f, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596F68:: @ 8596F68
+ .2byte 0x0064, 0x0064, 0x0100, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08596F78:: @ 8596F78
+ .4byte gUnknown_08596F58
+ .4byte gUnknown_08596F68
+
+ .align 2
+gUnknown_08596F80:: @ 8596F80
+ spr_template 0x272d, 0x272d, gUnknown_085249D4, gUnknown_08596F50, NULL, gUnknown_08596F78, sub_8113224
+
+ .align 2
+gUnknown_08596F98:: @ 8596F98
+ spr_template 0x2809, 0x2809, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8113250
+
+ .align 2
+gUnknown_08596FB0:: @ 8596FB0
+ spr_template 0x272d, 0x272d, gUnknown_08524914, gUnknown_08596E78, NULL, gDummySpriteAffineAnimTable, sub_81135EC
+
+ .align 2
+gUnknown_08596FC8:: @ 8596FC8
+ spr_template 0x271f, 0x271f, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81138D4
+
+ .align 2
+gUnknown_08596FE0:: @ 8596FE0
+ .2byte 0x0000, 0x0000, 0x0100, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
+gUnknown_08596FF0:: @ 8596FF0
+ .2byte 0x0000, 0x0000, 0x0120, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597000:: @ 8597000
+ .2byte 0x0000, 0x0000, 0x0140, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597010:: @ 8597010
+ .2byte 0x0000, 0x0000, 0x0160, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597020:: @ 8597020
+ .2byte 0x0000, 0x0000, 0x0180, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597030:: @ 8597030
+ .2byte 0x0000, 0x0000, 0x01a0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597040:: @ 8597040
+ .2byte 0x0000, 0x0000, 0x01c0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597050:: @ 8597050
+ .2byte 0x0000, 0x0000, 0x01e0, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597060:: @ 8597060
+ .4byte gUnknown_08596FE0
+ .4byte gUnknown_08596FF0
+ .4byte gUnknown_08597000
+ .4byte gUnknown_08597010
+ .4byte gUnknown_08597020
+ .4byte gUnknown_08597030
+ .4byte gUnknown_08597040
+ .4byte gUnknown_08597050
+
+ .align 2
+gUnknown_08597080:: @ 8597080
+ spr_template 0x279b, 0x279b, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08597060, sub_81139DC
+
+ .align 2
+gUnknown_08597098:: @ 8597098
+ spr_template 0x27a1, 0x27a1, gUnknown_08524A9C, gDummySpriteAnimTable, NULL, gUnknown_08597060, sub_81139DC
+
+ .align 2
+gUnknown_085970B0:: @ 85970B0
+ .2byte 0x00c0, 0x00c0, 0x0050, 0x0000, 0x0000, 0x0000, 0x08fe, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085970C8:: @ 85970C8
+ .2byte 0x00c0, 0x00c0, 0x00b0, 0x0000, 0x0000, 0x0000, 0x0802, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085970E0:: @ 85970E0
+ .4byte gUnknown_085970B0
+ .4byte gUnknown_085970C8
+
+ .align 2
+gUnknown_085970E8:: @ 85970E8
+ spr_template 0x27ab, 0x27ab, gUnknown_0852496C, gDummySpriteAnimTable, NULL, gUnknown_085970E0, sub_8113A90
+
+ .align 2
+gUnknown_08597100:: @ 8597100
+ .2byte 0x0000, 0x0004, 0x0010, 0x0004, 0x0020, 0x0004, 0x0030, 0x0004
+ .2byte 0x0040, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08597118:: @ 8597118
+ .2byte 0x0000, 0x0044, 0x0010, 0x0044, 0x0020, 0x0044, 0x0030, 0x0044
+ .2byte 0x0040, 0x0044, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08597130:: @ 8597130
+ .4byte gUnknown_08597100
+ .4byte gUnknown_08597118
+
+ .align 2
+gUnknown_08597138:: @ 8597138
+ spr_template 0x2737, 0x2737, gUnknown_08524914, gUnknown_08597130, NULL, gDummySpriteAffineAnimTable, sub_81144BC
+
+ .align 2
+gUnknown_08597150:: @ 8597150
+ .2byte 0x0000, 0x0000, 0x010f, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597160:: @ 8597160
+ .2byte 0x0000, 0x0000, 0x0114, 0x0000, 0x7ffe, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597170:: @ 8597170
+ .4byte gUnknown_08597150
+
+ .align 2
+gUnknown_08597174:: @ 8597174
+ .4byte gUnknown_08597160
+
+ .align 2
+gUnknown_08597178:: @ 8597178
+ spr_template 0x2710, 0x2710, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08597170, sub_8114994
+
+ .align 2
+gUnknown_08597190:: @ 8597190
+ spr_template 0x2710, 0x2710, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08597174, sub_8114A7C
+
+ .align 2
+gUnknown_085971A8:: @ 85971A8
+ spr_template 0x275a, 0x275a, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8114AF0
+
+ .align 2
+gUnknown_085971C0:: @ 85971C0
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085971C8:: @ 85971C8
+ .4byte gUnknown_085971C0
+
+ .align 2
+gUnknown_085971CC:: @ 85971CC
+ spr_template 0x275a, 0x275a, gUnknown_0852490C, gUnknown_085971C8, NULL, gDummySpriteAffineAnimTable, sub_8114AF0
+
+ .align 2
+gUnknown_085971E4:: @ 85971E4
+ spr_template 0x275a, 0x275a, gUnknown_0852490C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8114B80
+
+ .align 2
+gUnknown_085971FC:: @ 85971FC
+ spr_template 0x275a, 0x275a, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81151A0
+
+ .align 2
+gUnknown_08597214:: @ 8597214
+ spr_template 0x2829, 0x2829, gUnknown_08524934, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8115244
+
+ .align 2
+gUnknown_0859722C:: @ 859722C
+ .2byte 0x0000, 0x0008, 0x0004, 0x0008, 0x0000, 0x0048, 0x0008, 0x0008, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08597240:: @ 8597240
+ .2byte 0x0000, 0x0048, 0x0004, 0x0008, 0x0000, 0x0008, 0x0008, 0x0008, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_08597254:: @ 8597254
+ .4byte gUnknown_0859722C
+ .4byte gUnknown_08597240
+
+ .align 2
+gUnknown_0859725C:: @ 859725C
+ spr_template 0x2759, 0x2759, gUnknown_0852490C, gUnknown_08597254, NULL, gDummySpriteAffineAnimTable, sub_811572C
+
+ .align 2
+gUnknown_08597274:: @ 8597274
+ spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81157FC
+
+ .align 2
+gUnknown_0859728C:: @ 859728C
+ spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81158A4
+
+ .align 2
+gUnknown_085972A4:: @ 85972A4
+ .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0030, 0x0003
+ .2byte 0x0040, 0x0003, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085972BC:: @ 85972BC
+ .4byte gUnknown_085972A4
+
+ .align 2
+gUnknown_085972C0:: @ 85972C0
+ spr_template 0x2757, 0x2757, gUnknown_08524914, gUnknown_085972BC, NULL, gDummySpriteAffineAnimTable, sub_81159B4
+
+ .align 2
+gUnknown_085972D8:: @ 85972D8
+ spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_81160A4
+
+ .align 2
+gUnknown_085972F0:: @ 85972F0
+ .2byte 0x0000, 0x0000, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597300:: @ 8597300
+ .2byte 0x00d8, 0x00d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597318:: @ 8597318
+ .2byte 0x00b0, 0x00b0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597330:: @ 8597330
+ .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_08597348:: @ 8597348
+ .4byte gUnknown_085972F0
+ .4byte gUnknown_08597300
+ .4byte gUnknown_08597318
+ .4byte gUnknown_08597330
+
+ .align 2
gUnknown_08597358:: @ 8597358
- .incbin "baserom.gba", 0x597358, 0x30
+ spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_8116388
+
+ .align 2
+gUnknown_08597370:: @ 8597370
+ spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_8116420
+ .align 2
gUnknown_08597388:: @ 8597388
- .incbin "baserom.gba", 0x597388, 0x60
+ spr_template 0x27a4, 0x27a4, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_8116388
+
+ .align 2
+gUnknown_085973A0:: @ 85973A0
+ spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_8116458
+ .align 2
+gUnknown_085973B8:: @ 85973B8
+ spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_81164F0
+
+ .align 2
+gUnknown_085973D0:: @ 85973D0
+ spr_template 0x282d, 0x282d, gUnknown_08524A34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8116560
+
+ .align 2
gUnknown_085973E8:: @ 85973E8
- .incbin "baserom.gba", 0x5973e8, 0x30
+ spr_template 0x2797, 0x2797, gUnknown_08524974, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_81165A8
+
+ .align 2
+gUnknown_08597400:: @ 8597400
+ spr_template 0x2797, 0x2797, gUnknown_08524A94, gDummySpriteAnimTable, NULL, gUnknown_08597348, sub_81163D0
gUnknown_08597418:: @ 8597418
- .incbin "baserom.gba", 0x597418, 0x2
+ .2byte 0x7fff
gUnknown_0859741A:: @ 859741A
- .incbin "baserom.gba", 0x59741a, 0x4
+ .byte 0x08, 0x0a, 0x0c, 0x0e
gUnknown_0859741E:: @ 859741E
- .incbin "baserom.gba", 0x59741e, 0x6
+ .byte 0x08, 0x0a, 0x0c, 0x0e
+ .align 2
gUnknown_08597424:: @ 8597424
- .incbin "baserom.gba", 0x597424, 0x28
+ .4byte task_battle_intro_80BC47C
+ .4byte task_battle_intro_80BC47C
+ .4byte task00_battle_intro_80BC6C8
+ .4byte task00_battle_intro_80BC6C8
+ .4byte task00_battle_intro_80BC6C8
+ .4byte task_battle_intro_80BC47C
+ .4byte task_battle_intro_80BC47C
+ .4byte task_battle_intro_80BC47C
+ .4byte task_battle_intro_anim
+ .4byte task_battle_intro_anim
diff --git a/data/battle_anim_815A0D4.s b/data/battle_anim_815A0D4.s
new file mode 100644
index 000000000..be8439db7
--- /dev/null
+++ b/data/battle_anim_815A0D4.s
@@ -0,0 +1,66 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+
+gUnknown_085CE2A0:: @ 85CE2A0
+ .incbin "baserom.gba", 0x5ce2a0, 0xb0
+
+gUnknown_085CE350:: @ 85CE350
+ .incbin "baserom.gba", 0x5ce350, 0x38
+
+gUnknown_085CE388:: @ 85CE388
+ .incbin "baserom.gba", 0x5ce388, 0x18
+
+gUnknown_085CE3A0:: @ 85CE3A0
+ .incbin "baserom.gba", 0x5ce3a0, 0x18
+
+gUnknown_085CE3B8:: @ 85CE3B8
+ .incbin "baserom.gba", 0x5ce3b8, 0x28
+
+gUnknown_085CE3E0:: @ 85CE3E0
+ .incbin "baserom.gba", 0x5ce3e0, 0x50
+
+gUnknown_085CE430:: @ 85CE430
+ .incbin "baserom.gba", 0x5ce430, 0x30
+
+gUnknown_085CE460:: @ 85CE460
+ .incbin "baserom.gba", 0x5ce460, 0x2c
+
+gUnknown_085CE48C:: @ 85CE48C
+ .incbin "baserom.gba", 0x5ce48c, 0x18
+
+gUnknown_085CE4A4:: @ 85CE4A4
+ .incbin "baserom.gba", 0x5ce4a4, 0x4
+
+gUnknown_085CE4A8:: @ 85CE4A8
+ .incbin "baserom.gba", 0x5ce4a8, 0x8
+
+gUnknown_085CE4B0:: @ 85CE4B0
+ .incbin "baserom.gba", 0x5ce4b0, 0x140
+
+gUnknown_085CE5F0:: @ 85CE5F0
+ .incbin "baserom.gba", 0x5ce5f0, 0x15c
+
+gUnknown_085CE74C:: @ 85CE74C
+ .incbin "baserom.gba", 0x5ce74c, 0x20
+
+gUnknown_085CE76C:: @ 85CE76C
+ .incbin "baserom.gba", 0x5ce76c, 0x18
+
+gUnknown_085CE784:: @ 85CE784
+ .incbin "baserom.gba", 0x5ce784, 0x68
+
+gUnknown_085CE7EC:: @ 85CE7EC
+ .incbin "baserom.gba", 0x5ce7ec, 0x60
+
+gUnknown_085CE84C:: @ 85CE84C
+ .incbin "baserom.gba", 0x5ce84c, 0x30
+
+gUnknown_085CE87C:: @ 85CE87C
+ .incbin "baserom.gba", 0x5ce87c, 0x14c
+
+gUnknown_085CE9C8:: @ 85CE9C8
+ .incbin "baserom.gba", 0x5ce9c8, 0x1e8
+
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index b657ae179..e97943840 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -6,7 +6,7 @@
gUnknown_082C8D64:: @ 82C8D64
.incbin "baserom.gba", 0x2c8d64, 0x8
-gUnknown_082C8D6C:: @ 82C8D6C
+gBattleAnims_Moves:: @ 82C8D6C
.incbin "baserom.gba", 0x2c8d6c, 0x590
gUnknown_082C92FC:: @ 82C92FC
diff --git a/data/battle_anims.s b/data/battle_anims.s
index 6b48bcd2a..082a86fa1 100644
--- a/data/battle_anims.s
+++ b/data/battle_anims.s
@@ -4,6 +4,8 @@
.section .rodata
.align 2, 0
+ @ only partially done because this file terrifies me
+
gUnknown_08524904:: @ 8524904
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
@@ -291,62 +293,616 @@ gUnknown_08524B34:: @ 8524B34
gUnknown_08524B3C:: @ 8524B3C
.byte 0x00, 0x87, 0x00, 0xc0, 0x00, 0x08, 0x00, 0x00
-gUnknown_08524B44:: @ 8524B44
- .incbin "baserom.gba", 0x524b44, 0x1d0
-
-gUnknown_08524D14:: @ 8524D14
- .incbin "baserom.gba", 0x524d14, 0x270
-
-gUnknown_08524F84:: @ 8524F84
- .incbin "baserom.gba", 0x524f84, 0x308
-
-gUnknown_0852528C:: @ 852528C
- .incbin "baserom.gba", 0x52528c, 0x120
-
-gUnknown_085253AC:: @ 85253AC
- .incbin "baserom.gba", 0x5253ac, 0x270
-
-gUnknown_0852561C:: @ 852561C
- .incbin "baserom.gba", 0x52561c, 0x270
-
-gUnknown_0852588C:: @ 852588C
- .incbin "baserom.gba", 0x52588c, 0x308
-
-gUnknown_08525B94:: @ 8525B94
- .incbin "baserom.gba", 0x525b94, 0x120
-
-gUnknown_08525CB4:: @ 8525CB4
- .incbin "baserom.gba", 0x525cb4, 0xa0
-
-gUnknown_08525D54:: @ 8525D54
- .incbin "baserom.gba", 0x525d54, 0x144
-
-gUnknown_08525E98:: @ 8525E98
- .incbin "baserom.gba", 0x525e98, 0xc0
-
-gUnknown_08525F58:: @ 8525F58
- .incbin "baserom.gba", 0x525f58, 0x20
-
-gUnknown_08525F78:: @ 8525F78
- .incbin "baserom.gba", 0x525f78, 0x10
-
-gUnknown_08525F88:: @ 8525F88
- .incbin "baserom.gba", 0x525f88, 0x4
-
-gUnknown_08525F8C:: @ 8525F8C
- .incbin "baserom.gba", 0x525f8c, 0x4
-
-gUnknown_08525F90:: @ 8525F90
- .incbin "baserom.gba", 0x525f90, 0x30
-
-gUnknown_08525FC0:: @ 8525FC0
- .incbin "baserom.gba", 0x525fc0, 0x18f80
-
-gUnknown_0853EF40:: @ 853EF40
- .incbin "baserom.gba", 0x53ef40, 0x8
-
-gUnknown_0853EF48:: @ 853EF48
- .incbin "baserom.gba", 0x53ef48, 0x18
-
-gUnknown_0853EF60:: @ 853EF60
- .incbin "baserom.gba", 0x53ef60, 0xf8
+ .align 2
+gBattleAnimPicTable:: @ 8524B44
+ obj_tiles 0x08c02538, 0x0200, 0x2710
+ obj_tiles 0x08c1c6e0, 0x0300, 0x2711
+ obj_tiles 0x08c20784, 0x0200, 0x2712
+ obj_tiles 0x08c025e8, 0x0100, 0x2713
+ obj_tiles 0x08c0265c, 0x0200, 0x2714
+ obj_tiles 0x08c0270c, 0x0400, 0x2715
+ obj_tiles 0x08c027e0, 0x0180, 0x2716
+ obj_tiles 0x08c029cc, 0x0800, 0x2717
+ obj_tiles 0x08c02b68, 0x0020, 0x2718
+ obj_tiles 0x08c02fa4, 0x0400, 0x2719
+ obj_tiles 0x08c02bc4, 0x1200, 0x271a
+ obj_tiles 0x08c032ac, 0x0180, 0x271b
+ obj_tiles 0x08c0334c, 0x0080, 0x271c
+ obj_tiles 0x08c03438, 0x0080, 0x271d
+ obj_tiles 0x08c1fbd4, 0x0280, 0x271e
+ obj_tiles 0x08c03484, 0x0080, 0x271f
+ obj_tiles 0x08c03518, 0x0100, 0x2720
+ obj_tiles 0x08c03598, 0x0020, 0x2721
+ obj_tiles 0x08c24d7c, 0x0080, 0x2722
+ obj_tiles 0x08c035f8, 0x0400, 0x2723
+ obj_tiles 0x08c036b8, 0x0200, 0x2724
+ obj_tiles 0x08c03a28, 0x0a00, 0x2725
+ obj_tiles 0x08c03a28, 0x0a00, 0x2726
+ obj_tiles 0x08c037d4, 0x0380, 0x2727
+ obj_tiles 0x08c03ea0, 0x0300, 0x2728
+ obj_tiles 0x08c03db0, 0x0a00, 0x2729
+ obj_tiles 0x08c04494, 0x0a00, 0x272a
+ obj_tiles 0x08c0481c, 0x0a00, 0x272b
+ obj_tiles 0x08c04b40, 0x0a00, 0x272c
+ obj_tiles 0x08c04e90, 0x0a00, 0x272d
+ obj_tiles 0x08c05170, 0x0a00, 0x272e
+ obj_tiles 0x08c03f80, 0x0e00, 0x272f
+ obj_tiles 0x08c043a8, 0x0380, 0x2730
+ obj_tiles 0x08c0557c, 0x1000, 0x2731
+ obj_tiles 0x08c05eec, 0x0800, 0x2732
+ obj_tiles 0x08c062b8, 0x0a00, 0x2733
+ obj_tiles 0x08c06678, 0x0800, 0x2734
+ obj_tiles 0x08c06a4c, 0x0a00, 0x2735
+ obj_tiles 0x08c07964, 0x0a00, 0x2736
+ obj_tiles 0x08c07b88, 0x0a00, 0x2737
+ obj_tiles 0x08c07e84, 0x0a00, 0x2738
+ obj_tiles 0x08c08090, 0x0a00, 0x2739
+ obj_tiles 0x08c082c4, 0x0a00, 0x273a
+ obj_tiles 0x08c085bc, 0x0a00, 0x273b
+ obj_tiles 0x08c08a0c, 0x0a00, 0x273c
+ obj_tiles 0x08c08ca0, 0x0a00, 0x273d
+ obj_tiles 0x08c09604, 0x1000, 0x273e
+ obj_tiles 0x08c09604, 0x1000, 0x273f
+ obj_tiles 0x08c09cf0, 0x1000, 0x2740
+ obj_tiles 0x08c09cf0, 0x1000, 0x2741
+ obj_tiles 0x08c09ffc, 0x0200, 0x2742
+ obj_tiles 0x08c0a09c, 0x0200, 0x2743
+ obj_tiles 0x08c0a148, 0x0200, 0x2744
+ obj_tiles 0x08c2e830, 0x0800, 0x2745
+ obj_tiles 0x08c0a3a8, 0x0080, 0x2746
+ obj_tiles 0x08c0a8bc, 0x0200, 0x2747
+ obj_tiles 0x08c0a3ec, 0x1000, 0x2748
+ obj_tiles 0x08c0a980, 0x0180, 0x2749
+ obj_tiles 0x08c0aa2c, 0x0c00, 0x274a
+ obj_tiles 0x08c0aebc, 0x0100, 0x274b
+ obj_tiles 0x08c0af38, 0x0040, 0x274c
+ obj_tiles 0x08c0af7c, 0x0180, 0x274d
+ obj_tiles 0x08c0b04c, 0x0800, 0x274e
+ obj_tiles 0x08c0b444, 0x0480, 0x274f
+ obj_tiles 0x08c23104, 0x0200, 0x2750
+ obj_tiles 0x08c0b6bc, 0x0200, 0x2751
+ obj_tiles 0x08c0b7f0, 0x0100, 0x2752
+ obj_tiles 0x08c0b6bc, 0x0200, 0x2753
+ obj_tiles 0x08c0b6bc, 0x0200, 0x2754
+ obj_tiles 0x08c0b6bc, 0x0200, 0x2755
+ obj_tiles 0x08c0b864, 0x0200, 0x2756
+ obj_tiles 0x08c0b90c, 0x0a00, 0x2757
+ obj_tiles 0x08c0bb38, 0x0300, 0x2758
+ obj_tiles 0x08c0bc20, 0x0180, 0x2759
+ obj_tiles 0x08c1b29c, 0x00a0, 0x275a
+ obj_tiles 0x08c0bd5c, 0x0700, 0x275b
+ obj_tiles 0x08c14cec, 0x0400, 0x275c
+ obj_tiles 0x08c14f50, 0x0200, 0x275d
+ obj_tiles 0x08c0bffc, 0x0300, 0x275e
+ obj_tiles 0x08c0c1bc, 0x0c00, 0x275f
+ obj_tiles 0x08c0c5ec, 0x0a00, 0x2760
+ obj_tiles 0x08c0c974, 0x0080, 0x2761
+ obj_tiles 0x08c0cb90, 0x0040, 0x2762
+ obj_tiles 0x08c0ce18, 0x0e00, 0x2763
+ obj_tiles 0x08c0d2bc, 0x0e00, 0x2764
+ obj_tiles 0x08c0d680, 0x0280, 0x2765
+ obj_tiles 0x08c0d738, 0x0200, 0x2766
+ obj_tiles 0x08c24cfc, 0x0080, 0x2767
+ obj_tiles 0x08c0d8a8, 0x00c0, 0x2768
+ obj_tiles 0x08c0d8f8, 0x0a00, 0x2769
+ obj_tiles 0x08c0db6c, 0x0200, 0x276a
+ obj_tiles 0x08c0dbfc, 0x0180, 0x276b
+ obj_tiles 0x08c0dd30, 0x0080, 0x276c
+ obj_tiles 0x08c0ddac, 0x1000, 0x276d
+ obj_tiles 0x08c0e47c, 0x0a00, 0x276e
+ obj_tiles 0x08c0e620, 0x0180, 0x276f
+ obj_tiles 0x08c0e6d0, 0x0380, 0x2770
+ obj_tiles 0x08c0e840, 0x0c00, 0x2771
+ obj_tiles 0x08c0ea20, 0x0200, 0x2772
+ obj_tiles 0x08c27cec, 0x0200, 0x2773
+ obj_tiles 0x08c0eb58, 0x0200, 0x2774
+ obj_tiles 0x08c0ec58, 0x0200, 0x2775
+ obj_tiles 0x08c0ed88, 0x0400, 0x2776
+ obj_tiles 0x08c0ef20, 0x0080, 0x2777
+ obj_tiles 0x08c0ef8c, 0x0400, 0x2778
+ obj_tiles 0x08c0f174, 0x0c00, 0x2779
+ obj_tiles 0x08c0f720, 0x0200, 0x277a
+ obj_tiles 0x08c0f810, 0x1000, 0x277b
+ obj_tiles 0x08c0fbe4, 0x0a00, 0x277c
+ obj_tiles 0x08c0ff68, 0x0020, 0x277d
+ obj_tiles 0x08c0ffb8, 0x0e00, 0x277e
+ obj_tiles 0x08c1039c, 0x0080, 0x277f
+ obj_tiles 0x08c10404, 0x0a00, 0x2780
+ obj_tiles 0x08c10754, 0x0400, 0x2781
+ obj_tiles 0x08c109e8, 0x0200, 0x2782
+ obj_tiles 0x08c115e4, 0x0700, 0x2783
+ obj_tiles 0x08c12e88, 0x0800, 0x2784
+ obj_tiles 0x08c1315c, 0x0a00, 0x2785
+ obj_tiles 0x08c133b4, 0x0600, 0x2786
+ obj_tiles 0x08c13568, 0x0800, 0x2787
+ obj_tiles 0x08c13820, 0x0200, 0x2788
+ obj_tiles 0x08c1393c, 0x0040, 0x2789
+ obj_tiles 0x08c1398c, 0x0180, 0x278a
+ obj_tiles 0x08c13aa4, 0x0600, 0x278b
+ obj_tiles 0x08c13be0, 0x0600, 0x278c
+ obj_tiles 0x08c13ea0, 0x0200, 0x278d
+ obj_tiles 0x08c13fb4, 0x0080, 0x278e
+ obj_tiles 0x08c1403c, 0x0200, 0x278f
+ obj_tiles 0x08c14200, 0x0800, 0x2790
+ obj_tiles 0x08c1448c, 0x0080, 0x2791
+ obj_tiles 0x08c144f0, 0x0a00, 0x2792
+ obj_tiles 0x08c148e8, 0x0280, 0x2793
+ obj_tiles 0x08c14a58, 0x0280, 0x2794
+ obj_tiles 0x08c14b78, 0x0100, 0x2795
+ obj_tiles 0x08c14c1c, 0x0200, 0x2796
+ obj_tiles 0x08c1a3a0, 0x0200, 0x2797
+ obj_tiles 0x08c1a540, 0x0020, 0x2798
+ obj_tiles 0x08c1a58c, 0x0a00, 0x2799
+ obj_tiles 0x08c1ab40, 0x0800, 0x279a
+ obj_tiles 0x08c1a790, 0x0800, 0x279b
+ obj_tiles 0x08c1ac8c, 0x00c0, 0x279c
+ obj_tiles 0x08c1ad2c, 0x01c0, 0x279d
+ obj_tiles 0x08c1ae54, 0x0100, 0x279e
+ obj_tiles 0x08c2cbac, 0x0800, 0x279f
+ obj_tiles 0x08c1bc64, 0x0200, 0x27a0
+ obj_tiles 0x08c1a9a0, 0x0800, 0x27a1
+ obj_tiles 0x08c02478, 0x0180, 0x27a2
+ obj_tiles 0x08c1af6c, 0x0180, 0x27a3
+ obj_tiles 0x08c1b178, 0x0200, 0x27a4
+ obj_tiles 0x08c1b0a8, 0x0200, 0x27a5
+ obj_tiles 0x08c1b328, 0x0180, 0x27a6
+ obj_tiles 0x08c1b418, 0x0400, 0x27a7
+ obj_tiles 0x08c033cc, 0x0080, 0x27a8
+ obj_tiles 0x08c1b510, 0x0100, 0x27a9
+ obj_tiles 0x08c1b594, 0x0100, 0x27aa
+ obj_tiles 0x08c1b660, 0x0140, 0x27ab
+ obj_tiles 0x08c1b748, 0x0800, 0x27ac
+ obj_tiles 0x08c1b988, 0x0200, 0x27ad
+ obj_tiles 0x08c1ba04, 0x0100, 0x27ae
+ obj_tiles 0x08c1baf0, 0x00a0, 0x27af
+ obj_tiles 0x08c1bb94, 0x0100, 0x27b0
+ obj_tiles 0x08c0297c, 0x0080, 0x27b1
+ obj_tiles 0x08c1be40, 0x0300, 0x27b2
+ obj_tiles 0x08c1bee4, 0x0100, 0x27b3
+ obj_tiles 0x08c1bee4, 0x0100, 0x27b4
+ obj_tiles 0x08c1bee4, 0x0100, 0x27b5
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27b6
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27b7
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27b8
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27b9
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27ba
+ obj_tiles 0x08c1c350, 0x0080, 0x27bb
+ obj_tiles 0x08c1bc64, 0x0200, 0x27bc
+ obj_tiles 0x08c1c7bc, 0x0200, 0x27bd
+ obj_tiles 0x08c1d5fc, 0x0200, 0x27be
+ obj_tiles 0x08c1d6c4, 0x0080, 0x27bf
+ obj_tiles 0x08c1d750, 0x0200, 0x27c0
+ obj_tiles 0x08c1d8d0, 0x0500, 0x27c1
+ obj_tiles 0x08c1d9ac, 0x0800, 0x27c2
+ obj_tiles 0x08c1db64, 0x0400, 0x27c3
+ obj_tiles 0x08c1dc40, 0x0020, 0x27c4
+ obj_tiles 0x08c1dc58, 0x0800, 0x27c5
+ obj_tiles 0x08c1dfe8, 0x0100, 0x27c6
+ obj_tiles 0x08c1e0b4, 0x0800, 0x27c7
+ obj_tiles 0x08c1e354, 0x0400, 0x27c8
+ obj_tiles 0x08c1e4d0, 0x0a00, 0x27c9
+ obj_tiles 0x08c1edd8, 0x1000, 0x27ca
+ obj_tiles 0x08c1ebc8, 0x0800, 0x27cb
+ obj_tiles 0x08d966c0, 0x0400, 0x27cc
+ obj_tiles 0x08c20198, 0x0200, 0x27cd
+ obj_tiles 0x08c1fc84, 0x0800, 0x27ce
+ obj_tiles 0x08c1ff04, 0x0800, 0x27cf
+ obj_tiles 0x08c2023c, 0x0800, 0x27d0
+ obj_tiles 0x08c204e4, 0x0200, 0x27d1
+ obj_tiles 0x08c20c4c, 0x0800, 0x27d2
+ obj_tiles 0x08c20fac, 0x0200, 0x27d3
+ obj_tiles 0x08c20890, 0x0800, 0x27d4
+ obj_tiles 0x08c21084, 0x0200, 0x27d5
+ obj_tiles 0x08c2121c, 0x0800, 0x27d6
+ obj_tiles 0x08c21634, 0x0400, 0x27d7
+ obj_tiles 0x08c21718, 0x0200, 0x27d8
+ obj_tiles 0x08c21874, 0x0a80, 0x27d9
+ obj_tiles 0x08c220a8, 0x0600, 0x27da
+ obj_tiles 0x08c22234, 0x0800, 0x27db
+ obj_tiles 0x08c21f0c, 0x0200, 0x27dc
+ obj_tiles 0x08c226a4, 0x0600, 0x27dd
+ obj_tiles 0x08c22404, 0x0800, 0x27de
+ obj_tiles 0x08c228fc, 0x0180, 0x27df
+ obj_tiles 0x08c229ec, 0x0800, 0x27e0
+ obj_tiles 0x08c22ddc, 0x0800, 0x27e1
+ obj_tiles 0x08c23218, 0x0080, 0x27e2
+ obj_tiles 0x08c242b0, 0x0080, 0x27e3
+ obj_tiles 0x08c2407c, 0x0800, 0x27e4
+ obj_tiles 0x08c24300, 0x0800, 0x27e5
+ obj_tiles 0x08c24590, 0x0600, 0x27e6
+ obj_tiles 0x08c24820, 0x0600, 0x27e7
+ obj_tiles 0x08c23218, 0x0080, 0x27e8
+ obj_tiles 0x08c23ff4, 0x0080, 0x27e9
+ obj_tiles 0x08c24c50, 0x0180, 0x27ea
+ obj_tiles 0x08c23218, 0x0080, 0x27eb
+ obj_tiles 0x08c24dfc, 0x0200, 0x27ec
+ obj_tiles 0x08c24f48, 0x0400, 0x27ed
+ obj_tiles 0x08c251ac, 0x0a00, 0x27ee
+ obj_tiles 0x08c254e0, 0x0800, 0x27ef
+ obj_tiles 0x08c25794, 0x0200, 0x27f0
+ obj_tiles 0x08c27764, 0x0400, 0x27f1
+ obj_tiles 0x08c27a58, 0x0080, 0x27f2
+ obj_tiles 0x08c27910, 0x0800, 0x27f3
+ obj_tiles 0x08c25b1c, 0x0200, 0x27f4
+ obj_tiles 0x08c27b08, 0x0300, 0x27f5
+ obj_tiles 0x08c258b8, 0x0800, 0x27f6
+ obj_tiles 0x08c28394, 0x0380, 0x27f7
+ obj_tiles 0x08c27e34, 0x0800, 0x27f8
+ obj_tiles 0x08c28564, 0x00c0, 0x27f9
+ obj_tiles 0x08c28610, 0x0800, 0x27fa
+ obj_tiles 0x08c28880, 0x0060, 0x27fb
+ obj_tiles 0x08c28880, 0x0060, 0x27fc
+ obj_tiles 0x08c28880, 0x0060, 0x27fd
+ obj_tiles 0x08c287f4, 0x0080, 0x27fe
+ obj_tiles 0x08c2caa0, 0x0180, 0x27ff
+ obj_tiles 0x08c2cdf4, 0x0180, 0x2800
+ obj_tiles 0x08c2d348, 0x0200, 0x2801
+ obj_tiles 0x08c2d570, 0x0200, 0x2802
+ obj_tiles 0x08c2d6d0, 0x0020, 0x2803
+ obj_tiles 0x08c2e554, 0x0400, 0x2804
+ obj_tiles 0x08c2df08, 0x0600, 0x2805
+ obj_tiles 0x08c2e0ac, 0x1000, 0x2806
+ obj_tiles 0x08c2e64c, 0x0400, 0x2807
+ obj_tiles 0x08c2eba4, 0x0020, 0x2808
+ obj_tiles 0x08c2ebd4, 0x0080, 0x2809
+ obj_tiles 0x08c2ec44, 0x0800, 0x280a
+ obj_tiles 0x08c2ee38, 0x0080, 0x280b
+ obj_tiles 0x08c2eeb4, 0x0200, 0x280c
+ obj_tiles 0x08c2eff0, 0x0400, 0x280d
+ obj_tiles 0x08c2f1f4, 0x0200, 0x280e
+ obj_tiles 0x08c2f354, 0x0200, 0x280f
+ obj_tiles 0x08c2f4f0, 0x0800, 0x2810
+ obj_tiles 0x08c2f8a4, 0x0280, 0x2811
+ obj_tiles 0x08c2f3e0, 0x0200, 0x2812
+ obj_tiles 0x08c1b0a8, 0x0200, 0x2813
+ obj_tiles 0x08d8dae0, 0x0400, 0x2814
+ obj_tiles 0x08d8d2a4, 0x0200, 0x2815
+ obj_tiles 0x08d8e840, 0x0200, 0x2816
+ obj_tiles 0x08d93b44, 0x0080, 0x2817
+ obj_tiles 0x08d8ea54, 0x0020, 0x2818
+ obj_tiles 0x08d8ea54, 0x0020, 0x2819
+ obj_tiles 0x08d93b9c, 0x0080, 0x281a
+ obj_tiles 0x08c2407c, 0x0800, 0x281b
+ obj_tiles 0x08d8ea54, 0x0020, 0x281c
+ obj_tiles 0x08d8ef2c, 0x0080, 0x281d
+ obj_tiles 0x08dba378, 0x0400, 0x281e
+ obj_tiles 0x08dba4b8, 0x0080, 0x281f
+ obj_tiles 0x08d8ecc4, 0x0800, 0x2820
+ obj_tiles 0x08d8ef04, 0x0020, 0x2821
+ obj_tiles 0x08d8ef98, 0x0800, 0x2822
+ obj_tiles 0x08d8f118, 0x0800, 0x2823
+ obj_tiles 0x08d8f284, 0x0800, 0x2824
+ obj_tiles 0x08d92eec, 0x1000, 0x2825
+ obj_tiles 0x08d93c24, 0x0800, 0x2826
+ obj_tiles 0x08d93e4c, 0x00a0, 0x2827
+ obj_tiles 0x08d8f780, 0x0800, 0x2828
+ obj_tiles 0x08d93eb4, 0x0200, 0x2829
+ obj_tiles 0x08dba174, 0x0600, 0x282a
+ obj_tiles 0x08d93474, 0x0200, 0x282b
+ obj_tiles 0x08d94658, 0x0800, 0x282c
+ obj_tiles 0x08d949f0, 0x0200, 0x282d
+ obj_tiles 0x08c1e0b4, 0x0800, 0x282e
+ obj_tiles 0x08c0a3ec, 0x1000, 0x282f
+ obj_tiles 0x08c1bee4, 0x0100, 0x2830
+
+ .align 2
+gBattleAnimPaletteTable:: @ 852544C
+ obj_pal 0x08c028cc, 0x2710
+ obj_pal 0x08c1c794, 0x2711
+ obj_pal 0x08c20868, 0x2712
+ obj_pal 0x08c028f0, 0x2713
+ obj_pal 0x08c02918, 0x2714
+ obj_pal 0x08c0292c, 0x2715
+ obj_pal 0x08c02954, 0x2716
+ obj_pal 0x08c02b48, 0x2717
+ obj_pal 0x08c02b88, 0x2718
+ obj_pal 0x08c0328c, 0x2719
+ obj_pal 0x08c02ba4, 0x271a
+ obj_pal 0x08c03324, 0x271b
+ obj_pal 0x08c033b4, 0x271c
+ obj_pal 0x08c0346c, 0x271d
+ obj_pal 0x08c1fc68, 0x271e
+ obj_pal 0x08c034f0, 0x271f
+ obj_pal 0x08c03588, 0x2720
+ obj_pal 0x08c03588, 0x2721
+ obj_pal 0x08c24db8, 0x2722
+ obj_pal 0x08c035dc, 0x2723
+ obj_pal 0x08c03784, 0x2724
+ obj_pal 0x08c03a00, 0x2725
+ obj_pal 0x08c03d60, 0x2726
+ obj_pal 0x08c037ac, 0x2727
+ obj_pal 0x08c03f6c, 0x2728
+ obj_pal 0x08c03d88, 0x2729
+ obj_pal 0x08c047cc, 0x272a
+ obj_pal 0x08c047f4, 0x272b
+ obj_pal 0x08c04b18, 0x272c
+ obj_pal 0x08c05148, 0x272d
+ obj_pal 0x08c05530, 0x272e
+ obj_pal 0x08c04360, 0x272f
+ obj_pal 0x08c04380, 0x2730
+ obj_pal 0x08c05554, 0x2731
+ obj_pal 0x08c05554, 0x2732
+ obj_pal 0x08c05554, 0x2733
+ obj_pal 0x08c06650, 0x2734
+ obj_pal 0x08c06650, 0x2735
+ obj_pal 0x08c07914, 0x2736
+ obj_pal 0x08c0793c, 0x2737
+ obj_pal 0x08c07914, 0x2738
+ obj_pal 0x08c07914, 0x2739
+ obj_pal 0x08c08594, 0x273a
+ obj_pal 0x08c089bc, 0x273b
+ obj_pal 0x08c089e4, 0x273c
+ obj_pal 0x08c08c78, 0x273d
+ obj_pal 0x08c099e4, 0x273e
+ obj_pal 0x08c09a04, 0x273e
+ obj_pal 0x08c09f88, 0x2740
+ obj_pal 0x08c09fb0, 0x2741
+ obj_pal 0x08c09fd8, 0x2742
+ obj_pal 0x08c09fd8, 0x2743
+ obj_pal 0x08c09fd8, 0x2744
+ obj_pal 0x08c047cc, 0x2745
+ obj_pal 0x08c0a3d4, 0x2746
+ obj_pal 0x08c09fd8, 0x2747
+ obj_pal 0x08c0a894, 0x2748
+ obj_pal 0x08c0aa08, 0x2749
+ obj_pal 0x08c0ae94, 0x274a
+ obj_pal 0x08c0af1c, 0x274b
+ obj_pal 0x08c0af60, 0x274c
+ obj_pal 0x08c0b02c, 0x274d
+ obj_pal 0x08c0b41c, 0x274e
+ obj_pal 0x08c0b600, 0x274f
+ obj_pal 0x08c231f4, 0x2750
+ obj_pal 0x08c0b7d0, 0x2751
+ obj_pal 0x08c0b83c, 0x2752
+ obj_pal 0x08d8eaa4, 0x2753
+ obj_pal 0x08d8eac4, 0x2754
+ obj_pal 0x08c0b7d0, 0x2755
+ obj_pal 0x08c0b8e4, 0x2756
+ obj_pal 0x08c0b8e4, 0x2757
+ obj_pal 0x08c0bc08, 0x2758
+ obj_pal 0x08c0bd3c, 0x2759
+ obj_pal 0x08c1b304, 0x275a
+ obj_pal 0x08c0bfd8, 0x275b
+ obj_pal 0x08c14f28, 0x275c
+ obj_pal 0x08c14f28, 0x275d
+ obj_pal 0x08c0c194, 0x275e
+ obj_pal 0x08c0c194, 0x275f
+ obj_pal 0x08c0c950, 0x2760
+ obj_pal 0x08c0c9f8, 0x2761
+ obj_pal 0x08c0cbb4, 0x2762
+ obj_pal 0x08c0cbc8, 0x2763
+ obj_pal 0x08c0cbf0, 0x2764
+ obj_pal 0x08c0cc18, 0x2765
+ obj_pal 0x08c0cc30, 0x2766
+ obj_pal 0x08c24d54, 0x2767
+ obj_pal 0x08c0cc58, 0x2768
+ obj_pal 0x08c0cc74, 0x2769
+ obj_pal 0x08c0cc9c, 0x276a
+ obj_pal 0x08c0b698, 0x276b
+ obj_pal 0x08c0ccc0, 0x276c
+ obj_pal 0x08c0ccdc, 0x276d
+ obj_pal 0x08c0cd04, 0x276e
+ obj_pal 0x08c0cd44, 0x276f
+ obj_pal 0x08c0cd6c, 0x2770
+ obj_pal 0x08c0cd88, 0x2771
+ obj_pal 0x08c0cd04, 0x2772
+ obj_pal 0x08c27e0c, 0x2773
+ obj_pal 0x08c0cdb0, 0x2774
+ obj_pal 0x08c0cdcc, 0x2775
+ obj_pal 0x08c0cdcc, 0x2776
+ obj_pal 0x08c0cdf4, 0x2777
+ obj_pal 0x08c0f14c, 0x2778
+ obj_pal 0x08c0f6f8, 0x2779
+ obj_pal 0x08c0f6f8, 0x277a
+ obj_pal 0x08c0fbbc, 0x277b
+ obj_pal 0x08c0fbbc, 0x277c
+ obj_pal 0x08c0ff90, 0x277d
+ obj_pal 0x08c0ff90, 0x277e
+ obj_pal 0x08c103e0, 0x277f
+ obj_pal 0x08c1072c, 0x2780
+ obj_pal 0x08c109c0, 0x2781
+ obj_pal 0x08c10adc, 0x2782
+ obj_pal 0x08c028ac, 0x2783
+ obj_pal 0x08c13134, 0x2784
+ obj_pal 0x08c13398, 0x2785
+ obj_pal 0x08c1354c, 0x2786
+ obj_pal 0x08c137f8, 0x2787
+ obj_pal 0x08c13914, 0x2788
+ obj_pal 0x08c13968, 0x2789
+ obj_pal 0x08c13a88, 0x278a
+ obj_pal 0x08c13a88, 0x278b
+ obj_pal 0x08c13e78, 0x278c
+ obj_pal 0x08c13f8c, 0x278d
+ obj_pal 0x08c1401c, 0x278e
+ obj_pal 0x08c141dc, 0x278f
+ obj_pal 0x08c1446c, 0x2790
+ obj_pal 0x08c1446c, 0x2791
+ obj_pal 0x08c148c0, 0x2792
+ obj_pal 0x08c148c0, 0x2793
+ obj_pal 0x08c14b58, 0x2794
+ obj_pal 0x08c14bf4, 0x2795
+ obj_pal 0x08c14bf4, 0x2796
+ obj_pal 0x08c1a478, 0x2797
+ obj_pal 0x08c1a564, 0x2798
+ obj_pal 0x08c1a478, 0x2799
+ obj_pal 0x08c1a478, 0x279a
+ obj_pal 0x08c1a980, 0x279b
+ obj_pal 0x08c1ad0c, 0x279c
+ obj_pal 0x08c1ae34, 0x279d
+ obj_pal 0x08c1ae34, 0x279e
+ obj_pal 0x08c2cddc, 0x279f
+ obj_pal 0x08c1bcdc, 0x27a0
+ obj_pal 0x08c1a980, 0x27a1
+ obj_pal 0x08c028ac, 0x27a2
+ obj_pal 0x08c1b080, 0x27a3
+ obj_pal 0x08c1b25c, 0x27a4
+ obj_pal 0x08c1b25c, 0x27a5
+ obj_pal 0x08c1b3fc, 0x27a6
+ obj_pal 0x08c1b3fc, 0x27a7
+ obj_pal 0x08c03414, 0x27a8
+ obj_pal 0x08c1b57c, 0x27a9
+ obj_pal 0x08c1b640, 0x27aa
+ obj_pal 0x08c1b728, 0x27ab
+ obj_pal 0x08c1b960, 0x27ac
+ obj_pal 0x08c1b9ec, 0x27ad
+ obj_pal 0x08c1bacc, 0x27ae
+ obj_pal 0x08c1bb6c, 0x27af
+ obj_pal 0x08c1bc3c, 0x27b0
+ obj_pal 0x08c029a4, 0x27b1
+ obj_pal 0x08c1bec4, 0x27b2
+ obj_pal 0x08c1bf44, 0x27b3
+ obj_pal 0x08c1bf74, 0x27b4
+ obj_pal 0x08c1bf8c, 0x27b5
+ obj_pal 0x08c1c2b0, 0x27b6
+ obj_pal 0x08c1c2d0, 0x27b7
+ obj_pal 0x08c1c2f0, 0x27b8
+ obj_pal 0x08c1c310, 0x27b9
+ obj_pal 0x08c1c330, 0x27ba
+ obj_pal 0x08c1c39c, 0x27bb
+ obj_pal 0x08c1c3c4, 0x27bc
+ obj_pal 0x08c1c794, 0x27bd
+ obj_pal 0x08c1d69c, 0x27be
+ obj_pal 0x08c1d728, 0x27bf
+ obj_pal 0x08c1d8a8, 0x27c0
+ obj_pal 0x08c1d994, 0x27c1
+ obj_pal 0x08c1db14, 0x27c2
+ obj_pal 0x08c1db3c, 0x27c3
+ obj_pal 0x08c1db3c, 0x27c4
+ obj_pal 0x08c1db3c, 0x27c5
+ obj_pal 0x08c1e08c, 0x27c6
+ obj_pal 0x08c1e32c, 0x27c7
+ obj_pal 0x08c1e4a8, 0x27c8
+ obj_pal 0x08c1e8e4, 0x27c9
+ obj_pal 0x08c1f1a4, 0x27ca
+ obj_pal 0x08c1edb8, 0x27cb
+ obj_pal 0x08d967d4, 0x27cc
+ obj_pal 0x08c2021c, 0x27cd
+ obj_pal 0x08c1fee0, 0x27ce
+ obj_pal 0x08c20170, 0x27cf
+ obj_pal 0x08c204bc, 0x27d0
+ obj_pal 0x08c20640, 0x27d1
+ obj_pal 0x08c20f84, 0x27d2
+ obj_pal 0x08c21064, 0x27d3
+ obj_pal 0x08c20c34, 0x27d4
+ obj_pal 0x08c211f4, 0x27d5
+ obj_pal 0x08c2160c, 0x27d6
+ obj_pal 0x08c216fc, 0x27d7
+ obj_pal 0x08c21858, 0x27d8
+ obj_pal 0x08c21ee4, 0x27d9
+ obj_pal 0x08c22210, 0x27da
+ obj_pal 0x08c223e0, 0x27db
+ obj_pal 0x08c22080, 0x27dc
+ obj_pal 0x08c228d8, 0x27dd
+ obj_pal 0x08c22610, 0x27de
+ obj_pal 0x08c229c8, 0x27df
+ obj_pal 0x08c1c2d0, 0x27e0
+ obj_pal 0x08c230e4, 0x27e1
+ obj_pal 0x08c232a0, 0x27e2
+ obj_pal 0x08c2456c, 0x27e3
+ obj_pal 0x08c2456c, 0x27e4
+ obj_pal 0x08c2456c, 0x27e5
+ obj_pal 0x08c231f4, 0x27e6
+ obj_pal 0x08c249ac, 0x27e7
+ obj_pal 0x08c232c0, 0x27e8
+ obj_pal 0x08c2405c, 0x27e9
+ obj_pal 0x08c24c28, 0x27ea
+ obj_pal 0x08c23280, 0x27eb
+ obj_pal 0x08c24dd4, 0x27ec
+ obj_pal 0x08c24f28, 0x27ed
+ obj_pal 0x08c25498, 0x27ee
+ obj_pal 0x08c254c0, 0x27ef
+ obj_pal 0x08c25774, 0x27f0
+ obj_pal 0x08c278e8, 0x27f1
+ obj_pal 0x08c27ae4, 0x27f2
+ obj_pal 0x08c27ae4, 0x27f3
+ obj_pal 0x08c25afc, 0x27f4
+ obj_pal 0x08c27cc4, 0x27f5
+ obj_pal 0x08c25890, 0x27f6
+ obj_pal 0x08c2836c, 0x27f7
+ obj_pal 0x08c2836c, 0x27f8
+ obj_pal 0x08c285e8, 0x27f9
+ obj_pal 0x08c287d0, 0x27fa
+ obj_pal 0x08c288d0, 0x27fb
+ obj_pal 0x08c288ec, 0x27fc
+ obj_pal 0x08c28908, 0x27fd
+ obj_pal 0x08c2885c, 0x27fe
+ obj_pal 0x08c2cb84, 0x27ff
+ obj_pal 0x08c2ce94, 0x2800
+ obj_pal 0x08c2d40c, 0x2801
+ obj_pal 0x08c2d6ac, 0x2802
+ obj_pal 0x08c2d6f8, 0x2803
+ obj_pal 0x08c2e630, 0x2804
+ obj_pal 0x08c2dee0, 0x2805
+ obj_pal 0x08c2dee0, 0x2806
+ obj_pal 0x08c231f4, 0x2807
+ obj_pal 0x08c2ebbc, 0x2808
+ obj_pal 0x08c2ec24, 0x2809
+ obj_pal 0x08c2ec24, 0x280a
+ obj_pal 0x08c2ee9c, 0x280b
+ obj_pal 0x08c2efcc, 0x280c
+ obj_pal 0x08c2f1cc, 0x280d
+ obj_pal 0x08c2f32c, 0x280e
+ obj_pal 0x08c2f3cc, 0x280f
+ obj_pal 0x08c2f87c, 0x2810
+ obj_pal 0x08c2f9c0, 0x2811
+ obj_pal 0x08c2f4c8, 0x2812
+ obj_pal 0x08c1b27c, 0x2813
+ obj_pal 0x08d8dc9c, 0x2814
+ obj_pal 0x08d8dab8, 0x2815
+ obj_pal 0x08d8e914, 0x2816
+ obj_pal 0x08d93b84, 0x2817
+ obj_pal 0x08d8ea74, 0x2818
+ obj_pal 0x08d8ea8c, 0x2819
+ obj_pal 0x08d93bdc, 0x281a
+ obj_pal 0x08d93bf4, 0x281b
+ obj_pal 0x08d93c0c, 0x281c
+ obj_pal 0x08d8ef80, 0x281d
+ obj_pal 0x08dba35c, 0x281e
+ obj_pal 0x08dba4a0, 0x281f
+ obj_pal 0x08d8eee0, 0x2820
+ obj_pal 0x08d8eee0, 0x2821
+ obj_pal 0x08d8f3ec, 0x2822
+ obj_pal 0x08d8f3ec, 0x2823
+ obj_pal 0x08d8f3ec, 0x2824
+ obj_pal 0x08d92ec4, 0x2825
+ obj_pal 0x08d93e30, 0x2826
+ obj_pal 0x08d93e98, 0x2827
+ obj_pal 0x08d8fb7c, 0x2828
+ obj_pal 0x08d9403c, 0x2829
+ obj_pal 0x08dba14c, 0x282a
+ obj_pal 0x08d93458, 0x282b
+ obj_pal 0x08d949d4, 0x282c
+ obj_pal 0x08d94a90, 0x282d
+ obj_pal 0x08d96698, 0x282e
+ obj_pal 0x08d9104c, 0x282f
+ obj_pal 0x08c1bf5c, 0x2830
+
+ .align 2
+gBattleAnimBackgroundTable:: @ 8525D54
+ .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c
+ .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c
+ .4byte 0x08d90074, 0x08d90d3c, 0x08d90d58
+ .4byte 0x08c1e90c, 0x08c1eadc, 0x08c1eb00
+ .4byte 0x08c25bec, 0x08c25bc4, 0x08c26958
+ .4byte 0x08c25bec, 0x08c25bc4, 0x08c26e54
+ .4byte 0x08c25bec, 0x08c25bc4, 0x08c27324
+ .4byte 0x08c28924, 0x08c28acc, 0x08c28b1c
+ .4byte 0x08c28924, 0x08c28acc, 0x08c28cac
+ .4byte 0x08c29dbc, 0x08c29d7c, 0x08c29a84
+ .4byte 0x08c29dbc, 0x08c29d7c, 0x08c2a33c
+ .4byte 0x08c2bde4, 0x08c2c780, 0x08c2c7a8
+ .4byte 0x08c2b05c, 0x08c2bdc4, 0x08c2a808
+ .4byte 0x08c2b05c, 0x08c2bdc4, 0x08c2aad0
+ .4byte 0x08c2b05c, 0x08c2bdc4, 0x08c2adcc
+ .4byte 0x08d8dcb4, 0x08d8e624, 0x08d8e648
+ .4byte 0x08d92b28, 0x08d92b00, 0x08d92d88
+ .4byte 0x08d8f414, 0x08d8f570, 0x08d8f598
+ .4byte 0x08c28924, 0x08c28af4, 0x08c28b1c
+ .4byte 0x08c28924, 0x08c28af4, 0x08c28cac
+ .4byte 0x08c28e38, 0x08c29860, 0x08c29880
+ .4byte 0x08d9405c, 0x08d94350, 0x08d9436c
+ .4byte 0x08c29dbc, 0x08c29d9c, 0x08c29a84
+ .4byte 0x08c29dbc, 0x08c29d9c, 0x08c2a33c
+ .4byte 0x08c25bec, 0x08d91074, 0x08c26958
+ .4byte 0x08c25bec, 0x08d91074, 0x08c26e54
+ .4byte 0x08c25bec, 0x08d91074, 0x08c27324
diff --git a/data/battle_controller_player.s b/data/battle_controller_player.s
index 37c877dfd..bc2a18edb 100644
--- a/data/battle_controller_player.s
+++ b/data/battle_controller_player.s
@@ -63,3 +63,7 @@ gPlayerBufferCommands:: @ 831C514
.4byte sub_805D094
.4byte nullsub_22
+ .align 2
+gUnknown_0831C5F8:: @ 831C5F8
+ .byte 0x00, 0x02, 0x03, 0x01, 0x48, 0x48, 0x20, 0x5a
+ .byte 0x50, 0x50, 0x50, 0x58
diff --git a/data/battle_interface.s b/data/battle_interface.s
deleted file mode 100644
index 3fd9060fd..000000000
--- a/data/battle_interface.s
+++ /dev/null
@@ -1,56 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0832C140:: @ 832C140
- .incbin "baserom.gba", 0x32c140, 0x30
-
-gUnknown_0832C170:: @ 832C170
- .incbin "baserom.gba", 0x32c170, 0x30
-
-gUnknown_0832C1A0:: @ 832C1A0
- .incbin "baserom.gba", 0x32c1a0, 0x20
-
-gUnknown_0832C1C0:: @ 832C1C0
- .incbin "baserom.gba", 0x32c1c0, 0xcc
-
-gUnknown_0832C28C:: @ 832C28C
- .incbin "baserom.gba", 0x32c28c, 0x38
-
-gUnknown_0832C2C4:: @ 832C2C4
- .incbin "baserom.gba", 0x32c2c4, 0x8
-
-gUnknown_0832C2CC:: @ 832C2CC
- .incbin "baserom.gba", 0x32c2cc, 0x68
-
-gUnknown_0832C334:: @ 832C334
- .incbin "baserom.gba", 0x32c334, 0x8
-
-gUnknown_0832C33C:: @ 832C33C
- .incbin "baserom.gba", 0x32c33c, 0x8
-
-gUnknown_0832C344:: @ 832C344
- .incbin "baserom.gba", 0x32c344, 0x8
-
-gUnknown_0832C34C:: @ 832C34C
- .incbin "baserom.gba", 0x32c34c, 0x18
-
-gUnknown_0832C364:: @ 832C364
- .incbin "baserom.gba", 0x32c364, 0x30
-
-gUnknown_0832C394:: @ 832C394
- .incbin "baserom.gba", 0x32c394, 0x30
-
-gUnknown_0832C3C4:: @ 832C3C4
- .incbin "baserom.gba", 0x32c3c4, 0x14
-
-gUnknown_0832C3D8:: @ 832C3D8
- .incbin "baserom.gba", 0x32c3d8, 0x14
-
-gUnknown_0832C3EC:: @ 832C3EC
- .incbin "baserom.gba", 0x32c3ec, 0xc
-
-gUnknown_0832C3F8:: @ 832C3F8
- .incbin "baserom.gba", 0x32c3f8, 0x8
diff --git a/data/battle_message.s b/data/battle_message.s
deleted file mode 100644
index 9addf0879..000000000
--- a/data/battle_message.s
+++ /dev/null
@@ -1,2073 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gText_Buffer36:: @ 85C9B78
- .string "{STRING 36}$"
-
-gText_PkmnGainedEXP:: @ 85C9B7B
- .string "{STRING 0} gained{PLAYER}\n{STRING 52} EXP. Points!\p$"
-
-gText_EmptyString4:: @ 85C9B98
- .string "$"
-
-gText_ABoosted:: @ 85C9B99
- .string " a boosted$"
-
-gText_PkmnGrewToLv:: @ 85C9BA4
- .string "{STRING 0} grew to\nLV. {PLAYER}!{UNKNOWN_A}\p$"
-
-gText_PkmnLearnedMove:: @ 85C9BBA
- .string "{STRING 0} learned\n{PLAYER}!{UNKNOWN_A}\p$"
-
-gText_TryToLearnMove1:: @ 85C9BCC
- .string "{STRING 0} is trying to\nlearn {PLAYER}.\p$"
-
-gText_TryToLearnMove2:: @ 85C9BE7
- .string "But, {STRING 0} can’t learn\nmore than four moves.\p$"
-
-gText_TryToLearnMove3:: @ 85C9C12
- .string "Delete a move to make\nroom for {PLAYER}?$"
-
-gText_PkmnForgotMove:: @ 85C9C35
- .string "{STRING 0} forgot\n{PLAYER}.\p$"
-
-gText_StopLearningMove:: @ 85C9C44
- .string "{PAUSE 32}Stop learning\n{PLAYER}?$"
-
-gText_DidNotLearnMove:: @ 85C9C59
- .string "{STRING 0} did not learn\n{PLAYER}.\p$"
-
-gText_UseNextPkmn:: @ 85C9C6F
- .string "Use next POKéMON?$"
-
-gText_AttackMissed:: @ 85C9C81
- .string "{STRING 15}’s\nattack missed!$"
-
-gText_PkmnProtectedItself:: @ 85C9C95
- .string "{STRING 16}\nprotected itself!$"
-
-gText_AvoidedDamage:: @ 85C9CAA
- .string "{STRING 16} avoided\ndamage with {STRING 25}!$"
-
-gText_PkmnMakesGroundMiss:: @ 85C9CC5
- .string "{STRING 16} makes GROUND\nmoves miss with {STRING 25}!$"
-
-gText_PkmnAvoidedAttack:: @ 85C9CE9
- .string "{STRING 16} avoided\nthe attack!$"
-
-gText_ItDoesntAffect:: @ 85C9D00
- .string "It doesn’t affect\n{STRING 16}…$"
-
-gText_PkmnFainted:: @ 85C9D16
- .string "{STRING 15}\nfainted!\p$"
-
-gText_PkmnFainted2:: @ 85C9D23
- .string "{STRING 16}\nfainted!\p$"
-
-gText_PlayerGotMoney:: @ 85C9D30
- .string "{STRING 35} got ¥{STRING 0}\nfor winning!\p$"
-
-gText_PlayerWhiteout:: @ 85C9D49
- .string "{STRING 35} is out of\nusable POKéMON!\p$"
-
-gText_PlayerWhiteout2:: @ 85C9D67
- .string "{STRING 35} whited out!{PAUSE_UNTIL_PRESS}$"
-
-gText_PreventsEscape:: @ 85C9D78
- .string "{STRING 19} prevents\nescape with {STRING 26}!\p$"
-
-gText_CantEscape2:: @ 85C9D95
- .string "Can’t escape!\p$"
-
-gText_PkmnCantEscape2:: @ 85C9DA4
- .string "{STRING 15} can’t escape!$"
-
-gText_HitXTimes:: @ 85C9DB5
- .string "Hit {STRING 0} time(s)!$"
-
-gText_PkmnFellAsleep:: @ 85C9DC5
- .string "{STRING 17}\nfell asleep!$"
-
-gText_PkmnMadeSleep:: @ 85C9DD5
- .string "{STRING 19}’s {STRING 26}\nmade {STRING 17} sleep!$"
-
-gText_PkmnAlreadyAsleep:: @ 85C9DEC
- .string "{STRING 16} is\nalready asleep!$"
-
-gText_PkmnAlreadyAsleep2:: @ 85C9E02
- .string "{STRING 15} is\nalready asleep!$"
-
-gText_PkmnWasntAffected:: @ 85C9E18
- .string "{STRING 16}\nwasn’t affected!$"
-
-gText_PkmnWasPoisoned:: @ 85C9E2C
- .string "{STRING 17}\nwas poisoned!$"
-
-gText_PkmnPoisonedBy:: @ 85C9E3D
- .string "{STRING 19}’s {STRING 26}\npoisoned {STRING 17}!$"
-
-gText_PkmnHurtByPoison:: @ 85C9E52
- .string "{STRING 15} is hurt\nby poison!$"
-
-gText_PkmnAlreadyPoisoned:: @ 85C9E68
- .string "{STRING 16} is already\npoisoned.$"
-
-gText_PkmnBadlyPoisoned:: @ 85C9E80
- .string "{STRING 17} is badly\npoisoned!$"
-
-gText_PkmnEnergyDrained:: @ 85C9E96
- .string "{STRING 16} had its\nenergy drained!$"
-
-gText_PkmnWasBurned:: @ 85C9EB1
- .string "{STRING 17} was burned!$"
-
-gText_PkmnBurnedBy:: @ 85C9EC0
- .string "{STRING 19}’s {STRING 26}\nburned {STRING 17}!$"
-
-gText_PkmnHurtByBurn:: @ 85C9ED3
- .string "{STRING 15} is hurt\nby its burn!$"
-
-gText_PkmnAlreadyHasBurn:: @ 85C9EEB
- .string "{STRING 16} already\nhas a burn.$"
-
-gText_PkmnWasFrozen:: @ 85C9F02
- .string "{STRING 17} was\nfrozen solid!$"
-
-gText_PkmnFrozenBy:: @ 85C9F17
- .string "{STRING 19}’s {STRING 26}\nfroze {STRING 17} solid!$"
-
-gText_PkmnIsFrozen:: @ 85C9F2F
- .string "{STRING 15} is\nfrozen solid!$"
-
-gText_PkmnWasDefrosted:: @ 85C9F43
- .string "{STRING 16} was\ndefrosted!$"
-
-gText_PkmnWasDefrosted2:: @ 85C9F55
- .string "{STRING 15} was\ndefrosted!$"
-
-gText_PkmnWasDefrostedBy:: @ 85C9F67
- .string "{STRING 15} was\ndefrosted by {STRING 20}!$"
-
-gText_PkmnWasParalyzed:: @ 85C9F7F
- .string "{STRING 17} is paralyzed!\nIt may be unable to move!$"
-
-gText_PkmnWasParalyzedBy:: @ 85C9FAA
- .string "{STRING 19}’s {STRING 26}\nparalyzed {STRING 17}!\lIt may be unable to move!$"
-
-gText_PkmnIsParalyzed:: @ 85C9FDA
- .string "{STRING 15} is paralyzed!\nIt can’t move!$"
-
-gText_PkmnIsAlreadyParalyzed:: @ 85C9FFA
- .string "{STRING 16} is\nalready paralyzed!$"
-
-gText_PkmnHealedParalysis:: @ 85CA013
- .string "{STRING 16} was\nhealed of paralysis!$"
-
-gText_PkmnDreamEaten:: @ 85CA02F
- .string "{STRING 16}’s\ndream was eaten!$"
-
-gText_StatsWontIncrease:: @ 85CA045
- .string "{STRING 15}’s {STRING 0}\nwon’t go higher!$"
-
-gText_StatsWontDecrease:: @ 85CA05E
- .string "{STRING 16}’s {STRING 0}\nwon’t go lower!$"
-
-gText_TeamStoppedWorking:: @ 85CA076
- .string "Your team’s {STRING 0}\nstopped working!$"
-
-gText_FoeStoppedWorking:: @ 85CA096
- .string "The foe’s {STRING 0}\nstopped working!$"
-
-gText_PkmnIsConfused:: @ 85CA0B4
- .string "{STRING 15} is\nconfused!$"
-
-gText_PkmnHealedConfusion:: @ 85CA0C4
- .string "{STRING 15} snapped\nout of confusion!$"
-
-gText_PkmnWasConfused:: @ 85CA0E1
- .string "{STRING 17} became\nconfused!$"
-
-gText_PkmnAlreadyConfused:: @ 85CA0F5
- .string "{STRING 16} is\nalready confused!$"
-
-gText_PkmnFellInLove:: @ 85CA10D
- .string "{STRING 16}\nfell in love!$"
-
-gText_PkmnInLove:: @ 85CA11E
- .string "{STRING 15} is in love\nwith {STRING 19}!$"
-
-gText_PkmnImmobilizedByLove:: @ 85CA135
- .string "{STRING 15} is\nimmobilized by love!$"
-
-gText_PkmnBlownAway:: @ 85CA150
- .string "{STRING 16} was\nblown away!$"
-
-gText_PkmnChangedType:: @ 85CA163
- .string "{STRING 15} transformed\ninto the {STRING 0} type!$"
-
-gText_PkmnFlinched:: @ 85CA184
- .string "{STRING 15} flinched!$"
-
-gText_PkmnRegainedHealth:: @ 85CA191
- .string "{STRING 16} regained\nhealth!$"
-
-gText_PkmnHPFull:: @ 85CA1A5
- .string "{STRING 16}’s\nHP is full!$"
-
-gText_PkmnRaisedSpDef:: @ 85CA1B6
- .string "{STRING 42}’s {STRING 20}\nraised SP. DEF!$"
-
-gText_PkmnRaisedSpDefALittle:: @ 85CA1CE
- .string "{STRING 42}’s {STRING 20}\nraised SP. DEF a little!$"
-
-gText_PkmnRaisedDef:: @ 85CA1EF
- .string "{STRING 42}’s {STRING 20}\nraised DEFENSE!$"
-
-gText_PkmnRaisedDefALittle:: @ 85CA207
- .string "{STRING 42}’s {STRING 20}\nraised DEFENSE a little!$"
-
-gText_PkmnCoveredByVeil:: @ 85CA228
- .string "{STRING 42}’s party is covered\nby a veil!$"
-
-gText_PkmnUsedSafeguard:: @ 85CA249
- .string "{STRING 16}’s party is protected\nby SAFEGUARD!$"
-
-gText_PkmnSafeguardExpired:: @ 85CA26F
- .string "{STRING 44}’s party is no longer\nprotected by SAFEGUARD!$"
-
-gText_PkmnWentToSleep:: @ 85CA29F
- .string "{STRING 15} went\nto sleep!$"
-
-gText_PkmnSleptHealthy:: @ 85CA2B1
- .string "{STRING 15} slept and\nbecame healthy!$"
-
-gText_PkmnWhippedWhirlwind:: @ 85CA2CE
- .string "{STRING 15} whipped\nup a whirlwind!$"
-
-gText_PkmnTookSunlight:: @ 85CA2E9
- .string "{STRING 15} took\nin sunlight!$"
-
-gText_PkmnLoweredHead:: @ 85CA2FE
- .string "{STRING 15} lowered\nits head!$"
-
-gText_PkmnIsGlowing:: @ 85CA313
- .string "{STRING 15} is glowing!$"
-
-gText_PkmnFlewHigh:: @ 85CA322
- .string "{STRING 15} flew\nup high!$"
-
-gText_PkmnDugHole:: @ 85CA333
- .string "{STRING 15} dug a hole!$"
-
-gText_PkmnHidUnderwater:: @ 85CA342
- .string "{STRING 15} hid\nunderwater!$"
-
-gText_PkmnSprangUp:: @ 85CA355
- .string "{STRING 15} sprang up!$"
-
-gText_PkmnSqueezedByBind:: @ 85CA363
- .string "{STRING 16} was squeezed by\n{STRING 15}’s BIND!$"
-
-gText_PkmnTrappedInVortex:: @ 85CA381
- .string "{STRING 16} was trapped\nin the vortex!$"
-
-gText_PkmnTrappedBySandTomb:: @ 85CA39F
- .string "{STRING 16} was trapped\nby SAND TOMB!$"
-
-gText_PkmnWrappedBy:: @ 85CA3BC
- .string "{STRING 16} was WRAPPED by\n{STRING 15}!$"
-
-gText_PkmnClamped:: @ 85CA3D2
- .string "{STRING 15} CLAMPED\n{STRING 16}!$"
-
-gText_PkmnHurtBy:: @ 85CA3E1
- .string "{STRING 15} is hurt\nby {STRING 0}!$"
-
-gText_PkmnFreedFrom:: @ 85CA3F3
- .string "{STRING 15} was freed\nfrom {STRING 0}!$"
-
-gText_PkmnCrashed:: @ 85CA409
- .string "{STRING 15} kept going\nand crashed!$"
-
-gText_PkmnShroudedInMist:: @ 85CA424
- .string "{STRING 42} became\nshrouded in MIST!$"
-
-gText_PkmnProtectedByMist:: @ 85CA440
- .string "{STRING 19} is protected\nby MIST!$"
-
-gText_PkmnGettingPumped:: @ 85CA459
- .string "{STRING 15} is getting\npumped!$"
-
-gText_PkmnHitWithRecoil:: @ 85CA46F
- .string "{STRING 15} is hit\nwith recoil!$"
-
-gText_PkmnProtectedItself2:: @ 85CA486
- .string "{STRING 15} protected\nitself!$"
-
-gText_PkmnBuffetedBySandstorm:: @ 85CA49B
- .string "{STRING 15} is buffeted\nby the sandstorm!$"
-
-gText_PkmnPeltedByHail:: @ 85CA4BC
- .string "{STRING 15} is pelted\nby HAIL!$"
-
-gText_PkmnsXWoreOff:: @ 85CA4D2
- .string "{STRING 40}’s {STRING 0}\nwore off!$"
-
-gText_PkmnSeeded:: @ 85CA4E4
- .string "{STRING 16} was seeded!$"
-
-gText_PkmnEvadedAttack:: @ 85CA4F3
- .string "{STRING 16} evaded\nthe attack!$"
-
-gText_PkmnSappedByLeechSeed:: @ 85CA509
- .string "{STRING 15}’s health is\nsapped by LEECH SEED!$"
-
-gText_PkmnFastAsleep:: @ 85CA52E
- .string "{STRING 15} is fast\nasleep.$"
-
-gText_PkmnWokeUp:: @ 85CA541
- .string "{STRING 15} woke up!$"
-
-gText_PkmnUproarKeptAwake:: @ 85CA54D
- .string "But {STRING 19}’s UPROAR\nkept it awake!$"
-
-gText_PkmnWokeUpInUproar:: @ 85CA56C
- .string "{STRING 15} woke up\nin the UPROAR!$"
-
-gText_PkmnCausedUproar:: @ 85CA586
- .string "{STRING 15} caused\nan UPROAR!$"
-
-gText_PkmnMakingUproar:: @ 85CA59B
- .string "{STRING 15} is making\nan UPROAR!$"
-
-gText_PkmnCalmedDown:: @ 85CA5B3
- .string "{STRING 15} calmed down.$"
-
-gText_PkmnCantSleepInUproar:: @ 85CA5C3
- .string "But {STRING 16} can’t\nsleep in an UPROAR!$"
-
-gText_PkmnStockpiled:: @ 85CA5E4
- .string "{STRING 15} STOCKPILED\n{STRING 0}!$"
-
-gText_PkmnCantStockpile:: @ 85CA5F6
- .string "{STRING 15} can’t\nSTOCKPILE any more!$"
-
-gText_PkmnCantSleepInUproar2:: @ 85CA613
- .string "But {STRING 16} can’t\nsleep in an UPROAR!$"
-
-gText_UproarKeptPkmnAwake:: @ 85CA634
- .string "But the UPROAR kept\n{STRING 16} awake!$"
-
-gText_PkmnStayedAwakeUsing:: @ 85CA652
- .string "{STRING 16} stayed awake\nusing its {STRING 25}!$"
-
-gText_PkmnStoringEnergy:: @ 85CA670
- .string "{STRING 15} is storing\nenergy!$"
-
-gText_PkmnUnleashedEnergy:: @ 85CA686
- .string "{STRING 15} unleashed\nenergy!$"
-
-gText_PkmnFatigueConfusion:: @ 85CA69B
- .string "{STRING 15} became\nconfused due to fatigue!$"
-
-gText_PkmnPickedUpItem:: @ 85CA6BE
- .string "{STRING 35} picked up\n¥{STRING 0}!\p$"
-
-gText_PkmnUnaffected:: @ 85CA6D1
- .string "{STRING 16} is\nunaffected!$"
-
-gText_PkmnTransformedInto:: @ 85CA6E3
- .string "{STRING 15} transformed\ninto {STRING 0}!$"
-
-gText_PkmnMadeSubstitute:: @ 85CA6FB
- .string "{STRING 15} made\na SUBSTITUTE!$"
-
-gText_PkmnHasSubstitute:: @ 85CA711
- .string "{STRING 15} already\nhas a SUBSTITUTE!$"
-
-gText_SubstituteDamaged:: @ 85CA72E
- .string "The SUBSTITUTE took damage\nfor {STRING 16}!\p$"
-
-gText_PkmnSubstituteFaded:: @ 85CA752
- .string "{STRING 16}’s\nSUBSTITUTE faded!\p$"
-
-gText_PkmnMustRecharge:: @ 85CA76A
- .string "{STRING 15} must\nrecharge!$"
-
-gText_PkmnRageBuilding:: @ 85CA76C
- .string "{STRING 16}’s RAGE\nis building!$"
-
-gText_PkmnMoveWasDisabled:: @ 85CA793
- .string "{STRING 16}’s {STRING 0}\nwas disabled!$"
-
-gText_PkmnMoveDisabledNoMore:: @ 85CA7A9
- .string "{STRING 15} is disabled\nno more!$"
-
-gText_PkmnGotEncore:: @ 85CA7C1
- .string "{STRING 16} got\nan ENCORE!$"
-
-gText_PkmnEncoreEnded:: @ 85CA7D3
- .string "{STRING 15}’s ENCORE\nended!$"
-
-gText_PkmnTookAim:: @ 85CA7E6
- .string "{STRING 15} took aim\nat {STRING 16}!$"
-
-gText_PkmnSketchedMove:: @ 85CA7F9
- .string "{STRING 15} SKETCHED\n{STRING 0}!$"
-
-gText_PkmnTryingToTakeFoe:: @ 85CA809
- .string "{STRING 15} is trying\nto take its foe with it!$"
-
-gText_PkmnTookFoe:: @ 85CA82F
- .string "{STRING 16} took\n{STRING 15} with it!$"
-
-gText_PkmnReducedPP:: @ 85CA843
- .string "Reduced {STRING 16}’s\n{STRING 0} by {PLAYER}!$"
-
-gText_PkmnStoleItem:: @ 85CA85A
- .string "{STRING 15} stole\n{STRING 16}’s {STRING 22}!$"
-
-gText_PkmnCantEscape:: @ 85CA86C
- .string "{STRING 16} can’t\nescape now!$"
-
-gText_PkmnFellIntoNightmare:: @ 85CA881
- .string "{STRING 16} fell into\na NIGHTMARE!$"
-
-gText_PkmnLockedInNightmare:: @ 85CA89B
- .string "{STRING 15} is locked\nin a NIGHTMARE!$"
-
-gText_PkmnLaidCurse:: @ 85CA8B8
- .string "{STRING 15} cut its own HP and\nlaid a CURSE on {STRING 16}!$"
-
-gText_PkmnAfflictedByCurse:: @ 85CA8E2
- .string "{STRING 15} is afflicted\nby the CURSE!$"
-
-gText_SpikesScattered:: @ 85CA900
- .string "SPIKES were scattered all around\nthe opponent’s side!$"
-
-gText_PkmnHurtBySpikes:: @ 85CA936
- .string "{STRING 19} is hurt\nby SPIKES!$"
-
-gText_PkmnIdentified:: @ 85CA94C
- .string "{STRING 15} identified\n{STRING 16}!$"
-
-gText_PkmnPerishCountFell:: @ 85CA95E
- .string "{STRING 15}’s PERISH count\nfell to {STRING 0}!$"
-
-gText_PkmnBracedItself:: @ 85CA97C
- .string "{STRING 15} braced\nitself!$"
-
-gText_PkmnEnduredHit:: @ 85CA98E
- .string "{STRING 16} ENDURED\nthe hit!$"
-
-gText_MagnitudeStrength:: @ 85CA9A2
- .string "MAGNITUDE {STRING 0}!$"
-
-gText_PkmnCutHPMaxedAttack:: @ 85CA9B0
- .string "{STRING 15} cut its own HP\nand maximized ATTACK!$"
-
-gText_PkmnCopiedStatChanges:: @ 85CA9D8
- .string "{STRING 15} copied\n{STRING 16}’s stat changes!$"
-
-gText_PkmnGotFree:: @ 85CA9F5
- .string "{STRING 15} got free of\n{STRING 16}’s {STRING 0}!$"
-
-gText_PkmnShedLeechSeed:: @ 85CAA0D
- .string "{STRING 15} shed\nLEECH SEED!$"
-
-gText_PkmnBlewAwaySpikes:: @ 85CAA21
- .string "{STRING 15} blew away\nSPIKES!$"
-
-gText_PkmnFledFromBattle:: @ 85CAA36
- .string "{STRING 15} fled from\nbattle!$"
-
-gText_PkmnForesawAttack:: @ 85CAA4B
- .string "{STRING 15} foresaw\nan attack!$"
-
-gText_PkmnTookAttack:: @ 85CAA61
- .string "{STRING 16} took the\n{STRING 0} attack!$"
-
-gText_PkmnChoseXAsDestiny:: @ 85CAA78
- .string "{STRING 15} chose\n{STRING 20} as its destiny!$"
-
-gText_PkmnAttack:: @ 85CAA94
- .string "{STRING 0}’s attack!$"
-
-gText_PkmnCenterAttention:: @ 85CAAA1
- .string "{STRING 15} became the\ncenter of attention!$"
-
-gText_PkmnChargingPower:: @ 85CAAC4
- .string "{STRING 15} began\ncharging power!$"
-
-gText_NaturePowerTurnedInto:: @ 85CAADD
- .string "NATURE POWER turned into\n{STRING 20}!$"
-
-gText_PkmnStatusNormal:: @ 85CAAFA
- .string "{STRING 15}’s status\nreturned to normal!$"
-
-gText_PkmnSubjectedToTorment:: @ 85CAB1A
- .string "{STRING 16} was subjected\nto TORMENT!$"
-
-gText_PkmnTighteningFocus:: @ 85CAB37
- .string "{STRING 15} is tightening\nits focus!$"
-
-gText_PkmnFellForTaunt:: @ 85CAB53
- .string "{STRING 16} fell for\nthe TAUNT!$"
-
-gText_PkmnReadyToHelp:: @ 85CAB6A
- .string "{STRING 15} is ready to\nhelp {STRING 16}!$"
-
-gText_PkmnSwitchedItems:: @ 85CAB82
- .string "{STRING 15} switched\nitems with its opponent!$"
-
-gText_PkmnObtainedX:: @ 85CABA7
- .string "{STRING 15} obtained\n{STRING 0}.$"
-
-gText_PkmnObtainedX2:: @ 85CABB7
- .string "{STRING 16} obtained\n{PLAYER}.$"
-
-gText_PkmnObtainedXYObtainedZ:: @ 85CABC7
- .string "{STRING 15} obtained\n{STRING 0}.\p{STRING 16} obtained\n{PLAYER}.$"
-
-gText_PkmnCopiedFoe:: @ 85CAB82
- .string "{STRING 15} copied\n{STRING 16}’s {STRING 25}!$"
-
-gText_PkmnMadeWish:: @ 85CABFA
- .string "{STRING 15} made a WISH!$"
-
-gText_PkmnWishCameTrue:: @ 85CAC0A
- .string "{STRING 0}’s WISH\ncame true!$"
-
-gText_PkmnPlantedRoots:: @ 85CAC1F
- .string "{STRING 15} planted its roots!$"
-
-gText_PkmnAbsorbedNutrients:: @ 85CAC35
- .string "{STRING 15} absorbed\nnutrients with its roots!$"
-
-gText_PkmnAnchoredItself:: @ 85CAC5B
- .string "{STRING 16} anchored\nitself with its roots!$"
-
-gText_PkmnWasMadeDrowsy:: @ 85CAC7E
- .string "{STRING 15} made\n{STRING 16} drowsy!$"
-
-gText_PkmnKnockedOff:: @ 85CAC91
- .string "{STRING 15} knocked off\n{STRING 16}’s {STRING 22}!$"
-
-gText_PkmnSwappedAbilities:: @ 85CACA9
- .string "{STRING 15} swapped abilities\nwith its opponent!$"
-
-gText_PkmnSealedOpponentMove:: @ 85CACD1
- .string "{STRING 15} sealed the\nopponent’s move(s)!$"
-
-gText_PkmnWantsGrudge:: @ 85CACF3
- .string "{STRING 15} wants the\nopponent to bear a GRUDGE!$"
-
-gText_PkmnLostPPGrudge:: @ 85CAD1B
- .string "{STRING 15}’s {STRING 0} lost\nall its PP due to the GRUDGE!$"
-
-gText_PkmnShroudedItself:: @ 85CAD46
- .string "{STRING 15} shrouded\nitself in {STRING 20}!$"
-
-gText_PkmnMoveBounced:: @ 85CAD60
- .string "{STRING 15}’s {STRING 20}\nwas bounced back by MAGIC COAT!$"
-
-gText_PkmnWaitsForTarget:: @ 85CAD88
- .string "{STRING 15} waits for a target\nto make a move!$"
-
-gText_PkmnSnatchedMove:: @ 85CADAE
- .string "{STRING 16} SNATCHED\n{STRING 19}’s move!$"
-
-gText_ElectricityWeakened:: @ 85CADC5
- .string "Electricity’s power was\nweakened!$"
-
-gText_FireWeakened:: @ 85CADE7
- .string "Fire’s power was\nweakened!$"
-
-gText_XFoundOneY:: @ 85CAE02
- .string "{STRING 15} found\none {STRING 22}!$"
-
-gText_SoothingAroma:: @ 85CAE13
- .string "A soothing aroma wafted\nthrough the area!$"
-
-gText_ItemsCantBeUsedNow:: @ 85CAE3D
- .string "Items can’t be used now.{PAUSE 64}$"
-
-gText_ForXCommaYZ:: @ 85CAE59
- .string "For {STRING 19},\n{STRING 22} {STRING 0}$"
-
-gText_PkmnUsedXToGetPumped:: @ 85CAE67
- .string "{STRING 19} used\n{STRING 22} to get pumped!$"
-
-gText_PkmnLostFocus:: @ 85CAE81
- .string "{STRING 15} lost its\nfocus and couldn’t move!$"
-
-gText_PkmnWasDraggedOut:: @ 85CAEA6
- .string "{STRING 16} was\ndragged out!\p$"
-
-gText_TheWallShattered:: @ 85CAEBB
- .string "The wall shattered!$"
-
-gText_ButNoEffect:: @ 85CAECF
- .string "But it had no effect!$"
-
-gText_PkmnHasNoMovesLeft:: @ 85CAEE5
- .string "{STRING 18} has no\nmoves left!\p$"
-
-gText_PkmnMoveIsDisabled:: @ 85CAEFC
- .string "{STRING 18}’s {STRING 20}\nis disabled!\p$"
-
-gText_PkmnCantUseMoveTorment:: @ 85CAF12
- .string "{STRING 18} can’t use the same\nmove in a row due to the TORMENT!\p$"
-
-gText_PkmnCantUseMoveTaunt:: @ 85CAF4B
- .string "{STRING 18} can’t use\n{STRING 20} after the TAUNT!\p$"
-
-gText_PkmnCantUseMoveSealed:: @ 85CAF6D
- .string "{STRING 18} can’t use the\nsealed {STRING 20}!\p$"
-
-gText_PkmnMadeItRain:: @ 85CAF8A
- .string "{STRING 19}’s {STRING 26}\nmade it rain!$"
-
-gText_PkmnRaisedSpeed:: @ 85CAFA0
- .string "{STRING 19}’s {STRING 26}\nraised its SPEED!$"
-
-gText_PkmnProtectedBy:: @ 85CAFBA
- .string "{STRING 16} was protected\nby {STRING 25}!$"
-
-gText_PkmnPreventsUsage:: @ 85CAFD2
- .string "{STRING 16}’s {STRING 25}\nprevents {STRING 15}\lfrom using {STRING 20}!$"
-
-gText_PkmnRestoredHPUsing:: @ 85CAFF5
- .string "{STRING 16} restored HP\nusing its {STRING 25}!$"
-
-gText_PkmnsXMadeYUseless:: @ 85CB012
- .string "{STRING 16}’s {STRING 25}\nmade {STRING 20} useless!$"
-
-gText_PkmnChangedTypeWith:: @ 85CB02B
- .string "{STRING 16}’s {STRING 25}\nmade it the {STRING 0} type!$"
-
-gText_PkmnPreventsParalysisWith:: @ 85CB048
- .string "{STRING 17}’s {STRING 25}\nprevents paralysis!$"
-
-gText_PkmnPreventsRomanceWith:: @ 85CB064
- .string "{STRING 16}’s {STRING 25}\nprevents romance!$"
-
-gText_PkmnPreventsPoisoningWith:: @ 85CB07E
- .string "{STRING 17}’s {STRING 25}\nprevents poisoning!$"
-
-gText_PkmnPreventsConfusionWith:: @ 85CB09A
- .string "{STRING 16}’s {STRING 25}\nprevents confusion!$"
-
-gText_PkmnRaisedFirePowerWith:: @ 85CB0B6
- .string "{STRING 16}’s {STRING 25}\nraised its FIRE power!$"
-
-gText_PkmnAnchorsItselfWith:: @ 85CB0D5
- .string "{STRING 16} anchors\nitself with {STRING 25}!$"
-
-gText_PkmnCutsAttackWith:: @ 85CB0F0
- .string "{STRING 19}’s {STRING 26}\ncuts {STRING 16}’s ATTACK!$"
-
-gText_PkmnPreventsStatLossWith:: @ 85CB10A
- .string "{STRING 19}’s {STRING 26}\nprevents stat loss!$"
-
-gText_PkmnHurtsWith:: @ 85CB126
- .string "{STRING 16}’s {STRING 25}\nhurt {STRING 15}!$"
-
-gText_PkmnTraced:: @ 85CB137
- .string "{STRING 19} TRACED\n{STRING 0}’s {PLAYER}!$"
-
-gText_PkmnsXPreventsBurns:: @ 85CB14A
- .string "{STRING 17}’s {STRING 27}\nprevents burns!$"
-
-gText_PkmnsXBlocksY:: @ 85CB162
- .string "{STRING 16}’s {STRING 25}\nblocks {STRING 20}!$"
-
-gText_PkmnsXBlocksY2:: @ 85CB175
- .string "{STRING 19}’s {STRING 26}\nblocks {STRING 20}!$"
-
-gText_PkmnsXRestoredHPALittle2:: @ 85CB188
- .string "{STRING 15}’s {STRING 24}\nrestored its HP a little!$"
-
-gText_PkmnsXWhippedUpSandstorm:: @ 85CB1AA
- .string "{STRING 19}’s {STRING 26}\nwhipped up a sandstorm!$"
-
-gText_PkmnsXIntensifiedSun:: @ 85CB1CA
- .string "{STRING 19}’s {STRING 26}\nintensified the sun’s rays!$"
-
-gText_PkmnsXPreventsYLoss:: @ 85CB1EE
- .string "{STRING 19}’s {STRING 26}\nprevents {STRING 0} loss!$"
-
-gText_PkmnsXInfatuatedY:: @ 85CB208
- .string "{STRING 16}’s {STRING 25}\ninfatuated {STRING 15}!$"
-
-gText_PkmnsXMadeYIneffective:: @ 85CB21F
- .string "{STRING 16}’s {STRING 25}\nmade {STRING 20} ineffective!$"
-
-gText_PkmnsXCuredYProblem:: @ 85CB23C
- .string "{STRING 19}’s {STRING 26}\ncured its {STRING 0} problem!$"
-
-gText_ItSuckedLiquidOoze:: @ 85CB25A
- .string "It sucked up the\nLIQUID OOZE!$"
-
-gText_PkmnTransformed:: @ 85CB278
- .string "{STRING 19} transformed!$"
-
-gText_PkmnsXTookAttack:: @ 85CB288
- .string "{STRING 16}’s {STRING 25}\ntook the attack!$"
-
-gText_PkmnsXPreventsSwitching:: @ 85CB2A1
- .string "{STRING 0}’s {STRING 23}\nprevents switching!\p$"
-
-gText_PreventedFromWorking:: @ 85CB2BE
- .string "{STRING 16}’s {STRING 25}\nprevented {STRING 19}’s\l{STRING 0} from working!$"
-
-gText_PkmnsXMadeItIneffective:: @ 85CB2E6
- .string "{STRING 19}’s {STRING 26}\nmade it ineffective!$"
-
-gText_PkmnsXPreventsFlinching:: @ 85CB303
- .string "{STRING 17}’s {STRING 27}\nprevents flinching!$"
-
-gText_PkmnsXPreventsYsZ:: @ 85CB31F
- .string "{STRING 15}’s {STRING 24}\nprevents {STRING 16}’s\l{STRING 25} from working!$"
-
-gText_PkmnsXCuredItsYProblem:: @ 85CB346
- .string "{STRING 19}’s {STRING 26}\ncured its {STRING 0} problem!$"
-
-gText_PkmnsXHadNoEffectOnY:: @ 85CB364
- .string "{STRING 19}’s {STRING 26}\nhad no effect on {STRING 17}!$"
-
-gText_StatSharply:: @ 85CB381
- .string "sharply $"
-
-gText_StatRose:: @ 85CB38A
- .string "rose!$"
-
-gText_StatHarshly:: @ 85CB390
- .string "harshly $"
-
-gText_StatFell:: @ 85CB399
- .string "fell!$"
-
-gText_PkmnsStatChanged:: @ 85CB39F
- .string "{STRING 15}’s {STRING 0}\n{PLAYER}$"
-
-gText_PkmnsStatChanged2:: @ 85CB3AA
- .string "{STRING 16}’s {STRING 0}\n{PLAYER}$"
-
-gText_UsingXTheYOfZN:: @ 85CB3B5
- .string "Using {STRING 22}, the {STRING 0}\nof {STRING 19} {PLAYER}$"
-
-gText_PkmnsStatChanged3:: @ 85CB3CF
- .string "{STRING 15}’s {STRING 0}\n{PLAYER}$"
-
-gText_PkmnsStatChanged4:: @ 85CB3DA
- .string "{STRING 16}’s {STRING 0}\n{PLAYER}$"
-
-gText_StatsWontIncrease2:: @ 85CB3E5
- .string "{STRING 15}’s stats won’t\ngo any higher!$"
-
-gText_StatsWontDecrease2:: @ 85CB405
- .string "{STRING 16}’s stats won’t\ngo any lower!$"
-
-gText_CriticalHit:: @ 85CB424
- .string "A critical hit!$"
-
-gText_OneHitKO:: @ 85CB434
- .string "It’s a one-hit KO!$"
-
-gText_123Poof:: @ 85CB447
- .string "{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof!\p$"
-
-gText_AndEllipsis:: @ 85CB473
- .string "And…\p$"
-
-gText_HMMovesCantBeForgotten:: @ 85CB479
- .string "HM moves can’t be\nforgotten now.\p$"
-
-gText_NotVeryEffective:: @ 85CB49B
- .string "It’s not very effective…$"
-
-gText_SuperEffective:: @ 85CB4B4
- .string "It’s super effective!$"
-
-gText_GotAwaySafely:: @ 85CB4CA
- .string "{PLAY_SE 0x0011}Got away safely!\p$"
-
-gText_PkmnFledUsingIts:: @ 85CB4E0
- .string "{PLAY_SE 0x0011}{STRING 15} fled\nusing its {STRING 22}!\p$"
-
-gText_PkmnFledUsing:: @ 85CB4FB
- .string "{PLAY_SE 0x0011}{STRING 15} fled\nusing {STRING 24}!\p$"
-
-gText_WildPkmnFled:: @ 85CB512
- .string "{PLAY_SE 0x0011}Wild {STRING 0} fled!$"
-
-gText_PlayerDefeated:: @ 85CB524
- .string "Player defeated\n{STRING 32}!$"
-
-gText_PlayerBeatTwo:: @ 85CB538
- .string "Player beat {STRING 32}\nand {STRING 33}!$"
-
-gText_PlayerLostAgainst:: @ 85CB54F
- .string "Player lost against\n{STRING 32}!$"
-
-gText_PlayerLostToTwo:: @ 85CB567
- .string "Player lost to {STRING 32}\nand {STRING 33}!$"
-
-gText_PlayerBattledToDraw:: @ 85CB581
- .string "Player battled to a draw against\n{STRING 32}!$"
-
-gText_PlayerBattledToDrawVsTwo:: @ 85CB5A6
- .string "Player battled to a draw against\n{STRING 32} and {STRING 33}!$"
-
-gText_WildFled:: @ 85CB5D2
- .string "{PLAY_SE 0x0011}{STRING 32} fled!$"
-
-gText_TwoWildFled:: @ 85CB5DF
- .string "{PLAY_SE 0x0011}{STRING 32} and\n{STRING 33} fled!$"
-
-gText_NoRunningFromTrainers:: @ 85CB5F3
- .string "No! There’s no running\nfrom a TRAINER battle!\p$"
-
-gText_CantEscape:: @ 85CB622
- .string "Can’t escape!\p$"
-
-gText_DontLeaveBirch:: @ 85CB631
- .string "PROF. BIRCH: Don’t leave me like this!\p$"
-
-gText_ButNothingHappened:: @ 85CB659
- .string "But nothing happened!$"
-
-gText_ButItFailed:: @ 85CB66F
- .string "But it failed!$"
-
-gText_ItHurtConfusion:: @ 85CB67E
- .string "It hurt itself in its\nconfusion!$"
-
-gText_MirrorMoveFailed:: @ 85CB69F
- .string "The MIRROR MOVE failed!$"
-
-gText_StartedToRain:: @ 85CB6B7
- .string "It started to rain!$"
-
-gText_DownpourStarted:: @ 85CB6CB
- .string "A downpour started!$"
-
-gText_RainContinues:: @ 85CB6DF
- .string "Rain continues to fall.$"
-
-gText_DownpourContinues:: @ 85CB6F7
- .string "The downpour continues.$"
-
-gText_RainStopped:: @ 85CB70F
- .string "The rain stopped.$"
-
-gText_SandstormBrewed:: @ 85CB721
- .string "A sandstorm brewed!$"
-
-gText_SandstormRages:: @ 85CB735
- .string "The sandstorm rages.$"
-
-gText_SandstormSubsided:: @ 85CB74A
- .string "The sandstorm subsided.$"
-
-gText_SunlightGotBright:: @ 85CB762
- .string "The sunlight got bright!$"
-
-gText_SunlightStrong:: @ 85CB77B
- .string "The sunlight is strong.$"
-
-gText_SunlightFaded:: @ 85CB793
- .string "The sunlight faded.$"
-
-gText_StartedHail:: @ 85CB7A7
- .string "It started to hail!$"
-
-gText_HailContinues:: @ 85CB7BB
- .string "Hail continues to fall.$"
-
-gText_HailStopped:: @ 85CB7D3
- .string "The hail stopped.$"
-
-gText_FailedToSpitUp:: @ 85CB7E5
- .string "But it failed to SPIT UP\na thing!$"
-
-gText_FailedToSwallow:: @ 85CB807
- .string "But it failed to SWALLOW\na thing!$"
-
-gText_WindBecameHeatWave:: @ 85CB829
- .string "The wind turned into a\nHEAT WAVE!$"
-
-gText_StatChangesGone:: @ 85CB84B
- .string "All stat changes were\neliminated!$"
-
-gText_CoinsScattered:: @ 85CB86D
- .string "Coins scattered everywhere!$"
-
-gText_TooWeakForSubstitute:: @ 85CB889
- .string "It was too weak to make\na SUBSTITUTE!$"
-
-gText_SharedPain:: @ 85CB8AF
- .string "The battlers shared\ntheir pain!$"
-
-gText_BellChimed:: @ 85CB8CF
- .string "A bell chimed!$"
-
-gText_FaintInThree:: @ 85CB8DE
- .string "All affected POKéMON will\nfaint in three turns!$"
-
-gText_NoPPLeft:: @ 85CB90E
- .string "There’s no PP left for\nthis move!\p$"
-
-gText_ButNoPPLeft:: @ 85CB931
- .string "But there was no PP left\nfor the move!$"
-
-gText_PkmnIgnoresAsleep:: @ 85CB958
- .string "{STRING 15} ignored\norders while asleep!$"
-
-gText_PkmnIgnoredOrders:: @ 85CB978
- .string "{STRING 15} ignored\norders!$"
-
-gText_PkmnBeganToNap:: @ 85CB98B
- .string "{STRING 15} began to nap!$"
-
-gText_PkmnLoafing:: @ 85CB99C
- .string "{STRING 15} is\nloafing around!$"
-
-gText_PkmnWontObey:: @ 85CB9B2
- .string "{STRING 15} won’t\nobey!$"
-
-gText_PkmnTurnedAway:: @ 85CB9C1
- .string "{STRING 15} turned away!$"
-
-gText_PkmnPretendNotNotice:: @ 85CB9D1
- .string "{STRING 15} pretended\nnot to notice!$"
-
-gText_EnemyAboutToSwitchPkmn:: @ 85CB9ED
- .string "{STRING 28} {STRING 29} is\nabout to use {PLAYER}.\pWill {STRING 35} change\nPOKéMON?$"
-
-gText_PkmnLearnedMove2:: @ 85CBA1F
- .string "{STRING 15} learned\n{STRING 0}!$"
-
-gText_PlayerDefeatedXY:: @ 85CBA2E
- .string "Player defeated\n{STRING 28} {STRING 29}!\p$"
-
-gText_CreptCloser:: @ 85CBA46
- .string "{STRING 35} crept closer to\n{RIVAL}!$"
-
-gText_CantGetCloser:: @ 85CBA5D
- .string "{STRING 35} can’t get any closer!$"
-
-gText_PkmnWatchingCarefully:: @ 85CBA76
- .string "{RIVAL} is watching\ncarefully!$"
-
-gText_PkmnCuriousAboutX:: @ 85CBA90
- .string "{RIVAL} is curious about\nthe {STRING 0}!$"
-
-gText_PkmnEnthralledByX:: @ 85CBAAC
- .string "{RIVAL} is enthralled by\nthe {STRING 0}!$"
-
-gText_PkmnIgnoredX:: @ 85CBAC8
- .string "{RIVAL} completely ignored\nthe {STRING 0}!$"
-
-gText_ThrewPokeblockAtPkmn:: @ 85CBAE6
- .string "{STRING 35} threw a {POKEBLOCK}\nat the {RIVAL}!$"
-
-gText_OutOfSafariBalls:: @ 85CBB02
- .string "{PLAY_SE 0x0049}ANNOUNCER: You’re out of\nSAFARI BALLS! Game over!\p$"
-
- .string "{RIVAL} appeared!\p$"
-
-gText_WildPkmnAppeared:: @ 85CBB47
- .string "Wild {RIVAL} appeared!\p$"
-
-gText_WildPkmnAppeared2:: @ 85CBB5A
- .string "Wild {RIVAL} appeared!\p$"
-
-gText_WildPkmnAppearedPause:: @ 85CBB6D
- .string "Wild {RIVAL} appeared!{PAUSE 127}$"
-
-gText_TwoWildPkmnAppeared:: @ 85CBB82
- .string "Wild {RIVAL} and\n{AQUA} appeared!\p$"
-
-gText_TrainerXYWantsToBattle:: @ 85CBB9C
- .string "{STRING 28} {STRING 29}\nwould like to battle!\p$"
-
-gText_TrainerXWantsToBattle:: @ 85CBBB9
- .string "{STRING 32}\nwants to battle!$"
-
-gText_TwoTrainersWantToBattle:: @ 85CBBCD
- .string "{STRING 32} and {STRING 33}\nwant to battle!$"
-
-gText_TrainerXYSentOutPkmn:: @ 85CBBE7
- .string "{STRING 28} {STRING 29} sent\nout {RIVAL}!$"
-
-gText_TrainerXYSentOutTwoPkmn:: @ 85CBBFA
- .string "{STRING 28} {STRING 29} sent\nout {RIVAL} and {AQUA}!$"
-
-gText_TrainerXYSentOutPkmn2:: @ 85CBC14
- .string "{STRING 28} {STRING 29} sent\nout {STRING 0}!$"
-
-gText_TrainerXSentOutPkmn:: @ 85CBC27
- .string "{STRING 32} sent out\n{RIVAL}!$"
-
-gText_TrainerXSentOutTwoPkmn:: @ 85CBC37
- .string "{STRING 32} sent out\n{RIVAL} and {AQUA}!$"
-
-gText_TwoTrainersSentOutPkmn:: @ 85CBC4E
- .string "{STRING 32} sent out {STRING 10}!\n{STRING 33} sent out {STRING 12}!$"
-
-gText_TrainerXSentOutPkmn2:: @ 85CBC6E
- .string "{STRING 32} sent out\n{STRING 0}!$"
-
-gText_TrainerXSentOutPkmn3:: @ 85CBC7E
- .string "{STRING 34} sent out\n{STRING 0}!$"
-
-gText_GoPkmn:: @ 85CBC8E
- .string "Go! {STRING 5}!$"
-
-gText_GoTwoPkmn:: @ 85CBC96
- .string "Go! {STRING 5} and\n{VERSION}!$"
-
-gText_GoPkmn2:: @ 85CBCA5
- .string "Go! {STRING 0}!$"
-
-gText_DoItPkmn:: @ 85CBCAD
- .string "Do it! {STRING 0}!$"
-
-gText_GoForItPkmn:: @ 85CBCB8
- .string "Go for it, {STRING 0}!$"
-
-gText_YourFoesWeakGetEmPkmn:: @ 85CBCC7
- .string "Your foe’s weak!\nGet ’em, {STRING 0}!$"
-
-gText_EnemySentOutPkmnGoPkmn:: @ 85CBCE5
- .string "{STRING 31} sent out {STRING 11}!\nGo! {STRING 9}!$"
-
-gText_PkmnThatsEnough:: @ 85CBCFD
- .string "{STRING 0}, that’s enough!\nCome back!$"
-
-gText_PkmnComeBack:: @ 85CBD1B
- .string "{STRING 0}, come back!$"
-
-gText_PkmnOkComeBack:: @ 85CBD2A
- .string "{STRING 0}, OK!\nCome back!$"
-
-gText_PkmnGoodComeBack:: @ 85CBD3D
- .string "{STRING 0}, good!\nCome back!$"
-
-gText_TrainerXYWithdrewPkmn:: @ 85CBD52
- .string "{STRING 28} {STRING 29}\nwithdrew {STRING 0}!$"
-
-gText_TrainerXWithdrewPkmn:: @ 85CBD65
- .string "{STRING 32} withdrew\n{STRING 0}!$"
-
-gText_TrainerXWithdrewPkmn2:: @ 85CBD75
- .string "{STRING 34} withdrew\n{STRING 0}!$"
-
-gText_WildPkmnPrefix:: @ 85CBD85
- .string "Wild $"
-
-gText_FoePkmnPrefix:: @ 85CBD8B
- .string "Foe $"
-
- .string "$"
-
-gText_FoePkmnPrefix2:: @ 85CBD91
- .string "Foe$"
-
-gText_AllyPkmnPrefix:: @ 85CBD95
- .string "Ally$"
-
-gText_FoePkmnPrefix3:: @ 85CBD9A
- .string "Foe$"
-
-gText_AllyPkmnPrefix2:: @ 85CBD9E
- .string "Ally$"
-
-gText_FoePkmnPrefix4:: @ 85CBDA3
- .string "Foe$"
-
-gText_AllyPkmnPrefix3:: @ 85CBDA7
- .string "Ally$"
-
-gText_XUsedY2:: @ 85CBDAC
- .string "{STRING 15} used\n{PLAYER}$"
-
-gText_ExclamationMark:: @ 85CBDB7
- .string "!$"
-
-gText_ExclamationMark2:: @ 85CBDB9
- .string "!$"
-
-gText_ExclamationMark3:: @ 85CBDBB
- .string "!$"
-
-gText_ExclamationMark4:: @ 85CBDBD
- .string "!$"
-
-gText_ExclamationMark5:: @ 85CBDBF
- .string "!$"
-
-gText_HP2:: @ 85CBDC1
- .string "HP$"
-
-gText_Attack2:: @ 85CBDC4
- .string "ATTACK$"
-
-gText_Defense2:: @ 85CBDCB
- .string "DEFENSE$"
-
-gText_Speed:: @ 85CBDD3
- .string "SPEED$"
-
-gText_SpAtk2:: @ 85CBDD9
- .string "SP. ATK$"
-
-gText_SpDef2:: @ 85CBDE1
- .string "SP. DEF$"
-
-gText_Accuracy:: @ 85CBDE9
- .string "accuracy$"
-
-gText_Evasiveness:: @ 85CBDF2
- .string "evasiveness$"
-
- .align 2
-gStatNamesTable:: @ 85CBE00
- .4byte gText_HP2
- .4byte gText_Attack2
- .4byte gText_Defense2
- .4byte gText_Speed
- .4byte gText_SpAtk2
- .4byte gText_SpDef2
- .4byte gText_Accuracy
- .4byte gText_Evasiveness
-
-gText_PokeblockWasTooSpicy:: @ 85CBE20
- .string "was too spicy!$"
-
-gText_PokeblockWasTooDry:: @ 85CBE2F
- .string "was too dry!$"
-
-gText_PokeblockWasTooSweet:: @ 85CBE3C
- .string "was too sweet!$"
-
-gText_PokeblockWasTooBitter:: @ 85CBE4B
- .string "was too bitter!$"
-
-gText_PokeblockWasTooSour:: @ 85CBE5B
- .string "was too sour!$"
-
- .align 2
-gPokeblockWasTooXStringTable:: @ 85CBE6C
- .4byte gText_PokeblockWasTooSpicy
- .4byte gText_PokeblockWasTooDry
- .4byte gText_PokeblockWasTooSweet
- .4byte gText_PokeblockWasTooBitter
- .4byte gText_PokeblockWasTooSour
-
-gText_XUsedY:: @ 85CBE80
- .string "{STRING 35} used\n{STRING 22}!$"
-
-gText_WallyUsedY:: @ 85CBE8C
- .string "WALLY used\n{STRING 22}!$"
-
-gText_XYUsedZ:: @ 85CBE9B
- .string "{STRING 28} {STRING 29}\nused {STRING 22}!$"
-
-gText_TrainerBlockedBall:: @ 85CBEAA
- .string "The TRAINER blocked the BALL!$"
-
-gText_DontBeAThief:: @ 85CBEC8
- .string "Don’t be a thief!$"
-
-gText_ItDodgedBall:: @ 85CBEDA
- .string "It dodged the thrown BALL!\nThis POKéMON can’t be caught!$"
-
-gText_YouMissedPkmn:: @ 85CBF13
- .string "You missed the POKéMON!$"
-
-gText_PkmnBrokeFree:: @ 85CBF2B
- .string "Oh, no!\nThe POKéMON broke free!$"
-
-gText_ItAppearedCaught:: @ 85CBF4B
- .string "Aww!\nIt appeared to be caught!$"
-
-gText_AarghAlmostHadIt:: @ 85CBF6A
- .string "Aargh!\nAlmost had it!$"
-
-gText_ShootSoClose:: @ 85CBF80
- .string "Shoot!\nIt was so close, too!$"
-
-gText_GotchaPkmnCaught:: @ 85CBF9D
- .string "Gotcha!\n{RIVAL} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}\p$"
-
-gText_GotchaPkmnCaught2:: @ 85CBFBB
- .string "Gotcha!\n{RIVAL} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}{PAUSE 127}$"
-
-gText_GiveNicknameCaptured:: @ 85CBFDB
- .string "Give a nickname to the\ncaptured {RIVAL}?$"
-
-gText_PkmnSentToPC:: @ 85CBFFF
- .string "{RIVAL} was sent to\n{STRING 39} PC.$"
-
-gText_Someones:: @ 85CC015
- .string "someone’s$"
-
-gText_Lanettes:: @ 85CC01F
- .string "LANETTE’s$"
-
-gText_PkmnDataAddedToDex:: @ 85CC029
- .string "{RIVAL}’s data was\nadded to the POKéDEX.\p$"
-
-gText_ItIsRaining:: @ 85CC04E
- .string "It is raining.$"
-
-gText_SandstormIsRaging:: @ 85CC05D
- .string "A sandstorm is raging.$"
-
-gText_BoxIsFull:: @ 85CC074
- .string "The BOX is full!\nYou can’t catch any more!\p$"
-
-gText_EnigmaBerry:: @ 85CC0A0
- .string "ENIGMA BERRY$"
-
-gText_BerrySuffix:: @ 85CC0AD
- .string " BERRY$"
-
-gText_PkmnsXCuredParalysis:: @ 85CC0B4
- .string "{STRING 19}’s {STRING 22}\ncured paralysis!$"
-
-gText_PkmnsXCuredPoison:: @ 85CC0CD
- .string "{STRING 19}’s {STRING 22}\ncured poison!$"
-
-gText_PkmnsXHealedBurn:: @ 85CC0E3
- .string "{STRING 19}’s {STRING 22}\nhealed its burn!$"
-
-gText_PkmnsXDefrostedIt:: @ 85CC0FC
- .string "{STRING 19}’s {STRING 22}\ndefrosted it!$"
-
-gText_PkmnsXWokeIt:: @ 85CC112
- .string "{STRING 19}’s {STRING 22}\nwoke it from its sleep!$"
-
-gText_PkmnsXSnappedOut:: @ 85CC132
- .string "{STRING 19}’s {STRING 22}\nsnapped it out of confusion!$"
-
-gText_PkmnsXCuredProblem:: @ 85CC157
- .string "{STRING 19}’s {STRING 22}\ncured its {STRING 0} problem!$"
-
-gText_PkmnsXNormalizedStatus:: @ 85CC175
- .string "{STRING 19}’s {STRING 22}\nnormalized its status!$"
-
-gText_PkmnsXRestoredHealth:: @ 85CC194
- .string "{STRING 19}’s {STRING 22}\nrestored health!$"
-
-gText_PkmnsXRestoredPP:: @ 85CC1AD
- .string "{STRING 19}’s {STRING 22}\nrestored {STRING 0}’s PP!$"
-
-gText_PkmnsXRestoredStatus:: @ 85CC1C7
- .string "{STRING 19}’s {STRING 22}\nrestored its status!$"
-
-gText_PkmnsXRestoredHPALittle:: @ 85CC1E4
- .string "{STRING 19}’s {STRING 22}\nrestored its HP a little!$"
-
-gText_XAllowsOnlyY:: @ 85CC206
- .string "{STRING 22} allows the\nuse of only {STRING 20}!\p$"
-
-gText_PkmnHungOnWithX:: @ 85CC225
- .string "{STRING 16} hung on\nusing its {STRING 22}!$"
-
-gText_EmptyString3:: @ 85CC23E
- .string "$"
-
-gText_YouThrowABallNowRight:: @ 85CC23F
- .string "You throw a BALL now, right?\nI… I’ll do my best!$"
-
- .align 2
-gBattleStringsTable:: @ 85CC270
- .4byte gText_Buffer36
- .4byte gText_PkmnGainedEXP
- .4byte gText_PkmnGrewToLv
- .4byte gText_PkmnLearnedMove
- .4byte gText_TryToLearnMove1
- .4byte gText_TryToLearnMove2
- .4byte gText_TryToLearnMove3
- .4byte gText_PkmnForgotMove
- .4byte gText_StopLearningMove
- .4byte gText_DidNotLearnMove
- .4byte gText_PkmnLearnedMove2
- .4byte gText_AttackMissed
- .4byte gText_PkmnProtectedItself
- .4byte gText_StatsWontIncrease2
- .4byte gText_AvoidedDamage
- .4byte gText_ItDoesntAffect
- .4byte gText_PkmnFainted
- .4byte gText_PkmnFainted2
- .4byte gText_PlayerGotMoney
- .4byte gText_PlayerWhiteout
- .4byte gText_PlayerWhiteout2
- .4byte gText_PreventsEscape
- .4byte gText_HitXTimes
- .4byte gText_PkmnFellAsleep
- .4byte gText_PkmnMadeSleep
- .4byte gText_PkmnAlreadyAsleep
- .4byte gText_PkmnAlreadyAsleep2
- .4byte gText_PkmnWasntAffected
- .4byte gText_PkmnWasPoisoned
- .4byte gText_PkmnPoisonedBy
- .4byte gText_PkmnHurtByPoison
- .4byte gText_PkmnAlreadyPoisoned
- .4byte gText_PkmnBadlyPoisoned
- .4byte gText_PkmnEnergyDrained
- .4byte gText_PkmnWasBurned
- .4byte gText_PkmnBurnedBy
- .4byte gText_PkmnHurtByBurn
- .4byte gText_PkmnWasFrozen
- .4byte gText_PkmnFrozenBy
- .4byte gText_PkmnIsFrozen
- .4byte gText_PkmnWasDefrosted
- .4byte gText_PkmnWasDefrosted2
- .4byte gText_PkmnWasDefrostedBy
- .4byte gText_PkmnWasParalyzed
- .4byte gText_PkmnWasParalyzedBy
- .4byte gText_PkmnIsParalyzed
- .4byte gText_PkmnIsAlreadyParalyzed
- .4byte gText_PkmnHealedParalysis
- .4byte gText_PkmnDreamEaten
- .4byte gText_StatsWontIncrease
- .4byte gText_StatsWontDecrease
- .4byte gText_TeamStoppedWorking
- .4byte gText_FoeStoppedWorking
- .4byte gText_PkmnIsConfused
- .4byte gText_PkmnHealedConfusion
- .4byte gText_PkmnWasConfused
- .4byte gText_PkmnAlreadyConfused
- .4byte gText_PkmnFellInLove
- .4byte gText_PkmnInLove
- .4byte gText_PkmnImmobilizedByLove
- .4byte gText_PkmnBlownAway
- .4byte gText_PkmnChangedType
- .4byte gText_PkmnFlinched
- .4byte gText_PkmnRegainedHealth
- .4byte gText_PkmnHPFull
- .4byte gText_PkmnRaisedSpDef
- .4byte gText_PkmnRaisedDef
- .4byte gText_PkmnCoveredByVeil
- .4byte gText_PkmnUsedSafeguard
- .4byte gText_PkmnSafeguardExpired
- .4byte gText_PkmnWentToSleep
- .4byte gText_PkmnSleptHealthy
- .4byte gText_PkmnWhippedWhirlwind
- .4byte gText_PkmnTookSunlight
- .4byte gText_PkmnLoweredHead
- .4byte gText_PkmnIsGlowing
- .4byte gText_PkmnFlewHigh
- .4byte gText_PkmnDugHole
- .4byte gText_PkmnSqueezedByBind
- .4byte gText_PkmnTrappedInVortex
- .4byte gText_PkmnWrappedBy
- .4byte gText_PkmnClamped
- .4byte gText_PkmnHurtBy
- .4byte gText_PkmnFreedFrom
- .4byte gText_PkmnCrashed
- .4byte gText_PkmnShroudedInMist
- .4byte gText_PkmnProtectedByMist
- .4byte gText_PkmnGettingPumped
- .4byte gText_PkmnHitWithRecoil
- .4byte gText_PkmnProtectedItself2
- .4byte gText_PkmnBuffetedBySandstorm
- .4byte gText_PkmnPeltedByHail
- .4byte gText_PkmnSeeded
- .4byte gText_PkmnEvadedAttack
- .4byte gText_PkmnSappedByLeechSeed
- .4byte gText_PkmnFastAsleep
- .4byte gText_PkmnWokeUp
- .4byte gText_PkmnUproarKeptAwake
- .4byte gText_PkmnWokeUpInUproar
- .4byte gText_PkmnCausedUproar
- .4byte gText_PkmnMakingUproar
- .4byte gText_PkmnCalmedDown
- .4byte gText_PkmnCantSleepInUproar
- .4byte gText_PkmnStockpiled
- .4byte gText_PkmnCantStockpile
- .4byte gText_PkmnCantSleepInUproar2
- .4byte gText_UproarKeptPkmnAwake
- .4byte gText_PkmnStayedAwakeUsing
- .4byte gText_PkmnStoringEnergy
- .4byte gText_PkmnUnleashedEnergy
- .4byte gText_PkmnFatigueConfusion
- .4byte gText_PkmnPickedUpItem
- .4byte gText_PkmnUnaffected
- .4byte gText_PkmnTransformedInto
- .4byte gText_PkmnMadeSubstitute
- .4byte gText_PkmnHasSubstitute
- .4byte gText_SubstituteDamaged
- .4byte gText_PkmnSubstituteFaded
- .4byte gText_PkmnMustRecharge
- .4byte gText_PkmnRageBuilding
- .4byte gText_PkmnMoveWasDisabled
- .4byte gText_PkmnMoveIsDisabled
- .4byte gText_PkmnMoveDisabledNoMore
- .4byte gText_PkmnGotEncore
- .4byte gText_PkmnEncoreEnded
- .4byte gText_PkmnTookAim
- .4byte gText_PkmnSketchedMove
- .4byte gText_PkmnTryingToTakeFoe
- .4byte gText_PkmnTookFoe
- .4byte gText_PkmnReducedPP
- .4byte gText_PkmnStoleItem
- .4byte gText_PkmnCantEscape
- .4byte gText_PkmnFellIntoNightmare
- .4byte gText_PkmnLockedInNightmare
- .4byte gText_PkmnLaidCurse
- .4byte gText_PkmnAfflictedByCurse
- .4byte gText_SpikesScattered
- .4byte gText_PkmnHurtBySpikes
- .4byte gText_PkmnIdentified
- .4byte gText_PkmnPerishCountFell
- .4byte gText_PkmnBracedItself
- .4byte gText_PkmnEnduredHit
- .4byte gText_MagnitudeStrength
- .4byte gText_PkmnCutHPMaxedAttack
- .4byte gText_PkmnCopiedStatChanges
- .4byte gText_PkmnGotFree
- .4byte gText_PkmnShedLeechSeed
- .4byte gText_PkmnBlewAwaySpikes
- .4byte gText_PkmnFledFromBattle
- .4byte gText_PkmnForesawAttack
- .4byte gText_PkmnTookAttack
- .4byte gText_PkmnAttack
- .4byte gText_PkmnCenterAttention
- .4byte gText_PkmnChargingPower
- .4byte gText_NaturePowerTurnedInto
- .4byte gText_PkmnStatusNormal
- .4byte gText_PkmnHasNoMovesLeft
- .4byte gText_PkmnSubjectedToTorment
- .4byte gText_PkmnCantUseMoveTorment
- .4byte gText_PkmnTighteningFocus
- .4byte gText_PkmnFellForTaunt
- .4byte gText_PkmnCantUseMoveTaunt
- .4byte gText_PkmnReadyToHelp
- .4byte gText_PkmnSwitchedItems
- .4byte gText_PkmnCopiedFoe
- .4byte gText_PkmnMadeWish
- .4byte gText_PkmnWishCameTrue
- .4byte gText_PkmnPlantedRoots
- .4byte gText_PkmnAbsorbedNutrients
- .4byte gText_PkmnAnchoredItself
- .4byte gText_PkmnWasMadeDrowsy
- .4byte gText_PkmnKnockedOff
- .4byte gText_PkmnSwappedAbilities
- .4byte gText_PkmnSealedOpponentMove
- .4byte gText_PkmnCantUseMoveSealed
- .4byte gText_PkmnWantsGrudge
- .4byte gText_PkmnLostPPGrudge
- .4byte gText_PkmnShroudedItself
- .4byte gText_PkmnMoveBounced
- .4byte gText_PkmnWaitsForTarget
- .4byte gText_PkmnSnatchedMove
- .4byte gText_PkmnMadeItRain
- .4byte gText_PkmnRaisedSpeed
- .4byte gText_PkmnProtectedBy
- .4byte gText_PkmnPreventsUsage
- .4byte gText_PkmnRestoredHPUsing
- .4byte gText_PkmnChangedTypeWith
- .4byte gText_PkmnPreventsParalysisWith
- .4byte gText_PkmnPreventsRomanceWith
- .4byte gText_PkmnPreventsPoisoningWith
- .4byte gText_PkmnPreventsConfusionWith
- .4byte gText_PkmnRaisedFirePowerWith
- .4byte gText_PkmnAnchorsItselfWith
- .4byte gText_PkmnCutsAttackWith
- .4byte gText_PkmnPreventsStatLossWith
- .4byte gText_PkmnHurtsWith
- .4byte gText_PkmnTraced
- .4byte gText_StatSharply
- .4byte gText_StatRose
- .4byte gText_StatHarshly
- .4byte gText_StatFell
- .4byte gText_PkmnsStatChanged
- .4byte gText_PkmnsStatChanged2
- .4byte gText_PkmnsStatChanged3
- .4byte gText_PkmnsStatChanged4
- .4byte gText_CriticalHit
- .4byte gText_OneHitKO
- .4byte gText_123Poof
- .4byte gText_AndEllipsis
- .4byte gText_NotVeryEffective
- .4byte gText_SuperEffective
- .4byte gText_GotAwaySafely
- .4byte gText_WildPkmnFled
- .4byte gText_NoRunningFromTrainers
- .4byte gText_CantEscape
- .4byte gText_DontLeaveBirch
- .4byte gText_ButNothingHappened
- .4byte gText_ButItFailed
- .4byte gText_ItHurtConfusion
- .4byte gText_MirrorMoveFailed
- .4byte gText_StartedToRain
- .4byte gText_DownpourStarted
- .4byte gText_RainContinues
- .4byte gText_DownpourContinues
- .4byte gText_RainStopped
- .4byte gText_SandstormBrewed
- .4byte gText_SandstormRages
- .4byte gText_SandstormSubsided
- .4byte gText_SunlightGotBright
- .4byte gText_SunlightStrong
- .4byte gText_SunlightFaded
- .4byte gText_StartedHail
- .4byte gText_HailContinues
- .4byte gText_HailStopped
- .4byte gText_FailedToSpitUp
- .4byte gText_FailedToSwallow
- .4byte gText_WindBecameHeatWave
- .4byte gText_StatChangesGone
- .4byte gText_CoinsScattered
- .4byte gText_TooWeakForSubstitute
- .4byte gText_SharedPain
- .4byte gText_BellChimed
- .4byte gText_FaintInThree
- .4byte gText_NoPPLeft
- .4byte gText_ButNoPPLeft
- .4byte gText_XUsedY
- .4byte gText_WallyUsedY
- .4byte gText_TrainerBlockedBall
- .4byte gText_DontBeAThief
- .4byte gText_ItDodgedBall
- .4byte gText_YouMissedPkmn
- .4byte gText_PkmnBrokeFree
- .4byte gText_ItAppearedCaught
- .4byte gText_AarghAlmostHadIt
- .4byte gText_ShootSoClose
- .4byte gText_GotchaPkmnCaught
- .4byte gText_GotchaPkmnCaught2
- .4byte gText_GiveNicknameCaptured
- .4byte gText_PkmnSentToPC
- .4byte gText_PkmnDataAddedToDex
- .4byte gText_ItIsRaining
- .4byte gText_SandstormIsRaging
- .4byte gText_CantEscape2
- .4byte gText_PkmnIgnoresAsleep
- .4byte gText_PkmnIgnoredOrders
- .4byte gText_PkmnBeganToNap
- .4byte gText_PkmnLoafing
- .4byte gText_PkmnWontObey
- .4byte gText_PkmnTurnedAway
- .4byte gText_PkmnPretendNotNotice
- .4byte gText_EnemyAboutToSwitchPkmn
- .4byte gText_CreptCloser
- .4byte gText_CantGetCloser
- .4byte gText_PkmnWatchingCarefully
- .4byte gText_PkmnCuriousAboutX
- .4byte gText_PkmnEnthralledByX
- .4byte gText_PkmnIgnoredX
- .4byte gText_ThrewPokeblockAtPkmn
- .4byte gText_OutOfSafariBalls
- .4byte gText_PkmnsXCuredParalysis
- .4byte gText_PkmnsXCuredPoison
- .4byte gText_PkmnsXHealedBurn
- .4byte gText_PkmnsXDefrostedIt
- .4byte gText_PkmnsXWokeIt
- .4byte gText_PkmnsXSnappedOut
- .4byte gText_PkmnsXCuredProblem
- .4byte gText_PkmnsXRestoredHealth
- .4byte gText_PkmnsXRestoredPP
- .4byte gText_PkmnsXRestoredStatus
- .4byte gText_PkmnsXRestoredHPALittle
- .4byte gText_XAllowsOnlyY
- .4byte gText_PkmnHungOnWithX
- .4byte gText_EmptyString3
- .4byte gText_PkmnsXPreventsBurns
- .4byte gText_PkmnsXBlocksY
- .4byte gText_PkmnsXRestoredHPALittle2
- .4byte gText_PkmnsXWhippedUpSandstorm
- .4byte gText_PkmnsXPreventsYLoss
- .4byte gText_PkmnsXInfatuatedY
- .4byte gText_PkmnsXMadeYIneffective
- .4byte gText_PkmnsXCuredYProblem
- .4byte gText_ItSuckedLiquidOoze
- .4byte gText_PkmnTransformed
- .4byte gText_ElectricityWeakened
- .4byte gText_FireWeakened
- .4byte gText_PkmnHidUnderwater
- .4byte gText_PkmnSprangUp
- .4byte gText_HMMovesCantBeForgotten
- .4byte gText_XFoundOneY
- .4byte gText_PlayerDefeatedXY
- .4byte gText_SoothingAroma
- .4byte gText_ItemsCantBeUsedNow
- .4byte gText_ForXCommaYZ
- .4byte gText_UsingXTheYOfZN
- .4byte gText_PkmnUsedXToGetPumped
- .4byte gText_PkmnsXMadeYUseless
- .4byte gText_PkmnTrappedBySandTomb
- .4byte gText_EmptyString4
- .4byte gText_ABoosted
- .4byte gText_PkmnsXIntensifiedSun
- .4byte gText_PkmnMakesGroundMiss
- .4byte gText_YouThrowABallNowRight
- .4byte gText_PkmnsXTookAttack
- .4byte gText_PkmnChoseXAsDestiny
- .4byte gText_PkmnLostFocus
- .4byte gText_UseNextPkmn
- .4byte gText_PkmnFledUsingIts
- .4byte gText_PkmnFledUsing
- .4byte gText_PkmnWasDraggedOut
- .4byte gText_PreventedFromWorking
- .4byte gText_PkmnsXNormalizedStatus
- .4byte gText_XYUsedZ
- .4byte gText_BoxIsFull
- .4byte gText_PkmnAvoidedAttack
- .4byte gText_PkmnsXMadeItIneffective
- .4byte gText_PkmnsXPreventsFlinching
- .4byte gText_PkmnAlreadyHasBurn
- .4byte gText_StatsWontDecrease2
- .4byte gText_PkmnsXBlocksY2
- .4byte gText_PkmnsXWoreOff
- .4byte gText_PkmnRaisedDefALittle
- .4byte gText_PkmnRaisedSpDefALittle
- .4byte gText_TheWallShattered
- .4byte gText_PkmnsXPreventsYsZ
- .4byte gText_PkmnsXCuredItsYProblem
- .4byte gText_PkmnCantEscape2
- .4byte gText_PkmnObtainedX
- .4byte gText_PkmnObtainedX2
- .4byte gText_PkmnObtainedXYObtainedZ
- .4byte gText_ButNoEffect
- .4byte gText_PkmnsXHadNoEffectOnY
- .4byte gText_TwoEnemiesDefeated
- .4byte gText_String48
- .4byte gText_PkmnIncapableOfPower
- .4byte gText_GlintAppearsInEye
- .4byte gText_PkmnGettingIntoPosition
- .4byte gText_PkmnBeganGrowlingDeeply
- .4byte gText_PkmnEagerForMore
- .4byte gText_DefeatedOpponentByReferee
- .4byte gText_LostToOpponentByReferee
- .4byte gText_TiedOpponentByReferee
- .4byte gText_QuestionForfeitMatch
- .4byte gText_ForfeitedMatch
- .4byte gText_PkmnTransferredSomeonesPC
- .4byte gText_PkmnTransferredLanettesPC
- .4byte gText_PkmnBoxSomeonesPCFull
- .4byte gText_PkmnBoxLanettesPCFull
- .4byte gText_String37
- .4byte gText_String49
-
- .align 2
-gUnknown_085CC834:: @ 85CC834
- .2byte 0x0017, 0x0018, 0x0159, 0x001a, 0x014c, 0x00e2, 0x00e3, 0x0021
- .2byte 0x0112, 0x0165, 0x00e8, 0x00e9, 0x00e5, 0x00ed, 0x00f0, 0x00f3
- .2byte 0x00ee, 0x00f4, 0x0066, 0x0067, 0x00ef, 0x00f5, 0x00ea, 0x00eb
- .2byte 0x00ec, 0x0065, 0x0098, 0x00e5, 0x00e5, 0x004e, 0x0160, 0x004d
- .2byte 0x0161, 0x004f, 0x0068, 0x0069, 0x001b, 0x006a, 0x0139, 0x0052
- .2byte 0x0053, 0x0070, 0x0071, 0x0073, 0x0074, 0x006c, 0x006e, 0x00f7
- .2byte 0x004c, 0x0075, 0x0076, 0x0077, 0x00d5, 0x00d6, 0x003d, 0x0130
- .2byte 0x0145, 0x0146, 0x00d7, 0x00d8, 0x003e, 0x0130, 0x0054, 0x0055
- .2byte 0x0056, 0x0057, 0x0058, 0x0059, 0x013d, 0x013e, 0x005a, 0x005c
- .2byte 0x005b, 0x005d, 0x005b, 0x0148, 0x0061, 0x00e5, 0x0063, 0x00e5
- .2byte 0x007d, 0x00e5, 0x007e, 0x00fb, 0x0028, 0x0029, 0x0037, 0x0038
- .2byte 0x0023, 0x0024, 0x002e, 0x002f, 0x0031, 0x0032, 0x0035, 0x0036
- .2byte 0x0017, 0x007c, 0x0045, 0x0136, 0x002d, 0x0139, 0x013b, 0x013c
- .2byte 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0142, 0x00a1, 0x014f, 0x0107
- .2byte 0x0108, 0x0109, 0x010a, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110
- .2byte 0x0110, 0x0110, 0x0110, 0x0111, 0x0110, 0x0110, 0x0110, 0x00f1
- .2byte 0x0110, 0x0110, 0x0110, 0x0116, 0x0117, 0x0118, 0x0119, 0x016d
- .2byte 0x011b, 0x011c, 0x011e, 0x011f, 0x0120, 0x0128, 0x0123, 0x0126
- .2byte 0x0125, 0x0124, 0x0127, 0x0129, 0x0156, 0x0131, 0x0163, 0x016a
- .2byte 0x00c7, 0x0163, 0x016a, 0x00c9, 0x0163, 0x016a, 0x0166, 0x0167
- .2byte 0x0168, 0x00cb, 0x0137, 0x0177, 0x0178, 0x0179, 0x017a
-
-gUnknown_085CC982:: @ 85CC982
- .2byte 0x0014, 0x0023, 0x0053, 0x0080, 0x00fa, 0x0148, 0xffff
-
-gText_PkmnIsEvolving:: @ 85CC990
- .string "What?\n{STR_VAR_1} is evolving!$"
-
-gText_CongratsPkmnEvolved:: @ 85CC9A6
- .string "Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{UNKNOWN_A}\p$"
-
-gText_PkmnStoppedEvolving:: @ 85CC9D3
- .string "Huh? {STR_VAR_1}\nstopped evolving!\p$"
-
-gText_EllipsisQuestionMark:: @ 85CC9EE
- .string "……?\p$"
-
-gText_WhatWillPkmnDo:: @ 85CC9F3
- .string "What will\n{STRING 18} do?$"
-
-gText_WhatWillPkmnDo2:: @ 85CCA04
- .string "What will\n{STRING 35} do?$"
-
-gText_WhatWillWallyDo:: @ 85CCA15
- .string "What will\nWALLY do?$"
-
-gText_LinkStandby:: @ 85CCA29
- .string "{PAUSE 16}Link standby…$"
-
-gText_BattleMenu:: @ 85CCA3A
- .string "FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN$"
-
-gText_SafariZoneMenu:: @ 85CCA54
- .string "BALL{CLEAR_TO 56}{POKEBLOCK}\nGO NEAR{CLEAR_TO 56}RUN$"
-
-gText_MoveInterfacePP:: @ 85CCA6F
- .string "PP $"
-
-gText_MoveInterfaceType:: @ 85CCA73
- .string "TYPE/$"
-
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}PP\nTYPE/$"
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}$"
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Which move should\nbe forgotten?$"
-
-gText_BattleYesNoChoice:: @ 85CCABB
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Yes\nNo$"
-
-gText_BattleSwitchWhich:: @ 85CCACA
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Switch\nwhich?$"
-
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}$"
- .string "{UP_ARROW}$"
- .string "{ESCAPE 4}$"
- .string "-$"
-
-gText_HP:: @ 85CCAF1
- .string "HP$"
-
-gText_Attack:: @ 85CCAF4
- .string "ATTACK$"
-
-gText_Defense:: @ 85CCAFB
- .string "DEFENSE$"
-
-gText_SpAtk:: @ 85CCB03
- .string "SP. ATK$"
-
-gText_SpDef:: @ 85CCB0B
- .string "SP. DEF$"
-
- .align 2
- .4byte gText_HP
- .4byte gText_SpAtk
- .4byte gText_Attack
- .4byte gText_SpDef
- .4byte gText_Defense
- .4byte gText_Speed
-
-gText_SafariBalls:: @ 85CCB2C
- .string "{HIGHLIGHT DARK_GREY}SAFARI BALLS$"
-
-gText_SafariBallLeft:: @ 85CCB3C
- .string "{HIGHLIGHT DARK_GREY}Left: $"
- .string "{HIGHLIGHT DARK_GREY}$"
- .string "sleep$"
- .string "poison$"
- .string "burn$"
- .string "paralysis$"
- .string "ice$"
- .string "confusion$"
- .string "love$"
-
-gText_SpaceAndSpace:: @ 85CCB79
- .string " and $"
-
-gText_CommaSpace:: @ 85CCB7F
- .string ", $"
-
-gText_Space2:: @ 85CCB82
- .string " $"
-
-gText_ScrollTextUp:: @ 85CCB84
- .string "\l$"
-
-gText_NewLine:: @ 85CCB86
- .string "\n$"
-
-gText_Are:: @ 85CCB88
- .string "are$"
-
-gText_Are2:: @ 85CCB8C
- .string "are$"
-
-gText_BadEgg:: @ 85CCB90
- .string "Bad EGG$"
-
-gText_BattleWallyName:: @ 85CCB98
- .string "WALLY$"
-
-gText_Win:: @ 85CCB9E
- .string "{HIGHLIGHT TRANSPARENT}Win$"
-
-gText_Loss:: @ 85CCBA5
- .string "{HIGHLIGHT TRANSPARENT}Loss$"
-
-gText_Draw:: @ 85CCBAD
- .string "{HIGHLIGHT TRANSPARENT}Draw$"
-
-gText_SpaceIs:: @ 85CCBB5
- .string " is$"
-
-gText_ApostropheS:: @ 85CCBB9
- .string "’s$"
-
-gText_UnknownMoveTypes:: @ 85CCBBC
- .string "a NORMAL move$ "
- .string "a FIGHTING move$ "
- .string "a FLYING move$ "
- .string "a POISON move$ "
- .string "a GROUND move$ "
- .string "a ROCK move$ "
- .string "a BUG move$ "
- .string "a GHOST move$ "
- .string "a STEEL move$ "
- .string "a ??? move$ "
- .string "a FIRE move$ "
- .string "a WATER move$ "
- .string "a GRASS move$ "
- .string "an ELECTRIC move$"
- .string "a PSYCHIC move$ "
- .string "an ICE move$ "
- .string "a DRAGON move$ "
- .string "a DARK move$ "
-
-gText_BattleTourney:: @ 85CCCEE
- .string "BATTLE TOURNEY$"
-
-gText_Round1:: @ 85CCCFD
- .string "Round 1$"
-
-gText_Round2:: @ 85CCD05
- .string "Round 2$"
-
-gText_Semifinal:: @ 85CCC0D
- .string "Semifinal$"
-
-gText_Final:: @ 85CCD17
- .string "Final$"
-
- .align 2
-gRoundsStringTable:: @ 85CCD20
- .4byte gText_Round1
- .4byte gText_Round2
- .4byte gText_Semifinal
- .4byte gText_Final
-
- .string "The great new hope!\p$"
- .string "Will the championship dream come true?!\p$"
- .string "A former CHAMPION!\p$"
- .string "The previous CHAMPION!\p$"
- .string "The unbeaten CHAMPION!\p$"
-
-gText_JapaneseHonorific:: @ 85CCDB2
- .string "{KUN}$"
-
-gText_Vs:: @ 85CCDB5
- .string "VS$"
-
-gText_RivalBuffer:: @ 85CCDB8
- .string "{RIVAL}$"
-
-gText_Mind:: @ 85CCDBB
- .string "Mind$"
-
-gText_Skill:: @ 85CCDC0
- .string "Skill$"
-
-gText_Body:: @ 85CCDC6
- .string "Body$"
-
-gText_Judgement:: @ 85CCDCB
- .string "{STRING 0}{CLEAR 13}Judgment{CLEAR 13}{PLAYER}$"
-
-gText_TwoTrainersSentPkmn:: @ 85CCDDE
- .string "{STRING 28} {STRING 29} sent\nout {RIVAL}!\p{STRING 46} {STRING 47} sent\nout {AQUA}!$"
-
-gText_TrainerXYSentOutPkmn3:: @ 85CCE04
- .string "{STRING 46} {STRING 47} sent\nout {STRING 0}!$"
-
-gText_TwoTrainersWantToBattle2:: @ 85CCE17
- .string "{STRING 28} {STRING 29} and\n{STRING 46} {STRING 47}\lwant to battle!\p$"
-
-gText_TrainerXYSentOutZGoN:: @ 85CCE38
- .string "{STRING 50} {STRING 51} sent\nout {VERSION}!\lGo, {STRING 5}!$"
-
-gText_TwoEnemiesDefeated:: @ 85CCE53
- .string "{STRING 28} {STRING 29} and\n{STRING 46} {STRING 47}\lwere defeated!\p$"
-
-gText_String48:: @ 85CCE73
- .string "{STRING 48}$"
-
-gText_PkmnIncapableOfPower:: @ 85CCE76
- .string "{STRING 15} appears incapable\nof using its power!$"
-
-gText_GlintAppearsInEye:: @ 85CCE9F
- .string "A glint appears in\n{STRING 19}’s eyes!$"
-
-gText_PkmnGettingIntoPosition:: @ 85CCEBD
- .string "{STRING 19} is getting into\nposition!$"
-
-gText_PkmnBeganGrowlingDeeply:: @ 85CCEDA
- .string "{STRING 19} began growling deeply!$"
-
-gText_PkmnEagerForMore:: @ 85CCEF4
- .string "{STRING 19} is eager for more!$"
-
-gUnknown_085CCF0A:: @ 85CCF0A
- .2byte 0x016E, 0x016F, 0x0170, 0x0171
-
-gText_RefIfNothingIsDecided:: @ 85CCF12
- .string "REFEREE: If nothing is decided in\n3 turns, we will go to judging!$"
-
-gText_RefThatsIt:: @ 85CCF54
- .string "REFEREE: That’s it! We will now go to\njudging to determine the winner!$"
-
-gText_RefJudgeMind:: @ 85CCF9B
- .string "REFEREE: Judging category 1, Mind!\nThe POKéMON showing the most guts!\p$"
-
-gText_RefJudgeSkill:: @ 85CCFE2
- .string "REFEREE: Judging category 2, Skill!\nThe POKéMON using moves the best!\p$"
-
-gText_RefJudgeBody:: @ 85CD029
- .string "REFEREE: Judging category 3, Body!\nThe POKéMON with the most vitality!\p$"
-
-gText_RefJudgement1:: @ 85CD071
- .string "REFEREE: Judgment: {STRING 0} to {PLAYER}!\nThe winner is {STRING 35}’s {STRING 5}!\p$"
-
-gText_RefJudgement2:: @ 85CD0A6
- .string "REFEREE: Judgment: {STRING 0} to {PLAYER}!\nThe winner is {STRING 29}’s {RIVAL}!\p$"
-
-gText_RefJudgement3:: @ 85CD0DB
- .string "REFEREE: Judgment: 3 to 3!\nWe have a draw!\p$"
-
-gText_DefeatedOpponentByReferee:: @ 85CD107
- .string "{STRING 5} defeated the opponent\n{RIVAL} in a REFEREE’s decision!$"
-
-gText_LostToOpponentByReferee:: @ 85CD13C
- .string "{STRING 5} lost to the opponent\n{RIVAL} in a REFEREE’s decision!$"
-
-gText_TiedOpponentByReferee:: @ 85CD170
- .string "{STRING 5} tied the opponent\n{RIVAL} in a REFEREE’s decision!$"
-
-gText_RefCommenceBattle:: @ 85CD1A1
- .string "REFEREE: {STRING 5} VS {RIVAL}!\nCommence battling!$"
-
- .align 2
-gRefereeStringsTable:: @ 85CD1C8
- .4byte gText_RefIfNothingIsDecided
- .4byte gText_RefThatsIt
- .4byte gText_RefJudgeMind
- .4byte gText_RefJudgeSkill
- .4byte gText_RefJudgeBody
- .4byte gText_RefJudgement1
- .4byte gText_RefJudgement2
- .4byte gText_RefJudgement3
- .4byte gText_RefCommenceBattle
-
-gText_QuestionForfeitMatch:: @ 85CD1EC
- .string "Would you like to forfeit the match\nand quit now?$"
-
-gText_ForfeitedMatch:: @ 85CD21E
- .string "{STRING 35} forfeited the match!$"
-
-gText_String37:: @ 85CD236
- .string "{STRING 37}$"
-
-gText_String49:: @ 85CD239
- .string "{STRING 49}$"
-
- .string "{PLAY_SE 0x0011}{STRING 28} {STRING 29} fled!$"
-
-gText_PlayerLostAgainst2:: @ 85CD24C
- .string "Player lost against\n{STRING 28} {STRING 29}!$"
-
-gText_PlayerBattledToDraw2:: @ 85CD267
- .string "Player battled to a draw against\n{STRING 28} {STRING 29}!$"
-
-gText_RecordBattleToPass:: @ 85CD28F
- .string "Would you like to record your battle\non your FRONTIER PASS?$"
-
-gText_BattleRecordedOnPass:: @ 85CD2CB
- .string "{STRING 35}’s battle result was recorded\non the FRONTIER PASS.$"
-
-gText_TrainerWantsToBattle:: @ 85CD301
- .string "{STRING 32}\nwants to battle!{PAUSE 49}$"
-
-gText_TwoTrainersWantToBattle3:: @ 85CD318
- .string "{STRING 32} and {STRING 33}\nwant to battle!{PAUSE 49}$"
-
- .align 1
-gUnknown_085CD336:: @ 85CD336
- .2byte 0x000e, 0x0046, 0x004a, 0x006a, 0x006b, 0x006c, 0x006e, 0x006f
- .2byte 0x0079, 0x007b, 0x007d, 0x0094, 0x0096, 0x0097, 0x009b, 0x009c
- .2byte 0x009f, 0x00a4, 0x00aa, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x00cd
- .2byte 0x00cf, 0x00d6, 0x00ed, 0x00f4, 0x00f5, 0x010a, 0x010f, 0x0112
- .2byte 0x0113, 0x011a, 0x0125, 0x0136, 0x013c, 0x0140, 0x0149, 0x014a
- .2byte 0x014e, 0x0154, 0x0000, 0x0064, 0x0069, 0x0075, 0x0085, 0x00af
- .2byte 0x010d, 0x0153, 0x0000, 0x0060, 0x0061, 0x0066, 0x0068, 0x008c
- .2byte 0x0090, 0x00a5, 0x00b8, 0x010c, 0x0111, 0x0118, 0x0119, 0x0129
- .2byte 0x012a, 0x012c, 0x0139, 0x015a, 0x015b, 0x0000, 0x0001, 0x000a
- .2byte 0x000b, 0x0011, 0x0013, 0x0014, 0x0015, 0x001e, 0x0023, 0x0025
- .2byte 0x0027, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0040, 0x0047
- .2byte 0x0051, 0x0059, 0x005a, 0x005b, 0x005c, 0x0067, 0x0076, 0x007a
- .2byte 0x0080, 0x0084, 0x008b, 0x0091, 0x00a3, 0x00a9, 0x00ab, 0x00ae
- .2byte 0x00c1, 0x00cc, 0x00d5, 0x00f9, 0x00fd, 0x00ff, 0x0100, 0x0103
- .2byte 0x0104, 0x0110, 0x011b, 0x0141, 0x0157, 0x0000
-
-gUnknown_085CD422:: @ 85CD422
- .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
-
- .align 2
-gUnknown_085CD42C:: @ 85CD42C
- .2byte 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101
- .2byte 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000
- .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102
- .2byte 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100
- .2byte 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x01ff
- .2byte 0x0000, 0x0100, 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100
- .2byte 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100, 0x0600, 0x0000
-
- .align 2
-gUnknown_085CD54C:: @ 85C54C
- .2byte 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101
- .2byte 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000
- .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102
- .2byte 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100
- .2byte 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0100, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0111, 0x0100, 0x0000, 0x0201
- .2byte 0x0301, 0x0000
-
- .align 2
-gUnknown_085CD660:: @ 85CD660
- .4byte gUnknown_085CD42C
- .4byte gUnknown_085CD54C
-
- .align 2
-gUnknown_085CD668:: @ 85CD668
- .byte 0x08, 0x04, 0x01, 0x00
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index 156a8e1c4..b2dfec5d8 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -3,40 +3,40 @@
.section script_data, "aw", %progbits
-gUnknown_082D86A8:: @ 82D86A8
+gBattleScriptsForMoveEffects:: @ 82D86A8
.incbin "baserom.gba", 0x2d86a8, 0x388
-gUnknown_082D8A30:: @ 82D8A30
+BattleScript_PresentDamageTarget:: @ 82D8A30
.incbin "baserom.gba", 0x2d8a30, 0x1e
-gUnknown_082D8A4E:: @ 82D8A4E
+BattleScript_MoveEnd:: @ 82D8A4E
.incbin "baserom.gba", 0x2d8a4e, 0x12
-gUnknown_082D8A60:: @ 82D8A60
+BattleScript_PauseEffectivenessSoundResultMsgEndMove:: @ 82D8A60
.incbin "baserom.gba", 0x2d8a60, 0x274
-gUnknown_082D8CD4:: @ 82D8CD4
+BattleScript_StatUp:: @ 82D8CD4
.incbin "baserom.gba", 0x2d8cd4, 0x91
-gUnknown_082D8D65:: @ 82D8D65
+BattleScript_StatDown:: @ 82D8D65
.incbin "baserom.gba", 0x2d8d65, 0x6fd
BattleScript_MoveUsedMustRecharge:: @ 82D9462
.incbin "baserom.gba", 0x2d9462, 0xa7f
-gUnknown_082D9EE1:: @ 82D9EE1
+BattleScript_PresentHealTarget:: @ 82D9EE1
.incbin "baserom.gba", 0x2d9ee1, 0x1a
-gUnknown_082D9EFB:: @ 82D9EFB
+BattleScript_AlreadyAtFullHp:: @ 82D9EFB
.incbin "baserom.gba", 0x2d9efb, 0x21
-gUnknown_082D9F1C:: @ 82D9F1C
+BattleScript_ButItFailed:: @ 82D9F1C
.incbin "baserom.gba", 0x2d9f1c, 0x88e
-gUnknown_082DA7AA:: @ 82DA7AA
+BattleScript_FaintAttacker:: @ 82DA7AA
.incbin "baserom.gba", 0x2da7aa, 0xd
-gUnknown_082DA7B7:: @ 82DA7B7
+BattleScript_FaintTarget:: @ 82DA7B7
.incbin "baserom.gba", 0x2da7b7, 0xd
gUnknown_082DA7C4:: @ 82DA7C4
@@ -45,40 +45,40 @@ gUnknown_082DA7C4:: @ 82DA7C4
gUnknown_082DA7CD:: @ 82DA7CD
.incbin "baserom.gba", 0x2da7cd, 0x160
-gUnknown_082DA92D:: @ 82DA92D
+BattleScript_LocalTrainerBattleWon:: @ 82DA92D
.incbin "baserom.gba", 0x2da92d, 0x3d
-gUnknown_082DA96A:: @ 82DA96A
+BattleScript_PayDayMoneyAndPickUpItems:: @ 82DA96A
.incbin "baserom.gba", 0x2da96a, 0x3
-gUnknown_082DA96D:: @ 82DA96D
+BattleScript_LocalBattleLost:: @ 82DA96D
.incbin "baserom.gba", 0x2da96d, 0x9e
gUnknown_082DAA0B:: @ 82DAA0B
.incbin "baserom.gba", 0x2daa0b, 0x2a
-gUnknown_082DAA35:: @ 82DAA35
+BattleScript_LinkBattleWonOrLost:: @ 82DAA35
.incbin "baserom.gba", 0x2daa35, 0x52
-gUnknown_082DAA87:: @ 82DAA87
+BattleScript_FrontierTrainerBattleWon:: @ 82DAA87
.incbin "baserom.gba", 0x2daa87, 0x54
-gUnknown_082DAADB:: @ 82DAADB
+BattleScript_SmokeBallEscape:: @ 82DAADB
.incbin "baserom.gba", 0x2daadb, 0xe
-gUnknown_082DAAE9:: @ 82DAAE9
+BattleScript_RanAwayUsingMonAbility:: @ 82DAAE9
.incbin "baserom.gba", 0x2daae9, 0x7
-gUnknown_082DAAF0:: @ 82DAAF0
+BattleScript_GotAwaySafely:: @ 82DAAF0
.incbin "baserom.gba", 0x2daaf0, 0x7
-gUnknown_082DAAF7:: @ 82DAAF7
+BattleScript_WildMonFled:: @ 82DAAF7
.incbin "baserom.gba", 0x2daaf7, 0x7
gUnknown_082DAAFE:: @ 82DAAFE
.incbin "baserom.gba", 0x2daafe, 0x4
-gUnknown_082DAB02:: @ 82DAB02
+BattleScript_PrintFailedToRunString:: @ 82DAB02
.incbin "baserom.gba", 0x2dab02, 0x9
gUnknown_082DAB0B:: @ 82DAB0B
@@ -87,13 +87,13 @@ gUnknown_082DAB0B:: @ 82DAB0B
gUnknown_082DAB11:: @ 82DAB11
.incbin "baserom.gba", 0x2dab11, 0x4
-gUnknown_082DAB15:: @ 82DAB15
+BattleScript_ActionSwitch:: @ 82DAB15
.incbin "baserom.gba", 0x2dab15, 0xa4
-gUnknown_082DABB9:: @ 82DABB9
+BattleScript_Pausex20:: @ 82DABB9
.incbin "baserom.gba", 0x2dabb9, 0x4
-gUnknown_082DABBD:: @ 82DABBD
+BattleScript_LevelUp:: @ 82DABBD
.incbin "baserom.gba", 0x2dabbd, 0x6f
gUnknown_082DAC2C:: @ 82DAC2C
@@ -135,10 +135,10 @@ BattleScript_BideNoEnergyToAttack:: @ 82DADC4
gUnknown_082DADD8:: @ 82DADD8
.incbin "baserom.gba", 0x2dadd8, 0x2b
-gUnknown_082DAE03:: @ 82DAE03
+BattleScript_MistProtected:: @ 82DAE03
.incbin "baserom.gba", 0x2dae03, 0xa
-gUnknown_082DAE0D:: @ 82DAE0D
+BattleScript_RageIsBuilding:: @ 82DAE0D
.incbin "baserom.gba", 0x2dae0d, 0x7
BattleScript_MoveUsedIsDisabled:: @ 82DAE14
@@ -156,7 +156,7 @@ gUnknown_082DAE2A:: @ 82DAE2A
BattleScript_EncoredNoMore:: @ 82DAE37
.incbin "baserom.gba", 0x2dae37, 0x7
-gUnknown_082DAE3E:: @ 82DAE3E
+BattleScript_DestinyBondTakesLife:: @ 82DAE3E
.incbin "baserom.gba", 0x2dae3e, 0x1b
gUnknown_082DAE59:: @ 82DAE59
@@ -174,19 +174,19 @@ gUnknown_082DAF05:: @ 82DAF05
gUnknown_082DAF20:: @ 82DAF20
.incbin "baserom.gba", 0x2daf20, 0x7
-gUnknown_082DAF27:: @ 82DAF27
+BattleScript_AllStatsUp:: @ 82DAF27
.incbin "baserom.gba", 0x2daf27, 0x9c
-gUnknown_082DAFC3:: @ 82DAFC3
+BattleScript_RapidSpinAway:: @ 82DAFC3
.incbin "baserom.gba", 0x2dafc3, 0x2
-gUnknown_082DAFC5:: @ 82DAFC5
+BattleScript_WrapFree:: @ 82DAFC5
.incbin "baserom.gba", 0x2dafc5, 0x11
-gUnknown_082DAFD6:: @ 82DAFD6
+BattleScript_LeechSeedFree:: @ 82DAFD6
.incbin "baserom.gba", 0x2dafd6, 0x7
-gUnknown_082DAFDD:: @ 82DAFDD
+BattleScript_SpikesFree:: @ 82DAFDD
.incbin "baserom.gba", 0x2dafdd, 0x7
gUnknown_082DAFE4:: @ 82DAFE4
@@ -198,7 +198,7 @@ BattleScript_NoMovesLeft:: @ 82DB072
gUnknown_082DB076:: @ 82DB076
.incbin "baserom.gba", 0x2db076, 0x4
-gUnknown_082DB07A:: @ 82DB07A
+BattleScript_NoPPForMove:: @ 82DB07A
.incbin "baserom.gba", 0x2db07a, 0xf
gUnknown_082DB089:: @ 82DB089
@@ -222,10 +222,10 @@ BattleScript_WishComesTrue:: @ 82DB0B7
BattleScript_IngrainTurnHeal:: @ 82DB0EE
.incbin "baserom.gba", 0x2db0ee, 0x29
-gUnknown_082DB117:: @ 82DB117
+BattleScript_AtkDefDown:: @ 82DB117
.incbin "baserom.gba", 0x2db117, 0x51
-gUnknown_082DB168:: @ 82DB168
+BattleScript_KnockedOff:: @ 82DB168
.incbin "baserom.gba", 0x2db168, 0xe
BattleScript_MoveUsedIsImprisoned:: @ 82DB176
@@ -237,25 +237,25 @@ gUnknown_082DB181:: @ 82DB181
gUnknown_082DB185:: @ 82DB185
.incbin "baserom.gba", 0x2db185, 0x8
-gUnknown_082DB18D:: @ 82DB18D
+BattleScript_GrudgeTakesPp:: @ 82DB18D
.incbin "baserom.gba", 0x2db18d, 0x7
-gUnknown_082DB194:: @ 82DB194
+BattleScript_MagicCoatBounce:: @ 82DB194
.incbin "baserom.gba", 0x2db194, 0x18
-gUnknown_082DB1AC:: @ 82DB1AC
+BattleScript_SnatchedMove:: @ 82DB1AC
.incbin "baserom.gba", 0x2db1ac, 0x1b
-gUnknown_082DB1C7:: @ 82DB1C7
+BattleScript_EnduredMsg:: @ 82DB1C7
.incbin "baserom.gba", 0x2db1c7, 0x7
-gUnknown_082DB1CE:: @ 82DB1CE
+BattleScript_OneHitKOMsg:: @ 82DB1CE
.incbin "baserom.gba", 0x2db1ce, 0x7
-gUnknown_082DB1D5:: @ 82DB1D5
+BattleScript_SAtkDown2:: @ 82DB1D5
.incbin "baserom.gba", 0x2db1d5, 0x2a
-gUnknown_082DB1FF:: @ 82DB1FF
+BattleScript_FocusPunchSetUp:: @ 82DB1FF
.incbin "baserom.gba", 0x2db1ff, 0x14
BattleScript_MoveUsedIsAsleep:: @ 82DB213
@@ -279,7 +279,7 @@ BattleScript_MoveUsedIsFrozen:: @ 82DB26A
BattleScript_MoveUsedUnfroze:: @ 82DB277
.incbin "baserom.gba", 0x2db277, 0xb
-gUnknown_082DB282:: @ 82DB282
+BattleScript_DefrostedViaFireMove:: @ 82DB282
.incbin "baserom.gba", 0x2db282, 0x9
BattleScript_MoveUsedIsParalyzed:: @ 82DB28B
@@ -300,7 +300,7 @@ BattleScript_MoveUsedIsConfused:: @ 82DB2BD
BattleScript_MoveUsedIsConfusedNoMore:: @ 82DB300
.incbin "baserom.gba", 0x2db300, 0x7
-gUnknown_082DB307:: @ 82DB307
+BattleScript_PrintPayDayMoneyString:: @ 82DB307
.incbin "baserom.gba", 0x2db307, 0x7
BattleScript_WrapTurnDmg:: @ 82DB30E
@@ -321,46 +321,46 @@ BattleScript_NightmareTurnDmg:: @ 82DB33F
BattleScript_CurseTurnDmg:: @ 82DB350
.incbin "baserom.gba", 0x2db350, 0x11
-gUnknown_082DB361:: @ 82DB361
+BattleScript_TargetPRLZHeal:: @ 82DB361
.incbin "baserom.gba", 0x2db361, 0x9
-gUnknown_082DB36A:: @ 82DB36A
+BattleScript_MoveEffectSleep:: @ 82DB36A
.incbin "baserom.gba", 0x2db36A, 0xE
BattleScript_YawnMakesAsleep:: @ 82DB378
.incbin "baserom.gba", 0x2db378, 0xE
-gUnknown_082DB386:: @ 82DB386
+BattleScript_MoveEffectPoison:: @ 82DB386
.incbin "baserom.gba", 0x2db386, 0xF
-gUnknown_082DB395:: @ 82DB395
+BattleScript_MoveEffectBurn:: @ 82DB395
.incbin "baserom.gba", 0x2db395, 0xF
-gUnknown_082DB3A4:: @ 82DB3A4
+BattleScript_MoveEffectFreeze:: @ 82DB3A4
.incbin "baserom.gba", 0x2db3A4, 0xF
-gUnknown_082DB3B3:: @ 82DB3B3
+BattleScript_MoveEffectParalysis:: @ 82DB3B3
.incbin "baserom.gba", 0x2db3B3, 0xF
-gUnknown_082DB3C2:: @ 82DB3C2
+BattleScript_MoveEffectUproar:: @ 82DB3C2
.incbin "baserom.gba", 0x2db3C2, 0x7
-gUnknown_082DB3C9:: @ 82DB3C9
+BattleScript_MoveEffectToxic:: @ 82DB3C9
.incbin "baserom.gba", 0x2db3C9, 0xD
-gUnknown_082DB3D6:: @ 82DB3D6
+BattleScript_MoveEffectPayDay:: @ 82DB3D6
.incbin "baserom.gba", 0x2db3D6, 0x7
-gUnknown_082DB3DD:: @ 82DB3DD
+BattleScript_MoveEffectWrap:: @ 82DB3DD
.incbin "baserom.gba", 0x2db3DD, 0x9
-gUnknown_082DB3E6:: @ 82DB3E6
+BattleScript_MoveEffectConfusion:: @ 82DB3E6
.incbin "baserom.gba", 0x2db3E6, 0xE
-gUnknown_082DB3F4:: @ 82DB3F4
+BattleScript_MoveEffectRecoil33:: @ 82DB3F4
.incbin "baserom.gba", 0x2db3F4, 0x2e
-gUnknown_082DB422:: @ 82DB422
+BattleScript_ItemSteal:: @ 82DB422
.incbin "baserom.gba", 0x2db422, 0xe
BattleScript_DrizzleActivates:: @ 82DB430
@@ -393,13 +393,13 @@ gUnknown_082DB4C1:: @ 82DB4C1
BattleScript_DroughtActivates:: @ 82DB52A
.incbin "baserom.gba", 0x2db52a, 0x14
-gUnknown_082DB53E:: @ 82DB53E
+BattleScript_TookAttack:: @ 82DB53E
.incbin "baserom.gba", 0x2db53e, 0x14
-gUnknown_082DB552:: @ 82DB552
+BattleScript_SturdyPreventsOHKO:: @ 82DB552
.incbin "baserom.gba", 0x2db552, 0xe
-gUnknown_082DB560:: @ 82DB560
+BattleScript_DampStopsExplosion:: @ 82DB560
.incbin "baserom.gba", 0x2db560, 0xe
BattleScript_MoveHPDrain_PPLoss:: @ 82DB56E
@@ -420,31 +420,31 @@ BattleScript_FlashFireBoost_PPLoss:: @ 82DB5A7
BattleScript_FlashFireBoost:: @ 82DB5A8
.incbin "baserom.gba", 0x2db5a8, 0x1f
-gUnknown_082DB5C7:: @ 82DB5C7
+BattleScript_AbilityNoStatLoss:: @ 82DB5C7
.incbin "baserom.gba", 0x2db5c7, 0xa
-gUnknown_082DB5D1:: @ 82DB5D1
+BattleScript_BRNPrevention:: @ 82DB5D1
.incbin "baserom.gba", 0x2db5d1, 0xc
-gUnknown_082DB5DD:: @ 82DB5DD
+BattleScript_PRLZPrevention:: @ 82DB5DD
.incbin "baserom.gba", 0x2db5dd, 0xc
-gUnknown_082DB5E9:: @ 82DB5E9
+BattleScript_PSNPrevention:: @ 82DB5E9
.incbin "baserom.gba", 0x2db5e9, 0xc
-gUnknown_082DB5F5:: @ 82DB5F5
+BattleScript_ObliviousPreventsAttraction:: @ 82DB5F5
.incbin "baserom.gba", 0x2db5f5, 0xe
-gUnknown_082DB603:: @ 82DB603
+BattleScript_FlinchPrevention:: @ 82DB603
.incbin "baserom.gba", 0x2db603, 0x1c
BattleScript_SoundproofProtected:: @ 82DB61F
.incbin "baserom.gba", 0x2db61f, 0x10
-gUnknown_082DB62F:: @ 82DB62F
+BattleScript_AbilityNoSpecificStatLoss:: @ 82DB62F
.incbin "baserom.gba", 0x2db62f, 0x10
-gUnknown_082DB63F:: @ 82DB63F
+BattleScript_StickyHoldActivates:: @ 82DB63F
.incbin "baserom.gba", 0x2db63f, 0xe
BattleScript_ColorChangeActivates:: @ 82DB64D
@@ -462,7 +462,7 @@ BattleScript_ApplySecondaryEffect:: @ 82DB67C
BattleScript_SynchronizeActivates:: @ 82DB67F
.incbin "baserom.gba", 0x2db67f, 0x3
-gUnknown_082DB682:: @ 82DB682
+BattleScript_NoItemSteal:: @ 82DB682
.incbin "baserom.gba", 0x2db682, 0xa
gUnknown_082DB68C:: @ 82DB68C
@@ -483,7 +483,7 @@ gUnknown_082DB6D9:: @ 82DB6D9
gUnknown_082DB6F0:: @ 82DB6F0
.incbin "baserom.gba", 0x2db6f0, 0xb
-gUnknown_082DB6FB:: @ 82DB6FB
+BattleScript_SubstituteFade:: @ 82DB6FB
.incbin "baserom.gba", 0x2db6fb, 0xb
BattleScript_BerryCurePrlzEnd2:: @ 82DB706
@@ -549,7 +549,7 @@ BattleScript_ItemHealHP_Ret:: @ 82DB7F7
gUnknown_082DB812:: @ 82DB812
.incbin "baserom.gba", 0x2db812, 0x4
-gUnknown_082DB816:: @ 82DB816
+BattleScript_HangedOnMsg:: @ 82DB816
.incbin "baserom.gba", 0x2db816, 0xe
BattleScript_BerryConfuseHealEnd2:: @ 82DB824
@@ -561,7 +561,7 @@ BattleScript_BerryStatRaiseEnd2:: @ 82DB84E
BattleScript_BerryFocusEnergyEnd2:: @ 82DB869
.incbin "baserom.gba", 0x2db869, 0x10
-gUnknown_082DB879:: @ 82DB879
+BattleScript_ActionSelectionItemsCantBeUsed:: @ 82DB879
.incbin "baserom.gba", 0x2db879, 0x4
gUnknown_082DB87D:: @ 82DB87D
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index 0fccf507a..4a4dc4665 100644
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -4,7 +4,7 @@
.section script_data, "aw", %progbits
.align 2
-gUnknown_082DBD08:: @ 82DBD08
+gBattlescriptsForBallThrow:: @ 82DBD08
.4byte gUnknown_082DBD68
.4byte gUnknown_082DBD68
.4byte gUnknown_082DBD68
@@ -29,11 +29,11 @@ gUnknown_082DBD3C:: @ 82DBD3C
.4byte gUnknown_082DBE91
.align 2
-gUnknown_082DBD54:: @ 82DBD54
- .4byte gUnknown_082DBEB3
+gBattlescriptsForRunningByItem:: @ 82DBD54
+ .4byte BattleScript_RunByUsingItem
.align 2
-gUnknown_082DBD58:: @ 82DBD58
+gBattlescriptsForSafariActions:: @ 82DBD58
.4byte gUnknown_082DBEBD
.4byte gUnknown_082DBEC4
.4byte gUnknown_082DBECD
@@ -45,16 +45,16 @@ gUnknown_082DBD68:: @ 82DBD68
gUnknown_082DBD7E:: @ 82DBD7E
.incbin "baserom.gba", 0x2dbd7e, 0x6
-gUnknown_082DBD84:: @ 82DBD84
+BattleScript_SuccessBallThrow:: @ 82DBD84
.incbin "baserom.gba", 0x2dbd84, 0x46
-gUnknown_082DBDCA:: @ 82DBDCA
+BattleScript_WallyBallThrow:: @ 82DBDCA
.incbin "baserom.gba", 0x2dbdca, 0xa
-gUnknown_082DBDD4:: @ 82DBDD4
+BattleScript_ShakeBallThrow:: @ 82DBDD4
.incbin "baserom.gba", 0x2dbdd4, 0x2e
-gUnknown_082DBE02:: @ 82DBE02
+BattleScript_TrainerBallBlock:: @ 82DBE02
.incbin "baserom.gba", 0x2dbe02, 0x10
gUnknown_082DBE12:: @ 82DBE12
@@ -72,7 +72,7 @@ gUnknown_082DBE6F:: @ 82DBE6F
gUnknown_082DBE91:: @ 82DBE91
.incbin "baserom.gba", 0x2dbe91, 0x22
-gUnknown_082DBEB3:: @ 82DBEB3
+BattleScript_RunByUsingItem:: @ 82DBEB3
.incbin "baserom.gba", 0x2dbeb3, 0xA
gUnknown_082DBEBD:: @ 82DBEBD
diff --git a/data/battle_setup.s b/data/battle_setup.s
index e4667dc9f..d5043aae9 100644
--- a/data/battle_setup.s
+++ b/data/battle_setup.s
@@ -5,43 +5,186 @@
.align 2, 0
gUnknown_0854FE88:: @ 854FE88
- .incbin "baserom.gba", 0x54fe88, 0x8
+ .byte 0x08, 0x09, 0x05, 0x0a, 0x00, 0x0a, 0x07, 0x06
gUnknown_0854FE90:: @ 854FE90
- .incbin "baserom.gba", 0x54fe90, 0x8
+ .byte 0x04, 0x0b, 0x02, 0x03, 0x00, 0x0a, 0x01, 0x06
gUnknown_0854FE98:: @ 854FE98
- .incbin "baserom.gba", 0x54fe98, 0xc
+ .byte 0x1d, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29
gUnknown_0854FEA4:: @ 854FEA4
- .incbin "baserom.gba", 0x54fea4, 0x3
+ .byte 0x1f, 0x20, 0x21
gUnknown_0854FEA7:: @ 854FEA7
- .incbin "baserom.gba", 0x54fea7, 0x5
+ .byte 0x1d, 0x1f, 0x20, 0x21, 0x00
+ .align 2
gUnknown_0854FEAC:: @ 854FEAC
- .incbin "baserom.gba", 0x54feac, 0x48
+ .4byte gUnknown_02038BC8, 0x00000000
+ .4byte gTrainerBattleOpponent_A, 0x00000001
+ .4byte gUnknown_02038BD0, 0x00000001
+ .4byte gUnknown_02038BD4, 0x00000002
+ .4byte gUnknown_02038BDC, 0x00000002
+ .4byte gUnknown_02038BE4, 0x00000005
+ .4byte gUnknown_02038BE8, 0x00000005
+ .4byte gUnknown_02038BF0, 0x00000005
+ .4byte gUnknown_02038BEC, 0x00000006
+ .align 2
gUnknown_0854FEF4:: @ 854FEF4
- .incbin "baserom.gba", 0x54fef4, 0x48
+ .4byte gUnknown_02038BC8, 0x00000000
+ .4byte gTrainerBattleOpponent_A, 0x00000001
+ .4byte gUnknown_02038BD0, 0x00000001
+ .4byte gUnknown_02038BD4, 0x00000002
+ .4byte gUnknown_02038BDC, 0x00000002
+ .4byte gUnknown_02038BE4, 0x00000005
+ .4byte gUnknown_02038BE8, 0x00000005
+ .4byte gUnknown_02038BF0, 0x00000002
+ .4byte gUnknown_02038BEC, 0x00000006
+ .align 2
gUnknown_0854FF3C:: @ 854FF3C
- .incbin "baserom.gba", 0x54ff3c, 0x48
+ .4byte gUnknown_02038BC8, 0x00000000
+ .4byte gTrainerBattleOpponent_A, 0x00000001
+ .4byte gUnknown_02038BD0, 0x00000001
+ .4byte gUnknown_02038BD4, 0x00000002
+ .4byte gUnknown_02038BDC, 0x00000002
+ .4byte gUnknown_02038BE4, 0x00000005
+ .4byte gUnknown_02038BE8, 0x00000002
+ .4byte gUnknown_02038BF0, 0x00000005
+ .4byte gUnknown_02038BEC, 0x00000006
+ .align 2
gUnknown_0854FF84:: @ 854FF84
- .incbin "baserom.gba", 0x54ff84, 0x48
+ .4byte gUnknown_02038BC8, 0x00000000
+ .4byte gTrainerBattleOpponent_A, 0x00000001
+ .4byte gUnknown_02038BD0, 0x00000001
+ .4byte gUnknown_02038BD4, 0x00000005
+ .4byte gUnknown_02038BDC, 0x00000002
+ .4byte gUnknown_02038BE4, 0x00000005
+ .4byte gUnknown_02038BE8, 0x00000005
+ .4byte gUnknown_02038BF0, 0x00000005
+ .4byte gUnknown_02038BEC, 0x00000006
+ .align 2
gUnknown_0854FFCC:: @ 854FFCC
- .incbin "baserom.gba", 0x54ffcc, 0x48
+ .4byte gUnknown_02038BC8, 0x00000000
+ .4byte gTrainerBattleOpponent_A, 0x00000001
+ .4byte gUnknown_02038BD0, 0x00000001
+ .4byte gUnknown_02038BD4, 0x00000002
+ .4byte gUnknown_02038BDC, 0x00000002
+ .4byte gUnknown_02038BE4, 0x00000005
+ .4byte gUnknown_02038BE8, 0x00000002
+ .4byte gUnknown_02038BF0, 0x00000002
+ .4byte gUnknown_02038BEC, 0x00000006
+ .align 2
gUnknown_08550014:: @ 8550014
- .incbin "baserom.gba", 0x550014, 0x48
+ .4byte gUnknown_02038BC8, 0x00000000
+ .4byte gTrainerBattleOpponent_B, 0x00000001
+ .4byte gUnknown_02038BD0, 0x00000001
+ .4byte gUnknown_02038BD8, 0x00000002
+ .4byte gUnknown_02038BE0, 0x00000002
+ .4byte gUnknown_02038BE4, 0x00000005
+ .4byte gUnknown_02038BE8, 0x00000005
+ .4byte gUnknown_02038BF4, 0x00000005
+ .4byte gUnknown_02038BEC, 0x00000006
+ .align 2
gUnknown_0855005C:: @ 855005C
- .incbin "baserom.gba", 0x55005c, 0x48
+ .4byte gUnknown_02038BC8, 0x00000000
+ .4byte gTrainerBattleOpponent_B, 0x00000001
+ .4byte gUnknown_02038BD0, 0x00000001
+ .4byte gUnknown_02038BD8, 0x00000002
+ .4byte gUnknown_02038BE0, 0x00000002
+ .4byte gUnknown_02038BE4, 0x00000005
+ .4byte gUnknown_02038BE8, 0x00000005
+ .4byte gUnknown_02038BF4, 0x00000002
+ .4byte gUnknown_02038BEC, 0x00000006
+ .align 2
gUnknown_085500A4:: @ 85500A4
- .incbin "baserom.gba", 0x5500a4, 0x4e0
+ .2byte 0x0025, 0x0028, 0x0029, 0x002a, 0x002b, 0x0000, 0x0021, 0x0000
+ .2byte 0x02e1, 0x032c, 0x032d, 0x032e, 0x032f, 0x0000, 0x0014, 0x0000
+ .2byte 0x002c, 0x002f, 0x0030, 0x0031, 0x0032, 0x0000, 0x001a, 0x0000
+ .2byte 0x0039, 0x003c, 0x003d, 0x003e, 0x003f, 0x0000, 0x0018, 0x0000
+ .2byte 0x0040, 0x0043, 0x0044, 0x0045, 0x0046, 0x0000, 0x0018, 0x0000
+ .2byte 0x02af, 0x02b0, 0x02b1, 0x02b2, 0x02b3, 0x0000, 0x0027, 0x0000
+ .2byte 0x02ff, 0x033c, 0x033d, 0x033e, 0x033f, 0x0000, 0x0024, 0x0000
+ .2byte 0x005e, 0x0065, 0x0066, 0x0067, 0x0068, 0x0000, 0x001a, 0x0000
+ .2byte 0x004e, 0x0054, 0x0055, 0x0056, 0x0057, 0x0000, 0x001a, 0x0000
+ .2byte 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0018, 0x0014, 0x0000
+ .2byte 0x0072, 0x0078, 0x0079, 0x007a, 0x007b, 0x0000, 0x0013, 0x0000
+ .2byte 0x0090, 0x034c, 0x034d, 0x034e, 0x034f, 0x0018, 0x0038, 0x0000
+ .2byte 0x007f, 0x0084, 0x0085, 0x0086, 0x0087, 0x0000, 0x0024, 0x0000
+ .2byte 0x0088, 0x008b, 0x008c, 0x008d, 0x008e, 0x0000, 0x0013, 0x0000
+ .2byte 0x008f, 0x0093, 0x0094, 0x0095, 0x0096, 0x0000, 0x001d, 0x0000
+ .2byte 0x009b, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x0000, 0x0016, 0x0000
+ .2byte 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x0000, 0x001e, 0x0000
+ .2byte 0x02a0, 0x0338, 0x0339, 0x033a, 0x033b, 0x0000, 0x002a, 0x0000
+ .2byte 0x00c3, 0x0340, 0x0341, 0x0342, 0x0343, 0x0000, 0x0026, 0x0000
+ .2byte 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x0000, 0x0021, 0x0000
+ .2byte 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x0000, 0x001d, 0x0000
+ .2byte 0x00d8, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0018, 0x000d, 0x0000
+ .2byte 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x0018, 0x0001, 0x0000
+ .2byte 0x00e2, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x0000, 0x0023, 0x0000
+ .2byte 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x0000, 0x0026, 0x0000
+ .2byte 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0000, 0x0026, 0x0000
+ .2byte 0x00fe, 0x0101, 0x0102, 0x0103, 0x0104, 0x0000, 0x0024, 0x0000
+ .2byte 0x0118, 0x011a, 0x011b, 0x011c, 0x011d, 0x0000, 0x001f, 0x0000
+ .2byte 0x0111, 0x0114, 0x0115, 0x0116, 0x0117, 0x0000, 0x001f, 0x0000
+ .2byte 0x011f, 0x0120, 0x0121, 0x0122, 0x0123, 0x0000, 0x0020, 0x0000
+ .2byte 0x012e, 0x012f, 0x0130, 0x0131, 0x0132, 0x0000, 0x0019, 0x0000
+ .2byte 0x0125, 0x0127, 0x0128, 0x0129, 0x012a, 0x0000, 0x0012, 0x0000
+ .2byte 0x0133, 0x0134, 0x0135, 0x0136, 0x0137, 0x0000, 0x001e, 0x0000
+ .2byte 0x0139, 0x013a, 0x013b, 0x013c, 0x013d, 0x0018, 0x000c, 0x0000
+ .2byte 0x013e, 0x0148, 0x0149, 0x014a, 0x014b, 0x0000, 0x0011, 0x0000
+ .2byte 0x0153, 0x015a, 0x015b, 0x015c, 0x015d, 0x0000, 0x0015, 0x0000
+ .2byte 0x0178, 0x017b, 0x017c, 0x017d, 0x017e, 0x0000, 0x002b, 0x0000
+ .2byte 0x0171, 0x0172, 0x0173, 0x0174, 0x0175, 0x0000, 0x0020, 0x0000
+ .2byte 0x0166, 0x0168, 0x0169, 0x016a, 0x016b, 0x0000, 0x0019, 0x0000
+ .2byte 0x016c, 0x016d, 0x016e, 0x016f, 0x0170, 0x0000, 0x0020, 0x0000
+ .2byte 0x0182, 0x0184, 0x0185, 0x0186, 0x0187, 0x0000, 0x002b, 0x0000
+ .2byte 0x0161, 0x0162, 0x0163, 0x0164, 0x0165, 0x0000, 0x0019, 0x0000
+ .2byte 0x0179, 0x0334, 0x0335, 0x0336, 0x0337, 0x0000, 0x0029, 0x0000
+ .2byte 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x0018, 0x0001, 0x0000
+ .2byte 0x0196, 0x0199, 0x019a, 0x019b, 0x019c, 0x0000, 0x0023, 0x0000
+ .2byte 0x01a3, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x0000, 0x001c, 0x0000
+ .2byte 0x01ab, 0x01ae, 0x01af, 0x01b0, 0x01b1, 0x0000, 0x001e, 0x0000
+ .2byte 0x01b2, 0x01b5, 0x01b6, 0x01b7, 0x01b8, 0x0000, 0x001c, 0x0000
+ .2byte 0x01c1, 0x01d1, 0x01d2, 0x01d3, 0x01d4, 0x0000, 0x0027, 0x0000
+ .2byte 0x01da, 0x01dd, 0x01de, 0x01df, 0x01e0, 0x0018, 0x000d, 0x0000
+ .2byte 0x01e1, 0x01e2, 0x01e7, 0x01e8, 0x01e9, 0x0000, 0x0012, 0x0000
+ .2byte 0x01ec, 0x01f1, 0x01f2, 0x01f3, 0x01f4, 0x0000, 0x0028, 0x0000
+ .2byte 0x02e4, 0x0330, 0x0331, 0x0332, 0x0333, 0x0000, 0x0017, 0x0000
+ .2byte 0x0200, 0x0203, 0x0204, 0x0205, 0x0206, 0x0000, 0x0019, 0x0000
+ .2byte 0x0221, 0x0224, 0x0225, 0x0226, 0x0227, 0x0000, 0x0020, 0x0000
+ .2byte 0x021a, 0x021d, 0x021e, 0x021f, 0x0220, 0x0000, 0x0020, 0x0000
+ .2byte 0x0009, 0x0348, 0x0349, 0x034a, 0x034b, 0x0018, 0x0011, 0x0000
+ .2byte 0x022f, 0x0232, 0x0233, 0x0234, 0x0235, 0x0000, 0x0022, 0x0000
+ .2byte 0x0228, 0x022b, 0x022c, 0x022d, 0x022e, 0x0000, 0x0022, 0x0000
+ .2byte 0x025c, 0x025f, 0x0260, 0x0261, 0x0262, 0x0000, 0x0013, 0x0000
+ .2byte 0x026d, 0x026e, 0x026f, 0x0270, 0x0271, 0x0018, 0x000b, 0x0000
+ .2byte 0x0273, 0x027c, 0x027d, 0x027e, 0x027f, 0x0000, 0x001b, 0x0000
+ .2byte 0x0001, 0x0344, 0x0345, 0x0346, 0x0347, 0x0018, 0x000c, 0x0000
+ .2byte 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0018, 0x003e, 0x0000
+ .2byte 0x0291, 0x0292, 0x0293, 0x0294, 0x0294, 0x0018, 0x002b, 0x0000
+ .2byte 0x0109, 0x0302, 0x0303, 0x0304, 0x0305, 0x0000, 0x0003, 0x0000
+ .2byte 0x010a, 0x0306, 0x0307, 0x0308, 0x0309, 0x0000, 0x000b, 0x0000
+ .2byte 0x010b, 0x030a, 0x030b, 0x030c, 0x030d, 0x0000, 0x0002, 0x0000
+ .2byte 0x010c, 0x030e, 0x030f, 0x0310, 0x0311, 0x0000, 0x000c, 0x0000
+ .2byte 0x010d, 0x0312, 0x0313, 0x0314, 0x0315, 0x0000, 0x0000, 0x0000
+ .2byte 0x010e, 0x0316, 0x0317, 0x0318, 0x0319, 0x0000, 0x0004, 0x0000
+ .2byte 0x010f, 0x031a, 0x031b, 0x031c, 0x031d, 0x0000, 0x0006, 0x0000
+ .2byte 0x0110, 0x031e, 0x031f, 0x0320, 0x0321, 0x0000, 0x0007, 0x0000
+ .2byte 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0000, 0x0008, 0x0000
+ .2byte 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0000, 0x0008, 0x0000
+ .2byte 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0000, 0x0008, 0x0000
+ .2byte 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0000, 0x0008, 0x0000
+ .2byte 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x0000, 0x0008, 0x0000
+ .align 2
gUnknown_08550584:: @ 8550584
- .incbin "baserom.gba", 0x550584, 0x10
+ .2byte 0x0867, 0x0868, 0x0869, 0x086a, 0x086b, 0x086c, 0x086d, 0x086e
+
diff --git a/data/battle_tower.s b/data/battle_tower.s
new file mode 100644
index 000000000..a952e0773
--- /dev/null
+++ b/data/battle_tower.s
@@ -0,0 +1,103 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+@ 85CECB0
+ .include "data/battle_frontier/battle_frontier_held_items.inc"
+
+@ 85CED2E
+ .include "data/battle_frontier/battle_frontier_trainer_mons.inc"
+
+@ 85D5ACC
+ .include "data/battle_frontier/battle_frontier_trainers.inc"
+
+@ 85D97BC
+ .include "data/battle_frontier/battle_frontier_mons.inc"
+
+gUnknown_085DCEDC:: @ 85DCEDC
+ .incbin "baserom.gba", 0x5dcedc, 0x1e
+
+gUnknown_085DCEFA:: @ 85DCEFA
+ .incbin "baserom.gba", 0x5dcefa, 0x14
+
+gUnknown_085DCF0E:: @ 85DCF0E
+ .incbin "baserom.gba", 0x5dcf0e, 0x1e
+
+gUnknown_085DCF2C:: @ 85DCF2C
+ .incbin "baserom.gba", 0x5dcf2c, 0x14
+
+gUnknown_085DCF40:: @ 85DCF40
+ .incbin "baserom.gba", 0x5dcf40, 0x5c0
+
+gUnknown_085DD500:: @ 85DD500
+ .incbin "baserom.gba", 0x5dd500, 0x190
+
+gUnknown_085DD690:: @ 85DD690
+ .incbin "baserom.gba", 0x5dd690, 0x40
+
+gUnknown_085DD6D0:: @ 85DD6D0
+ .incbin "baserom.gba", 0x5dd6d0, 0x5
+
+gUnknown_085DD6D5:: @ 85DD6D5
+ .incbin "baserom.gba", 0x5dd6d5, 0x7
+
+gUnknown_085DD6DC:: @ 85DD6DC
+ .incbin "baserom.gba", 0x5dd6dc, 0x30
+
+@ 85DD70C
+ .include "data/battle_frontier/slateport_battle_tent_trainer_mons.inc"
+
+@ 85DDA14
+ .include "data/battle_frontier/slateport_battle_tent_trainers.inc"
+
+@ 85DE02C
+ .include "data/battle_frontier/slateport_battle_tent_mons.inc"
+
+@ 85DE48C
+ .include "data/battle_frontier/verdanturf_battle_tent_trainer_mons.inc"
+
+@ 85DE610
+ .include "data/battle_frontier/verdanturf_battle_tent_trainers.inc"
+
+@ 85DEC28
+ .include "data/battle_frontier/verdanturf_battle_tent_mons.inc"
+
+@ 85DEEF8
+ .include "data/battle_frontier/fallarbor_battle_tent_trainer_mons.inc"
+
+@ 85DF084
+ .include "data/battle_frontier/fallarbor_battle_tent_trainers.inc"
+
+@ 85DF69C
+ .include "data/battle_frontier/fallarbor_battle_tent_mons.inc"
+
+gUnknown_085DF96C:: @ 85DF96C
+ .incbin "baserom.gba", 0x5df96c, 0x40
+
+gUnknown_085DF9AC:: @ 85DF9AC
+ .incbin "baserom.gba", 0x5df9ac, 0x20
+
+gUnknown_085DF9CC:: @ 85DF9CC
+ .incbin "baserom.gba", 0x5df9cc, 0x20
+
+gUnknown_085DF9EC:: @ 85DF9EC
+ .incbin "baserom.gba", 0x5df9ec, 0xa
+
+gUnknown_085DF9F6:: @ 85DF9F6
+ .incbin "baserom.gba", 0x5df9f6, 0x4
+
+gUnknown_085DF9FA:: @ 85DF9FA
+ .incbin "baserom.gba", 0x5df9fa, 0x20
+
+gUnknown_085DFA1A:: @ 85DFA1A
+ .incbin "baserom.gba", 0x5dfa1a, 0x28
+
+gUnknown_085DFA42:: @ 85DFA42
+ .incbin "baserom.gba", 0x5dfa42, 0x4
+
+gUnknown_085DFA46:: @ 85DFA46
+ .incbin "baserom.gba", 0x5dfa46, 0xc
+
+gUnknown_085DFA52:: @ 85DFA52
+ .incbin "baserom.gba", 0x5dfa52, 0xe
diff --git a/data/bike.s b/data/bike.s
index 26bcc8745..ffb33e52b 100644
--- a/data/bike.s
+++ b/data/bike.s
@@ -5,19 +5,54 @@
.align 2, 0
gUnknown_0859744C:: @ 859744C
- .incbin "baserom.gba", 0x59744c, 0x10
+ .4byte sub_8119224
+ .4byte sub_8119238
+ .4byte sub_8119280
+ .4byte sub_8119344
+ .align 2
gUnknown_0859745C:: @ 859745C
- .incbin "baserom.gba", 0x59745c, 0xc
+ .4byte PlayerGoSpeed0
+ .4byte PlayerGoSpeed1
+ .4byte PlayerGoSpeed3
+ .align 2
gUnknown_08597468:: @ 8597468
- .incbin "baserom.gba", 0x597468, 0x34
+ .4byte sub_81197E4
+ .4byte sub_81197F4
+ .4byte sub_8119830
+ .4byte sub_81198C0
+ .4byte sub_81198FC
+ .4byte sub_8119938
+ .4byte sub_8119974
+ .4byte sub_81199B0
+ .4byte sub_8119A24
+ .4byte sub_8119A94
+ .4byte sub_8119AA4
+ .4byte sub_8119B34
+ .4byte sub_8119BC4
+ .align 2
gUnknown_0859749C:: @ 859749C
- .incbin "baserom.gba", 0x59749c, 0x1c
+ .4byte CheckMovementInputAcroBikeNormal
+ .4byte CheckMovementInputAcroBikeChangingDirection
+ .4byte CheckMovementInputAcroBikeStandingWheelie
+ .4byte CheckMovementInputAcroBikeBunnyHop
+ .4byte CheckMovementInputAcroBikeMovingWheelie
+ .4byte CheckMovementInputAcroBikeUnknownMode5
+ .4byte CheckMovementInputAcroBikeUnknownMode6
+ .align 2
gUnknown_085974B8:: @ 85974B8
- .incbin "baserom.gba", 0x5974b8, 0x8
+ .2byte 0x0001, 0x0002, 0x0004
+ .align 1
+gUnknown_085974BE:: @ 85974BE
+ .2byte 0x0004
+
+ .align 2
gUnknown_085974C0:: @ 85974C0
- .incbin "baserom.gba", 0x5974c0, 0x70
+ .4byte 0x00000001, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000001
+ .4byte 0x00000002, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000002
+ .4byte 0x00000003, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000003
+ .4byte 0x00000004, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000004
diff --git a/data/cable_club.s b/data/cable_club.s
index 4961cb1cc..f62b0b90a 100644
--- a/data/cable_club.s
+++ b/data/cable_club.s
@@ -4,8 +4,13 @@
.section .rodata
.align 2, 0
+ .align 2
gUnknown_08550594:: @ 8550594
- .incbin "baserom.gba", 0x550594, 0x8
+ window_template 0x00, 0x10, 0x0b, 0x0b, 0x02, 0x0f, 0x0125
+ .align 2
gUnknown_0855059C:: @ 855059C
- .incbin "baserom.gba", 0x55059c, 0x190
+ .4byte gText_BronzeCard
+ .4byte gText_CopperCard
+ .4byte gText_SilverCard
+ .4byte gText_GoldCard
diff --git a/data/clear_save_data_screen.s b/data/clear_save_data_screen.s
deleted file mode 100644
index 3abf9bf6d..000000000
--- a/data/clear_save_data_screen.s
+++ /dev/null
@@ -1,17 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_085F06C0:: @ 85F06C0
- .4byte 0x000001f0, 0x000011e3
-
- .align 2
-gUnknown_085F06C8:: @ 85F06C8
- window_template 0x00, 0x03, 0x0f, 0x1a, 0x04, 0x0f, 0x000b
- window_template_terminator
-
- .align 2
-gUnknown_085F06D8:: @ 85F06D8
- window_template 0x00, 0x03, 0x02, 0x05, 0x04, 0x0f, 0x0073
diff --git a/data/cute_sketch.s b/data/cute_sketch.s
index ebdf1e39d..8a8ee1481 100644
--- a/data/cute_sketch.s
+++ b/data/cute_sketch.s
@@ -5,4 +5,4 @@
.align 2, 0
gUnknown_085A1F94:: @ 85A1F94
- .incbin "baserom.gba", 0x5a1f94, 0x3c74
+ .incbin "baserom.gba", 0x5a1f94, 0x2580
diff --git a/data/data2b.s b/data/data2b.s
index 1499c51fe..e723b4c97 100644
--- a/data/data2b.s
+++ b/data/data2b.s
@@ -6,154 +6,4627 @@
.section .rodata
.align 2
+gUnknown_082FF1D8:: @ 82FF1D8
+ .incbin "graphics/link/minigame_digits.gbapal"
+ .align 2
+gUnknown_082FF1F8:: @ 82FF1F8
+ .incbin "graphics/link/minigame_digits.4bpp.lz"
-gUnknown_082FECFC:: @ 82FECFC
- .incbin "baserom.gba", 0x2fecfc, 0x40
+ .align 2
+gUnknown_082FF2B8:: @ 82FF2B8
+ .incbin "graphics/link/minigame_digits2.4bpp.lz"
-gUnknown_082FED3C:: @ 82FED3C
- .incbin "baserom.gba", 0x2fed3c, 0x1b4
+ .align 2
+gUnknown_082FF3A8:: @ 82FF3A8
+ .byte 0x00, 0x80, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0x88, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0x90, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0x98, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
-gUnknown_082FEEF0:: @ 82FEEF0
- .incbin "baserom.gba", 0x2feef0, 0x128
+ .align 2
+gUnknown_082FF3C8:: @ 82FF3C8
+ .byte 0x00, 0xa0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xa8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xb0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xb8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
-gUnknown_082FF018:: @ 82FF018
- .incbin "baserom.gba", 0x2ff018, 0x2
+ .align 2
+gUnknown_082FF3E8:: @ 82FF3E8
+ .byte 0x00, 0xc0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xc8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xd0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xd8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
-gUnknown_082FF01A:: @ 82FF01A
- .incbin "baserom.gba", 0x2ff01a, 0xe
+ .align 2
+gUnknown_082FF408:: @ 82FF408
+ .byte 0x00, 0xe0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xe8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xf0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xf8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
-gUnknown_082FF028:: @ 82FF028
- .incbin "baserom.gba", 0x2ff028, 0x10
+ .align 2
+gUnknown_082FF428:: @ 82FF428
+ obj_frame_tiles gTrainerBackPic_Brendan, 0x0800
+ obj_frame_tiles gTrainerBackPic_Brendan + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Brendan + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Brendan + 0x1800, 0x0800
-gUnknown_082FF038:: @ 82FF038
- .incbin "baserom.gba", 0x2ff038, 0x10
+ .align 2
+gUnknown_082FF448:: @ 82FF448
+ obj_frame_tiles gTrainerBackPic_May, 0x0800
+ obj_frame_tiles gTrainerBackPic_May + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_May + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_May + 0x1800, 0x0800
-gUnknown_082FF048:: @ 82FF048
- .incbin "baserom.gba", 0x2ff048, 0x28
+ .align 2
+gUnknown_082FF468:: @ 82FF468
+ obj_frame_tiles gTrainerBackPic_Red, 0x0800
+ obj_frame_tiles gTrainerBackPic_Red + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Red + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Red + 0x1800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Red + 0x2000, 0x0800
-gUnknown_082FF070:: @ 82FF070
- .incbin "baserom.gba", 0x2ff070, 0x10
+ .align 2
+gUnknown_082FF490:: @ 82FF490
+ obj_frame_tiles gTrainerBackPic_Leaf, 0x0800
+ obj_frame_tiles gTrainerBackPic_Leaf + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Leaf + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Leaf + 0x1800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Leaf + 0x2000, 0x0800
-gUnknown_082FF080:: @ 82FF080
- .incbin "baserom.gba", 0x2ff080, 0x8
+ .align 2
+gUnknown_082FF4B8:: @ 82FF4B8
+ obj_frame_tiles gTrainerBackPic_RubySapphireBrendan, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x1800, 0x0800
-gUnknown_082FF088:: @ 82FF088
- .incbin "baserom.gba", 0x2ff088, 0x18
+ .align 2
+gUnknown_082FF4D8:: @ 82FF4D8
+ obj_frame_tiles gTrainerBackPic_RubySapphireMay, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x1800, 0x0800
-gUnknown_082FF0A0:: @ 82FF0A0
- .incbin "baserom.gba", 0x2ff0a0, 0x20
+ .align 2
+gUnknown_082FF4F8:: @ 82FF4F8
+ obj_frame_tiles gTrainerBackPic_Wally, 0x0800
+ obj_frame_tiles gTrainerBackPic_Wally + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Wally + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Wally + 0x1800, 0x0800
-gUnknown_082FF0C0:: @ 82FF0C0
- .incbin "baserom.gba", 0x2ff0c0, 0x20
+ .align 2
+gUnknown_082FF518:: @ 82FF518
+ obj_frame_tiles gTrainerBackPic_Steven, 0x0800
+ obj_frame_tiles gTrainerBackPic_Steven + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Steven + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Steven + 0x1800, 0x0800
-gUnknown_082FF0E0:: @ 82FF0E0
- .incbin "baserom.gba", 0x2ff0e0, 0x3
+ .align 2
+gAnimCmd_General_Frame0:: @ 82FF538
+ obj_image_anim_frame 0, 0
+ obj_image_anim_end
-gUnknown_082FF0E3:: @ 82FF0E3
- .incbin "baserom.gba", 0x2ff0e3, 0x5
+ .align 2
+AnimCmd_82FF540:: @ 82FF540
+ .2byte 0x0003, 0x0000, 0xffff, 0x0000
-gUnknown_082FF0E8:: @ 82FF0E8
- .incbin "baserom.gba", 0x2ff0e8, 0x8
+ .align 2
+gUnknown_082FF548:: @ 82FF548
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF0F0:: @ 82FF0F0
- .incbin "baserom.gba", 0x2ff0f0, 0x4
+ .align 2
+gUnknown_082FF558:: @ 82FF558
+ .2byte 0xff00, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF0F4:: @ 82FF0F4
- .incbin "baserom.gba", 0x2ff0f4, 0x20
+ .align 2
+gUnknown_082FF568:: @ 82FF568
+ .2byte 0x0028, 0x0028, 0x0000, 0x0000, 0x0012, 0x0012, 0x0c00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF114:: @ 82FF114
- .incbin "baserom.gba", 0x2ff114, 0x4
+ .align 2
+gUnknown_082FF580:: @ 82FF580
+ .2byte 0xfffe, 0xfffe, 0x1200, 0x0000, 0xfff0, 0xfff0, 0x0f00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF118:: @ 82FF118
- .incbin "baserom.gba", 0x2ff118, 0x10
+ .align 2
+gUnknown_082FF598:: @ 82FF598
+ .2byte 0x00a0, 0x0100, 0x0000, 0x0000, 0x0004, 0x0000, 0x0800, 0x0000
+ .2byte 0xfffc, 0x0000, 0x0800, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000
-gUnknown_082FF128:: @ 82FF128
- .incbin "baserom.gba", 0x2ff128, 0x50
+ .align 2
+gUnknown_082FF5B8:: @ 82FF5B8
+ .2byte 0x0002, 0x0002, 0x1400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF178:: @ 82FF178
- .incbin "baserom.gba", 0x2ff178, 0x50
+ .align 2
+gUnknown_082FF5C8:: @ 82FF5C8
+ .2byte 0xfffe, 0xfffe, 0x1400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF1C8:: @ 82FF1C8
- .incbin "baserom.gba", 0x2ff1c8, 0x10
+ .align 2
+gUnknown_082FF5D8:: @ 82FF5D8
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfff0, 0xfff0, 0x0900, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF1D8:: @ 82FF1D8
- .incbin "baserom.gba", 0x2ff1d8, 0x20
+ .align 2
+gUnknown_082FF5F0:: @ 82FF5F0
+ .2byte 0x0004, 0x0004, 0x3f00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF1F8:: @ 82FF1F8
- .incbin "baserom.gba", 0x2ff1f8, 0x420
+ .align 2
+gUnknown_082FF600:: @ 82FF600
+ .2byte 0x0000, 0x0000, 0x05fd, 0x0000, 0x0000, 0x0000, 0x0503, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
gUnknown_082FF618:: @ 82FF618
- .incbin "baserom.gba", 0x2ff618, 0x7c
+ .4byte gUnknown_082FF548
+ .4byte gUnknown_082FF568
+ .4byte gUnknown_082FF580
+ .4byte gUnknown_082FF598
+ .4byte gUnknown_082FF5B8
+ .4byte gUnknown_082FF5C8
+ .4byte gUnknown_082FF5F0
+ .4byte gUnknown_082FF600
+ .4byte gUnknown_082FF5D8
+
+ .align 2
+gUnknown_082FF63C:: @ 82FF63C
+ .2byte 0xfffc, 0xfffc, 0x3f04, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_082FF64C:: @ 82FF64C
+ .2byte 0x0000, 0x0000, 0x0503, 0x0000, 0x0000, 0x0000, 0x05fd, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_082FF664:: @ 82FF664
+ .2byte 0x0000, 0x0000, 0x14fb, 0x0000, 0x0000, 0x0000, 0x1400, 0x0000
+ .2byte 0x0000, 0x0000, 0x1405, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
+gUnknown_082FF684:: @ 82FF684
+ .2byte 0x0000, 0x0000, 0x6e09, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
gUnknown_082FF694:: @ 82FF694
- .incbin "baserom.gba", 0x2ff694, 0x2c
+ .4byte gUnknown_082FF548
+ .4byte gUnknown_082FF568
+ .4byte gUnknown_082FF580
+ .4byte gUnknown_082FF598
+ .4byte gUnknown_082FF5B8
+ .4byte gUnknown_082FF5C8
+ .4byte gUnknown_082FF63C
+ .4byte gUnknown_082FF64C
+ .4byte gUnknown_082FF664
+ .4byte gUnknown_082FF5D8
+ .4byte gUnknown_082FF684
+ .align 2
gUnknown_082FF6C0:: @ 82FF6C0
- .incbin "baserom.gba", 0x2ff6c0, 0x4c
+ .4byte gUnknown_082FF558
+ .4byte gUnknown_082FF568
+ .4byte gUnknown_082FF580
+ .4byte gUnknown_082FF598
+ .4byte gUnknown_082FF5B8
+ .4byte gUnknown_082FF5C8
+ .4byte gUnknown_082FF63C
+ .4byte gUnknown_082FF64C
+ .4byte gUnknown_082FF664
+ .4byte gUnknown_082FF5D8
+ .4byte gUnknown_082FF684
+
+ .align 2
+gUnknown_082FF6EC:: @ 82FF6EC
+ .2byte 0x0000, 0x0000, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF6F4:: @ 82FF6F4
+ .2byte 0x0001, 0x0000, 0xffff, 0x0000
+ .align 2
+gUnknown_082FF6FC:: @ 82FF6FC
+ .2byte 0x0002, 0x0000, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF704:: @ 82FF704
+ .2byte 0x0003, 0x0000, 0xffff, 0x0000
+
+ .align 2
gUnknown_082FF70C:: @ 82FF70C
- .incbin "baserom.gba", 0x2ff70c, 0x162c
+ .4byte gUnknown_082FF6EC
+ .4byte gUnknown_082FF6F4
+ .4byte gUnknown_082FF6FC
+ .4byte gUnknown_082FF704
+
+ .align 2
+gUnknown_082FF71C:: @ 82FF71C
+ .2byte 0x0000, 0x0001, 0x0001, 0x0019, 0x0000, 0x0007, 0x0001, 0x0007
+ .2byte 0x0000, 0x0007, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF734:: @ 82FF734
+ .2byte 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF744:: @ 82FF744
+ .2byte 0x0000, 0x000a, 0x0002, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF750:: @ 82FF750
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF758:: @ 82FF758
+ .2byte 0x0000, 0x0001, 0x0001, 0x0005, 0x0000, 0x0005, 0x0001, 0x0005
+ .2byte 0x0000, 0x0005, 0x0001, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF774:: @ 82FF774
+ .2byte 0x0000, 0x0001, 0x0002, 0x000c, 0x0000, 0x000e, 0x0002, 0x000c
+ .2byte 0x0000, 0x000e, 0x0002, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF790:: @ 82FF790
+ .2byte 0x0000, 0x000e, 0x0002, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF79C:: @ 82FF79C
+ .2byte 0x0000, 0x000a, 0x0001, 0x000a, 0x0000, 0x000a, 0x0001, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7B0:: @ 82FF7B0
+ .2byte 0x0000, 0x000a, 0x0002, 0x000a, 0x0000, 0x000a, 0x0002, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7C4:: @ 82FF7C4
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7CC:: @ 82FF7CC
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7D4:: @ 82FF7D4
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7DC:: @ 82FF7DC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7E4:: @ 82FF7E4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7EC:: @ 82FF7EC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7F4:: @ 82FF7F4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7FC:: @ 82FF7FC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF804:: @ 82FF804
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF80C:: @ 82FF80C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF814:: @ 82FF814
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF81C:: @ 82FF81C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF824:: @ 82FF824
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF82C:: @ 82FF82C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF834:: @ 82FF834
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF83C:: @ 82FF83C
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF844:: @ 82FF844
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF84C:: @ 82FF84C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF854:: @ 82FF854
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF85C:: @ 82FF85C
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF864:: @ 82FF864
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF86C:: @ 82FF86C
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF874:: @ 82FF874
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF87C:: @ 82FF87C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF884:: @ 82FF884
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF88C:: @ 82FF88C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF894:: @ 82FF894
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF89C:: @ 82FF89C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8A4:: @ 82FF8A4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8AC:: @ 82FF8AC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8B4:: @ 82FF8B4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8BC:: @ 82FF8BC
+ .2byte 0x0000, 0x000f, 0x0008, 0x000f, 0x0002, 0x0016, 0x0008, 0x0005
+ .2byte 0x0003, 0x0008, 0x0004, 0x0005, 0x0006, 0x0005, 0x0004, 0x0005
+ .2byte 0x0006, 0x0005, 0x0004, 0x0005, 0x0006, 0x0005, 0x0004, 0x0005
+ .2byte 0x0006, 0x0005, 0x0005, 0x0005, 0x0007, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8FC:: @ 82FF8FC
+ .2byte 0x0000, 0x000a, 0x0008, 0x000f, 0x0002, 0x000f, 0x0008, 0x000f
+ .2byte 0x0009, 0x000f, 0x0000, 0x000a, 0x0009, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF91C:: @ 82FF91C
+ .2byte 0x0000, 0x000a, 0x0009, 0x000a, 0x0000, 0x000a, 0x000a, 0x0014, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF930:: @ 82FF930
+ .2byte 0x0000, 0x000f, 0x000b, 0x000f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF93C:: @ 82FF93C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF944:: @ 82FF944
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF94C:: @ 82FF94C
+ .2byte 0x0000, 0x000a, 0x0001, 0x0007, 0x0002, 0x0007, 0x0003, 0x0004
+ .2byte 0x0004, 0x0004, 0x0003, 0x0004, 0x0004, 0x0004, 0x0003, 0x0004
+ .2byte 0x0004, 0x0004, 0x0003, 0x0004, 0x0001, 0x0006, 0x0005, 0x0002
+ .2byte 0x0000, 0x0002, 0x0005, 0x0002, 0x0000, 0x0002, 0x0005, 0x0002
+ .2byte 0x0006, 0x0002, 0x0005, 0x0002, 0x0006, 0x0002, 0x0006, 0x000a
+ .2byte 0x0005, 0x0004, 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF9A8:: @ 82FF9A8
+ .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c
+ .2byte 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c
+ .2byte 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c
+ .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0009, 0x0003
+ .2byte 0x0000, 0x0003, 0x0009, 0x0003, 0x0000, 0x0003, 0x0007, 0x000c
+ .2byte 0x0008, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA00:: @ 82FFA00
+ .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c
+ .2byte 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c
+ .2byte 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c
+ .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0009, 0x0003
+ .2byte 0x0000, 0x0003, 0x0009, 0x0003, 0x0000, 0x0003, 0x0007, 0x000c
+ .2byte 0x0008, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA58:: @ 82FFA58
+ .2byte 0x0000, 0x0012, 0x000a, 0x0012, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA64:: @ 82FFA64
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA6C:: @ 82FFA6C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA74:: @ 82FFA74
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA7C:: @ 82FFA7C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA84:: @ 82FFA84
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA8C:: @ 82FFA8C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA94:: @ 82FFA94
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA9C:: @ 82FFA9C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAA4:: @ 82FFAA4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAAC:: @ 82FFAAC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAB4:: @ 82FFAB4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFABC:: @ 82FFABC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAC4:: @ 82FFAC4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFACC:: @ 82FFACC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAD4:: @ 82FFAD4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFADC:: @ 82FFADC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAE4:: @ 82FFAE4
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAEC:: @ 82FFAEC
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAF4:: @ 82FFAF4
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAFC:: @ 82FFAFC
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB04:: @ 82FFB04
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB0C:: @ 82FFB0C
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB14:: @ 82FFB14
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB1C:: @ 82FFB1C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB24:: @ 82FFB24
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB2C:: @ 82FFB2C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB34:: @ 82FFB34
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB3C:: @ 82FFB3C
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB44:: @ 82FFB44
+ .2byte 0x0000, 0x0001, 0x0001, 0x0012, 0x0000, 0x0012, 0x0001, 0x0012
+ .2byte 0x0000, 0x0012, 0x0001, 0x0012, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB60:: @ 82FFB60
+ .2byte 0x0000, 0x0001, 0x0002, 0x0012, 0x0000, 0x0012, 0x0002, 0x0012
+ .2byte 0x0000, 0x0012, 0x0002, 0x0012, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB7C:: @ 82FFB7C
+ .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0003, 0x0006, 0x0001, 0x0005
+ .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0003, 0x0005, 0x0001, 0x0005
+ .2byte 0x0000, 0x0005, 0x0001, 0x0007, 0x0000, 0x0004, 0x0004, 0x0004
+ .2byte 0x0000, 0x0004, 0x0004, 0x0004, 0x0000, 0x0014, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFBBC:: @ 82FFBBC
+ .2byte 0x0000, 0x0006, 0x0001, 0x0006, 0x0002, 0x0006, 0x0003, 0x0006
+ .2byte 0x0001, 0x0006, 0x0000, 0x0006, 0x0001, 0x0006, 0x0000, 0x001e
+ .2byte 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFBE0:: @ 82FFBE0
+ .2byte 0x0000, 0x000c, 0x0005, 0x000c, 0x0000, 0x000c, 0x0006, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFBF4:: @ 82FFBF4
+ .2byte 0x0007, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFBFC:: @ 82FFBFC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC04:: @ 82FFC04
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC0C:: @ 82FFC0C
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC14:: @ 82FFC14
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC1C:: @ 82FFC1C
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC24:: @ 82FFC24
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC2C:: @ 82FFC2C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC34:: @ 82FFC34
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC3C:: @ 82FFC3C
+ .2byte 0x0000, 0x0001, 0x0001, 0x000a, 0x0000, 0x000a, 0x0001, 0x000a
+ .2byte 0x0000, 0x000a, 0x0001, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC58:: @ 82FFC58
+ .2byte 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, 0x000c, 0x0002, 0x0008
+ .2byte 0x0000, 0x000c, 0x0002, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC74:: @ 82FFC74
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC7C:: @ 82FFC7C
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC84:: @ 82FFC84
+ .2byte 0x0001, 0x0009, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC8C:: @ 82FFC8C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC94:: @ 82FFC94
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC9C:: @ 82FFC9C
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCA4:: @ 82FFCA4
+ .2byte 0x0001, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCAC:: @ 82FFCAC
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCB4:: @ 82FFCB4
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCBC:: @ 82FFCBC
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCC4:: @ 82FFCC4
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCCC:: @ 82FFCCC
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCD4:: @ 82FFCD4
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCDC:: @ 82FFCDC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCE4:: @ 82FFCE4
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCEC:: @ 82FFCEC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCF4:: @ 82FFCF4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCFC:: @ 82FFCFC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD04:: @ 82FFD04
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD0C:: @ 82FFD0C
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD14:: @ 82FFD14
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD1C:: @ 82FFD1C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD24:: @ 82FFD24
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD2C:: @ 82FFD2C
+ .2byte 0x0002, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD34:: @ 82FFD34
+ .2byte 0x0003, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD3C:: @ 82FFD3C
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD44:: @ 82FFD44
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD4C:: @ 82FFD4C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD54:: @ 82FFD54
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD5C:: @ 82FFD5C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD64:: @ 82FFD64
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD6C:: @ 82FFD6C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD74:: @ 82FFD74
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD7C:: @ 82FFD7C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD84:: @ 82FFD84
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD8C:: @ 82FFD8C
+ .2byte 0x0000, 0x0014, 0x0001, 0x001e, 0x0000, 0x0014, 0x0001, 0x001e, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDA0:: @ 82FFDA0
+ .2byte 0x0000, 0x0014, 0x0002, 0x0014, 0x0000, 0x0014, 0x0002, 0x0014, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDB4:: @ 82FFDB4
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDBC:: @ 82FFDBC
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDC4:: @ 82FFDC4
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDCC:: @ 82FFDCC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDD0:: @ 82FFDD0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDD4:: @ 82FFDD4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDD8:: @ 82FFDD8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDDC:: @ 82FFDDC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDE0:: @ 82FFDE0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDE4:: @ 82FFDE4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDE8:: @ 82FFDE8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDEC:: @ 82FFDEC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDF0:: @ 82FFDF0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDF4:: @ 82FFDF4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDF8:: @ 82FFDF8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDFC:: @ 82FFDFC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE00:: @ 82FFE00
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE04:: @ 82FFE04
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE08:: @ 82FFE08
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE0C:: @ 82FFE0C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE10:: @ 82FFE10
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE14:: @ 82FFE14
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE18:: @ 82FFE18
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE1C:: @ 82FFE1C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE20:: @ 82FFE20
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE24:: @ 82FFE24
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE28:: @ 82FFE28
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE2C:: @ 82FFE2C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE30:: @ 82FFE30
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE34:: @ 82FFE34
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE38:: @ 82FFE38
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE3C:: @ 82FFE3C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE40:: @ 82FFE40
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE44:: @ 82FFE44
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE48:: @ 82FFE48
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE4C:: @ 82FFE4C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE50:: @ 82FFE50
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE54:: @ 82FFE54
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE58:: @ 82FFE58
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE5C:: @ 82FFE5C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE60:: @ 82FFE60
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE64:: @ 82FFE64
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE68:: @ 82FFE68
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE6C:: @ 82FFE6C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE70:: @ 82FFE70
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE74:: @ 82FFE74
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE78:: @ 82FFE78
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE7C:: @ 82FFE7C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE80:: @ 82FFE80
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE84:: @ 82FFE84
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE88:: @ 82FFE88
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE8C:: @ 82FFE8C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE90:: @ 82FFE90
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE94:: @ 82FFE94
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE98:: @ 82FFE98
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE9C:: @ 82FFE9C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEA0:: @ 82FFEA0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEA4:: @ 82FFEA4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEA8:: @ 82FFEA8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEAC:: @ 82FFEAC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEB0:: @ 82FFEB0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEB4:: @ 82FFEB4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEB8:: @ 82FFEB8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEBC:: @ 82FFEBC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEC0:: @ 82FFEC0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEC4:: @ 82FFEC4
+ .4byte gAnimCmd_General_Frame0
-gUnknown_08300D38:: @ 8300D38
- .incbin "baserom.gba", 0x300d38, 0x6e0
+ .align 2
+gUnknown_082FFEC8:: @ 82FFEC8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFECC:: @ 82FFECC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFED0:: @ 82FFED0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFED4:: @ 82FFED4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFED8:: @ 82FFED8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEDC:: @ 82FFEDC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEE0:: @ 82FFEE0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEE4:: @ 82FFEE4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEE8:: @ 82FFEE8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEEC:: @ 82FFEEC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEF0:: @ 82FFEF0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEF4:: @ 82FFEF4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEF8:: @ 82FFEF8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEFC:: @ 82FFEFC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF00:: @ 82FFF00
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF04:: @ 82FFF04
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF08:: @ 82FFF08
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF0C:: @ 82FFF0C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF10:: @ 82FFF10
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF14:: @ 82FFF14
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF18:: @ 82FFF18
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF1C:: @ 82FFF1C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF20:: @ 82FFF20
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF24:: @ 82FFF24
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF28:: @ 82FFF28
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF2C:: @ 82FFF2C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF30:: @ 82FFF30
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF34:: @ 82FFF34
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF38:: @ 82FFF38
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF3C:: @ 82FFF3C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF40:: @ 82FFF40
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF44:: @ 82FFF44
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF48:: @ 82FFF48
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF4C:: @ 82FFF4C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF50:: @ 82FFF50
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF54:: @ 82FFF54
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF58:: @ 82FFF58
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF5C:: @ 82FFF5C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF60:: @ 82FFF60
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF64:: @ 82FFF64
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF68:: @ 82FFF68
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF6C:: @ 82FFF6C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF70:: @ 82FFF70
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF74:: @ 82FFF74
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF78:: @ 82FFF78
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF7C:: @ 82FFF7C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF80:: @ 82FFF80
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF84:: @ 82FFF84
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF88:: @ 82FFF88
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF8C:: @ 82FFF8C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF90:: @ 82FFF90
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF94:: @ 82FFF94
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF98:: @ 82FFF98
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF9C:: @ 82FFF9C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFA0:: @ 82FFFA0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFA4:: @ 82FFFA4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFA8:: @ 82FFFA8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFAC:: @ 82FFFAC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFB0:: @ 82FFFB0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFB4:: @ 82FFFB4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFB8:: @ 82FFFB8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFBC:: @ 82FFFBC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFC0:: @ 82FFFC0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFC4:: @ 82FFFC4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFC8:: @ 82FFFC8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFCC:: @ 82FFFCC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFD0:: @ 82FFFD0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFD4:: @ 82FFFD4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFD8:: @ 82FFFD8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFDC:: @ 82FFFDC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFE0:: @ 82FFFE0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFE4:: @ 82FFFE4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFE8:: @ 82FFFE8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFEC:: @ 82FFFEC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFF0:: @ 82FFFF0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFF4:: @ 82FFFF4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFF8:: @ 82FFFF8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFFC:: @ 82FFFFC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300000:: @ 8300000
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300004:: @ 8300004
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300008:: @ 8300008
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830000C:: @ 830000C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300010:: @ 8300010
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300014:: @ 8300014
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300018:: @ 8300018
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830001C:: @ 830001C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300020:: @ 8300020
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300024:: @ 8300024
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300028:: @ 8300028
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830002C:: @ 830002C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300030:: @ 8300030
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300034:: @ 8300034
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300038:: @ 8300038
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830003C:: @ 830003C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300040:: @ 8300040
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300044:: @ 8300044
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300048:: @ 8300048
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830004C:: @ 830004C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300050:: @ 8300050
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300054:: @ 8300054
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300058:: @ 8300058
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830005C:: @ 830005C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300060:: @ 8300060
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300064:: @ 8300064
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300068:: @ 8300068
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830006C:: @ 830006C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300070:: @ 8300070
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300074:: @ 8300074
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300078:: @ 8300078
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830007C:: @ 830007C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300080:: @ 8300080
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300084:: @ 8300084
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300088:: @ 8300088
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830008C:: @ 830008C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300090:: @ 8300090
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300094:: @ 8300094
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300098:: @ 8300098
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830009C:: @ 830009C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000A0:: @ 83000A0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000A4:: @ 83000A4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000A8:: @ 83000A8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000AC:: @ 83000AC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000B0:: @ 83000B0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000B4:: @ 83000B4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000B8:: @ 83000B8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000BC:: @ 83000BC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000C0:: @ 83000C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000C4:: @ 83000C4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000C8:: @ 83000C8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000CC:: @ 83000CC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000D0:: @ 83000D0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000D4:: @ 83000D4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000D8:: @ 83000D8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000DC:: @ 83000DC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000E0:: @ 83000E0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000E4:: @ 83000E4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000E8:: @ 83000E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000EC:: @ 83000EC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000F0:: @ 83000F0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000F4:: @ 83000F4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000F8:: @ 83000F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000FC:: @ 83000FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300100:: @ 8300100
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300104:: @ 8300104
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300108:: @ 8300108
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830010C:: @ 830010C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300110:: @ 8300110
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300114:: @ 8300114
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300118:: @ 8300118
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830011C:: @ 830011C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300120:: @ 8300120
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300124:: @ 8300124
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300128:: @ 8300128
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830012C:: @ 830012C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300130:: @ 8300130
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300134:: @ 8300134
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300138:: @ 8300138
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830013C:: @ 830013C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300140:: @ 8300140
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300144:: @ 8300144
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300148:: @ 8300148
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830014C:: @ 830014C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300150:: @ 8300150
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300154:: @ 8300154
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300158:: @ 8300158
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830015C:: @ 830015C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300160:: @ 8300160
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300164:: @ 8300164
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300168:: @ 8300168
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830016C:: @ 830016C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300170:: @ 8300170
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300174:: @ 8300174
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300178:: @ 8300178
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830017C:: @ 830017C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300180:: @ 8300180
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300184:: @ 8300184
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300188:: @ 8300188
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830018C:: @ 830018C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300190:: @ 8300190
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300194:: @ 8300194
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300198:: @ 8300198
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830019C:: @ 830019C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001A0:: @ 83001A0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001A4:: @ 83001A4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001A8:: @ 83001A8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001AC:: @ 83001AC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001B0:: @ 83001B0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001B4:: @ 83001B4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001B8:: @ 83001B8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001BC:: @ 83001BC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001C0:: @ 83001C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001C4:: @ 83001C4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001C8:: @ 83001C8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001CC:: @ 83001CC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001D0: @ 83001D0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001D4:: @ 83001D4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF71C
+ .4byte gUnknown_082FF734
+ .4byte gUnknown_082FF744
+ .4byte gUnknown_082FF750
+
+ .align 2
+gUnknown_083001E8:: @ 83001E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001EC:: @ 83001EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF758
+ .4byte gUnknown_082FF774
+ .4byte gUnknown_082FF790
+
+ .align 2
+gUnknown_083001FC:: @ 83001FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300200:: @ 8300200
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF79C
+ .4byte gUnknown_082FF7B0
+
+ .align 2
+gUnknown_0830020C:: @ 830020C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7C4
+
+ .align 2
+gUnknown_08300214:: @ 8300214
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7CC
+
+ .align 2
+gUnknown_0830021C:: @ 830021C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7D4
+
+ .align 2
+gUnknown_08300224:: @ 8300224
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7DC
+ .4byte gUnknown_082FF7E4
+
+ .align 2
+gUnknown_08300230:: @ 8300230
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7EC
+ .4byte gUnknown_082FF7F4
+
+ .align 2
+gUnknown_0830023C:: @ 830023C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7FC
+ .4byte gUnknown_082FF804
+
+ .align 2
+gUnknown_08300248:: @ 8300248
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF80C
+ .4byte gUnknown_082FF814
+
+ .align 2
+gUnknown_08300254:: @ 8300254
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF81C
+ .4byte gUnknown_082FF824
+
+ .align 2
+gUnknown_08300260:: @ 8300260
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300264:: @ 8300264
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF82C
+
+ .align 2
+gUnknown_0830026C:: @ 830026C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF834
+ .4byte gUnknown_082FF83C
+
+ .align 2
+gUnknown_08300278:: @ 8300278
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF844
+
+ .align 2
+gUnknown_08300280:: @ 8300280
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF84C
+
+ .align 2
+gUnknown_08300288:: @ 8300288
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF854
+ .4byte gUnknown_082FF85C
+
+ .align 2
+gUnknown_08300294:: @ 8300294
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300298:: @ 8300298
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830029C:: @ 830029C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083002A0:: @ 83002A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF864
+
+ .align 2
+gUnknown_083002A8:: @ 83002A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF86C
+
+ .align 2
+gUnknown_083002B0:: @ 83002B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF874
+
+ .align 2
+gUnknown_083002B8:: @ 83002B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF87C
+
+ .align 2
+gUnknown_083002C0:: @ 83002C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083002C4:: @ 83002C4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF884
+
+ .align 2
+gUnknown_083002CC:: @ 83002CC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF88C
+ .4byte gUnknown_082FF894
+
+ .align 2
+gUnknown_083002D8:: @ 83002D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF89C
+ .4byte gUnknown_082FF8A4
+
+ .align 2
+gUnknown_083002E4:: @ 83002E4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF8AC
+ .4byte gUnknown_082FF8B4
+
+ .align 2
+gUnknown_083002F0:: @ 83002F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF8BC
+ .4byte gUnknown_082FF8FC
+ .4byte gUnknown_082FF91C
+ .4byte gUnknown_082FF930
+
+ .align 2
+gUnknown_08300304:: @ 8300304
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300308:: @ 8300308
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF93C
+
+ .align 2
+gUnknown_08300310:: @ 8300310
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF944
+
+ .align 2
+gUnknown_08300318:: @ 8300318
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF94C
+ .4byte gUnknown_082FF9A8
+ .4byte gUnknown_082FFA00
+ .4byte gUnknown_082FFA58
+
+ .align 2
+gUnknown_0830032C:: @ 830032C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA64
+
+ .align 2
+gUnknown_08300334:: @ 8300334
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA6C
+
+ .align 2
+gUnknown_0830033C:: @ 830033C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA74
+
+ .align 2
+gUnknown_08300344:: @ 8300344
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300348:: @ 8300348
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA7C
+ .4byte gUnknown_082FFA84
+
+ .align 2
+gUnknown_08300354:: @ 8300354
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300358:: @ 8300358
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830035C:: @ 830035C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA8C
+ .4byte gUnknown_082FFA94
+
+ .align 2
+gUnknown_08300368:: @ 8300368
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830036C:: @ 830036C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300370:: @ 8300370
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA9C
+ .4byte gUnknown_082FFAA4
+
+ .align 2
+gUnknown_0830037C:: @ 830037C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAAC
+ .4byte gUnknown_082FFAB4
+
+ .align 2
+gUnknown_08300388:: @ 8300388
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFABC
+ .4byte gUnknown_082FFAC4
+
+ .align 2
+gUnknown_08300394:: @ 8300394
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFACC
+ .4byte gUnknown_082FFAD4
+
+ .align 2
+gUnknown_083003A0:: @ 83003A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFADC
+
+ .align 2
+gUnknown_083003A8:: @ 83003A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAE4
+
+ .align 2
+gUnknown_083003B0:: @ 83003B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAEC
+
+ .align 2
+gUnknown_083003B8:: @ 83003B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAF4
+
+ .align 2
+gUnknown_083003C0:: @ 83003C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAFC
+
+ .align 2
+gUnknown_083003C8:: @ 83003C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB04
+ .4byte gUnknown_082FFB0C
+
+ .align 2
+gUnknown_083003D4:: @ 83003D4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB14
+
+ .align 2
+gUnknown_083003DC:: @ 83003DC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB1C
+ .4byte gUnknown_082FFB24
+
+ .align 2
+gUnknown_083003E8:: @ 83003E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB2C
+
+ .align 2
+gUnknown_083003F0:: @ 83003F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB34
+
+ .align 2
+gUnknown_083003F8:: @ 83003F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB3C
+
+ .align 2
+gUnknown_08300400:: @ 8300400
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB44
+ .4byte gUnknown_082FFB60
+
+ .align 2
+gUnknown_0830040C:: @ 830040C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300410:: @ 8300410
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300414:: @ 8300414
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300418:: @ 8300418
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830041C:: @ 830041C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300420:: @ 8300420
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300424:: @ 8300424
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB7C
+ .4byte gUnknown_082FFBBC
+ .4byte gUnknown_082FFBE0
+ .4byte gUnknown_082FFBF4
+
+ .align 2
+gUnknown_08300438:: @ 8300438
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFBFC
+ .4byte gUnknown_082FFC04
+
+ .align 2
+gUnknown_08300444:: @ 8300444
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC0C
+
+ .align 2
+gUnknown_0830044C:: @ 830044C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC14
+
+ .align 2
+gUnknown_08300454:: @ 8300454
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC1C
+
+ .align 2
+gUnknown_0830045C:: @ 830045C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC24
+
+ .align 2
+gUnknown_08300464:: @ 8300464
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC2C
+
+ .align 2
+gUnknown_0830046C:: @ 830046C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC34
+
+ .align 2
+gUnknown_08300474:: @ 8300474
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC3C
+ .4byte gUnknown_082FFC58
+
+ .align 2
+gUnknown_08300480:: @ 8300480
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC74
+
+ .align 2
+gUnknown_08300488:: @ 8300488
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC7C
+ .4byte gUnknown_082FFC84
+
+ .align 2
+gUnknown_08300494:: @ 8300494
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC8C
+ .4byte gUnknown_082FFC94
+
+ .align 2
+gUnknown_083004A0:: @ 83004A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC9C
+ .4byte gUnknown_082FFCA4
+
+ .align 2
+gUnknown_083004AC:: @ 83004AC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004B0:: @ 83004B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCAC
+
+ .align 2
+gUnknown_083004B8:: @ 83004B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCB4
+
+ .align 2
+gUnknown_083004C0:: @ 83004C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCBC
+
+ .align 2
+gUnknown_083004C8:: @ 83004C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCC4
+
+ .align 2
+gUnknown_083004D0:: @ 83004D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCCC
+
+ .align 2
+gUnknown_083004D8:: @ 83004D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCD4
+
+ .align 2
+gUnknown_083004E0:: @ 83004E0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004E4:: @ 83004E4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004E8:: @ 83004E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004EC:: @ 83004EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCDC
+
+ .align 2
+gUnknown_083004F4:: @ 83004F4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004F8:: @ 83004F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004FC:: @ 83004FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCE4
+
+ .align 2
+gUnknown_08300504:: @ 8300504
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCEC
+ .4byte gUnknown_082FFCF4
+
+ .align 2
+gUnknown_08300510:: @ 8300510
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCFC
+
+ .align 2
+gUnknown_08300518:: @ 8300518
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830051C:: @ 830051C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300520:: @ 8300520
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300524:: @ 8300524
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD04
+
+ .align 2
+gUnknown_0830052C:: @ 830052C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD0C
+
+ .align 2
+gUnknown_08300534:: @ 8300534
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD14
+
+ .align 2
+gUnknown_0830053C:: @ 830053C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD1C
+ .4byte gUnknown_082FFD24
+ .4byte gUnknown_082FFD2C
+ .4byte gUnknown_082FFD34
+
+ .align 2
+gUnknown_08300550:: @ 8300550
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD3C
+
+ .align 2
+gUnknown_08300558:: @ 8300558
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD44
+
+ .align 2
+gUnknown_08300560:: @ 8300560
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300564:: @ 8300564
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300568:: @ 8300568
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830056C:: @ 830056C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300570:: @ 8300570
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300574:: @ 8300574
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300578:: @ 8300578
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830057C:: @ 830057C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD4C
+ .4byte gUnknown_082FFD54
+
+ .align 2
+gUnknown_08300588:: @ 8300588
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830058C:: @ 830058C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD5C
+ .4byte gUnknown_082FFD64
+
+ .align 2
+gUnknown_08300598:: @ 8300598
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830059C:: @ 830059C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005A0:: @ 83005A0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005A4:: @ 83005A4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD6C
+
+ .align 2
+gUnknown_083005AC:: @ 83005AC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD74
+
+ .align 2
+gUnknown_083005B4:: @ 83005B4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD7C
+ .4byte gUnknown_082FFD84
+
+ .align 2
+gUnknown_083005C0:: @ 83005C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005C4:: @ 83005C4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005C8:: @ 83005C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD8C
+ .4byte gUnknown_082FFDA0
+
+ .align 2
+gUnknown_083005D4:: @ 83005D4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005D8:: @ 83005D8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005DC:: @ 83005DC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFDC4
+
+ .align 2
+gUnknown_083005E4:: @ 83005E4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005E8:: @ 83005E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005EC:: @ 83005EC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005F0:: @ 83005F0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005F4:: @ 83005F4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005F8:: @ 83005F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005FC:: @ 83005FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300600:: @ 8300600
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300604:: @ 8300604
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300608:: @ 8300608
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830060C:: @ 830060C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300610:: @ 8300610
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300614:: @ 8300614
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300618:: @ 8300618
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830061C:: @ 830061C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300620:: @ 8300620
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300624:: @ 8300624
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300628:: @ 8300628
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830062C:: @ 830062C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300630:: @ 8300630
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300634:: @ 8300634
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300638:: @ 8300638
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830063C:: @ 830063C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300640:: @ 8300640
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300644:: @ 8300644
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300648:: @ 8300648
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830064C:: @ 830064C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300650:: @ 8300650
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300654:: @ 8300654
+ .4byte gAnimCmd_General_Frame0
+
+ .4byte gUnknown_082FFDCC
+ .4byte gUnknown_082FFDD0
+ .4byte gUnknown_082FFDD4
+ .4byte gUnknown_082FFDD8
+ .4byte gUnknown_082FFDDC
+ .4byte gUnknown_082FFDE0
+ .4byte gUnknown_082FFDE4
+ .4byte gUnknown_082FFDE8
+ .4byte gUnknown_082FFDEC
+ .4byte gUnknown_082FFDF0
+ .4byte gUnknown_082FFDF4
+ .4byte gUnknown_082FFDF8
+ .4byte gUnknown_082FFDFC
+ .4byte gUnknown_082FFE00
+ .4byte gUnknown_082FFE04
+ .4byte gUnknown_082FFE08
+ .4byte gUnknown_082FFE0C
+ .4byte gUnknown_082FFE10
+ .4byte gUnknown_082FFE14
+ .4byte gUnknown_082FFE18
+ .4byte gUnknown_082FFE1C
+ .4byte gUnknown_082FFE20
+ .4byte gUnknown_082FFE24
+ .4byte gUnknown_082FFE28
+ .4byte gUnknown_082FFE2C
+ .4byte gUnknown_082FFE30
+ .4byte gUnknown_082FFE34
+ .4byte gUnknown_082FFE38
+ .4byte gUnknown_082FFE3C
+ .4byte gUnknown_082FFE40
+ .4byte gUnknown_082FFE44
+ .4byte gUnknown_082FFE48
+ .4byte gUnknown_082FFE4C
+ .4byte gUnknown_082FFE50
+ .4byte gUnknown_082FFE54
+ .4byte gUnknown_082FFE58
+ .4byte gUnknown_082FFE5C
+ .4byte gUnknown_082FFE60
+ .4byte gUnknown_082FFE64
+ .4byte gUnknown_082FFE68
+ .4byte gUnknown_082FFE6C
+ .4byte gUnknown_082FFE70
+ .4byte gUnknown_082FFE74
+ .4byte gUnknown_082FFE78
+ .4byte gUnknown_082FFE7C
+ .4byte gUnknown_082FFE80
+ .4byte gUnknown_082FFE84
+ .4byte gUnknown_082FFE88
+ .4byte gUnknown_082FFE8C
+ .4byte gUnknown_082FFE90
+ .4byte gUnknown_082FFE94
+ .4byte gUnknown_082FFE98
+ .4byte gUnknown_082FFE9C
+ .4byte gUnknown_082FFEA0
+ .4byte gUnknown_082FFEA4
+ .4byte gUnknown_082FFEA8
+ .4byte gUnknown_082FFEAC
+ .4byte gUnknown_082FFEB0
+ .4byte gUnknown_082FFEB4
+ .4byte gUnknown_082FFEB8
+ .4byte gUnknown_082FFEBC
+ .4byte gUnknown_082FFEC0
+ .4byte gUnknown_082FFEC4
+ .4byte gUnknown_082FFEC8
+ .4byte gUnknown_082FFECC
+ .4byte gUnknown_082FFED0
+ .4byte gUnknown_082FFED4
+ .4byte gUnknown_082FFED8
+ .4byte gUnknown_082FFEDC
+ .4byte gUnknown_082FFEE0
+ .4byte gUnknown_082FFEE4
+ .4byte gUnknown_082FFEE8
+ .4byte gUnknown_082FFEEC
+ .4byte gUnknown_082FFEF0
+ .4byte gUnknown_082FFEF4
+ .4byte gUnknown_082FFEF8
+ .4byte gUnknown_082FFEFC
+ .4byte gUnknown_082FFF00
+ .4byte gUnknown_082FFF04
+ .4byte gUnknown_082FFF08
+ .4byte gUnknown_082FFF0C
+ .4byte gUnknown_082FFF10
+ .4byte gUnknown_082FFF14
+ .4byte gUnknown_082FFF18
+ .4byte gUnknown_082FFF1C
+ .4byte gUnknown_082FFF20
+ .4byte gUnknown_082FFF24
+ .4byte gUnknown_082FFF28
+ .4byte gUnknown_082FFF2C
+ .4byte gUnknown_082FFF30
+ .4byte gUnknown_082FFF34
+ .4byte gUnknown_082FFF38
+ .4byte gUnknown_082FFF3C
+ .4byte gUnknown_082FFF40
+ .4byte gUnknown_082FFF44
+ .4byte gUnknown_082FFF48
+ .4byte gUnknown_082FFF4C
+ .4byte gUnknown_082FFF50
+ .4byte gUnknown_082FFF54
+ .4byte gUnknown_082FFF58
+ .4byte gUnknown_082FFF5C
+ .4byte gUnknown_082FFF60
+ .4byte gUnknown_082FFF64
+ .4byte gUnknown_082FFF68
+ .4byte gUnknown_082FFF6C
+ .4byte gUnknown_082FFF70
+ .4byte gUnknown_082FFF74
+ .4byte gUnknown_082FFF78
+ .4byte gUnknown_082FFF7C
+ .4byte gUnknown_082FFF80
+ .4byte gUnknown_082FFF84
+ .4byte gUnknown_082FFF88
+ .4byte gUnknown_082FFF8C
+ .4byte gUnknown_082FFF90
+ .4byte gUnknown_082FFF94
+ .4byte gUnknown_082FFF98
+ .4byte gUnknown_082FFF9C
+ .4byte gUnknown_082FFFA0
+ .4byte gUnknown_082FFFA4
+ .4byte gUnknown_082FFFA8
+ .4byte gUnknown_082FFFAC
+ .4byte gUnknown_082FFFB0
+ .4byte gUnknown_082FFFB4
+ .4byte gUnknown_082FFFB8
+ .4byte gUnknown_082FFFBC
+ .4byte gUnknown_082FFFC0
+ .4byte gUnknown_082FFFC4
+ .4byte gUnknown_082FFFC8
+ .4byte gUnknown_082FFFCC
+ .4byte gUnknown_082FFFD0
+ .4byte gUnknown_082FFFD4
+ .4byte gUnknown_082FFFD8
+ .4byte gUnknown_082FFFDC
+ .4byte gUnknown_082FFFE0
+ .4byte gUnknown_082FFFE4
+ .4byte gUnknown_082FFFE8
+ .4byte gUnknown_082FFFEC
+ .4byte gUnknown_082FFFF0
+ .4byte gUnknown_082FFFF4
+ .4byte gUnknown_082FFFF8
+ .4byte gUnknown_082FFFFC
+ .4byte gUnknown_08300000
+ .4byte gUnknown_08300004
+ .4byte gUnknown_08300008
+ .4byte gUnknown_0830000C
+ .4byte gUnknown_08300010
+ .4byte gUnknown_08300014
+ .4byte gUnknown_08300018
+ .4byte gUnknown_0830001C
+ .4byte gUnknown_08300020
+ .4byte gUnknown_08300024
+ .4byte gUnknown_08300028
+ .4byte gUnknown_0830002C
+ .4byte gUnknown_08300030
+ .4byte gUnknown_08300034
+ .4byte gUnknown_08300038
+ .4byte gUnknown_0830003C
+ .4byte gUnknown_08300040
+ .4byte gUnknown_08300044
+ .4byte gUnknown_08300048
+ .4byte gUnknown_0830004C
+ .4byte gUnknown_08300050
+ .4byte gUnknown_08300054
+ .4byte gUnknown_08300058
+ .4byte gUnknown_0830005C
+ .4byte gUnknown_08300060
+ .4byte gUnknown_08300064
+ .4byte gUnknown_08300068
+ .4byte gUnknown_0830006C
+ .4byte gUnknown_08300070
+ .4byte gUnknown_08300074
+ .4byte gUnknown_08300078
+ .4byte gUnknown_0830007C
+ .4byte gUnknown_08300080
+ .4byte gUnknown_08300084
+ .4byte gUnknown_08300088
+ .4byte gUnknown_0830008C
+ .4byte gUnknown_08300090
+ .4byte gUnknown_08300094
+ .4byte gUnknown_08300098
+ .4byte gUnknown_0830009C
+ .4byte gUnknown_083000A0
+ .4byte gUnknown_083000A4
+ .4byte gUnknown_083000A8
+ .4byte gUnknown_083000AC
+ .4byte gUnknown_083000B0
+ .4byte gUnknown_083000B4
+ .4byte gUnknown_083000B8
+ .4byte gUnknown_083000BC
+ .4byte gUnknown_083000C0
+ .4byte gUnknown_083000C4
+ .4byte gUnknown_083000C8
+ .4byte gUnknown_083000CC
+ .4byte gUnknown_083000D0
+ .4byte gUnknown_083000D4
+ .4byte gUnknown_083000D8
+ .4byte gUnknown_083000DC
+ .4byte gUnknown_083000E0
+ .4byte gUnknown_083000E4
+ .4byte gUnknown_083000E8
+ .4byte gUnknown_083000EC
+ .4byte gUnknown_083000F0
+ .4byte gUnknown_083000F4
+ .4byte gUnknown_083000F8
+ .4byte gUnknown_083000FC
+ .4byte gUnknown_08300100
+ .4byte gUnknown_08300104
+ .4byte gUnknown_08300108
+ .4byte gUnknown_0830010C
+ .4byte gUnknown_08300110
+ .4byte gUnknown_08300114
+ .4byte gUnknown_08300118
+ .4byte gUnknown_0830011C
+ .4byte gUnknown_08300120
+ .4byte gUnknown_08300124
+ .4byte gUnknown_08300128
+ .4byte gUnknown_0830012C
+ .4byte gUnknown_08300130
+ .4byte gUnknown_08300134
+ .4byte gUnknown_08300138
+ .4byte gUnknown_0830013C
+ .4byte gUnknown_08300140
+ .4byte gUnknown_08300144
+ .4byte gUnknown_08300148
+ .4byte gUnknown_0830014C
+ .4byte gUnknown_08300150
+ .4byte gUnknown_08300154
+ .4byte gUnknown_08300158
+ .4byte gUnknown_0830015C
+ .4byte gUnknown_08300160
+ .4byte gUnknown_08300164
+ .4byte gUnknown_08300168
+ .4byte gUnknown_0830016C
+ .4byte gUnknown_08300170
+ .4byte gUnknown_08300174
+ .4byte gUnknown_08300178
+ .4byte gUnknown_0830017C
+ .4byte gUnknown_08300180
+ .4byte gUnknown_08300184
+ .4byte gUnknown_08300188
+ .4byte gUnknown_0830018C
+ .4byte gUnknown_08300190
+ .4byte gUnknown_08300194
+ .4byte gUnknown_08300198
+ .4byte gUnknown_0830019C
+ .4byte gUnknown_083001A0
+ .4byte gUnknown_083001A4
+ .4byte gUnknown_083001A8
+ .4byte gUnknown_083001AC
+ .4byte gUnknown_083001B0
+ .4byte gUnknown_083001B4
+ .4byte gUnknown_083001B8
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001C0
+ .4byte gUnknown_083001C4
+ .4byte gUnknown_083001C8
+ .4byte gUnknown_083001CC
+ .4byte gUnknown_083001D0
+ .4byte gUnknown_083001D4
+ .4byte gUnknown_083001E8
+ .4byte gUnknown_083001EC
+ .4byte gUnknown_083001FC
+ .4byte gUnknown_08300200
+ .4byte gUnknown_0830020C
+ .4byte gUnknown_08300214
+ .4byte gUnknown_0830021C
+ .4byte gUnknown_08300224
+ .4byte gUnknown_08300230
+ .4byte gUnknown_0830023C
+ .4byte gUnknown_08300248
+ .4byte gUnknown_08300254
+ .4byte gUnknown_08300260
+ .4byte gUnknown_08300264
+ .4byte gUnknown_0830026C
+ .4byte gUnknown_08300278
+ .4byte gUnknown_08300280
+ .4byte gUnknown_08300288
+ .4byte gUnknown_08300294
+ .4byte gUnknown_08300298
+ .4byte gUnknown_0830029C
+ .4byte gUnknown_083002A0
+ .4byte gUnknown_083002A8
+ .4byte gUnknown_083002B0
+ .4byte gUnknown_083002B8
+ .4byte gUnknown_083002C0
+ .4byte gUnknown_083002C4
+ .4byte gUnknown_083002CC
+ .4byte gUnknown_083002D8
+ .4byte gUnknown_083002E4
+ .4byte gUnknown_083002F0
+ .4byte gUnknown_08300304
+ .4byte gUnknown_08300308
+ .4byte gUnknown_08300310
+ .4byte gUnknown_08300318
+ .4byte gUnknown_0830032C
+ .4byte gUnknown_08300334
+ .4byte gUnknown_0830033C
+ .4byte gUnknown_08300344
+ .4byte gUnknown_08300348
+ .4byte gUnknown_08300354
+ .4byte gUnknown_08300358
+ .4byte gUnknown_0830035C
+ .4byte gUnknown_08300368
+ .4byte gUnknown_0830036C
+ .4byte gUnknown_08300370
+ .4byte gUnknown_0830037C
+ .4byte gUnknown_08300388
+ .4byte gUnknown_08300394
+ .4byte gUnknown_083003A0
+ .4byte gUnknown_083003A8
+ .4byte gUnknown_083003B0
+ .4byte gUnknown_083003B8
+ .4byte gUnknown_083003C0
+ .4byte gUnknown_083003C8
+ .4byte gUnknown_083003D4
+ .4byte gUnknown_083003DC
+ .4byte gUnknown_083003E8
+ .4byte gUnknown_083003F0
+ .4byte gUnknown_083003F8
+ .4byte gUnknown_08300400
+ .4byte gUnknown_0830040C
+ .4byte gUnknown_08300410
+ .4byte gUnknown_08300414
+ .4byte gUnknown_08300418
+ .4byte gUnknown_0830041C
+ .4byte gUnknown_08300420
+ .4byte gUnknown_08300424
+ .4byte gUnknown_08300438
+ .4byte gUnknown_08300444
+ .4byte gUnknown_0830044C
+ .4byte gUnknown_08300454
+ .4byte gUnknown_0830045C
+ .4byte gUnknown_08300464
+ .4byte gUnknown_0830046C
+ .4byte gUnknown_08300474
+ .4byte gUnknown_08300480
+ .4byte gUnknown_08300488
+ .4byte gUnknown_08300494
+ .4byte gUnknown_083004A0
+ .4byte gUnknown_083004AC
+ .4byte gUnknown_083004B0
+ .4byte gUnknown_083004B8
+ .4byte gUnknown_083004C0
+ .4byte gUnknown_083004C8
+ .4byte gUnknown_083004D0
+ .4byte gUnknown_083004D8
+ .4byte gUnknown_083004E0
+ .4byte gUnknown_083004E4
+ .4byte gUnknown_083004E8
+ .4byte gUnknown_083004EC
+ .4byte gUnknown_083004F4
+ .4byte gUnknown_083004F8
+ .4byte gUnknown_083004FC
+ .4byte gUnknown_08300504
+ .4byte gUnknown_08300510
+ .4byte gUnknown_08300518
+ .4byte gUnknown_0830051C
+ .4byte gUnknown_08300520
+ .4byte gUnknown_08300524
+ .4byte gUnknown_0830052C
+ .4byte gUnknown_08300534
+ .4byte gUnknown_0830053C
+ .4byte gUnknown_08300550
+ .4byte gUnknown_08300558
+ .4byte gUnknown_08300560
+ .4byte gUnknown_08300564
+ .4byte gUnknown_08300568
+ .4byte gUnknown_0830056C
+ .4byte gUnknown_08300570
+ .4byte gUnknown_08300574
+ .4byte gUnknown_08300578
+ .4byte gUnknown_0830057C
+ .4byte gUnknown_08300588
+ .4byte gUnknown_0830058C
+ .4byte gUnknown_08300598
+ .4byte gUnknown_0830059C
+ .4byte gUnknown_083005A0
+ .4byte gUnknown_083005A4
+ .4byte gUnknown_083005AC
+ .4byte gUnknown_083005B4
+ .4byte gUnknown_083005C0
+ .4byte gUnknown_083005C4
+ .4byte gUnknown_083005C8
+ .4byte gUnknown_083005D4
+ .4byte gUnknown_083005D8
+ .4byte gUnknown_083005DC
+ .4byte gUnknown_083005E4
+ .4byte gUnknown_083005E8
+ .4byte gUnknown_083005EC
+ .4byte gUnknown_083005EC
+ .4byte gUnknown_083005F0
+ .4byte gUnknown_083005F4
+ .4byte gUnknown_083005F8
+ .4byte gUnknown_083005FC
+ .4byte gUnknown_08300600
+ .4byte gUnknown_08300604
+ .4byte gUnknown_08300608
+ .4byte gUnknown_0830060C
+ .4byte gUnknown_08300610
+ .4byte gUnknown_08300614
+ .4byte gUnknown_08300618
+ .4byte gUnknown_0830061C
+ .4byte gUnknown_08300620
+ .4byte gUnknown_08300624
+ .4byte gUnknown_08300628
+ .4byte gUnknown_0830062C
+ .4byte gUnknown_08300630
+ .4byte gUnknown_08300634
+ .4byte gUnknown_08300638
+ .4byte gUnknown_0830063C
+ .4byte gUnknown_08300640
+ .4byte gUnknown_08300644
+ .4byte gUnknown_08300648
+ .4byte gUnknown_0830064C
+ .4byte gUnknown_08300650
+ .4byte gUnknown_08300654
+
+ .align 2
+gMonFrontPicCoords:: @ 8300D38
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x45, 0x0e, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x45, 0x10, 0x00, 0x00
+ .byte 0x54, 0x14, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x54, 0x12, 0x00, 0x00
+ .byte 0x45, 0x0e, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x67, 0x0b, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x67, 0x09, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x55, 0x10, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x45, 0x10, 0x00, 0x00
+ .byte 0x67, 0x08, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x54, 0x12, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x74, 0x13, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x54, 0x12, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x43, 0x15, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x57, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x55, 0x10, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x44, 0x13, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x75, 0x0e, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x47, 0x04, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x58, 0x03, 0x00, 0x00
+ .byte 0x56, 0x0c, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x54, 0x13, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x75, 0x10, 0x00, 0x00
+ .byte 0x87, 0x0b, 0x00, 0x00
+ .byte 0x45, 0x0c, 0x00, 0x00
+ .byte 0x44, 0x14, 0x00, 0x00
+ .byte 0x44, 0x12, 0x00, 0x00
+ .byte 0x34, 0x14, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x44, 0x14, 0x00, 0x00
+ .byte 0x47, 0x07, 0x00, 0x00
+ .byte 0x55, 0x10, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x45, 0x0e, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x58, 0x03, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x67, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x58, 0x01, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x35, 0x0f, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x74, 0x11, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x57, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x78, 0x01, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x57, 0x0d, 0x00, 0x00
+ .byte 0x43, 0x14, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x78, 0x04, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x35, 0x0f, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x56, 0x0c, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x45, 0x0e, 0x00, 0x00
+ .byte 0x75, 0x11, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x74, 0x10, 0x00, 0x00
+ .byte 0x86, 0x0f, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x46, 0x10, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x74, 0x12, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x64, 0x10, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x68, 0x08, 0x00, 0x00
+ .byte 0x84, 0x18, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x75, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x55, 0x10, 0x00, 0x00
+ .byte 0x78, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x46, 0x0b, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x46, 0x18, 0x00, 0x00
+ .byte 0x66, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x46, 0x0d, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x86, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x64, 0x12, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x09, 0x00, 0x00
+ .byte 0x65, 0x10, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x74, 0x10, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x56, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x0c, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x68, 0x01, 0x00, 0x00
+ .byte 0x76, 0x11, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x74, 0x12, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x55, 0x12, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x68, 0x00, 0x00, 0x00
+ .byte 0x56, 0x0e, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x77, 0x08, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x77, 0x0b, 0x00, 0x00
+ .byte 0x43, 0x14, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x34, 0x11, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x35, 0x0f, 0x00, 0x00
+ .byte 0x47, 0x06, 0x00, 0x00
+ .byte 0x78, 0x01, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x78, 0x04, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x66, 0x0d, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x37, 0x06, 0x00, 0x00
+ .byte 0x33, 0x14, 0x00, 0x00
+ .byte 0x34, 0x10, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x44, 0x11, 0x00, 0x00
+ .byte 0x44, 0x11, 0x00, 0x00
+ .byte 0x35, 0x0e, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x34, 0x10, 0x00, 0x00
+ .byte 0x34, 0x11, 0x00, 0x00
+ .byte 0x44, 0x11, 0x00, 0x00
+ .byte 0x34, 0x13, 0x00, 0x00
+ .byte 0x44, 0x13, 0x00, 0x00
+ .byte 0x43, 0x14, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x34, 0x13, 0x00, 0x00
+ .byte 0x43, 0x15, 0x00, 0x00
+ .byte 0x34, 0x13, 0x00, 0x00
+ .byte 0x45, 0x0c, 0x00, 0x00
+ .byte 0x34, 0x12, 0x00, 0x00
+ .byte 0x44, 0x12, 0x00, 0x00
+ .byte 0x44, 0x12, 0x00, 0x00
+ .byte 0x44, 0x13, 0x00, 0x00
+ .byte 0x33, 0x15, 0x00, 0x00
+ .byte 0x34, 0x11, 0x00, 0x00
+ .byte 0x34, 0x10, 0x00, 0x00
+ .byte 0x35, 0x0f, 0x00, 0x00
+ .byte 0x35, 0x0d, 0x00, 0x00
@ 8301418
- .include "data/graphics/pokemon/mon_still_front_pic_table.inc"
+ .include "data/graphics/pokemon/still_front_pic_table.inc"
+ .align 2
gUnknown_083021D8:: @ 83021D8
- .incbin "baserom.gba", 0x3021d8, 0x6e0
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x64, 0x10, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0c, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x63, 0x14, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x74, 0x10, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x75, 0x0c, 0x00, 0x00
+ .byte 0x84, 0x10, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x43, 0x14, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x75, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x85, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x78, 0x01, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x68, 0x03, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x73, 0x15, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x75, 0x0c, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x36, 0x08, 0x00, 0x00
+ .byte 0x75, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x84, 0x10, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x63, 0x15, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x83, 0x15, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x73, 0x14, 0x00, 0x00
+ .byte 0x83, 0x14, 0x00, 0x00
+ .byte 0x75, 0x0f, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x83, 0x14, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x64, 0x11, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x83, 0x15, 0x00, 0x00
+ .byte 0x83, 0x16, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x85, 0x0c, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x68, 0x02, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x75, 0x0e, 0x00, 0x00
+ .byte 0x74, 0x11, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x84, 0x10, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x84, 0x13, 0x00, 0x00
+ .byte 0x64, 0x12, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x85, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x68, 0x03, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x68, 0x02, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x84, 0x11, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x83, 0x17, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x57, 0x06, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x84, 0x10, 0x00, 0x00
+ .byte 0x83, 0x14, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x84, 0x13, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x47, 0x07, 0x00, 0x00
+ .byte 0x36, 0x0a, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x57, 0x05, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x37, 0x07, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x57, 0x07, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x45, 0x0c, 0x00, 0x00
+ .byte 0x57, 0x04, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x37, 0x06, 0x00, 0x00
+ .byte 0x47, 0x06, 0x00, 0x00
@ 83028B8
- .include "data/graphics/pokemon/mon_back_pic_table.inc"
+ .include "data/graphics/pokemon/back_pic_table.inc"
@ 8303678
- .include "data/graphics/pokemon/mon_palette_table.inc"
+ .include "data/graphics/pokemon/palette_table.inc"
@ 8304438
- .include "data/graphics/pokemon/mon_shiny_palette_table.inc"
+ .include "data/graphics/pokemon/shiny_palette_table.inc"
+
+gUnknown_083051F8:: @ 83051F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083051FC:: @ 83051FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305200:: @ 8305200
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305204:: @ 8305204
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305208:: @ 8305208
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830520C:: @ 830520C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305210:: @ 8305210
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305214:: @ 8305214
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305218:: @ 8305218
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830521C:: @ 830521C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305220:: @ 8305220
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305224:: @ 8305224
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305228:: @ 8305228
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830522C:: @ 830522C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305230:: @ 8305230
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305234:: @ 8305234
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305238:: @ 8305238
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830523C:: @ 830523C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305240:: @ 8305240
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305244:: @ 8305244
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305248:: @ 8305248
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830524C:: @ 830524C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305250:: @ 8305250
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305254:: @ 8305254
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305258:: @ 8305258
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830525C:: @ 830525C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305260:: @ 8305260
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305264:: @ 8305264
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305268:: @ 8305268
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830526C:: @ 830526C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305270:: @ 8305270
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305274:: @ 8305274
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305278:: @ 8305278
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830527C:: @ 830527C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305280:: @ 8305280
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305284:: @ 8305284
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305288:: @ 8305288
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830528C:: @ 830528C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305290:: @ 8305290
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305294:: @ 8305294
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305298:: @ 8305298
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830529C:: @ 830529C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052A0:: @ 83052A0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052A4:: @ 83052A4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052A8:: @ 83052A8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052AC:: @ 83052AC
+ .4byte gAnimCmd_General_Frame0
-@ 83051F8
- .incbin "baserom.gba", 0x3051f8, 0x174
+ .align 2
+gUnknown_083052B0:: @ 83052B0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052B4:: @ 83052B4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052B8:: @ 83052B8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052BC:: @ 83052BC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052C0:: @ 83052C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052C4:: @ 83052C4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052C8:: @ 83052C8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052CC:: @ 83052CC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052D0:: @ 83052D0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052D4:: @ 83052D4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052D8:: @ 83052D8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052DC:: @ 83052DC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052E0:: @ 83052E0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052E4:: @ 83052E4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052E8:: @ 83052E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052EC:: @ 83052EC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052F0:: @ 83052F0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052F4:: @ 83052F4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052F8:: @ 83052F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052FC:: @ 83052FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305300:: @ 8305300
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305304:: @ 8305304
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305308:: @ 8305308
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830530C:: @ 830530C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305310:: @ 8305310
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305314:: @ 8305314
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305318:: @ 8305318
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830531C:: @ 830531C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305320:: @ 8305320
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305324:: @ 8305324
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305328:: @ 8305328
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830532C:: @ 830532C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305330:: @ 8305330
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305334:: @ 8305334
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305338:: @ 8305338
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830533C:: @ 830533C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305340:: @ 8305340
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305344:: @ 8305344
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305348:: @ 8305348
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830534C:: @ 830534C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305350:: @ 8305350
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305354:: @ 8305354
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305358:: @ 8305358
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830535C:: @ 830535C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305360:: @ 8305360
+ .4byte gAnimCmd_General_Frame0
+ .align 2
+gUnknown_08305364:: @ 8305364
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305368:: @ 8305368
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
gUnknown_0830536C:: @ 830536C
- .incbin "baserom.gba", 0x30536c, 0x174
+ .4byte gUnknown_083051F8
+ .4byte gUnknown_083051FC
+ .4byte gUnknown_08305200
+ .4byte gUnknown_08305204
+ .4byte gUnknown_08305208
+ .4byte gUnknown_0830520C
+ .4byte gUnknown_08305210
+ .4byte gUnknown_08305214
+ .4byte gUnknown_08305218
+ .4byte gUnknown_0830521C
+ .4byte gUnknown_08305220
+ .4byte gUnknown_08305224
+ .4byte gUnknown_08305228
+ .4byte gUnknown_0830522C
+ .4byte gUnknown_08305230
+ .4byte gUnknown_08305234
+ .4byte gUnknown_08305238
+ .4byte gUnknown_0830523C
+ .4byte gUnknown_08305240
+ .4byte gUnknown_08305244
+ .4byte gUnknown_08305248
+ .4byte gUnknown_0830524C
+ .4byte gUnknown_08305250
+ .4byte gUnknown_08305254
+ .4byte gUnknown_08305258
+ .4byte gUnknown_0830525C
+ .4byte gUnknown_08305260
+ .4byte gUnknown_08305264
+ .4byte gUnknown_08305268
+ .4byte gUnknown_0830526C
+ .4byte gUnknown_08305270
+ .4byte gUnknown_08305274
+ .4byte gUnknown_08305278
+ .4byte gUnknown_0830527C
+ .4byte gUnknown_08305280
+ .4byte gUnknown_08305284
+ .4byte gUnknown_08305288
+ .4byte gUnknown_0830528C
+ .4byte gUnknown_08305290
+ .4byte gUnknown_08305294
+ .4byte gUnknown_08305298
+ .4byte gUnknown_0830529C
+ .4byte gUnknown_083052A0
+ .4byte gUnknown_083052A4
+ .4byte gUnknown_083052A8
+ .4byte gUnknown_083052AC
+ .4byte gUnknown_083052B0
+ .4byte gUnknown_083052B4
+ .4byte gUnknown_083052B8
+ .4byte gUnknown_083052BC
+ .4byte gUnknown_083052C0
+ .4byte gUnknown_083052C4
+ .4byte gUnknown_083052C8
+ .4byte gUnknown_083052CC
+ .4byte gUnknown_083052D0
+ .4byte gUnknown_083052D4
+ .4byte gUnknown_083052D8
+ .4byte gUnknown_083052DC
+ .4byte gUnknown_083052E0
+ .4byte gUnknown_083052E4
+ .4byte gUnknown_083052E8
+ .4byte gUnknown_083052EC
+ .4byte gUnknown_083052F0
+ .4byte gUnknown_083052F4
+ .4byte gUnknown_083052F8
+ .4byte gUnknown_083052FC
+ .4byte gUnknown_08305300
+ .4byte gUnknown_08305304
+ .4byte gUnknown_08305308
+ .4byte gUnknown_0830530C
+ .4byte gUnknown_08305310
+ .4byte gUnknown_08305314
+ .4byte gUnknown_08305318
+ .4byte gUnknown_0830531C
+ .4byte gUnknown_08305320
+ .4byte gUnknown_08305324
+ .4byte gUnknown_08305328
+ .4byte gUnknown_0830532C
+ .4byte gUnknown_08305330
+ .4byte gUnknown_08305334
+ .4byte gUnknown_08305338
+ .4byte gUnknown_0830533C
+ .4byte gUnknown_08305340
+ .4byte gUnknown_08305344
+ .4byte gUnknown_08305348
+ .4byte gUnknown_0830534C
+ .4byte gUnknown_08305350
+ .4byte gUnknown_08305354
+ .4byte gUnknown_08305358
+ .4byte gUnknown_0830535C
+ .4byte gUnknown_08305360
+ .4byte gUnknown_08305364
+ .4byte gUnknown_08305368
-gUnknown_083054E0:: @ 83054E0
- .incbin "baserom.gba", 0x3054e0, 0x174
+@ 83054E0
+ .include "data/graphics/trainers/front_pic_coords.inc"
@ 8305654
- .include "data/graphics/trainers/trainer_front_pic_table.inc"
+ .include "data/graphics/trainers/front_pic_table.inc"
@ 830593C
- .include "data/graphics/trainers/trainer_front_pic_palette_table.inc"
+ .include "data/graphics/trainers/front_pic_palette_table.inc"
+
+gUnknown_08305C24:: @ 8305C24
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C3C:: @ 8305C3C
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C54:: @ 8305C54
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C6C:: @ 8305C6C
+ .2byte 0x0001, 0x0014, 0x0002, 0x0006, 0x0003, 0x0006, 0x0004, 0x0018
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C84:: @ 8305C84
+ .2byte 0x0001, 0x0014, 0x0002, 0x0006, 0x0003, 0x0006, 0x0004, 0x0018
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C9C:: @ 8305C9C
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305CB4:: @ 8305CB4
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305CCC:: @ 8305CCC
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C24
+
+ .align 2
+gUnknown_08305CD4:: @ 8305CD4
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C3C
-@ 8305C24
- .incbin "baserom.gba", 0x305c24, 0xe8
+ .align 2
+gUnknown_08305CDC:: @ 8305CDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_08305C6C
+
+ .align 2
+gUnknown_08305CE4:: @ 8305CE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_08305C84
+
+ .align 2
+gUnknown_08305CEC:: @ 8305CEC
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C9C
+
+ .align 2
+gUnknown_08305CF4:: @ 8305CF4
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305CB4
+
+ .align 2
+gUnknown_08305CFC:: @ 8305CFC
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C54
+
+ .align 2
+gUnknown_08305D04:: @ 8305D04
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C3C
+ .align 2
gUnknown_08305D0C:: @ 8305D0C
- .incbin "baserom.gba", 0x305d0c, 0x20
+ .4byte gUnknown_08305CCC
+ .4byte gUnknown_08305CD4
+ .4byte gUnknown_08305CDC
+ .4byte gUnknown_08305CE4
+ .4byte gUnknown_08305CEC
+ .4byte gUnknown_08305CF4
+ .4byte gUnknown_08305CFC
+ .4byte gUnknown_08305D04
+
-gUnknown_08305D2C:: @ 8305D2C
- .incbin "baserom.gba", 0x305d2c, 0x20
+@ 8305D2C
+ .include "data/graphics/trainers/back_pic_coords.inc"
@ 8305D4C
- .include "data/graphics/trainers/trainer_back_pic_table.inc"
+ .include "data/graphics/trainers/back_pic_table.inc"
@ 8305D8C
- .include "data/graphics/trainers/trainer_back_pic_palette_table.inc"
+ .include "data/graphics/trainers/back_pic_palette_table.inc"
-gUnknown_08305DCC:: @ 8305DCC
- .incbin "baserom.gba", 0x305dcc, 0x3ce0
+@ 8305DCC
+ .include "data/enemy_mon_elevation.inc"
-gUnknown_08309AAC:: @ 8309AAC
- .incbin "baserom.gba", 0x309aac, 0x6e0
+@ 8305F68
+ .include "data/graphics/pokemon/front_anims.inc"
@ 830A18C
- .include "data/graphics/pokemon/mon_front_pic_table.inc"
+ .include "data/graphics/pokemon/front_pic_table.inc"
@ 830AF4C
- .incbin "baserom.gba", 0x30af4c, 0x6e0
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000888, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000886, 0x00000886
+ .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000886, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000886, 0x00000886
+ .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000088
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000088, 0x00000088
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000886, 0x00000886, 0x00000888
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000088, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000886
+ .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000886, 0x00000888
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000888, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000088
+ .4byte 0x00000888, 0x00000886, 0x00000886, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000888, 0x00000886, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000088
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000088, 0x00000088
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000088
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886
+ .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000886, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00001882, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000886, 0x00000088, 0x00000886, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886
+ .4byte 0x00000886, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000088
+ .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000088
+ .4byte 0x00000886, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000886, 0x00000886, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
@ 830B62C
.include "data/trainer_parties.inc"
@@ -170,96 +4643,241 @@ gUnknown_08309AAC:: @ 8309AAC
@ 831977C
.include "data/text/move_names.inc"
- .incbin "baserom.gba", 0x31a983, 0x4d
+.align 2
+ .2byte 0x0300, 0x0000
+
+ .align 2
+gUnknown_0831A988:: @ 831A988
+ .byte 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_0831A990:: @ 831A990
+ .byte 0x00, 0x03, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_0831A998:: @ 831A998
+ .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0831A9A8:: @ 831A9A8
+ .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0018, 0x0018, 0x8000, 0x0000
+ .2byte 0x0018, 0x0018, 0x8000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0831A9C8:: @ 831A9C8
+ .4byte gUnknown_0831A998
+ .4byte gUnknown_0831A9A8
+ .align 2
gUnknown_0831A9D0:: @ 831A9D0
- .incbin "baserom.gba", 0x31a9d0, 0x18
+ spr_template 0x2710, 0x2710, gUnknown_0831A988, gDummySpriteAnimTable, NULL, gUnknown_0831A9C8, nullsub_17
+ .align 2
gUnknown_0831A9E8:: @ 831A9E8
- .incbin "baserom.gba", 0x31a9e8, 0x18
+ spr_template 0x2710, 0x2710, gUnknown_0831A990, gDummySpriteAnimTable, NULL, gUnknown_0831A9C8, nullsub_17
+ .align 2
gUnknown_0831AA00:: @ 831AA00
- .incbin "baserom.gba", 0x31aa00, 0x8
+ obj_tiles gUnknown_08D77B0C, 0x1000, 0x2710
+ .align 2
gUnknown_0831AA08:: @ 831AA08
- .incbin "baserom.gba", 0x31aa08, 0x198
+ .4byte 0x00000580, 0x000005c5, 0x000013e6, 0x000033ab
-gUnknown_0831ABA0:: @ 831ABA0
- .incbin "baserom.gba", 0x31aba0, 0x8
+ .align 2
+gUnknown_0831AA18:: @ 831AA18
+ window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x00, 0x0090
+ window_template 0x00, 0x01, 0x23, 0x0e, 0x04, 0x00, 0x01c0
+ window_template 0x00, 0x11, 0x23, 0x0c, 0x04, 0x05, 0x0190
+ window_template 0x00, 0x02, 0x37, 0x08, 0x02, 0x05, 0x0300
+ window_template 0x00, 0x0b, 0x37, 0x08, 0x02, 0x05, 0x0310
+ window_template 0x00, 0x02, 0x39, 0x08, 0x02, 0x05, 0x0320
+ window_template 0x00, 0x0b, 0x39, 0x08, 0x02, 0x05, 0x0330
+ window_template 0x00, 0x15, 0x37, 0x04, 0x02, 0x05, 0x0290
+ window_template 0x00, 0x15, 0x39, 0x00, 0x00, 0x05, 0x0298
+ window_template 0x00, 0x19, 0x37, 0x04, 0x02, 0x05, 0x0298
+ window_template 0x00, 0x15, 0x39, 0x08, 0x02, 0x05, 0x02a0
+ window_template 0x00, 0x15, 0x37, 0x08, 0x04, 0x05, 0x02b0
+ window_template 0x00, 0x1a, 0x09, 0x03, 0x04, 0x05, 0x0100
+ window_template 0x01, 0x13, 0x08, 0x0a, 0x0b, 0x05, 0x0100
+ window_template 0x02, 0x12, 0x00, 0x0c, 0x03, 0x06, 0x016e
+ window_template 0x01, 0x02, 0x03, 0x06, 0x02, 0x05, 0x0020
+ window_template 0x02, 0x02, 0x03, 0x06, 0x02, 0x05, 0x0040
+ window_template 0x01, 0x02, 0x02, 0x06, 0x02, 0x05, 0x0020
+ window_template 0x02, 0x02, 0x02, 0x06, 0x02, 0x05, 0x0040
+ window_template 0x01, 0x02, 0x06, 0x06, 0x02, 0x05, 0x0060
+ window_template 0x02, 0x02, 0x06, 0x06, 0x02, 0x05, 0x0080
+ window_template 0x00, 0x0c, 0x02, 0x06, 0x02, 0x00, 0x00a0
+ window_template 0x00, 0x04, 0x02, 0x07, 0x02, 0x00, 0x00a0
+ window_template 0x00, 0x13, 0x02, 0x07, 0x02, 0x00, 0x00b0
+ window_template_terminator
-gUnknown_0831ABA8:: @ 831ABA8
- .incbin "baserom.gba", 0x31aba8, 0xc8
+ .align 2
+gUnknown_0831AAE0:: @ 831AAE0
+ window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x00, 0x0090
+ window_template 0x00, 0x01, 0x23, 0x0e, 0x04, 0x00, 0x01c0
+ window_template 0x00, 0x11, 0x23, 0x0c, 0x04, 0x05, 0x0190
+ window_template 0x00, 0x02, 0x37, 0x08, 0x02, 0x05, 0x0300
+ window_template 0x00, 0x0b, 0x37, 0x08, 0x02, 0x05, 0x0310
+ window_template 0x00, 0x02, 0x39, 0x08, 0x02, 0x05, 0x0320
+ window_template 0x00, 0x0b, 0x39, 0x08, 0x02, 0x05, 0x0330
+ window_template 0x00, 0x15, 0x37, 0x04, 0x02, 0x05, 0x0290
+ window_template 0x00, 0x15, 0x39, 0x00, 0x00, 0x05, 0x0298
+ window_template 0x00, 0x19, 0x37, 0x04, 0x02, 0x05, 0x0298
+ window_template 0x00, 0x15, 0x39, 0x08, 0x02, 0x05, 0x02a0
+ window_template 0x00, 0x15, 0x37, 0x08, 0x04, 0x05, 0x02b0
+ window_template 0x00, 0x1a, 0x09, 0x03, 0x04, 0x05, 0x0100
+ window_template 0x01, 0x13, 0x08, 0x0a, 0x0b, 0x05, 0x0100
+ window_template 0x02, 0x12, 0x00, 0x0c, 0x03, 0x06, 0x016e
+ window_template 0x00, 0x06, 0x01, 0x08, 0x02, 0x05, 0x0100
+ window_template 0x00, 0x0e, 0x01, 0x02, 0x02, 0x05, 0x0110
+ window_template 0x00, 0x10, 0x01, 0x08, 0x02, 0x05, 0x0114
+ window_template 0x00, 0x0c, 0x04, 0x06, 0x02, 0x05, 0x0124
+ window_template 0x00, 0x0c, 0x06, 0x06, 0x02, 0x05, 0x0130
+ window_template 0x00, 0x0c, 0x08, 0x06, 0x02, 0x05, 0x013c
+ window_template 0x00, 0x08, 0x0b, 0x0e, 0x02, 0x05, 0x0148
+ window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x07, 0x0090
+ window_template_terminator
-gUnknown_0831AC70:: @ 831AC70
- .incbin "baserom.gba", 0x31ac70, 0x18
+ .align 2
+gUnknown_0831ABA0:: @ 831ABA0
+ .4byte gUnknown_0831AA18
+ .4byte gUnknown_0831AAE0
-gUnknown_0831AC88:: @ 831AC88
- .incbin "baserom.gba", 0x31ac88, 0x18
+ .align 2
+gBattleTerrainTable:: @ 831ABA8
+ @ tall_grass
+ .4byte gUnknown_08D77D68
+ .4byte gUnknown_08D78350
+ .4byte gUnknown_08D7E280
+ .4byte gUnknown_08D7E808
+ .4byte gUnknown_08D78318
-gUnknown_0831ACA0:: @ 831ACA0
- .incbin "baserom.gba", 0x31aca0, 0x40
+ @ long_grass
+ .4byte gUnknown_08D78600
+ .4byte gUnknown_08D78CB8
+ .4byte gUnknown_08D7E9C4
+ .4byte gUnknown_08D7F0D4
+ .4byte gUnknown_08D78C78
-gUnknown_0831ACE0:: @ 831ACE0
- .incbin "baserom.gba", 0x31ace0, 0x8
+ @ sand
+ .4byte gUnknown_08D78F68
+ .4byte gUnknown_08D795A8
+ .4byte gUnknown_08D7F30C
+ .4byte gUnknown_08D7F850
+ .4byte gUnknown_08D79560
-gUnknown_0831ACE8:: @ 831ACE8
- .incbin "baserom.gba", 0x31ace8, 0x150
+ @ underwater
+ .4byte gUnknown_08D79858
+ .4byte gUnknown_08D79E58
+ .4byte gUnknown_08D7F9F8
+ .4byte gUnknown_08D7FEC4
+ .4byte gUnknown_08D79E10
-@ 831AE38
- .include "data/text/type_names.inc"
+ @ water
+ .4byte gUnknown_08D7A108
+ .4byte gUnknown_08D7A720
+ .4byte gUnknown_08D80054
+ .4byte gUnknown_08D80660
+ .4byte gUnknown_08D7A6DC
- .align 2
-gUnknown_0831AEB8:: @ 831AEB8
- .incbin "baserom.gba", 0x31aeb8, 0xe0
+ @ pond_water
+ .4byte gUnknown_08D7A9D0
+ .4byte gUnknown_08D7AFB8
+ .4byte gUnknown_08D80804
+ .4byte gUnknown_08D80D50
+ .4byte gUnknown_08D7AF78
-@ 831AF98
- .include "data/text/ability_descriptions.inc"
+ @ rock
+ .4byte gUnknown_08D7B268
+ .4byte gUnknown_08D7B864
+ .4byte gUnknown_08D80E9C
+ .4byte gUnknown_08D8147C
+ .4byte gUnknown_08D7B828
-@ 831B6DB
- .include "data/text/ability_names.inc"
+ @ cave
+ .4byte gUnknown_08D7BB14
+ .4byte gUnknown_08D7C154
+ .4byte gUnknown_08D81610
+ .4byte gUnknown_08D81E2C
+ .4byte gUnknown_08D7C10C
-@ 831BAD4
- .include "data/text/ability_description_pointers.inc"
+ @ building
+ .4byte gUnknown_08D7C440
+ .4byte gUnknown_08D7CA28
+ .4byte gUnknown_08D820D4
+ .4byte gUnknown_08D824E4
+ .4byte gUnknown_08D7DEB4
-gUnknown_0831BC0C:: @ 831BC0C
- .incbin "baserom.gba", 0x31bc0c, 0x38
+ @ plain
+ .4byte gUnknown_08D7C440
+ .4byte gUnknown_08D7CA28
+ .4byte gUnknown_08D820D4
+ .4byte gUnknown_08D824E4
+ .4byte gUnknown_08D7C404
-gUnknown_0831BC44:: @ 831BC44
- .incbin "baserom.gba", 0x31bc44, 0x2c
+ .align 2
+gUnknown_0831AC70:: @ 831AC70
+ .4byte REG_BG3HOFS
+ .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
+ .4byte 1
+ .4byte REG_BG3HOFS
+ .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_32BIT | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
+ .4byte 1
-gStatusConditionString_PoisonJpn:: @ 831BC70
- .incbin "baserom.gba", 0x31bc70, 0x8
+ .align 2
+gUnknown_0831AC88:: @ 831AC88
+ spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8038528
-gStatusConditionString_SleepJpn:: @ 831BC78
- .incbin "baserom.gba", 0x31bc78, 0x8
+gText_ShedinjaJapaneseName:: @ 831ACA0
+ .string "ヌケニン$" @ Nukenin
+
+ .align 2
+gUnknown_0831ACA8:: @ 831ACA8
+ .2byte 0x0100
+ .2byte 0xC000
+ .2byte 0x0800
-gStatusConditionString_ParalysisJpn:: @ 831BC80
- .incbin "baserom.gba", 0x31bc80, 0x8
+ .align 2
+gUnknown_0831ACB0:: @ 831ACB0
+ .2byte 0x0100
+ .2byte 0xC000
+ .2byte 0x2800
-gStatusConditionString_BurnJpn:: @ 831BC88
- .incbin "baserom.gba", 0x31bc88, 0x8
+ .align 2
+gUnknown_0831ACB8:: @ 831ACB8
+ .2byte 0x0000, 0x0005, 0xfffe, 0x0000
-gStatusConditionString_IceJpn:: @ 831BC90
- .incbin "baserom.gba", 0x31bc90, 0x8
+ .align 2
+gUnknown_0831ACC0:: @ 831ACC0
+ .4byte gUnknown_0831ACB8
+
+ .align 2
+gUnknown_0831ACC4:: @ 831ACC4
+ .2byte 0xfff0, 0x0000, 0x0400, 0x0000, 0x0000, 0x0000, 0x3c00, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000
-gStatusConditionString_ConfusionJpn:: @ 831BC98
- .incbin "baserom.gba", 0x31bc98, 0x8
+ .align 2
+gUnknown_0831ACDC:: @ 831ACDC
+ .4byte gUnknown_0831ACC4
-gStatusConditionString_LoveJpn:: @ 831BCA0
- .incbin "baserom.gba", 0x31bca0, 0x8
+ .align 2
+gUnknown_0831ACE0:: @ 831ACE0
+ .byte 0xe0, 0xf0, 0xf0, 0xe0, 0xe0, 0x00, 0x00, 0x00
-gUnknown_0831BCA8:: @ 831BCA8
- .incbin "baserom.gba", 0x31bca8, 0x38
+@ 831ACE8
+ .include "data/type_effectiveness.inc"
-gUnknown_0831BCE0:: @ 831BCE0
- .incbin "baserom.gba", 0x31bce0, 0xf
+@ 831AE38
+ .include "data/text/type_names.inc"
-gUnknown_0831BCEF:: @ 831BCEF
- .incbin "baserom.gba", 0x31bcef, 0x4
+@ 831AEB8
+ .include "data/trainer_money.inc"
-gUnknown_0831BCF3:: @ 831BCF3
- .incbin "baserom.gba", 0x31bcf3, 0x5
+@ 831AF98
+ .include "data/text/ability_descriptions.inc"
-gSoundMovesTable:: @ 831BCF8
- .incbin "baserom.gba", 0x31bcf8, 0x18
+@ 831B6DB
+ .include "data/text/ability_names.inc"
+@ 831BAD4
+ .include "data/text/ability_description_pointers.inc"
diff --git a/data/data2b_2.s b/data/data2b_2.s
deleted file mode 100644
index a1088768e..000000000
--- a/data/data2b_2.s
+++ /dev/null
@@ -1,30 +0,0 @@
-@ the second big chunk of data
-
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-
-
-gUnknown_0831C5F8:: @ 831C5F8
- .incbin "baserom.gba", 0x31c5f8, 0xc
-
-gUnknown_0831C604:: @ 831C604
- .incbin "baserom.gba", 0x31c604, 0x1c
-
-gUnknown_0831C620:: @ 831C620
- .incbin "baserom.gba", 0x31c620, 0x8
-
-gUnknown_0831C628:: @ 831C628
- .incbin "baserom.gba", 0x31c628, 0x60
-
-gUnknown_0831C688:: @ 831C688
- .incbin "baserom.gba", 0x31c688, 0x18
-
-gUnknown_0831C6A0:: @ 831C6A0
- .incbin "baserom.gba", 0x31c6a0, 0x10
-
-gUnknown_0831C6B0:: @ 831C6B0
- .incbin "baserom.gba", 0x31c6b0, 0x18
diff --git a/data/data2c.s b/data/data2c.s
index 26f237c1c..be715493c 100644
--- a/data/data2c.s
+++ b/data/data2c.s
@@ -11,8 +11,9 @@
@ 831C898
.include "data/battle_moves.inc"
- @ 0x31d93c unreferenced unknown data
-.byte 0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00
+@ 0x31d93c
+@ unreferenced unknown data
+ .byte 0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00
@ 831D94C
.include "data/pokedex_order.inc"
@@ -53,56 +54,142 @@
@ 832937C
.include "data/level_up_learnset_pointers.inc"
-gMonFrontAnimIdsTable:: @ 83299EC
- .incbin "baserom.gba", 0x3299ec, 0x19b
+@ 83299EC
+ .include "data/graphics/pokemon/front_anim_ids_table.inc"
-gMonAnimationDelayTable:: @ 8329B87
- .incbin "baserom.gba", 0x329b87, 0x19b
+@ 8329B87
+ .include "data/graphics/pokemon/animation_delay_table.inc"
+ .align 1
gUnknown_08329D22:: @ 8329D22
- .incbin "baserom.gba", 0x329d22, 0x4
+@ Masks for getting PP Up count, also PP Max values
+ .byte 0x03, 0x0c, 0x30, 0xc0
+ .align 1
gUnknown_08329D26:: @ 8329D26
- .incbin "baserom.gba", 0x329d26, 0x4
+@ Masks for setting PP Up count
+ .byte 0xfc, 0xf3, 0xcf, 0x3f
+ .align 1
gUnknown_08329D2A:: @ 8329D2A
- .incbin "baserom.gba", 0x329d2a, 0x4
+@ Values added to PP Up count
+ .byte 0x01, 0x04, 0x10, 0x40
+ .align 1
gStatStageRatios:: @ 8329D2E
- .incbin "baserom.gba", 0x329d2e, 0x1a
-
+ .byte 0x0a, 0x28
+ .byte 0x0a, 0x23
+ .byte 0x0a, 0x1e
+ .byte 0x0a, 0x19
+ .byte 0x0a, 0x14
+ .byte 0x0a, 0x0f
+ .byte 0x0a, 0x0a
+ .byte 0x0f, 0x0a
+ .byte 0x14, 0x0a
+ .byte 0x19, 0x0a
+ .byte 0x1e, 0x0a
+ .byte 0x23, 0x0a
+ .byte 0x28, 0x0a
+
+ .align 1
gUnknown_08329D48:: @ 8329D48
- .incbin "baserom.gba", 0x329d48, 0xc
+ .2byte 0x0032, 0x005f, 0x005a, 0x00b4, 0x005f, 0x005a
+ .align 1
gUnknown_08329D54:: @ 8329D54
- .incbin "baserom.gba", 0x329d54, 0x20
+ .2byte 0x0003, 0x000a, 0x001b, 0x002b, 0x001e, 0x0043, 0x0042, 0x0019
+ .2byte 0x0012, 0x000c, 0x001c, 0x0047, 0x001f, 0x0036, 0x0002, 0x0014
+ .align 1
gHoldEffectToType:: @ 8329D74
- .incbin "baserom.gba", 0x329d74, 0x24
+ .byte 0x1f, 0x06
+ .byte 0x2a, 0x08
+ .byte 0x2e, 0x04
+ .byte 0x2f, 0x05
+ .byte 0x30, 0x0c
+ .byte 0x31, 0x11
+ .byte 0x32, 0x01
+ .byte 0x33, 0x0d
+ .byte 0x34, 0x0b
+ .byte 0x35, 0x02
+ .byte 0x36, 0x03
+ .byte 0x37, 0x0f
+ .byte 0x38, 0x07
+ .byte 0x39, 0x0e
+ .byte 0x3a, 0x0a
+ .byte 0x3b, 0x10
+ .byte 0x3c, 0x00
+ .byte 0x00, 0x00
+ .align 2
gUnknown_08329D98:: @ 8329D98
- .incbin "baserom.gba", 0x329d98, 0x60
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3A8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF3C8, gUnknown_082FF694, oac_poke_opponent
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3E8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF408, gUnknown_082FF694, oac_poke_opponent
+ .align 2
gUnknown_08329DF8:: @ 8329DF8
- .incbin "baserom.gba", 0x329df8, 0xc0
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF428, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF448, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF468, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF490, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4B8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4D8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4F8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF518, gUnknown_082FF618, sub_8039BB4
gSecretBaseTrainerClasses:: @ 8329EB8
- .incbin "baserom.gba", 0x329eb8, 0xa
+ .byte TRAINER_CLASS_YOUNGSTER, TRAINER_CLASS_BUG_CATCHER, TRAINER_CLASS_RICH_BOY, TRAINER_CLASS_CAMPER, TRAINER_CLASS_COOLTRAINER_1
+ .byte TRAINER_CLASS_LASS, TRAINER_CLASS_SCHOOL_KID_2, TRAINER_CLASS_LADY, TRAINER_CLASS_PICNICKER, TRAINER_CLASS_COOLTRAINER_2
gUnknown_08329EC2:: @ 8329EC2
- .incbin "baserom.gba", 0x329ec2, 0x6
+ .byte 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x1e
gUnknown_08329EC8:: @ 8329EC8
- .incbin "baserom.gba", 0x329ec8, 0x6
+ .byte 1, 1, 3, 2, 4, 6
gUnknown_08329ECE:: @ 8329ECE
- .incbin "baserom.gba", 0x329ece, 0x1c
-
+@ Happiness deltas
+ .byte 0x05, 0x03, 0x02
+ .byte 0x05, 0x03, 0x02
+ .byte 0x01, 0x01, 0x00
+ .byte 0x03, 0x02, 0x01
+ .byte 0x01, 0x01, 0x00
+ .byte 0x01, 0x01, 0x01
+ .byte 0xff, 0xff, 0xff
+ .byte 0xfb, 0xfb, 0xf6
+ .byte 0xfb, 0xfb, 0xf6
+
+ .align 1
gHMMoves:: @ 8329EEA
- .incbin "baserom.gba", 0x329eea, 0x12
-
+ .2byte MOVE_CUT
+ .2byte MOVE_FLY
+ .2byte MOVE_SURF
+ .2byte MOVE_STRENGTH
+ .2byte MOVE_FLASH
+ .2byte MOVE_ROCK_SMASH
+ .2byte MOVE_WATERFALL
+ .2byte MOVE_DIVE
+ .2byte 0xffff
+
+ .align 1
gAlteringCaveWildMonHeldItems:: @ 8329EFC
- .incbin "baserom.gba", 0x329efc, 0x2c
+ .2byte 0, ITEM_NONE
+ .2byte SPECIES_MAREEP, ITEM_GANLON_BERRY
+ .2byte SPECIES_PINECO, ITEM_APICOT_BERRY
+ .2byte SPECIES_HOUNDOUR, ITEM_BIG_MUSHROOM
+ .2byte SPECIES_TEDDIURSA, ITEM_PETAYA_BERRY
+ .2byte SPECIES_AIPOM, ITEM_BERRY_JUICE
+ .2byte SPECIES_SHUCKLE, ITEM_BERRY_JUICE
+ .2byte SPECIES_STANTLER, ITEM_PETAYA_BERRY
+ .2byte SPECIES_SMEARGLE, ITEM_SALAC_BERRY
+ .align 2
+gUnknown_08329F20:: @ 8329F20
+ .byte 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
gUnknown_08329F28:: @ 8329F28
- .incbin "baserom.gba", 0x329f28, 0x18
+ spr_template 0xffff, 0xffff, gUnknown_08329F20, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
diff --git a/data/data4.s b/data/data4.s
index 202b1ffe7..d99336e87 100644
--- a/data/data4.s
+++ b/data/data4.s
@@ -14,19 +14,16 @@ gUnknown_085B09F4:: @ 85B09F4
gUnknown_085B09F8:: @ 85B09F8
.incbin "baserom.gba", 0x5b09f8, 0x8
-gUnknown_085B0A00:: @ 85B0A00
- .incbin "baserom.gba", 0x5b0a00, 0x2
+gBirchBagGrassPal:: @ 85B0A00
+ .incbin "baserom.gba", 0x5b0a00, 0x80
-gUnknown_085B0A02:: @ 85B0A02
- .incbin "baserom.gba", 0x5b0a02, 0x7e
-
-gUnknown_085B0A80:: @ 85B0A80
+gBirchBagTilemap:: @ 85B0A80
.incbin "baserom.gba", 0x5b0a80, 0x18c
-gUnknown_085B0C0C:: @ 85B0C0C
+gBirchGrassTilemap:: @ 85B0C0C
.incbin "baserom.gba", 0x5b0c0c, 0x1f8
-gUnknown_085B0E04:: @ 85B0E04
+gBirchHelpGfx:: @ 85B0E04
.incbin "baserom.gba", 0x5b0e04, 0xfc8
gUnknown_085B1DCC:: @ 85B1DCC
diff --git a/data/decoration.s b/data/decoration.s
deleted file mode 100644
index de4478f8d..000000000
--- a/data/decoration.s
+++ /dev/null
@@ -1,86 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gDecorations:: @ 85A5C08
- .incbin "baserom.gba", 0x5a5c08, 0x1c
-
-gUnknown_085A5C24:: @ 85A5C24
- .incbin "baserom.gba", 0x5a5c24, 0xf04
-
-gUnknown_085A6B28:: @ 85A6B28
- .incbin "baserom.gba", 0x5a6b28, 0x20
-
-gUnknown_085A6B48:: @ 85A6B48
- .incbin "baserom.gba", 0x5a6b48, 0x20
-
-gUnknown_085A6B68:: @ 85A6B68
- .incbin "baserom.gba", 0x5a6b68, 0x10
-
-gUnknown_085A6B78:: @ 85A6B78
- .incbin "baserom.gba", 0x5a6b78, 0x18
-
-gUnknown_085A6B90:: @ 85A6B90
- .incbin "baserom.gba", 0x5a6b90, 0x20
-
-gUnknown_085A6BB0:: @ 85A6BB0
- .incbin "baserom.gba", 0x5a6bb0, 0x20
-
-gUnknown_085A6BD0:: @ 85A6BD0
- .incbin "baserom.gba", 0x5a6bd0, 0x18
-
-gUnknown_085A6BE8:: @ 85A6BE8
- .incbin "baserom.gba", 0x5a6be8, 0x5c8
-
-gUnknown_085A71B0:: @ 85A71B0
- .incbin "baserom.gba", 0x5a71b0, 0xa0
-
-gUnknown_085A7250:: @ 85A7250
- .incbin "baserom.gba", 0x5a7250, 0x3c
-
-gUnknown_085A728C:: @ 85A728C
- .incbin "baserom.gba", 0x5a728c, 0x18
-
-gUnknown_085A72A4:: @ 85A72A4
- .incbin "baserom.gba", 0x5a72a4, 0x18
-
-gUnknown_085A72BC:: @ 85A72BC
- .incbin "baserom.gba", 0x5a72bc, 0x8
-
-gUnknown_085A72C4:: @ 85A72C4
- .incbin "baserom.gba", 0x5a72c4, 0x8
-
-gUnknown_085A72CC:: @ 85A72CC
- .incbin "baserom.gba", 0x5a72cc, 0x8
-
-gUnknown_085A72D4:: @ 85A72D4
- .incbin "baserom.gba", 0x5a72d4, 0x10
-
-gUnknown_085A72E4:: @ 85A72E4
- .incbin "baserom.gba", 0x5a72e4, 0x8
-
-gUnknown_085A72EC:: @ 85A72EC
- .incbin "baserom.gba", 0x5a72ec, 0x8
-
-gUnknown_085A72F4:: @ 85A72F4
- .incbin "baserom.gba", 0x5a72f4, 0x54
-
-gUnknown_085A7348:: @ 85A7348
- .incbin "baserom.gba", 0x5a7348, 0x8
-
-gUnknown_085A7350:: @ 85A7350
- .incbin "baserom.gba", 0x5a7350, 0x88
-
-gUnknown_085A73D8:: @ 85A73D8
- .incbin "baserom.gba", 0x5a73d8, 0x8
-
-gUnknown_085A73E0:: @ 85A73E0
- .incbin "baserom.gba", 0x5a73e0, 0x24
-
-gUnknown_085A7404:: @ 85A7404
- .incbin "baserom.gba", 0x5a7404, 0x18
-
-gUnknown_085A741C:: @ 85A741C
- .incbin "baserom.gba", 0x5a741c, 0x8
diff --git a/data/diploma.s b/data/diploma.s
deleted file mode 100644
index 43a3d9c70..000000000
--- a/data/diploma.s
+++ /dev/null
@@ -1,22 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_085E7088:: @ 85E7088
- .incbin "baserom.gba", 0x5e7088, 0x40
-
-gUnknown_085E70C8:: @ 85E70C8
- .incbin "baserom.gba", 0x5e70c8, 0x73c
-
-gUnknown_085E7804:: @ 85E7804
- .incbin "baserom.gba", 0x5e7804, 0x9f8
-
-gUnknown_085E81FC:: @ 85E81FC
- .incbin "baserom.gba", 0x5e81fc, 0x8
-
-gUnknown_085E8204:: @ 85E8204
- .incbin "baserom.gba", 0x5e8204, 0x10
-
-gUnknown_085E8214:: @ 85E8214
- .incbin "baserom.gba", 0x5e8214, 0x4
diff --git a/data/enemy_mon_elevation.inc b/data/enemy_mon_elevation.inc
new file mode 100644
index 000000000..2dadadd07
--- /dev/null
+++ b/data/enemy_mon_elevation.inc
@@ -0,0 +1,415 @@
+@ This determines how much higher above the usual position the enemy Pokémon
+@ is during battle. Species that float or fly have nonzero values.
+gEnemyMonElevation:: @ 8305DCC
+ .byte 0 @ 0
+ .byte 0 @ SPECIES_BULBASAUR
+ .byte 0 @ SPECIES_IVYSAUR
+ .byte 0 @ SPECIES_VENUSAUR
+ .byte 0 @ SPECIES_CHARMANDER
+ .byte 0 @ SPECIES_CHARMELEON
+ .byte 0 @ SPECIES_CHARIZARD
+ .byte 0 @ SPECIES_SQUIRTLE
+ .byte 0 @ SPECIES_WARTORTLE
+ .byte 0 @ SPECIES_BLASTOISE
+ .byte 0 @ SPECIES_CATERPIE
+ .byte 0 @ SPECIES_METAPOD
+ .byte 8 @ SPECIES_BUTTERFREE
+ .byte 0 @ SPECIES_WEEDLE
+ .byte 0 @ SPECIES_KAKUNA
+ .byte 8 @ SPECIES_BEEDRILL
+ .byte 16 @ SPECIES_PIDGEY
+ .byte 0 @ SPECIES_PIDGEOTTO
+ .byte 4 @ SPECIES_PIDGEOT
+ .byte 0 @ SPECIES_RATTATA
+ .byte 0 @ SPECIES_RATICATE
+ .byte 0 @ SPECIES_SPEAROW
+ .byte 6 @ SPECIES_FEAROW
+ .byte 0 @ SPECIES_EKANS
+ .byte 0 @ SPECIES_ARBOK
+ .byte 0 @ SPECIES_PIKACHU
+ .byte 0 @ SPECIES_RAICHU
+ .byte 0 @ SPECIES_SANDSHREW
+ .byte 0 @ SPECIES_SANDSLASH
+ .byte 0 @ SPECIES_NIDORAN_F
+ .byte 0 @ SPECIES_NIDORINA
+ .byte 0 @ SPECIES_NIDOQUEEN
+ .byte 0 @ SPECIES_NIDORAN_M
+ .byte 0 @ SPECIES_NIDORINO
+ .byte 0 @ SPECIES_NIDOKING
+ .byte 0 @ SPECIES_CLEFAIRY
+ .byte 0 @ SPECIES_CLEFABLE
+ .byte 0 @ SPECIES_VULPIX
+ .byte 0 @ SPECIES_NINETALES
+ .byte 0 @ SPECIES_JIGGLYPUFF
+ .byte 0 @ SPECIES_WIGGLYTUFF
+ .byte 8 @ SPECIES_ZUBAT
+ .byte 8 @ SPECIES_GOLBAT
+ .byte 0 @ SPECIES_ODDISH
+ .byte 0 @ SPECIES_GLOOM
+ .byte 0 @ SPECIES_VILEPLUME
+ .byte 0 @ SPECIES_PARAS
+ .byte 0 @ SPECIES_PARASECT
+ .byte 0 @ SPECIES_VENONAT
+ .byte 8 @ SPECIES_VENOMOTH
+ .byte 0 @ SPECIES_DIGLETT
+ .byte 0 @ SPECIES_DUGTRIO
+ .byte 0 @ SPECIES_MEOWTH
+ .byte 0 @ SPECIES_PERSIAN
+ .byte 0 @ SPECIES_PSYDUCK
+ .byte 0 @ SPECIES_GOLDUCK
+ .byte 0 @ SPECIES_MANKEY
+ .byte 0 @ SPECIES_PRIMEAPE
+ .byte 0 @ SPECIES_GROWLITHE
+ .byte 0 @ SPECIES_ARCANINE
+ .byte 0 @ SPECIES_POLIWAG
+ .byte 0 @ SPECIES_POLIWHIRL
+ .byte 0 @ SPECIES_POLIWRATH
+ .byte 0 @ SPECIES_ABRA
+ .byte 0 @ SPECIES_KADABRA
+ .byte 0 @ SPECIES_ALAKAZAM
+ .byte 0 @ SPECIES_MACHOP
+ .byte 0 @ SPECIES_MACHOKE
+ .byte 0 @ SPECIES_MACHAMP
+ .byte 0 @ SPECIES_BELLSPROUT
+ .byte 0 @ SPECIES_WEEPINBELL
+ .byte 0 @ SPECIES_VICTREEBEL
+ .byte 0 @ SPECIES_TENTACOOL
+ .byte 0 @ SPECIES_TENTACRUEL
+ .byte 16 @ SPECIES_GEODUDE
+ .byte 0 @ SPECIES_GRAVELER
+ .byte 0 @ SPECIES_GOLEM
+ .byte 0 @ SPECIES_PONYTA
+ .byte 0 @ SPECIES_RAPIDASH
+ .byte 0 @ SPECIES_SLOWPOKE
+ .byte 0 @ SPECIES_SLOWBRO
+ .byte 16 @ SPECIES_MAGNEMITE
+ .byte 8 @ SPECIES_MAGNETON
+ .byte 0 @ SPECIES_FARFETCHD
+ .byte 0 @ SPECIES_DODUO
+ .byte 0 @ SPECIES_DODRIO
+ .byte 0 @ SPECIES_SEEL
+ .byte 0 @ SPECIES_DEWGONG
+ .byte 0 @ SPECIES_GRIMER
+ .byte 0 @ SPECIES_MUK
+ .byte 0 @ SPECIES_SHELLDER
+ .byte 0 @ SPECIES_CLOYSTER
+ .byte 4 @ SPECIES_GASTLY
+ .byte 4 @ SPECIES_HAUNTER
+ .byte 0 @ SPECIES_GENGAR
+ .byte 0 @ SPECIES_ONIX
+ .byte 0 @ SPECIES_DROWZEE
+ .byte 0 @ SPECIES_HYPNO
+ .byte 0 @ SPECIES_KRABBY
+ .byte 0 @ SPECIES_KINGLER
+ .byte 10 @ SPECIES_VOLTORB
+ .byte 12 @ SPECIES_ELECTRODE
+ .byte 0 @ SPECIES_EXEGGCUTE
+ .byte 0 @ SPECIES_EXEGGUTOR
+ .byte 0 @ SPECIES_CUBONE
+ .byte 0 @ SPECIES_MAROWAK
+ .byte 0 @ SPECIES_HITMONLEE
+ .byte 0 @ SPECIES_HITMONCHAN
+ .byte 0 @ SPECIES_LICKITUNG
+ .byte 8 @ SPECIES_KOFFING
+ .byte 6 @ SPECIES_WEEZING
+ .byte 0 @ SPECIES_RHYHORN
+ .byte 0 @ SPECIES_RHYDON
+ .byte 0 @ SPECIES_CHANSEY
+ .byte 0 @ SPECIES_TANGELA
+ .byte 0 @ SPECIES_KANGASKHAN
+ .byte 0 @ SPECIES_HORSEA
+ .byte 0 @ SPECIES_SEADRA
+ .byte 0 @ SPECIES_GOLDEEN
+ .byte 0 @ SPECIES_SEAKING
+ .byte 0 @ SPECIES_STARYU
+ .byte 0 @ SPECIES_STARMIE
+ .byte 0 @ SPECIES_MR_MIME
+ .byte 0 @ SPECIES_SCYTHER
+ .byte 0 @ SPECIES_JYNX
+ .byte 0 @ SPECIES_ELECTABUZZ
+ .byte 0 @ SPECIES_MAGMAR
+ .byte 0 @ SPECIES_PINSIR
+ .byte 0 @ SPECIES_TAUROS
+ .byte 0 @ SPECIES_MAGIKARP
+ .byte 0 @ SPECIES_GYARADOS
+ .byte 0 @ SPECIES_LAPRAS
+ .byte 0 @ SPECIES_DITTO
+ .byte 0 @ SPECIES_EEVEE
+ .byte 0 @ SPECIES_VAPOREON
+ .byte 0 @ SPECIES_JOLTEON
+ .byte 0 @ SPECIES_FLAREON
+ .byte 0 @ SPECIES_PORYGON
+ .byte 0 @ SPECIES_OMANYTE
+ .byte 0 @ SPECIES_OMASTAR
+ .byte 0 @ SPECIES_KABUTO
+ .byte 0 @ SPECIES_KABUTOPS
+ .byte 7 @ SPECIES_AERODACTYL
+ .byte 0 @ SPECIES_SNORLAX
+ .byte 6 @ SPECIES_ARTICUNO
+ .byte 8 @ SPECIES_ZAPDOS
+ .byte 5 @ SPECIES_MOLTRES
+ .byte 0 @ SPECIES_DRATINI
+ .byte 0 @ SPECIES_DRAGONAIR
+ .byte 6 @ SPECIES_DRAGONITE
+ .byte 0 @ SPECIES_MEWTWO
+ .byte 8 @ SPECIES_MEW
+ .byte 0 @ SPECIES_CHIKORITA
+ .byte 0 @ SPECIES_BAYLEEF
+ .byte 0 @ SPECIES_MEGANIUM
+ .byte 0 @ SPECIES_CYNDAQUIL
+ .byte 0 @ SPECIES_QUILAVA
+ .byte 0 @ SPECIES_TYPHLOSION
+ .byte 0 @ SPECIES_TOTODILE
+ .byte 0 @ SPECIES_CROCONAW
+ .byte 0 @ SPECIES_FERALIGATR
+ .byte 0 @ SPECIES_SENTRET
+ .byte 0 @ SPECIES_FURRET
+ .byte 0 @ SPECIES_HOOTHOOT
+ .byte 0 @ SPECIES_NOCTOWL
+ .byte 0 @ SPECIES_LEDYBA
+ .byte 8 @ SPECIES_LEDIAN
+ .byte 0 @ SPECIES_SPINARAK
+ .byte 0 @ SPECIES_ARIADOS
+ .byte 6 @ SPECIES_CROBAT
+ .byte 0 @ SPECIES_CHINCHOU
+ .byte 0 @ SPECIES_LANTURN
+ .byte 0 @ SPECIES_PICHU
+ .byte 0 @ SPECIES_CLEFFA
+ .byte 0 @ SPECIES_IGGLYBUFF
+ .byte 0 @ SPECIES_TOGEPI
+ .byte 0 @ SPECIES_TOGETIC
+ .byte 0 @ SPECIES_NATU
+ .byte 0 @ SPECIES_XATU
+ .byte 0 @ SPECIES_MAREEP
+ .byte 0 @ SPECIES_FLAAFFY
+ .byte 0 @ SPECIES_AMPHAROS
+ .byte 0 @ SPECIES_BELLOSSOM
+ .byte 0 @ SPECIES_MARILL
+ .byte 0 @ SPECIES_AZUMARILL
+ .byte 0 @ SPECIES_SUDOWOODO
+ .byte 0 @ SPECIES_POLITOED
+ .byte 11 @ SPECIES_HOPPIP
+ .byte 12 @ SPECIES_SKIPLOOM
+ .byte 9 @ SPECIES_JUMPLUFF
+ .byte 0 @ SPECIES_AIPOM
+ .byte 0 @ SPECIES_SUNKERN
+ .byte 0 @ SPECIES_SUNFLORA
+ .byte 8 @ SPECIES_YANMA
+ .byte 0 @ SPECIES_WOOPER
+ .byte 0 @ SPECIES_QUAGSIRE
+ .byte 0 @ SPECIES_ESPEON
+ .byte 0 @ SPECIES_UMBREON
+ .byte 0 @ SPECIES_MURKROW
+ .byte 0 @ SPECIES_SLOWKING
+ .byte 8 @ SPECIES_MISDREAVUS
+ .byte 8 @ SPECIES_UNOWN
+ .byte 0 @ SPECIES_WOBBUFFET
+ .byte 0 @ SPECIES_GIRAFARIG
+ .byte 0 @ SPECIES_PINECO
+ .byte 0 @ SPECIES_FORRETRESS
+ .byte 0 @ SPECIES_DUNSPARCE
+ .byte 6 @ SPECIES_GLIGAR
+ .byte 0 @ SPECIES_STEELIX
+ .byte 0 @ SPECIES_SNUBBULL
+ .byte 0 @ SPECIES_GRANBULL
+ .byte 0 @ SPECIES_QWILFISH
+ .byte 0 @ SPECIES_SCIZOR
+ .byte 0 @ SPECIES_SHUCKLE
+ .byte 0 @ SPECIES_HERACROSS
+ .byte 0 @ SPECIES_SNEASEL
+ .byte 0 @ SPECIES_TEDDIURSA
+ .byte 0 @ SPECIES_URSARING
+ .byte 0 @ SPECIES_SLUGMA
+ .byte 0 @ SPECIES_MAGCARGO
+ .byte 0 @ SPECIES_SWINUB
+ .byte 0 @ SPECIES_PILOSWINE
+ .byte 0 @ SPECIES_CORSOLA
+ .byte 0 @ SPECIES_REMORAID
+ .byte 0 @ SPECIES_OCTILLERY
+ .byte 0 @ SPECIES_DELIBIRD
+ .byte 0 @ SPECIES_MANTINE
+ .byte 0 @ SPECIES_SKARMORY
+ .byte 0 @ SPECIES_HOUNDOUR
+ .byte 0 @ SPECIES_HOUNDOOM
+ .byte 0 @ SPECIES_KINGDRA
+ .byte 0 @ SPECIES_PHANPY
+ .byte 0 @ SPECIES_DONPHAN
+ .byte 0 @ SPECIES_PORYGON2
+ .byte 0 @ SPECIES_STANTLER
+ .byte 0 @ SPECIES_SMEARGLE
+ .byte 0 @ SPECIES_TYROGUE
+ .byte 0 @ SPECIES_HITMONTOP
+ .byte 0 @ SPECIES_SMOOCHUM
+ .byte 0 @ SPECIES_ELEKID
+ .byte 0 @ SPECIES_MAGBY
+ .byte 0 @ SPECIES_MILTANK
+ .byte 0 @ SPECIES_BLISSEY
+ .byte 0 @ SPECIES_RAIKOU
+ .byte 0 @ SPECIES_ENTEI
+ .byte 0 @ SPECIES_SUICUNE
+ .byte 0 @ SPECIES_LARVITAR
+ .byte 0 @ SPECIES_PUPITAR
+ .byte 0 @ SPECIES_TYRANITAR
+ .byte 6 @ SPECIES_LUGIA
+ .byte 6 @ SPECIES_HO_OH
+ .byte 15 @ SPECIES_CELEBI
+ .byte 0 @ 252
+ .byte 0 @ 253
+ .byte 0 @ 254
+ .byte 0 @ 255
+ .byte 0 @ 256
+ .byte 0 @ 257
+ .byte 0 @ 258
+ .byte 0 @ 259
+ .byte 0 @ 260
+ .byte 0 @ 261
+ .byte 0 @ 262
+ .byte 0 @ 263
+ .byte 0 @ 264
+ .byte 0 @ 265
+ .byte 0 @ 266
+ .byte 0 @ 267
+ .byte 0 @ 268
+ .byte 0 @ 269
+ .byte 0 @ 270
+ .byte 0 @ 271
+ .byte 0 @ 272
+ .byte 0 @ 273
+ .byte 0 @ 274
+ .byte 0 @ 275
+ .byte 0 @ 276
+ .byte 0 @ SPECIES_TREECKO
+ .byte 0 @ SPECIES_GROVYLE
+ .byte 0 @ SPECIES_SCEPTILE
+ .byte 0 @ SPECIES_TORCHIC
+ .byte 0 @ SPECIES_COMBUSKEN
+ .byte 0 @ SPECIES_BLAZIKEN
+ .byte 0 @ SPECIES_MUDKIP
+ .byte 0 @ SPECIES_MARSHTOMP
+ .byte 0 @ SPECIES_SWAMPERT
+ .byte 0 @ SPECIES_POOCHYENA
+ .byte 0 @ SPECIES_MIGHTYENA
+ .byte 0 @ SPECIES_ZIGZAGOON
+ .byte 0 @ SPECIES_LINOONE
+ .byte 0 @ SPECIES_WURMPLE
+ .byte 0 @ SPECIES_SILCOON
+ .byte 8 @ SPECIES_BEAUTIFLY
+ .byte 0 @ SPECIES_CASCOON
+ .byte 10 @ SPECIES_DUSTOX
+ .byte 0 @ SPECIES_LOTAD
+ .byte 0 @ SPECIES_LOMBRE
+ .byte 0 @ SPECIES_LUDICOLO
+ .byte 0 @ SPECIES_SEEDOT
+ .byte 0 @ SPECIES_NUZLEAF
+ .byte 0 @ SPECIES_SHIFTRY
+ .byte 0 @ SPECIES_NINCADA
+ .byte 10 @ SPECIES_NINJASK
+ .byte 8 @ SPECIES_SHEDINJA
+ .byte 0 @ SPECIES_TAILLOW
+ .byte 0 @ SPECIES_SWELLOW
+ .byte 0 @ SPECIES_SHROOMISH
+ .byte 0 @ SPECIES_BRELOOM
+ .byte 0 @ SPECIES_SPINDA
+ .byte 16 @ SPECIES_WINGULL
+ .byte 8 @ SPECIES_PELIPPER
+ .byte 0 @ SPECIES_SURSKIT
+ .byte 10 @ SPECIES_MASQUERAIN
+ .byte 0 @ SPECIES_WAILMER
+ .byte 0 @ SPECIES_WAILORD
+ .byte 0 @ SPECIES_SKITTY
+ .byte 0 @ SPECIES_DELCATTY
+ .byte 0 @ SPECIES_KECLEON
+ .byte 4 @ SPECIES_BALTOY
+ .byte 10 @ SPECIES_CLAYDOL
+ .byte 0 @ SPECIES_NOSEPASS
+ .byte 0 @ SPECIES_TORKOAL
+ .byte 0 @ SPECIES_SABLEYE
+ .byte 0 @ SPECIES_BARBOACH
+ .byte 0 @ SPECIES_WHISCASH
+ .byte 0 @ SPECIES_LUVDISC
+ .byte 0 @ SPECIES_CORPHISH
+ .byte 0 @ SPECIES_CRAWDAUNT
+ .byte 0 @ SPECIES_FEEBAS
+ .byte 0 @ SPECIES_MILOTIC
+ .byte 0 @ SPECIES_CARVANHA
+ .byte 0 @ SPECIES_SHARPEDO
+ .byte 0 @ SPECIES_TRAPINCH
+ .byte 0 @ SPECIES_VIBRAVA
+ .byte 7 @ SPECIES_FLYGON
+ .byte 0 @ SPECIES_MAKUHITA
+ .byte 0 @ SPECIES_HARIYAMA
+ .byte 0 @ SPECIES_ELECTRIKE
+ .byte 0 @ SPECIES_MANECTRIC
+ .byte 0 @ SPECIES_NUMEL
+ .byte 0 @ SPECIES_CAMERUPT
+ .byte 0 @ SPECIES_SPHEAL
+ .byte 0 @ SPECIES_SEALEO
+ .byte 0 @ SPECIES_WALREIN
+ .byte 0 @ SPECIES_CACNEA
+ .byte 0 @ SPECIES_CACTURNE
+ .byte 0 @ SPECIES_SNORUNT
+ .byte 12 @ SPECIES_GLALIE
+ .byte 13 @ SPECIES_LUNATONE
+ .byte 4 @ SPECIES_SOLROCK
+ .byte 0 @ SPECIES_AZURILL
+ .byte 0 @ SPECIES_SPOINK
+ .byte 0 @ SPECIES_GRUMPIG
+ .byte 0 @ SPECIES_PLUSLE
+ .byte 0 @ SPECIES_MINUN
+ .byte 0 @ SPECIES_MAWILE
+ .byte 0 @ SPECIES_MEDITITE
+ .byte 0 @ SPECIES_MEDICHAM
+ .byte 12 @ SPECIES_SWABLU
+ .byte 8 @ SPECIES_ALTARIA
+ .byte 0 @ SPECIES_WYNAUT
+ .byte 9 @ SPECIES_DUSKULL
+ .byte 0 @ SPECIES_DUSCLOPS
+ .byte 0 @ SPECIES_ROSELIA
+ .byte 0 @ SPECIES_SLAKOTH
+ .byte 0 @ SPECIES_VIGOROTH
+ .byte 0 @ SPECIES_SLAKING
+ .byte 0 @ SPECIES_GULPIN
+ .byte 0 @ SPECIES_SWALOT
+ .byte 0 @ SPECIES_TROPIUS
+ .byte 0 @ SPECIES_WHISMUR
+ .byte 0 @ SPECIES_LOUDRED
+ .byte 0 @ SPECIES_EXPLOUD
+ .byte 0 @ SPECIES_CLAMPERL
+ .byte 0 @ SPECIES_HUNTAIL
+ .byte 0 @ SPECIES_GOREBYSS
+ .byte 0 @ SPECIES_ABSOL
+ .byte 12 @ SPECIES_SHUPPET
+ .byte 8 @ SPECIES_BANETTE
+ .byte 0 @ SPECIES_SEVIPER
+ .byte 0 @ SPECIES_ZANGOOSE
+ .byte 0 @ SPECIES_RELICANTH
+ .byte 0 @ SPECIES_ARON
+ .byte 0 @ SPECIES_LAIRON
+ .byte 0 @ SPECIES_AGGRON
+ .byte 16 @ SPECIES_CASTFORM
+ .byte 0 @ SPECIES_VOLBEAT
+ .byte 0 @ SPECIES_ILLUMISE
+ .byte 0 @ SPECIES_LILEEP
+ .byte 0 @ SPECIES_CRADILY
+ .byte 0 @ SPECIES_ANORITH
+ .byte 0 @ SPECIES_ARMALDO
+ .byte 0 @ SPECIES_RALTS
+ .byte 0 @ SPECIES_KIRLIA
+ .byte 0 @ SPECIES_GARDEVOIR
+ .byte 0 @ SPECIES_BAGON
+ .byte 0 @ SPECIES_SHELGON
+ .byte 0 @ SPECIES_SALAMENCE
+ .byte 8 @ SPECIES_BELDUM
+ .byte 0 @ SPECIES_METANG
+ .byte 0 @ SPECIES_METAGROSS
+ .byte 0 @ SPECIES_REGIROCK
+ .byte 0 @ SPECIES_REGICE
+ .byte 0 @ SPECIES_REGISTEEL
+ .byte 0 @ SPECIES_KYOGRE
+ .byte 0 @ SPECIES_GROUDON
+ .byte 6 @ SPECIES_RAYQUAZA
+ .byte 6 @ SPECIES_LATIAS
+ .byte 6 @ SPECIES_LATIOS
+ .byte 12 @ SPECIES_JIRACHI
+ .byte 8 @ SPECIES_DEOXYS
+ .byte 12 @ SPECIES_CHIMECHO
diff --git a/data/event_script_command_function_table.inc b/data/event_script_command_function_table.inc
index f44cdb7db..7cd00c37d 100644
--- a/data/event_script_command_function_table.inc
+++ b/data/event_script_command_function_table.inc
@@ -1,229 +1,229 @@
.align 2
gScriptCmdTable:: @ 81DB67C
- .4byte s00_nop
- .4byte s01_nop
- .4byte s02_end
- .4byte s03_return
- .4byte s04_call
- .4byte s05_goto
- .4byte s06_if_jump
- .4byte s07_if_call
- .4byte s08_jumpstd
- .4byte s09_callstd
- .4byte s0A_jumpstd_if
- .4byte s0B_callstd_if
- .4byte s0C_restore_execution_after_sCF
- .4byte s0D_endscript_killram
- .4byte s0E_set_byte
- .4byte s0F_u32_var_to_const
- .4byte s10_u8_var_to_const
- .4byte s11_u8_ptr_to_const
- .4byte s12_u32_var_to_ptr
- .4byte s13_u8_var_to_ptr
- .4byte s14_u32_var_to_var
- .4byte s15_u8_ptr_to_ptr
- .4byte s16_u16_gvar_to_const
- .4byte s17_u16_gvar_add_const
- .4byte sub_809993C
- .4byte s19_u16_gvar_gvar
- .4byte s1A_u16_gvar_gvar
- .4byte s1B_cmp_u8_var_var
- .4byte s1C_cmp_u8_var_const
- .4byte s1D_cmp_u8_var_ptr
- .4byte s1E_cmp_u8_ptr_var
- .4byte s1F_cmp_u8_ptr_const
- .4byte s20_cmp_u8_ptr_ptr
- .4byte s21_cmp_u16_gvar_const
- .4byte s22_cmp_u16_gvar_gvar
- .4byte s23_execute_ASM
- .4byte s24_execute_ASM_2
- .4byte s25_extended_cmd
- .4byte s26_extended_cmd_setvar
- .4byte s27_set_to_waitstate
- .4byte s28_pause
- .4byte s29_flag_set
- .4byte s2A_flag_clear
- .4byte s2B_flag_check
- .4byte s2C_unknown
- .4byte s2D_unknown
- .4byte s2E_unknown
- .4byte s2F_music_play
- .4byte s30_music_check
- .4byte s31_PlayFanfare
- .4byte s32_fanfare_wait
- .4byte s33_play_music
- .4byte s34_unknown
- .4byte s35_fade_to_default
- .4byte s36_fade_to_music
- .4byte s37_fadeout
- .4byte s38_fadein
- .4byte s39_warp_sfx
- .4byte s3A_warp_new_music
- .4byte s3B_warp_keep_music
- .4byte sub_809A054
- .4byte s3D_warp_v4
- .4byte s3E_set_new_map
- .4byte s3F_set_new_map_DMA
- .4byte sub_809A2DC
- .4byte sub_809A35C
- .4byte s42_get_map_camera_pos
- .4byte s43_get_player_party_count
- .4byte sub_80999A0
- .4byte sub_80999E4
- .4byte sub_8099A28
- .4byte sub_8099A6C
- .4byte s48_get_item_type
- .4byte sub_8099ADC
- .4byte sub_8099B20
- .4byte sub_8099B64
- .4byte sub_8099B90
- .4byte sub_8099BE8
- .4byte sub_8099BBC
- .4byte s4F_execute_movement
- .4byte s50_execute_movement_remote
- .4byte s51_waitmove
- .4byte s52_waitmove_remote
- .4byte s53_hide_sprite
- .4byte s54_hide_sprite_set_coords
- .4byte s55_show_sprite
- .4byte s56_show_sprite_set_coords
- .4byte s57_move_sprites
- .4byte s58_npc_f1_clear_x20
- .4byte s59_npc_f1_set_x20
- .4byte s5A_face_player
- .4byte s5B_npc_set_direction
- .4byte s5C_trainer_battle_configure_and_start
- .4byte sub_809B5E4
- .4byte sub_809B5F0
- .4byte sub_809B604
- .4byte s60_check_trainer_flag
- .4byte s61_set_trainer_flag
- .4byte s62_unset_trainer_flag
- .4byte s63_new_sprite_location_permanent
- .4byte s64_set_sprite_top_left_corner
- .4byte s65_set_sprite_behaviour
- .4byte sub_809AC78
- .4byte s67_execute_box
- .4byte s68_close_box
- .4byte sub_809AAC4
- .4byte sub_809AAEC
- .4byte s6B_release
- .4byte s6C_release_2
- .4byte sub_809ACC0
- .4byte s6E_yes_no
- .4byte s6F_multichoice
- .4byte sub_809AD3C
- .4byte sub_809AD90
- .4byte sub_809AD8C
- .4byte s73_nop_skip_word
- .4byte sub_809ADEC
- .4byte sub_809ADF8
- .4byte s76_close_picture_box
- .4byte sub_809AE48
- .4byte sub_809AE6C
- .4byte s79_give_pokemon
- .4byte s7A_create_egg
- .4byte s7B_change_pokedata_AP
- .4byte sub_809B3DC
- .4byte s7D_load_pokename
- .4byte s7E_load_first_pokenames
- .4byte s7F_load_pokename_team
- .4byte s80_load_item_name
- .4byte sub_809B114
- .4byte s82_load_item_name
- .4byte s83_load_textvar_var
- .4byte s84_load_textvar_std_expression
- .4byte s85_load_textvar_pointer
- .4byte s86_pokemart
- .4byte s87_pokemartdecor
- .4byte s88_pokemartbp
- .4byte s89_open_casino_game1
- .4byte berry_script_cmd
- .4byte sub_809B784
- .4byte sub_809B794
- .4byte sub_809B7A4
- .4byte sub_809B7B4
- .4byte s8F_get_random_val
- .4byte s90_AddMoney
- .4byte s91_SubtractMoney
- .4byte s92_check_money
- .4byte s93_display_money
- .4byte s94_hide_money
- .4byte s95_update_money
- .4byte sub_809B758
- .4byte s97_screen_special_effect
- .4byte s98_refade_with_timer
- .4byte s99_unknown
- .4byte s9A_unknown
- .4byte s9B_unknown
- .4byte s9C_execute_HM
- .4byte s9D_set_HM_animation_data
- .4byte s9E_checkarray_HM_animation
- .4byte s9F_changeposition_fly
- .4byte sA0_check_gender
- .4byte sA1_play_cry
- .4byte sA2_setmaptile
- .4byte sA3_set_standard_weather_data
- .4byte sA4_set_weather_data
- .4byte sub_8099E7C
- .4byte sA6_activate_per_step_callback_eg_ash
- .4byte sA7_set_new_map_footer
- .4byte sA8_unknown
- .4byte sA9_unknown
- .4byte sAA_create_new_sprite
- .4byte sAB_unknown
- .4byte sAC_open_door
- .4byte sub_809B9C8
- .4byte sub_809BA24
- .4byte sub_809BA38
- .4byte sub_809BA7C
- .4byte sub_809BAC0
- .4byte sub_809BAFC
- .4byte sB3_get_coin_amount
- .4byte sub_809BB20
- .4byte sub_809BB58
- .4byte sB6_load_battle
- .4byte sub_809B6A8
- .4byte sB8_set_virtual_address
- .4byte sB9_virtual_jump
- .4byte sBA_virtual_call
- .4byte sBB_virtual_if_jump
- .4byte sBC_virtual_if_call
- .4byte sBD_virtual_message
- .4byte sBE_virtual_load_text
- .4byte sBF_virtual_load_textbuffer
- .4byte sub_809B578
- .4byte sC1_hide_coins
- .4byte sC2_update_coins
- .4byte sC3_unknown
- .4byte sC4_unknown
- .4byte sub_809B8DC
- .4byte sC6_load_textvar_box_label
- .4byte s01_nop
- .4byte s01_nop
- .4byte s01_nop
- .4byte s01_nop
- .4byte s01_nop
- .4byte s01_nop
- .4byte sCD_set_obedient_bit
- .4byte sCE_check_obedient_bit
- .4byte sCF_execute_RAM_script_DMA
- .4byte s01_nop
- .4byte sD1_warp_v5
- .4byte sub_809BD70
- .4byte sub_809BB90
- .4byte sub_809BBB4
- .4byte ScrCmd_MossdeepGymSwitch
- .4byte sub_809BBDC
- .4byte sub_809A150
- .4byte sub_809BBE8
- .4byte sub_809BBFC
- .4byte sub_809AF94
- .4byte sub_809AC3C
- .4byte sub_8099D20
- .4byte sub_809BDD0
- .4byte sub_809BE0C
- .4byte sub_809ABF0
- .4byte sub_809BE54
- .4byte sub_809B214
- .4byte sub_809B0C4
+ .4byte ScrCmd_nop
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_end
+ .4byte ScrCmd_return
+ .4byte ScrCmd_call
+ .4byte ScrCmd_goto
+ .4byte ScrCmd_goto_if
+ .4byte ScrCmd_call_if
+ .4byte ScrCmd_gotostd
+ .4byte ScrCmd_callstd
+ .4byte ScrCmd_gotostd_if
+ .4byte ScrCmd_callstd_if
+ .4byte ScrCmd_gotoram
+ .4byte ScrCmd_killscript
+ .4byte ScrCmd_setmysteryeventstatus
+ .4byte ScrCmd_loadword
+ .4byte ScrCmd_loadbyte
+ .4byte ScrCmd_writebytetoaddr
+ .4byte ScrCmd_loadbytefromaddr
+ .4byte ScrCmd_setptrbyte
+ .4byte ScrCmd_copylocal
+ .4byte ScrCmd_copybyte
+ .4byte ScrCmd_setvar
+ .4byte ScrCmd_addvar
+ .4byte ScrCmd_subvar
+ .4byte ScrCmd_copyvar
+ .4byte ScrCmd_setorcopyvar
+ .4byte ScrCmd_compare_local_to_local
+ .4byte ScrCmd_compare_local_to_value
+ .4byte ScrCmd_compare_local_to_addr
+ .4byte ScrCmd_compare_addr_to_local
+ .4byte ScrCmd_compare_addr_to_value
+ .4byte ScrCmd_compare_addr_to_addr
+ .4byte ScrCmd_compare_var_to_value
+ .4byte ScrCmd_compare_var_to_var
+ .4byte ScrCmd_callnative
+ .4byte ScrCmd_gotonative
+ .4byte ScrCmd_special
+ .4byte ScrCmd_specialvar
+ .4byte ScrCmd_waitstate
+ .4byte ScrCmd_delay
+ .4byte ScrCmd_setflag
+ .4byte ScrCmd_clearflag
+ .4byte ScrCmd_checkflag
+ .4byte ScrCmd_initclock
+ .4byte ScrCmd_dodailyevents
+ .4byte ScrCmd_gettime
+ .4byte ScrCmd_playse
+ .4byte ScrCmd_waitse
+ .4byte ScrCmd_playfanfare
+ .4byte ScrCmd_waitfanfare
+ .4byte ScrCmd_playbgm
+ .4byte ScrCmd_savebgm
+ .4byte ScrCmd_fadedefaultbgm
+ .4byte ScrCmd_fadenewbgm
+ .4byte ScrCmd_fadeoutbgm
+ .4byte ScrCmd_fadeinbgm
+ .4byte ScrCmd_warp
+ .4byte ScrCmd_warpsilent
+ .4byte ScrCmd_warpdoor
+ .4byte ScrCmd_warphole
+ .4byte ScrCmd_warpteleport
+ .4byte ScrCmd_setwarp
+ .4byte ScrCmd_setdynamicwarp
+ .4byte ScrCmd_setdivewarp
+ .4byte ScrCmd_setholewarp
+ .4byte ScrCmd_getplayerxy
+ .4byte ScrCmd_countpokemon
+ .4byte ScrCmd_additem
+ .4byte ScrCmd_removeitem
+ .4byte ScrCmd_checkitemspace
+ .4byte ScrCmd_checkitem
+ .4byte ScrCmd_checkitemtype
+ .4byte ScrCmd_addpcitem
+ .4byte ScrCmd_checkpcitem
+ .4byte ScrCmd_adddecor
+ .4byte ScrCmd_removedecor
+ .4byte ScrCmd_hasdecor
+ .4byte ScrCmd_checkdecor
+ .4byte ScrCmd_applymovement
+ .4byte ScrCmd_applymovement_at
+ .4byte ScrCmd_waitmovement
+ .4byte ScrCmd_waitmovement_at
+ .4byte ScrCmd_removeobject
+ .4byte ScrCmd_removeobject_at
+ .4byte ScrCmd_addobject
+ .4byte ScrCmd_addobject_at
+ .4byte ScrCmd_setobjectxy
+ .4byte ScrCmd_showobject
+ .4byte ScrCmd_hideobject
+ .4byte ScrCmd_faceplayer
+ .4byte ScrCmd_turnobject
+ .4byte ScrCmd_trainerbattle
+ .4byte ScrCmd_battlebegin
+ .4byte ScrCmd_ontrainerbattleend
+ .4byte ScrCmd_ontrainerbattleendgoto
+ .4byte ScrCmd_checktrainerflag
+ .4byte ScrCmd_settrainerflag
+ .4byte ScrCmd_cleartrainerflag
+ .4byte ScrCmd_setobjectxyperm
+ .4byte ScrCmd_moveobjectoffscreen
+ .4byte ScrCmd_setobjectmovementtype
+ .4byte ScrCmd_waitmessage
+ .4byte ScrCmd_message
+ .4byte ScrCmd_closemessage
+ .4byte ScrCmd_lockall
+ .4byte ScrCmd_lock
+ .4byte ScrCmd_releaseall
+ .4byte ScrCmd_release
+ .4byte ScrCmd_waitbutton
+ .4byte ScrCmd_yesnobox
+ .4byte ScrCmd_multichoice
+ .4byte ScrCmd_multichoicedefault
+ .4byte ScrCmd_multichoicegrid
+ .4byte ScrCmd_drawbox
+ .4byte ScrCmd_erasebox
+ .4byte ScrCmd_drawboxtext
+ .4byte ScrCmd_drawpokepic
+ .4byte ScrCmd_erasepokepic
+ .4byte ScrCmd_drawcontestwinner
+ .4byte ScrCmd_braillemessage
+ .4byte ScrCmd_givepoke
+ .4byte ScrCmd_giveegg
+ .4byte ScrCmd_setpokemove
+ .4byte ScrCmd_checkpokemove
+ .4byte ScrCmd_getspeciesname
+ .4byte ScrCmd_getfirstpartypokename
+ .4byte ScrCmd_getpartypokename
+ .4byte ScrCmd_getitemname
+ .4byte ScrCmd_getdecorname
+ .4byte ScrCmd_getmovename
+ .4byte ScrCmd_getnumberstring
+ .4byte ScrCmd_getstdstring
+ .4byte ScrCmd_getstring
+ .4byte ScrCmd_pokemart
+ .4byte ScrCmd_pokemartdecor
+ .4byte ScrCmd_pokemartbp
+ .4byte ScrCmd_playslotmachine
+ .4byte ScrCmd_plantberrytree
+ .4byte ScrCmd_choosecontestpkmn
+ .4byte ScrCmd_startcontest
+ .4byte ScrCmd_showcontestresults
+ .4byte ScrCmd_contestlinktransfer
+ .4byte ScrCmd_random
+ .4byte ScrCmd_givemoney
+ .4byte ScrCmd_takemoney
+ .4byte ScrCmd_checkmoney
+ .4byte ScrCmd_showmoneybox
+ .4byte ScrCmd_hidemoneybox
+ .4byte ScrCmd_updatemoneybox
+ .4byte ScrCmd_getpricereduction
+ .4byte ScrCmd_fadescreen
+ .4byte ScrCmd_fadescreendelay
+ .4byte ScrCmd_setdarklevel
+ .4byte ScrCmd_animdarklevel
+ .4byte ScrCmd_messageautoscroll
+ .4byte ScrCmd_dofieldeffect
+ .4byte ScrCmd_setfieldeffect
+ .4byte ScrCmd_waitfieldeffect
+ .4byte ScrCmd_sethealplace
+ .4byte ScrCmd_checkplayergender
+ .4byte ScrCmd_playpokecry
+ .4byte ScrCmd_setmaptile
+ .4byte ScrCmd_resetweather
+ .4byte ScrCmd_setweather
+ .4byte ScrCmd_doweather
+ .4byte ScrCmd_tileeffect
+ .4byte ScrCmd_setmaplayoutindex
+ .4byte ScrCmd_setobjectpriority
+ .4byte ScrCmd_resetobjectpriority
+ .4byte ScrCmd_createvobject
+ .4byte ScrCmd_turnvobject
+ .4byte ScrCmd_opendoor
+ .4byte ScrCmd_closedoor
+ .4byte ScrCmd_waitdooranim
+ .4byte ScrCmd_setdooropen
+ .4byte ScrCmd_setdoorclosed
+ .4byte ScrCmd_addelevmenuitem
+ .4byte ScrCmd_showelevmenu
+ .4byte ScrCmd_checkcoins
+ .4byte ScrCmd_givecoins
+ .4byte ScrCmd_takecoins
+ .4byte ScrCmd_setwildbattle
+ .4byte ScrCmd_dowildbattle
+ .4byte ScrCmd_setvaddress
+ .4byte ScrCmd_vgoto
+ .4byte ScrCmd_vcall
+ .4byte ScrCmd_vgoto_if
+ .4byte ScrCmd_vcall_if
+ .4byte ScrCmd_vmessage
+ .4byte ScrCmd_vloadword
+ .4byte ScrCmd_vgetstring
+ .4byte ScrCmd_showcoinsbox
+ .4byte ScrCmd_hidecoinsbox
+ .4byte ScrCmd_updatecoinsbox
+ .4byte ScrCmd_incrementgamestat
+ .4byte ScrCmd_setescapewarp
+ .4byte ScrCmd_waitpokecry
+ .4byte ScrCmd_getboxname
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_setpokeobedient
+ .4byte ScrCmd_checkpokeobedience
+ .4byte ScrCmd_cmdCF
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_warpD1
+ .4byte ScrCmd_setpokemetlocation
+ .4byte ScrCmd_mossdeepgym1
+ .4byte ScrCmd_mossdeepgym2
+ .4byte ScrCmd_mossdeepgym3
+ .4byte ScrCmd_mossdeepgym4
+ .4byte ScrCmd_warpD7
+ .4byte ScrCmd_cmdD8
+ .4byte ScrCmd_cmdD9
+ .4byte ScrCmd_cmdDA
+ .4byte ScrCmd_cmdDB
+ .4byte ScrCmd_fadescreenswapbuffers
+ .4byte ScrCmd_gettrainerclass
+ .4byte ScrCmd_gettrainername
+ .4byte ScrCmd_pokenavcall
+ .4byte ScrCmd_warpE0
+ .4byte ScrCmd_getcontesttype
+ .4byte ScrCmd_getitemnameplural
diff --git a/data/event_scripts.s b/data/event_scripts.s
index e4293570d..ad1216b91 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -12,13 +12,12 @@ gScriptCmdTableEnd:: @ 81DBA08
gSpecialVars:: @ 81DBA0C
.incbin "baserom.gba", 0x1dba0c, 0x58
-gUnknown_081DBA64:: @ 81DBA64
- .incbin "baserom.gba", 0x1dba64, 0x83c
+ .include "data/specials.inc"
-gUnknown_081DC2A0:: @ 81DC2A0
+gStdScripts:: @ 81DC2A0
.incbin "baserom.gba", 0x1dc2a0, 0x2c
-gUnknown_081DC2CC:: @ 81DC2CC
+gStdScripts_End:: @ 81DC2CC
.incbin "baserom.gba", 0x1dc2cc, 0x34ee
gUnknown_081DF7BA:: @ 81DF7BA
@@ -84,14 +83,14 @@ gUnknown_0823B68C:: @ 823B68C
gUnknown_0823C050:: @ 823C050
.incbin "baserom.gba", 0x23c050, 0x6431
-gUnknown_08242481:: @ 8242481
+gText_BattleRecordCouldntBeSaved:: @ 8242481
.incbin "baserom.gba", 0x242481, 0x87b
gUnknown_08242CFC:: @ 8242CFC
.incbin "baserom.gba", 0x242cfc, 0x6a91
-gUnknown_0824978D:: @ 824978D
- .incbin "baserom.gba", 0x24978d, 0xe
+gText_LinkStandby3:: @ 824978D
+ .string "Link standby…$"
gUnknown_0824979B:: @ 824979B
.incbin "baserom.gba", 0x24979b, 0x944d
@@ -822,7 +821,15 @@ gUnknown_0827EE09:: @ 27EE09
.incbin "baserom.gba", 0x27ee09, 0x2
gUnknown_0827EE0B:: @ 827EE0B
- .incbin "baserom.gba", 0x27ee0b, 0x118fa
+ .incbin "baserom.gba", 0x27ee0b, 0x46a
+
+ .include "data/text/tv.inc"
+
+ .incbin "baserom.gba", 0x0028c7e9, 0x90f
+
+ .include "data/text/pokemon_news.inc"
+
+ .incbin "baserom.gba", 0x28e066, 0x269f
gUnknown_08290705:: @ 8290705
.incbin "baserom.gba", 0x290705, 0xeb
diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s
index c357efb12..d6ad2e578 100644
--- a/data/evolution_graphics.s
+++ b/data/evolution_graphics.s
@@ -3,7 +3,7 @@
.section .rodata
- .incbin "baserom.gba", 0x5f53c4, 0x48
+ .incbin "baserom.gba", 0x5f53cc, 0x40
gUnknown_085F540C:: @ 85F540C
.incbin "baserom.gba", 0x5f540c, 0x10
diff --git a/data/fanfares.s b/data/fanfares.s
index 26d2d82d1..2a0c2576a 100644
--- a/data/fanfares.s
+++ b/data/fanfares.s
@@ -5,4 +5,22 @@
.align 2, 0
sFanfares:: @ 85248BC
- .incbin "baserom.gba", 0x5248bc, 0x48
+@ song number, duration
+ .2byte 0x016f, 0x0050
+ .2byte 0x0172, 0x00a0
+ .2byte 0x0173, 0x00dc
+ .2byte 0x0174, 0x00dc
+ .2byte 0x0170, 0x00a0
+ .2byte 0x0171, 0x0154
+ .2byte 0x017a, 0x00b4
+ .2byte 0x0183, 0x0078
+ .2byte 0x0184, 0x02c6
+ .2byte 0x0185, 0x00fa
+ .2byte 0x0186, 0x0096
+ .2byte 0x0187, 0x00a0
+ .2byte 0x0226, 0x01c2
+ .2byte 0x0212, 0x00aa
+ .2byte 0x0211, 0x00c4
+ .2byte 0x01cb, 0x0139
+ .2byte 0x01d2, 0x013e
+ .2byte 0x01cc, 0x0087
diff --git a/data/field_effect_scripts.s b/data/field_effect_scripts.s
index 89ed27301..ceb327084 100644
--- a/data/field_effect_scripts.s
+++ b/data/field_effect_scripts.s
@@ -316,7 +316,7 @@ gFieldEffectScript_FieldMoveShowMonInit:: @ 82DBCCC
field_eff_end
gFieldEffectScript_Unknown60:: @ 82DBCD2
- field_eff_callnative sub_81799B8
+ field_eff_callnative FldEff_UsePuzzleEffect
field_eff_end
gFieldEffectScript_Unknown61:: @ 82DBCD8
diff --git a/data/field_region_map.s b/data/field_region_map.s
index 2ddc65739..f179ba8ce 100644
--- a/data/field_region_map.s
+++ b/data/field_region_map.s
@@ -3,8 +3,12 @@
.section .rodata
-gUnknown_085E5068:: @ 85E5068
- .incbin "baserom.gba", 0x5e5068, 0x8
+ .align 2
+gUnknown_085E5068:: @ 85E5068 struct BgTemplate
+ .4byte 0x000001f0, 0x00002dca
+ .align 2
gUnknown_085E5070:: @ 85E5070
- .incbin "baserom.gba", 0x5e5070, 0x18
+ window_template 0x00, 0x11, 0x11, 0x0c, 0x02, 0x0f, 0x0001
+ window_template 0x00, 0x16, 0x01, 0x07, 0x02, 0x0f, 0x0019
+ window_template 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000
diff --git a/data/field_screen.s b/data/field_screen.s
index 63d4f942c..fd1b1f466 100644
--- a/data/field_screen.s
+++ b/data/field_screen.s
@@ -4,6 +4,9 @@
.section .rodata
.align 2, 0
+gUnknown_0854014C:: @ 854014C
+ .incbin "baserom.gba", 0x54014c, 0xc000
+
gUnknown_0854C14C:: @ 854C14C
.incbin "baserom.gba", 0x54c14c, 0x4
diff --git a/data/truck_scene_porthole.s b/data/field_special_scene.s
index c89babcc9..fe8ef1622 100644
--- a/data/truck_scene_porthole.s
+++ b/data/field_special_scene.s
@@ -2,8 +2,10 @@
.include "constants/constants.inc"
.section .rodata
+
.align 2, 0
-gUnknown_0858E898:: @ 858E898
+
+gTruckCamera_HorizontalTable:: @ 858E898
.incbin "baserom.gba", 0x58e898, 0x13
gUnknown_0858E8AB:: @ 858E8AB
diff --git a/data/fldeff_emotion.s b/data/fldeff_emotion.s
deleted file mode 100644
index f2c90d637..000000000
--- a/data/fldeff_emotion.s
+++ /dev/null
@@ -1,11 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_085507B4:: @ 85507B4
- .incbin "baserom.gba", 0x5507b4, 0x18
-
-gUnknown_085507CC:: @ 85507CC
- .incbin "baserom.gba", 0x5507cc, 0x18
diff --git a/data/graphics.s b/data/graphics.s
index 96aaf3911..e89177a1d 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -13,16 +13,42 @@ gUnknown_08C00524:: @ 8C00524
.include "data/graphics/pokemon/circled_question_mark_graphics.inc"
@ 8C00C10
- .incbin "baserom.gba", 0xc00c10, 0x16f0
+ .incbin "baserom.gba", 0xc00c10, 0xa34
+
+gUnknown_08C01644:: @ 8C01644
+ .incbin "baserom.gba", 0xc01644, 0xE0
+
+gUnknown_08C01724:: @ 8C01724
+ .incbin "baserom.gba", 0xc01724, 0xBDC
gUnknown_08C02300:: @ 8C02300
- .incbin "baserom.gba", 0xc02300, 0x70f0
+ .incbin "baserom.gba", 0xc02300, 0x7c
+
+gUnknown_08C0237C:: @ 8C0237C
+ .incbin "baserom.gba", 0xc0237c, 0x7074
gUnknown_08C093F0:: @ 8C093F0
- .incbin "baserom.gba", 0xc093f0, 0x87ec
+ .incbin "baserom.gba", 0xc093f0, 0x87ac
+
+ .align 2
+gBattleInterface_BallStatusBarPal:: @ 8C11B9C
+ .incbin "graphics/battle_interface/ball_status_bar.gbapal"
+
+ .align 2
+gBattleInterface_BallDisplayPal:: @ 8C11BBC
+ .incbin "graphics/battle_interface/ball_display.gbapal"
+
+ .align 2
+gHealthboxElementsGfxTable:: @ 8C11BDC
+ .incbin "baserom.gba", 0xc11bdc, 0x840
-gUnknown_08C11BDC:: @ 8C11BDC
- .incbin "baserom.gba", 0xc11bdc, 0x52b4
+ .align 2
+gBattleInterface_BallDisplayGfx:: @ 8C1241C
+ .incbin "graphics/battle_interface/ball_display.4bpp"
+
+ .align 2
+gUnknown_08C1249C:: @ 8C1249C
+ .incbin "baserom.gba", 0xc1249c, 0x49f4
gUnknown_08C16E90:: @ 8C16E90
.incbin "baserom.gba", 0xc16e90, 0x118
@@ -73,7 +99,22 @@ gUnknown_08C1D1E8:: @ 8C1D1E8
.incbin "baserom.gba", 0xc1d1e8, 0x28
gUnknown_08C1D210:: @ 8C1D210
- .incbin "baserom.gba", 0xc1d210, 0x3458
+ .incbin "baserom.gba", 0xc1d210, 0x1fb8
+
+gUnknown_08C1F1C8:: @ 8C1F1C8
+ .incbin "baserom.gba", 0xc1f1c8, 0x2a4
+
+gUnknown_08C1F46C:: @ 8C1F46C
+ .incbin "baserom.gba", 0xc1f46c, 0x17c
+
+gUnknown_08C1F5E8:: @ 8C1F5E8
+ .incbin "baserom.gba", 0xc1f5e8, 0x184
+
+gUnknown_08C1F76C:: @ 8C1F76C
+ .incbin "baserom.gba", 0xc1f76c, 0x17c
+
+gUnknown_08C1F8E8:: @ 8C1F8E8
+ .incbin "baserom.gba", 0xc1f8e8, 0xd80
gUnknown_08C20668:: @ 8C20668
.incbin "baserom.gba", 0xc20668, 0x1c
@@ -166,10 +207,10 @@ gUnknown_08C2EA9C:: @ 8C2EA9C
.incbin "baserom.gba", 0xc2ea9c, 0xf6c
@ 8C2FA08
- .include "data/graphics/pokemon/mon_graphics.inc"
+ .include "data/graphics/pokemon/graphics.inc"
@ 8D51DC8
- .include "data/graphics/trainers/trainer_graphics.inc"
+ .include "data/graphics/trainers/graphics.inc"
.align 2
gMonIcon_QuestionMark:: @ 8D774D0
@@ -189,19 +230,82 @@ gUnknown_08D77AE4:: @ 8D77AE4
.incbin "baserom.gba", 0xd77ae4, 0x28
gUnknown_08D77B0C:: @ 8D77B0C
- .incbin "baserom.gba", 0xd77b0c, 0x25fc
+ .incbin "baserom.gba", 0xd77b0c, 0x25c
+
+gUnknown_08D77D68:: @ 8D77D68
+ .incbin "baserom.gba", 0xd77d68, 0x5b0
+
+gUnknown_08D78318:: @ 8D78318
+ .incbin "baserom.gba", 0xd78318, 0x38
+
+gUnknown_08D78350:: @ 8D78350
+ .incbin "baserom.gba", 0xd78350, 0x2b0
+
+gUnknown_08D78600:: @ 8D78600
+ .incbin "baserom.gba", 0xd78600, 0x678
+
+gUnknown_08D78C78:: @ 8D78C78
+ .incbin "baserom.gba", 0xd78C78, 0x40
+
+gUnknown_08D78CB8:: @ 8D78CB8
+ .incbin "baserom.gba", 0xd78CB8, 0x2b0
+
+gUnknown_08D78F68:: @ 8D78F68
+ .incbin "baserom.gba", 0xd78f68, 0x5f8
+
+gUnknown_08D79560:: @ 8D79560
+ .incbin "baserom.gba", 0xd79560, 0x48
+
+gUnknown_08D795A8:: @ 8D795A8
+ .incbin "baserom.gba", 0xd795A8, 0x2b0
+
+gUnknown_08D79858:: @ 8D79858
+ .incbin "baserom.gba", 0xd79858, 0x5b8
+
+gUnknown_08D79E10:: @ 8D79E10
+ .incbin "baserom.gba", 0xd79E10, 0x48
+
+gUnknown_08D79E58:: @ 8D79E58
+ .incbin "baserom.gba", 0xd79e58, 0x2b0
gUnknown_08D7A108:: @ 8D7A108
- .incbin "baserom.gba", 0xd7a108, 0x618
+ .incbin "baserom.gba", 0xd7a108, 0x5d4
+
+gUnknown_08D7A6DC:: @ 8D7A6DC
+ .incbin "baserom.gba", 0xd7a6DC, 0x44
gUnknown_08D7A720:: @ 8D7A720
- .incbin "baserom.gba", 0xd7a720, 0x13f4
+ .incbin "baserom.gba", 0xd7a720, 0x2b0
+
+gUnknown_08D7A9D0:: @ 8D7A9D0
+ .incbin "baserom.gba", 0xd7a9D0, 0x5a8
+
+gUnknown_08D7AF78:: @ 8D7AF78
+ .incbin "baserom.gba", 0xd7af78, 0x40
+
+gUnknown_08D7AFB8:: @ 8D7AFB8
+ .incbin "baserom.gba", 0xd7aFB8, 0x2b0
+
+gUnknown_08D7B268:: @ 8D7B268
+ .incbin "baserom.gba", 0xd7b268, 0x5c0
+
+gUnknown_08D7B828:: @ 8D7B828
+ .incbin "baserom.gba", 0xd7b828, 0x3c
+
+gUnknown_08D7B864:: @ 8D7B864
+ .incbin "baserom.gba", 0xd7b864, 0x2b0
gUnknown_08D7BB14:: @ 8D7BB14
- .incbin "baserom.gba", 0xd7bb14, 0x640
+ .incbin "baserom.gba", 0xd7bb14, 0x5f8
+
+gUnknown_08D7C10C:: @ 8D7C10C
+ .incbin "baserom.gba", 0xd7c10c, 0x48
gUnknown_08D7C154:: @ 8D7C154
- .incbin "baserom.gba", 0xd7c154, 0x2ec
+ .incbin "baserom.gba", 0xd7c154, 0x2b0
+
+gUnknown_08D7C404:: @ 8D7C404
+ .incbin "baserom.gba", 0xd7c404, 0x3c
gUnknown_08D7C440:: @ 8D7C440
.incbin "baserom.gba", 0xd7c440, 0x5ac
@@ -222,7 +326,10 @@ gUnknown_08D7D590:: @ 8D7D590
.incbin "baserom.gba", 0xd7d590, 0x674
gUnknown_08D7DC04:: @ 8D7DC04
- .incbin "baserom.gba", 0xd7dc04, 0x2f0
+ .incbin "baserom.gba", 0xd7dc04, 0x2b0
+
+gUnknown_08D7DEB4:: @ 8D7DEB4
+ .incbin "baserom.gba", 0xd7deb4, 0x40
gUnknown_08D7DEF4:: @ 8D7DEF4
.incbin "baserom.gba", 0xd7def4, 0x3c
@@ -258,13 +365,49 @@ gUnknown_08D7E1F8:: @ 8D7E1F8
.incbin "baserom.gba", 0xd7e1f8, 0x3c
gUnknown_08D7E234:: @ 8D7E234
- .incbin "baserom.gba", 0xd7e234, 0x17c4
+ .incbin "baserom.gba", 0xd7e234, 0x4c
+
+gUnknown_08D7E280:: @ 8D7E280
+ .incbin "baserom.gba", 0xd7e280, 0x588
+
+gUnknown_08D7E808:: @ 8D7E808
+ .incbin "baserom.gba", 0xd7e808, 0x1bc
+
+gUnknown_08D7E9C4:: @ 8D7E9C4
+ .incbin "baserom.gba", 0xd7e9C4, 0x710
+
+gUnknown_08D7F0D4:: @ 8D7F0D4
+ .incbin "baserom.gba", 0xd7F0D4, 0x238
+
+gUnknown_08D7F30C:: @ 8D7F30C
+ .incbin "baserom.gba", 0xd7F30c, 0x544
+
+gUnknown_08D7F850:: @ 8D7F850
+ .incbin "baserom.gba", 0xd7F850, 0x1a8
gUnknown_08D7F9F8:: @ 8D7F9F8
.incbin "baserom.gba", 0xd7f9f8, 0x4cc
gUnknown_08D7FEC4:: @ 8D7FEC4
- .incbin "baserom.gba", 0xd7fec4, 0x174c
+ .incbin "baserom.gba", 0xd7fec4, 0x190
+
+gUnknown_08D80054:: @ 8D80054
+ .incbin "baserom.gba", 0xd80054, 0x60c
+
+gUnknown_08D80660:: @ 8D80660
+ .incbin "baserom.gba", 0xd80660, 0x1a4
+
+gUnknown_08D80804:: @ 8D80804
+ .incbin "baserom.gba", 0xd80804, 0x54c
+
+gUnknown_08D80D50:: @ 8D80D50
+ .incbin "baserom.gba", 0xd80d50, 0x14C
+
+gUnknown_08D80E9C:: @ 8D80E9C
+ .incbin "baserom.gba", 0xd80e9c, 0x5e0
+
+gUnknown_08D8147C:: @ 8D8147C
+ .incbin "baserom.gba", 0xd8147C, 0x194
gUnknown_08D81610:: @ 8D81610
.incbin "baserom.gba", 0xd81610, 0x81c
@@ -324,7 +467,19 @@ gUnknown_08D85600:: @ 8D85600
.incbin "baserom.gba", 0xd85600, 0x20
gUnknown_08D85620:: @ 8D85620
- .incbin "baserom.gba", 0xd85620, 0xa8
+ .incbin "baserom.gba", 0xd85620, 0x20
+
+gUnknown_08D85640:: @ 8D85640
+ .incbin "baserom.gba", 0xd85640, 0x20
+
+gUnknown_08D85660:: @ 8D85660
+ .incbin "baserom.gba", 0xd85660, 0x20
+
+gUnknown_08D85680:: @ 8D85680
+ .incbin "baserom.gba", 0xd85680, 0x20
+
+gUnknown_08D856A0:: @ 8D856A0
+ .incbin "baserom.gba", 0xd856a0, 0x28
gUnknown_08D856C8:: @ 8D856C8
.incbin "baserom.gba", 0xd856c8, 0xe0
@@ -336,8 +491,13 @@ gUnknown_08D85A1C:: @ 8D85A1C
.incbin "baserom.gba", 0xd85a1c, 0x234
gUnknown_08D85C50:: @ 8D85C50
- .incbin "baserom.gba", 0xd85c50, 0x80
+ .incbin "baserom.gba", 0xd85c50, 0x60
+ .align 2
+gIntro2BrendanNoTurnPal:: @ 8D85CB0
+ .incbin "graphics/intro/intro2_brendan_noturn.gbapal"
+
+ .align 2
gUnknown_08D85CD0:: @ 8D85CD0
.incbin "baserom.gba", 0xd85cd0, 0x182
@@ -348,8 +508,49 @@ gUnknown_08D85E72:: @ 8D85E72
.incbin "baserom.gba", 0xd85e72, 0xa
gUnknown_08D85E7C:: @ 8D85E7C
- .incbin "baserom.gba", 0xd85e7c, 0x2618
+ .incbin "baserom.gba", 0xd85e7c, 0x54
+
+ .align 2
+gIntro2VolbeatPal:: @ 8D85ED0
+ .incbin "graphics/intro/intro2_volbeat.gbapal"
+
+ .align 2
+gIntro2TorchicPal:: @ 8D85EF0
+ .incbin "graphics/intro/intro2_torchic.gbapal"
+
+ .align 2
+gIntro2ManectricPal:: @ 8D85ED0
+ .incbin "graphics/intro/intro2_manectric.gbapal"
+
+ .align 2
+gIntro2FlygonPal:: @ 8D85F30
+ .incbin "graphics/intro/intro2_flygon.gbapal"
+
+ .align 2
+gIntro2VolbeatGfx:: @ 8D85F50
+ .incbin "graphics/intro/intro2_volbeat.4bpp.lz"
+
+ .align 2
+gIntro2TorchicGfx:: @ 8D86130
+ .incbin "graphics/intro/intro2_torchic.4bpp.lz"
+ .align 2
+gIntro2ManectricGfx:: @ 8D86550
+ .incbin "graphics/intro/intro2_manectric.4bpp.lz"
+
+ .align 2
+gIntro2FlygonGfx:: @ 8D8702C
+ .incbin "graphics/intro/intro2_flygon.4bpp.lz"
+
+ .align 2
+gIntro2BrendanNoTurnGfx:: @ 8D87568
+ .incbin "graphics/intro/intro2_brendan_noturn.4bpp.lz"
+
+ .align 2
+gIntro2MayNoTurnGfx:: @ 8D87CA4
+ .incbin "graphics/intro/intro2_may_noturn.4bpp.lz"
+
+ .align 2
gUnknown_08D88494:: @ 8D88494
.incbin "baserom.gba", 0xd88494, 0x8ac
@@ -381,8 +582,17 @@ gUnknown_08D8B440:: @ 8D8B440
.incbin "baserom.gba", 0xd8b440, 0x2a8
gUnknown_08D8B6E8:: @ 8D8B6E8
- .incbin "baserom.gba", 0xd8b6e8, 0x38c
+ .incbin "baserom.gba", 0xd8b6e8, 0x124
+ .align 2
+gIntro3LightningGfx:: @ 8D8B80C
+ .incbin "graphics/intro/intro3_lightning.4bpp.lz"
+
+ .align 2
+gIntro3LightningPal:: @ 8D8BA54
+ .incbin "graphics/intro/intro3_lightning.gbapal"
+
+ .align 2
gUnknown_08D8BA74:: @ 8D8BA74
.incbin "baserom.gba", 0xd8ba74, 0x6f8
@@ -393,7 +603,26 @@ gUnknown_08D8C838:: @ 8D8C838
.incbin "baserom.gba", 0xd8c838, 0x490
gUnknown_08D8CCC8:: @ 8D8CCC8
- .incbin "baserom.gba", 0xd8ccc8, 0x748
+ .incbin "baserom.gba", 0xd8ccc8, 0x27c
+
+ .align 2
+gIntro2BubblesGfx:: @ 8D8CF44
+ .incbin "graphics/intro/intro2_bubbles.4bpp.lz"
+
+ .align 2
+gIntro2BubblesPal:: @ 8D8D110
+ .incbin "graphics/intro/intro2_bubbles.gbapal"
+
+ .align 2
+gIntro1FlygonGfx:: @ 8D8D130
+ .incbin "graphics/intro/intro1_flygon.4bpp.lz"
+
+ .align 2
+gIntro1SparkleGfx:: @ 8D8D208
+ .incbin "graphics/intro/intro1_sparkle.4bpp.lz"
+
+ .align 2
+ .incbin "baserom.gba", 0xd8d2a4, 0x16c
gUnknown_08D8D410:: @ 8D8D410
.incbin "baserom.gba", 0xd8d410, 0x17c
@@ -414,7 +643,14 @@ gUnknown_08D8EC24:: @ 8D8EC24
.incbin "baserom.gba", 0xd8ec24, 0xf78
gUnknown_08D8FB9C:: @ 8D8FB9C
- .incbin "baserom.gba", 0xd8fb9c, 0xd8
+ .incbin "baserom.gba", 0xd8fb9c, 0x24
+
+gUnknown_08D8FBC0:: @ 8D8FBC0
+ .incbin "baserom.gba", 0xd8fbc0, 0x30
+
+ .align 2
+gBattleInterface_BallStatusBarGfx:: @ 8D8FBF0
+ .incbin "graphics/battle_interface/ball_status_bar.4bpp.lz"
.align 2
gMonIcon_Egg:: @ 8D8FC74
@@ -512,14 +748,17 @@ gUnknown_08D9AE04:: @ 8D9AE04
gUnknown_08D9AF44:: @ 8D9AF44
.incbin "baserom.gba", 0xd9af44, 0x78
-gUnknown_08D9AFBC:: @ 8D9AFBC
+gBuyMenuFrame_Gfx:: @ 8D9AFBC
.incbin "baserom.gba", 0xd9afbc, 0x10c
-gUnknown_08D9B0C8:: @ 8D9B0C8
+gMenuMoneyPal:: @ 8D9B0C8
.incbin "baserom.gba", 0xd9b0c8, 0x28
-gUnknown_08D9B0F0:: @ 8D9B0F0
- .incbin "baserom.gba", 0xd9b0f0, 0x1c4
+gBuyMenuFrame_Tilemap:: @ 8D9B0F0
+ .incbin "baserom.gba", 0xd9b0f0, 0x140
+
+gMenuMoneyGfx:: @ 8D9B230
+ .incbin "baserom.gba", 0xd9b230, 0x84
gUnknown_08D9B2B4:: @ 8D9B2B4
.incbin "baserom.gba", 0xd9b2b4, 0x1bc
@@ -642,7 +881,10 @@ gUnknown_08DAAFEC:: @ 8DAAFEC
.include "data/graphics/items/item_graphics.inc"
@ 8DB7AA0
- .incbin "baserom.gba", 0xdb7aa0, 0x2a78
+ .include "data/graphics/decorations/decoration_graphics.inc"
+
+@ 8DBA14C
+ .incbin "baserom.gba", 0xdba14c, 0x3cc
gUnknown_08DBA518:: @ 8DBA518
.incbin "baserom.gba", 0xdba518, 0x80
@@ -671,8 +913,116 @@ gCableCarCord_Gfx:: @ 8DBC2C0
gUnknown_08DBC2E8:: @ 8DBC2E8
.incbin "baserom.gba", 0xdbc2e8, 0x72c
-gUnknown_08DBCA14:: @ 8DBCA14
- .incbin "baserom.gba", 0xdbca14, 0x3d00
+gUnknown_08DBCA14:: @ 0x08DBCA14
+ .incbin "baserom.gba", 0xdbca14, 0x1e04
+
+gUnknown_08DBE818:: @ 0x08DBE818
+ .incbin "baserom.gba", 0xdbe818, 0x20
+
+gUnknown_08DBE838:: @ 0x08DBE838
+ .incbin "baserom.gba", 0xdbe838, 0x20
+
+gUnknown_08DBE858:: @ 0x08DBE858
+ .incbin "baserom.gba", 0xdbe858, 0x20
+
+gUnknown_08DBE878:: @ 0x08DBE878
+ .incbin "baserom.gba", 0xdbe878, 0x20
+
+gUnknown_08DBE898:: @ 0x08DBE898
+ .incbin "baserom.gba", 0xdbe898, 0x20
+
+gUnknown_08DBE8B8:: @ 0x08DBE8B8
+ .incbin "baserom.gba", 0xdbe8b8, 0x20
+
+gUnknown_08DBE8D8:: @ 0x08DBE8D8
+ .incbin "baserom.gba", 0xdbe8d8, 0x20
+
+gUnknown_08DBE8F8:: @ 0x08DBE8F8
+ .incbin "baserom.gba", 0xdbe8f8, 0x20
+
+gUnknown_08DBE918:: @ 0x08DBE918
+ .incbin "baserom.gba", 0xdbe918, 0x20
+
+gUnknown_08DBE938:: @ 0x08DBE938
+ .incbin "baserom.gba", 0xdbe938, 0x20
+
+gUnknown_08DBE958:: @ 0x08DBE958
+ .incbin "baserom.gba", 0xdbe958, 0x20
+
+gUnknown_08DBE978:: @ 0x08DBE978
+ .incbin "baserom.gba", 0xdbe978, 0x20
+
+gUnknown_08DBE998:: @ 0x08DBE998
+ .incbin "baserom.gba", 0xdbe998, 0x1a0
+
+gUnknown_08DBEB38:: @ 0x08DBEB38
+ .incbin "baserom.gba", 0xdbeb38, 0x13c
+
+gUnknown_08DBEC74:: @ 0x08DBEC74
+ .incbin "baserom.gba", 0xdbec74, 0x210
+
+gUnknown_08DBEE84:: @ 0x08DBEE84
+ .incbin "baserom.gba", 0xdbee84, 0xd8
+
+gUnknown_08DBEF5C:: @ 0x08DBEF5C
+ .incbin "baserom.gba", 0xdbef5c, 0x1f8
+
+gUnknown_08DBF154:: @ 0x08DBF154
+ .incbin "baserom.gba", 0xdbf154, 0x180
+
+gUnknown_08DBF2D4:: @ 0x08DBF2D4
+ .incbin "baserom.gba", 0xdbf2d4, 0xa8
+
+gUnknown_08DBF37C:: @ 0x08DBF37C
+ .incbin "baserom.gba", 0xdbf37c, 0x190
+
+gUnknown_08DBF50C:: @ 0x08DBF50C
+ .incbin "baserom.gba", 0xdbf50c, 0x140
+
+gUnknown_08DBF64C:: @ 0x08DBF64C
+ .incbin "baserom.gba", 0xdbf64c, 0x168
+
+gUnknown_08DBF7B4:: @ 0x08DBF7B4
+ .incbin "baserom.gba", 0xdbf7b4, 0x150
+
+gUnknown_08DBF904:: @ 0x08DBF904
+ .incbin "baserom.gba", 0xdbf904, 0x2a0
+
+gUnknown_08DBFBA4:: @ 0x08DBFBA4
+ .incbin "baserom.gba", 0xdbfba4, 0xd8
+
+gUnknown_08DBFC7C:: @ 0x08DBFC7C
+ .incbin "baserom.gba", 0xdbfc7c, 0xe0
+
+gUnknown_08DBFD5C:: @ 0x08DBFD5C
+ .incbin "baserom.gba", 0xdbfd5c, 0x10c
+
+gUnknown_08DBFE68:: @ 0x08DBFE68
+ .incbin "baserom.gba", 0xdbfe68, 0xdc
+
+gUnknown_08DBFF44:: @ 0x08DBFF44
+ .incbin "baserom.gba", 0xdbff44, 0xf0
+
+gUnknown_08DC0034:: @ 0x08DC0034
+ .incbin "baserom.gba", 0xdc0034, 0xe0
+
+gUnknown_08DC0114:: @ 0x08DC0114
+ .incbin "baserom.gba", 0xdc0114, 0xe0
+
+gUnknown_08DC01F4:: @ 0x08DC01F4
+ .incbin "baserom.gba", 0xdc01f4, 0x10c
+
+gUnknown_08DC0300:: @ 0x08DC0300
+ .incbin "baserom.gba", 0xdc0300, 0xf0
+
+gUnknown_08DC03F0:: @ 0x08DC03F0
+ .incbin "baserom.gba", 0xdc03f0, 0xf8
+
+gUnknown_08DC04E8:: @ 0x08DC04E8
+ .incbin "baserom.gba", 0xdc04e8, 0x118
+
+gUnknown_08DC0600:: @ 0x08DC0600
+ .incbin "baserom.gba", 0xdc0600, 0x114
gUnknown_08DC0714:: @ 8DC0714
.incbin "baserom.gba", 0xdc0714, 0x40
@@ -1107,19 +1457,29 @@ gTitleScreenBgPalettes:: @ 8DDE258
.incbin "graphics/title_screen/rayquaza_and_clouds.gbapal"
.align 2
-gUnknown_08DDE438:: @ 8DDE438
- .incbin "baserom.gba", 0xdde438, 0x20
+gTitleScreenEmeraldVersionPal:: @ 8DDE438
+ .incbin "graphics/title_screen/emerald_version.gbapal"
+ .align 2
gUnknown_08DDE458:: @ 8DDE458
.incbin "baserom.gba", 0xdde458, 0x238
-gTitleScreenPokemonLogoTiles:: @ 8DDE690
+gTitleScreenPokemonLogoGfx:: @ 8DDE690
.incbin "graphics/title_screen/pokemon_logo.8bpp.lz"
.align 2
-@ 8DDFD94
- .incbin "baserom.gba", 0xddfd94, 0x8b0
+gTitleScreenEmeraldVersionGfx:: @ 8DDFD94
+ .incbin "graphics/title_screen/emerald_version.8bpp.lz"
+
+ .align 2
+gTitleScreenPressStartPal:: @ 8DE03C8
+ .incbin "graphics/title_screen/press_start.gbapal"
+
+ .align 2
+gTitleScreenPressStartGfx:: @ 8DE03E8
+ .incbin "graphics/title_screen/press_start.4bpp.lz"
+ .align 2
gUnknown_08DE0644:: @ 8DE0644
.incbin "baserom.gba", 0xde0644, 0x184
diff --git a/data/graphics/decorations/decoration_graphics.inc b/data/graphics/decorations/decoration_graphics.inc
new file mode 100644
index 000000000..c7ea9be70
--- /dev/null
+++ b/data/graphics/decorations/decoration_graphics.inc
@@ -0,0 +1,252 @@
+gUnknown_08DB7AA0::
+ .incbin "graphics/decorations/decor_heavy_desk.4bpp.lz"
+
+gUnknown_08DB7B34::
+ .incbin "graphics/decorations/decor_heavy_desk.gbapal.lz"
+
+gUnknown_08DB7B5C::
+ .incbin "graphics/decorations/decor_ragged_desk.4bpp.lz"
+
+gUnknown_08DB7BEC::
+ .incbin "graphics/decorations/decor_ragged_desk.gbapal.lz"
+
+gUnknown_08DB7C08::
+ .incbin "graphics/decorations/decor_comfort_desk.4bpp.lz"
+
+gUnknown_08DB7CE8::
+ .incbin "graphics/decorations/decor_comfort_desk.gbapal.lz"
+
+gUnknown_08DB7D08::
+ .incbin "graphics/decorations/decor_pretty_desk.4bpp.lz"
+
+gUnknown_08DB7DCC::
+ .incbin "graphics/decorations/decor_pretty_desk.gbapal.lz"
+
+gUnknown_08DB7DF4::
+ .incbin "graphics/decorations/decor_brick_desk.4bpp.lz"
+
+gUnknown_08DB7EA0::
+ .incbin "graphics/decorations/decor_brick_desk.gbapal.lz"
+
+gUnknown_08DB7EC4::
+ .incbin "graphics/decorations/decor_camp_desk.4bpp.lz"
+
+gUnknown_08DB7F60::
+ .incbin "graphics/decorations/decor_camp_desk.gbapal.lz"
+
+gUnknown_08DB7F7C::
+ .incbin "graphics/decorations/decor_hard_desk.4bpp.lz"
+
+gUnknown_08DB8070::
+ .incbin "graphics/decorations/decor_hard_desk.gbapal.lz"
+
+gUnknown_08DB808C::
+ .incbin "graphics/decorations/decor_red_plant.4bpp.lz"
+
+gUnknown_08DB8138::
+ .incbin "graphics/decorations/decor_red_plant.gbapal.lz"
+
+gUnknown_08DB8160::
+ .incbin "graphics/decorations/decor_tropical_plant.4bpp.lz"
+
+gUnknown_08DB8218::
+ .incbin "graphics/decorations/decor_tropical_plant.gbapal.lz"
+
+gUnknown_08DB823C::
+ .incbin "graphics/decorations/decor_pretty_flowers.4bpp.lz"
+
+gUnknown_08DB8300::
+ .incbin "graphics/decorations/decor_pretty_flowers.gbapal.lz"
+
+gUnknown_08DB8328::
+ .incbin "graphics/decorations/decor_colorful_plant.4bpp.lz"
+
+gUnknown_08DB8430::
+ .incbin "graphics/decorations/decor_colorful_plant.gbapal.lz"
+
+gUnknown_08DB8458::
+ .incbin "graphics/decorations/decor_big_plant.4bpp.lz"
+
+gUnknown_08DB8528::
+ .incbin "graphics/decorations/decor_big_plant.gbapal.lz"
+
+gUnknown_08DB854C::
+ .incbin "graphics/decorations/decor_gorgeous_plant.4bpp.lz"
+
+gUnknown_08DB862C::
+ .incbin "graphics/decorations/decor_gorgeous_plant.gbapal.lz"
+
+gUnknown_08DB8654::
+ .incbin "graphics/decorations/decor_red_brick.4bpp.lz"
+
+gUnknown_08DB86C4::
+ .incbin "graphics/decorations/decor_red_brick.gbapal.lz"
+
+gUnknown_08DB86E0::
+ .incbin "graphics/decorations/decor_yellow_brick.4bpp.lz"
+
+gUnknown_08DB8750::
+ .incbin "graphics/decorations/decor_yellow_brick.gbapal.lz"
+
+gUnknown_08DB876C::
+ .incbin "graphics/decorations/decor_blue_brick.4bpp.lz"
+
+gUnknown_08DB87DC::
+ .incbin "graphics/decorations/decor_blue_brick.gbapal.lz"
+
+gUnknown_08DB87F8::
+ .incbin "graphics/decorations/decor_red_tent.4bpp.lz"
+
+gUnknown_08DB88D8::
+ .incbin "graphics/decorations/decor_red_tent.gbapal.lz"
+
+gUnknown_08DB8900::
+ .incbin "graphics/decorations/decor_blue_tent.4bpp.lz"
+
+gUnknown_08DB89E0::
+ .incbin "graphics/decorations/decor_blue_tent.gbapal.lz"
+
+gUnknown_08DB8A08::
+ .incbin "graphics/decorations/decor_solid_board.4bpp.lz"
+
+gUnknown_08DB8A68::
+ .incbin "graphics/decorations/decor_solid_board.gbapal.lz"
+
+gUnknown_08DB8A84::
+ .incbin "graphics/decorations/decor_slide.4bpp.lz"
+
+gUnknown_08DB8B40::
+ .incbin "graphics/decorations/decor_slide.gbapal.lz"
+
+gUnknown_08DB8B68::
+ .incbin "graphics/decorations/decor_tire.4bpp.lz"
+
+gUnknown_08DB8C40::
+ .incbin "graphics/decorations/decor_tire.gbapal.lz"
+
+gUnknown_08DB8C5C::
+ .incbin "graphics/decorations/decor_stand.4bpp.lz"
+
+gUnknown_08DB8CF4::
+ .incbin "graphics/decorations/decor_stand.gbapal.lz"
+
+gUnknown_08DB8D18::
+ .incbin "graphics/decorations/decor_breakable_door.4bpp.lz"
+
+gUnknown_08DB8DB0::
+ .incbin "graphics/decorations/decor_breakable_door.gbapal.lz"
+
+gUnknown_08DB8DD4::
+ .incbin "graphics/decorations/decor_sand_ornament.4bpp.lz"
+
+gUnknown_08DB8E80::
+ .incbin "graphics/decorations/decor_sand_ornament.gbapal.lz"
+
+gUnknown_08DB8EA0::
+ .incbin "graphics/decorations/decor_glass_ornament.4bpp.lz"
+
+gUnknown_08DB8F58::
+ .incbin "graphics/decorations/decor_glass_ornament.gbapal.lz"
+
+gUnknown_08DB8F7C::
+ .incbin "graphics/decorations/decor_surf_mat.4bpp.lz"
+
+gUnknown_08DB9038::
+ .incbin "graphics/decorations/decor_surf_mat.gbapal.lz"
+
+gUnknown_08DB9058::
+ .incbin "graphics/decorations/decor_thunder_mat.4bpp.lz"
+
+gUnknown_08DB9130::
+ .incbin "graphics/decorations/decor_thunder_mat.gbapal.lz"
+
+gUnknown_08DB9154::
+ .incbin "graphics/decorations/decor_fire_blast_mat.4bpp.lz"
+
+gUnknown_08DB9218::
+ .incbin "graphics/decorations/decor_fire_blast_mat.gbapal.lz"
+
+gUnknown_08DB9234::
+ .incbin "graphics/decorations/decor_powder_snow_mat.4bpp.lz"
+
+gUnknown_08DB92FC::
+ .incbin "graphics/decorations/decor_powder_snow_mat.gbapal.lz"
+
+gUnknown_08DB931C::
+ .incbin "graphics/decorations/decor_attract_mat.4bpp.lz"
+
+gUnknown_08DB93E8::
+ .incbin "graphics/decorations/decor_attract_mat.gbapal.lz"
+
+gUnknown_08DB940C::
+ .incbin "graphics/decorations/decor_fissure_mat.4bpp.lz"
+
+gUnknown_08DB94CC::
+ .incbin "graphics/decorations/decor_fissure_mat.gbapal.lz"
+
+gUnknown_08DB94E8::
+ .incbin "graphics/decorations/decor_spikes_mat.4bpp.lz"
+
+gUnknown_08DB95AC::
+ .incbin "graphics/decorations/decor_spikes_mat.gbapal.lz"
+
+gUnknown_08DB95D0::
+ .incbin "graphics/decorations/decor_snorlax_doll.4bpp.lz"
+
+gUnknown_08DB96C4::
+ .incbin "graphics/decorations/decor_snorlax_doll.gbapal.lz"
+
+gUnknown_08DB96EC::
+ .incbin "graphics/decorations/decor_rhydon_doll.4bpp.lz"
+
+gUnknown_08DB97F4::
+ .incbin "graphics/decorations/decor_rhydon_doll.gbapal.lz"
+
+gUnknown_08DB981C::
+ .incbin "graphics/decorations/decor_lapras_doll.4bpp.lz"
+
+gUnknown_08DB9908::
+ .incbin "graphics/decorations/decor_lapras_doll.gbapal.lz"
+
+gUnknown_08DB9930::
+ .incbin "graphics/decorations/decor_venusaur_doll.4bpp.lz"
+
+gUnknown_08DB9A54::
+ .incbin "graphics/decorations/decor_venusaur_doll.gbapal.lz"
+
+gUnknown_08DB9A7C::
+ .incbin "graphics/decorations/decor_charizard_doll.4bpp.lz"
+
+gUnknown_08DB9B7C::
+ .incbin "graphics/decorations/decor_charizard_doll.gbapal.lz"
+
+gUnknown_08DB9BA4::
+ .incbin "graphics/decorations/decor_blastoise_doll.4bpp.lz"
+
+gUnknown_08DB9CB0::
+ .incbin "graphics/decorations/decor_blastoise_doll.gbapal.lz"
+
+gUnknown_08DB9CD8::
+ .incbin "graphics/decorations/decor_wailmer_doll.4bpp.lz"
+
+gUnknown_08DB9DAC::
+ .incbin "graphics/decorations/decor_wailmer_doll.gbapal.lz"
+
+gUnknown_08DB9DD4::
+ .incbin "graphics/decorations/decor_regice_doll.4bpp.lz"
+
+gUnknown_08DB9EE4::
+ .incbin "graphics/decorations/decor_regice_doll.gbapal.lz"
+
+gUnknown_08DB9F08::
+ .incbin "graphics/decorations/decor_regirock_doll.4bpp.lz"
+
+gUnknown_08DB9FFC::
+ .incbin "graphics/decorations/decor_regirock_doll.gbapal.lz"
+
+gUnknown_08DBA020::
+ .incbin "graphics/decorations/decor_registeel_doll.4bpp.lz"
+
+gUnknown_08DBA12C::
+ .incbin "graphics/decorations/decor_registeel_doll.gbapal.lz"
+
diff --git a/data/graphics/pokemon/animation_delay_table.inc b/data/graphics/pokemon/animation_delay_table.inc
new file mode 100644
index 000000000..55d602bab
--- /dev/null
+++ b/data/graphics/pokemon/animation_delay_table.inc
@@ -0,0 +1,412 @@
+gMonAnimationDelayTable:: @ 8329B87
+ .byte 0x00 @ SPECIES_BULBASAUR
+ .byte 0x00 @ SPECIES_IVYSAUR
+ .byte 0x00 @ SPECIES_VENUSAUR
+ .byte 0x00 @ SPECIES_CHARMANDER
+ .byte 0x00 @ SPECIES_CHARMELEON
+ .byte 0x00 @ SPECIES_CHARIZARD
+ .byte 0x00 @ SPECIES_SQUIRTLE
+ .byte 0x00 @ SPECIES_WARTORTLE
+ .byte 0x32 @ SPECIES_BLASTOISE
+ .byte 0x00 @ SPECIES_CATERPIE
+ .byte 0x00 @ SPECIES_METAPOD
+ .byte 0x00 @ SPECIES_BUTTERFREE
+ .byte 0x0a @ SPECIES_WEEDLE
+ .byte 0x14 @ SPECIES_KAKUNA
+ .byte 0x23 @ SPECIES_BEEDRILL
+ .byte 0x00 @ SPECIES_PIDGEY
+ .byte 0x19 @ SPECIES_PIDGEOTTO
+ .byte 0x00 @ SPECIES_PIDGEOT
+ .byte 0x00 @ SPECIES_RATTATA
+ .byte 0x00 @ SPECIES_RATICATE
+ .byte 0x00 @ SPECIES_SPEAROW
+ .byte 0x02 @ SPECIES_FEAROW
+ .byte 0x1e @ SPECIES_EKANS
+ .byte 0x00 @ SPECIES_ARBOK
+ .byte 0x00 @ SPECIES_PIKACHU
+ .byte 0x00 @ SPECIES_RAICHU
+ .byte 0x00 @ SPECIES_SANDSHREW
+ .byte 0x00 @ SPECIES_SANDSLASH
+ .byte 0x1c @ SPECIES_NIDORAN_F
+ .byte 0x00 @ SPECIES_NIDORINA
+ .byte 0x00 @ SPECIES_NIDOQUEEN
+ .byte 0x00 @ SPECIES_NIDORAN_M
+ .byte 0x00 @ SPECIES_NIDORINO
+ .byte 0x19 @ SPECIES_NIDOKING
+ .byte 0x00 @ SPECIES_CLEFAIRY
+ .byte 0x00 @ SPECIES_CLEFABLE
+ .byte 0x00 @ SPECIES_VULPIX
+ .byte 0x00 @ SPECIES_NINETALES
+ .byte 0x00 @ SPECIES_JIGGLYPUFF
+ .byte 0x00 @ SPECIES_WIGGLYTUFF
+ .byte 0x00 @ SPECIES_ZUBAT
+ .byte 0x00 @ SPECIES_GOLBAT
+ .byte 0x00 @ SPECIES_ODDISH
+ .byte 0x00 @ SPECIES_GLOOM
+ .byte 0x00 @ SPECIES_VILEPLUME
+ .byte 0x0a @ SPECIES_PARAS
+ .byte 0x2d @ SPECIES_PARASECT
+ .byte 0x14 @ SPECIES_VENONAT
+ .byte 0x00 @ SPECIES_VENOMOTH
+ .byte 0x19 @ SPECIES_DIGLETT
+ .byte 0x23 @ SPECIES_DUGTRIO
+ .byte 0x28 @ SPECIES_MEOWTH
+ .byte 0x14 @ SPECIES_PERSIAN
+ .byte 0x00 @ SPECIES_PSYDUCK
+ .byte 0x00 @ SPECIES_GOLDUCK
+ .byte 0x14 @ SPECIES_MANKEY
+ .byte 0x00 @ SPECIES_PRIMEAPE
+ .byte 0x1e @ SPECIES_GROWLITHE
+ .byte 0x28 @ SPECIES_ARCANINE
+ .byte 0x00 @ SPECIES_POLIWAG
+ .byte 0x05 @ SPECIES_POLIWHIRL
+ .byte 0x00 @ SPECIES_POLIWRATH
+ .byte 0x00 @ SPECIES_ABRA
+ .byte 0x00 @ SPECIES_KADABRA
+ .byte 0x00 @ SPECIES_ALAKAZAM
+ .byte 0x00 @ SPECIES_MACHOP
+ .byte 0x00 @ SPECIES_MACHOKE
+ .byte 0x00 @ SPECIES_MACHAMP
+ .byte 0x00 @ SPECIES_BELLSPROUT
+ .byte 0x03 @ SPECIES_WEEPINBELL
+ .byte 0x00 @ SPECIES_VICTREEBEL
+ .byte 0x00 @ SPECIES_TENTACOOL
+ .byte 0x00 @ SPECIES_TENTACRUEL
+ .byte 0x00 @ SPECIES_GEODUDE
+ .byte 0x00 @ SPECIES_GRAVELER
+ .byte 0x00 @ SPECIES_GOLEM
+ .byte 0x00 @ SPECIES_PONYTA
+ .byte 0x00 @ SPECIES_RAPIDASH
+ .byte 0x00 @ SPECIES_SLOWPOKE
+ .byte 0x00 @ SPECIES_SLOWBRO
+ .byte 0x00 @ SPECIES_MAGNEMITE
+ .byte 0x00 @ SPECIES_MAGNETON
+ .byte 0x00 @ SPECIES_FARFETCH_D
+ .byte 0x00 @ SPECIES_DODUO
+ .byte 0x00 @ SPECIES_DODRIO
+ .byte 0x00 @ SPECIES_SEEL
+ .byte 0x00 @ SPECIES_DEWGONG
+ .byte 0x00 @ SPECIES_GRIMER
+ .byte 0x2d @ SPECIES_MUK
+ .byte 0x14 @ SPECIES_SHELLDER
+ .byte 0x00 @ SPECIES_CLOYSTER
+ .byte 0x00 @ SPECIES_GASTLY
+ .byte 0x17 @ SPECIES_HAUNTER
+ .byte 0x00 @ SPECIES_GENGAR
+ .byte 0x00 @ SPECIES_ONIX
+ .byte 0x30 @ SPECIES_DROWZEE
+ .byte 0x28 @ SPECIES_HYPNO
+ .byte 0x00 @ SPECIES_KRABBY
+ .byte 0x00 @ SPECIES_KINGLER
+ .byte 0x00 @ SPECIES_VOLTORB
+ .byte 0x00 @ SPECIES_ELECTRODE
+ .byte 0x00 @ SPECIES_EXEGGCUTE
+ .byte 0x00 @ SPECIES_EXEGGUTOR
+ .byte 0x00 @ SPECIES_CUBONE
+ .byte 0x00 @ SPECIES_MAROWAK
+ .byte 0x00 @ SPECIES_HITMONLEE
+ .byte 0x19 @ SPECIES_HITMONCHAN
+ .byte 0x00 @ SPECIES_LICKITUNG
+ .byte 0x00 @ SPECIES_KOFFING
+ .byte 0x00 @ SPECIES_WEEZING
+ .byte 0x00 @ SPECIES_RHYHORN
+ .byte 0x00 @ SPECIES_RHYDON
+ .byte 0x00 @ SPECIES_CHANSEY
+ .byte 0x00 @ SPECIES_TANGELA
+ .byte 0x00 @ SPECIES_KANGASKHAN
+ .byte 0x00 @ SPECIES_HORSEA
+ .byte 0x00 @ SPECIES_SEADRA
+ .byte 0x00 @ SPECIES_GOLDEEN
+ .byte 0x00 @ SPECIES_SEAKING
+ .byte 0x00 @ SPECIES_STARYU
+ .byte 0x00 @ SPECIES_STARMIE
+ .byte 0x00 @ SPECIES_MR_MIME
+ .byte 0x0a @ SPECIES_SCYTHER
+ .byte 0x00 @ SPECIES_JYNX
+ .byte 0x00 @ SPECIES_ELECTABUZZ
+ .byte 0x00 @ SPECIES_MAGMAR
+ .byte 0x00 @ SPECIES_PINSIR
+ .byte 0x0a @ SPECIES_TAUROS
+ .byte 0x00 @ SPECIES_MAGIKARP
+ .byte 0x00 @ SPECIES_GYARADOS
+ .byte 0x00 @ SPECIES_LAPRAS
+ .byte 0x00 @ SPECIES_DITTO
+ .byte 0x00 @ SPECIES_EEVEE
+ .byte 0x00 @ SPECIES_VAPOREON
+ .byte 0x00 @ SPECIES_JOLTEON
+ .byte 0x00 @ SPECIES_FLAREON
+ .byte 0x00 @ SPECIES_PORYGON
+ .byte 0x00 @ SPECIES_OMANYTE
+ .byte 0x00 @ SPECIES_OMASTAR
+ .byte 0x00 @ SPECIES_KABUTO
+ .byte 0x00 @ SPECIES_KABUTOPS
+ .byte 0x00 @ SPECIES_AERODACTYL
+ .byte 0x00 @ SPECIES_SNORLAX
+ .byte 0x00 @ SPECIES_ARTICUNO
+ .byte 0x00 @ SPECIES_ZAPDOS
+ .byte 0x00 @ SPECIES_MOLTRES
+ .byte 0x00 @ SPECIES_DRATINI
+ .byte 0x00 @ SPECIES_DRAGONAIR
+ .byte 0x00 @ SPECIES_DRAGONITE
+ .byte 0x00 @ SPECIES_MEWTWO
+ .byte 0x00 @ SPECIES_MEW
+ .byte 0x00 @ SPECIES_CHIKORITA
+ .byte 0x00 @ SPECIES_BAYLEEF
+ .byte 0x00 @ SPECIES_MEGANIUM
+ .byte 0x00 @ SPECIES_CYNDAQUIL
+ .byte 0x00 @ SPECIES_QUILAVA
+ .byte 0x14 @ SPECIES_TYPHLOSION
+ .byte 0x00 @ SPECIES_TOTODILE
+ .byte 0x00 @ SPECIES_CROCONAW
+ .byte 0x05 @ SPECIES_FERALIGATR
+ .byte 0x00 @ SPECIES_SENTRET
+ .byte 0x00 @ SPECIES_FURRET
+ .byte 0x00 @ SPECIES_HOOTHOOT
+ .byte 0x00 @ SPECIES_NOCTOWL
+ .byte 0x00 @ SPECIES_LEDYBA
+ .byte 0x00 @ SPECIES_LEDIAN
+ .byte 0x00 @ SPECIES_SPINARAK
+ .byte 0x00 @ SPECIES_ARIADOS
+ .byte 0x00 @ SPECIES_CROBAT
+ .byte 0x00 @ SPECIES_CHINCHOU
+ .byte 0x00 @ SPECIES_LANTURN
+ .byte 0x00 @ SPECIES_PICHU
+ .byte 0x00 @ SPECIES_CLEFFA
+ .byte 0x00 @ SPECIES_IGGLYBUFF
+ .byte 0x00 @ SPECIES_TOGEPI
+ .byte 0x00 @ SPECIES_TOGETIC
+ .byte 0x1e @ SPECIES_NATU
+ .byte 0x00 @ SPECIES_XATU
+ .byte 0x32 @ SPECIES_MAREEP
+ .byte 0x00 @ SPECIES_FLAAFFY
+ .byte 0x0a @ SPECIES_AMPHAROS
+ .byte 0x00 @ SPECIES_BELLOSSOM
+ .byte 0x00 @ SPECIES_MARILL
+ .byte 0x00 @ SPECIES_AZUMARILL
+ .byte 0x00 @ SPECIES_SUDOWOODO
+ .byte 0x28 @ SPECIES_POLITOED
+ .byte 0x00 @ SPECIES_HOPPIP
+ .byte 0x00 @ SPECIES_SKIPLOOM
+ .byte 0x00 @ SPECIES_JUMPLUFF
+ .byte 0x00 @ SPECIES_AIPOM
+ .byte 0x00 @ SPECIES_SUNKERN
+ .byte 0x00 @ SPECIES_SUNFLORA
+ .byte 0x00 @ SPECIES_YANMA
+ .byte 0x00 @ SPECIES_WOOPER
+ .byte 0x00 @ SPECIES_QUAGSIRE
+ .byte 0x00 @ SPECIES_ESPEON
+ .byte 0x00 @ SPECIES_UMBREON
+ .byte 0x00 @ SPECIES_MURKROW
+ .byte 0x00 @ SPECIES_SLOWKING
+ .byte 0x00 @ SPECIES_MISDREAVUS
+ .byte 0x00 @ SPECIES_UNOWN
+ .byte 0x00 @ SPECIES_WOBBUFFET
+ .byte 0x00 @ SPECIES_GIRAFARIG
+ .byte 0x00 @ SPECIES_PINECO
+ .byte 0x00 @ SPECIES_FORRETRESS
+ .byte 0x0a @ SPECIES_DUNSPARCE
+ .byte 0x00 @ SPECIES_GLIGAR
+ .byte 0x2d @ SPECIES_STEELIX
+ .byte 0x00 @ SPECIES_SNUBBULL
+ .byte 0x00 @ SPECIES_GRANBULL
+ .byte 0x27 @ SPECIES_QWILFISH
+ .byte 0x13 @ SPECIES_SCIZOR
+ .byte 0x00 @ SPECIES_SHUCKLE
+ .byte 0x00 @ SPECIES_HERACROSS
+ .byte 0x00 @ SPECIES_SNEASEL
+ .byte 0x00 @ SPECIES_TEDDIURSA
+ .byte 0x00 @ SPECIES_URSARING
+ .byte 0x00 @ SPECIES_SLUGMA
+ .byte 0x00 @ SPECIES_MAGCARGO
+ .byte 0x00 @ SPECIES_SWINUB
+ .byte 0x00 @ SPECIES_PILOSWINE
+ .byte 0x00 @ SPECIES_CORSOLA
+ .byte 0x00 @ SPECIES_REMORAID
+ .byte 0x14 @ SPECIES_OCTILLERY
+ .byte 0x00 @ SPECIES_DELIBIRD
+ .byte 0x00 @ SPECIES_MANTINE
+ .byte 0x00 @ SPECIES_SKARMORY
+ .byte 0x00 @ SPECIES_HOUNDOUR
+ .byte 0x00 @ SPECIES_HOUNDOOM
+ .byte 0x00 @ SPECIES_KINGDRA
+ .byte 0x00 @ SPECIES_PHANPY
+ .byte 0x00 @ SPECIES_DONPHAN
+ .byte 0x00 @ SPECIES_PORYGON2
+ .byte 0x00 @ SPECIES_STANTLER
+ .byte 0x00 @ SPECIES_SMEARGLE
+ .byte 0x00 @ SPECIES_TYROGUE
+ .byte 0x00 @ SPECIES_HITMONTOP
+ .byte 0x28 @ SPECIES_SMOOCHUM
+ .byte 0x00 @ SPECIES_ELEKID
+ .byte 0x00 @ SPECIES_MAGBY
+ .byte 0x00 @ SPECIES_MILTANK
+ .byte 0x00 @ SPECIES_BLISSEY
+ .byte 0x00 @ SPECIES_RAIKOU
+ .byte 0x00 @ SPECIES_ENTEI
+ .byte 0x00 @ SPECIES_SUICUNE
+ .byte 0x00 @ SPECIES_LARVITAR
+ .byte 0x00 @ SPECIES_PUPITAR
+ .byte 0x0a @ SPECIES_TYRANITAR
+ .byte 0x14 @ SPECIES_LUGIA
+ .byte 0x00 @ SPECIES_HO_OH
+ .byte 0x00 @ SPECIES_CELEBI
+ .byte 0x00 @ 252
+ .byte 0x00 @ 253
+ .byte 0x00 @ 254
+ .byte 0x00 @ 255
+ .byte 0x00 @ 256
+ .byte 0x00 @ 257
+ .byte 0x00 @ 258
+ .byte 0x00 @ 259
+ .byte 0x00 @ 260
+ .byte 0x00 @ 261
+ .byte 0x00 @ 262
+ .byte 0x00 @ 263
+ .byte 0x00 @ 264
+ .byte 0x00 @ 265
+ .byte 0x00 @ 266
+ .byte 0x00 @ 267
+ .byte 0x00 @ 268
+ .byte 0x00 @ 269
+ .byte 0x00 @ 270
+ .byte 0x00 @ 271
+ .byte 0x00 @ 272
+ .byte 0x00 @ 273
+ .byte 0x00 @ 274
+ .byte 0x00 @ 275
+ .byte 0x00 @ 276
+ .byte 0x00 @ SPECIES_TREECKO
+ .byte 0x00 @ SPECIES_GROVYLE
+ .byte 0x00 @ SPECIES_SCEPTILE
+ .byte 0x00 @ SPECIES_TORCHIC
+ .byte 0x00 @ SPECIES_COMBUSKEN
+ .byte 0x00 @ SPECIES_BLAZIKEN
+ .byte 0x00 @ SPECIES_MUDKIP
+ .byte 0x00 @ SPECIES_MARSHTOMP
+ .byte 0x00 @ SPECIES_SWAMPERT
+ .byte 0x00 @ SPECIES_POOCHYENA
+ .byte 0x00 @ SPECIES_MIGHTYENA
+ .byte 0x00 @ SPECIES_ZIGZAGOON
+ .byte 0x00 @ SPECIES_LINOONE
+ .byte 0x00 @ SPECIES_WURMPLE
+ .byte 0x00 @ SPECIES_SILCOON
+ .byte 0x00 @ SPECIES_BEAUTIFLY
+ .byte 0x00 @ SPECIES_CASCOON
+ .byte 0x00 @ SPECIES_DUSTOX
+ .byte 0x00 @ SPECIES_LOTAD
+ .byte 0x00 @ SPECIES_LOMBRE
+ .byte 0x00 @ SPECIES_LUDICOLO
+ .byte 0x00 @ SPECIES_SEEDOT
+ .byte 0x00 @ SPECIES_NUZLEAF
+ .byte 0x00 @ SPECIES_SHIFTRY
+ .byte 0x00 @ SPECIES_NINCADA
+ .byte 0x00 @ SPECIES_NINJASK
+ .byte 0x00 @ SPECIES_SHEDINJA
+ .byte 0x00 @ SPECIES_TAILLOW
+ .byte 0x00 @ SPECIES_SWELLOW
+ .byte 0x00 @ SPECIES_SHROOMISH
+ .byte 0x00 @ SPECIES_BRELOOM
+ .byte 0x00 @ SPECIES_SPINDA
+ .byte 0x00 @ SPECIES_WINGULL
+ .byte 0x00 @ SPECIES_PELIPPER
+ .byte 0x00 @ SPECIES_SURSKIT
+ .byte 0x00 @ SPECIES_MASQUERAIN
+ .byte 0x00 @ SPECIES_WAILMER
+ .byte 0x0a @ SPECIES_WAILORD
+ .byte 0x00 @ SPECIES_SKITTY
+ .byte 0x00 @ SPECIES_DELCATTY
+ .byte 0x1e @ SPECIES_KECLEON
+ .byte 0x00 @ SPECIES_BALTOY
+ .byte 0x00 @ SPECIES_CLAYDOL
+ .byte 0x00 @ SPECIES_NOSEPASS
+ .byte 0x00 @ SPECIES_TORKOAL
+ .byte 0x00 @ SPECIES_SABLEYE
+ .byte 0x00 @ SPECIES_BARBOACH
+ .byte 0x00 @ SPECIES_WHISCASH
+ .byte 0x00 @ SPECIES_LUVDISC
+ .byte 0x00 @ SPECIES_CORPHISH
+ .byte 0x00 @ SPECIES_CRAWDAUNT
+ .byte 0x00 @ SPECIES_FEEBAS
+ .byte 0x2d @ SPECIES_MILOTIC
+ .byte 0x00 @ SPECIES_CARVANHA
+ .byte 0x00 @ SPECIES_SHARPEDO
+ .byte 0x00 @ SPECIES_TRAPINCH
+ .byte 0x00 @ SPECIES_VIBRAVA
+ .byte 0x00 @ SPECIES_FLYGON
+ .byte 0x00 @ SPECIES_MAKUHITA
+ .byte 0x00 @ SPECIES_HARIYAMA
+ .byte 0x00 @ SPECIES_ELECTRIKE
+ .byte 0x00 @ SPECIES_MANECTRIC
+ .byte 0x00 @ SPECIES_NUMEL
+ .byte 0x00 @ SPECIES_CAMERUPT
+ .byte 0x0f @ SPECIES_SPHEAL
+ .byte 0x00 @ SPECIES_SEALEO
+ .byte 0x00 @ SPECIES_WALREIN
+ .byte 0x00 @ SPECIES_CACNEA
+ .byte 0x00 @ SPECIES_CACTURNE
+ .byte 0x14 @ SPECIES_SNORUNT
+ .byte 0x00 @ SPECIES_GLALIE
+ .byte 0x00 @ SPECIES_LUNATONE
+ .byte 0x00 @ SPECIES_SOLROCK
+ .byte 0x00 @ SPECIES_AZURILL
+ .byte 0x00 @ SPECIES_SPOINK
+ .byte 0x0f @ SPECIES_GRUMPIG
+ .byte 0x00 @ SPECIES_PLUSLE
+ .byte 0x00 @ SPECIES_MINUN
+ .byte 0x00 @ SPECIES_MAWILE
+ .byte 0x00 @ SPECIES_MEDITITE
+ .byte 0x00 @ SPECIES_MEDICHAM
+ .byte 0x00 @ SPECIES_SWABLU
+ .byte 0x00 @ SPECIES_ALTARIA
+ .byte 0x0f @ SPECIES_WYNAUT
+ .byte 0x00 @ SPECIES_DUSKULL
+ .byte 0x1e @ SPECIES_DUSCLOPS
+ .byte 0x00 @ SPECIES_ROSELIA
+ .byte 0x00 @ SPECIES_SLAKOTH
+ .byte 0x00 @ SPECIES_VIGOROTH
+ .byte 0x00 @ SPECIES_SLAKING
+ .byte 0x00 @ SPECIES_GULPIN
+ .byte 0x00 @ SPECIES_SWALOT
+ .byte 0x00 @ SPECIES_TROPIUS
+ .byte 0x00 @ SPECIES_WHISMUR
+ .byte 0x00 @ SPECIES_LOUDRED
+ .byte 0x00 @ SPECIES_EXPLOUD
+ .byte 0x00 @ SPECIES_CLAMPERL
+ .byte 0x00 @ SPECIES_HUNTAIL
+ .byte 0x00 @ SPECIES_GOREBYSS
+ .byte 0x2d @ SPECIES_ABSOL
+ .byte 0x00 @ SPECIES_SHUPPET
+ .byte 0x00 @ SPECIES_BANETTE
+ .byte 0x00 @ SPECIES_SEVIPER
+ .byte 0x00 @ SPECIES_ZANGOOSE
+ .byte 0x00 @ SPECIES_RELICANTH
+ .byte 0x00 @ SPECIES_ARON
+ .byte 0x00 @ SPECIES_LAIRON
+ .byte 0x00 @ SPECIES_AGGRON
+ .byte 0x00 @ SPECIES_CASTFORM
+ .byte 0x00 @ SPECIES_VOLBEAT
+ .byte 0x00 @ SPECIES_ILLUMISE
+ .byte 0x00 @ SPECIES_LILEEP
+ .byte 0x00 @ SPECIES_CRADILY
+ .byte 0x00 @ SPECIES_ANORITH
+ .byte 0x00 @ SPECIES_ARMALDO
+ .byte 0x00 @ SPECIES_RALTS
+ .byte 0x00 @ SPECIES_KIRLIA
+ .byte 0x00 @ SPECIES_GARDEVOIR
+ .byte 0x00 @ SPECIES_BAGON
+ .byte 0x00 @ SPECIES_SHELGON
+ .byte 0x46 @ SPECIES_SALAMENCE
+ .byte 0x00 @ SPECIES_BELDUM
+ .byte 0x00 @ SPECIES_METANG
+ .byte 0x00 @ SPECIES_METAGROSS
+ .byte 0x00 @ SPECIES_REGIROCK
+ .byte 0x00 @ SPECIES_REGICE
+ .byte 0x00 @ SPECIES_REGISTEEL
+ .byte 0x3c @ SPECIES_KYOGRE
+ .byte 0x00 @ SPECIES_GROUDON
+ .byte 0x3c @ SPECIES_RAYQUAZA
+ .byte 0x00 @ SPECIES_LATIAS
+ .byte 0x00 @ SPECIES_LATIOS
+ .byte 0x00 @ SPECIES_JIRACHI
+ .byte 0x00 @ SPECIES_DEOXYS
+ .byte 0x00 @ SPECIES_CHIMECHO
diff --git a/data/graphics/pokemon/mon_back_pic_table.inc b/data/graphics/pokemon/back_pic_table.inc
index b1b477f30..b1b477f30 100644
--- a/data/graphics/pokemon/mon_back_pic_table.inc
+++ b/data/graphics/pokemon/back_pic_table.inc
diff --git a/data/graphics/pokemon/mon_footprint_table.inc b/data/graphics/pokemon/footprint_table.inc
index b5de0e11d..b5de0e11d 100644
--- a/data/graphics/pokemon/mon_footprint_table.inc
+++ b/data/graphics/pokemon/footprint_table.inc
diff --git a/data/graphics/pokemon/front_anim_ids_table.inc b/data/graphics/pokemon/front_anim_ids_table.inc
new file mode 100644
index 000000000..6e2d7fe0e
--- /dev/null
+++ b/data/graphics/pokemon/front_anim_ids_table.inc
@@ -0,0 +1,412 @@
+gMonFrontAnimIdsTable:: @ 83299EC
+ .byte 0x06 @ SPECIES_BULBASAUR
+ .byte 0x17 @ SPECIES_IVYSAUR
+ .byte 0x2f @ SPECIES_VENUSAUR
+ .byte 0x52 @ SPECIES_CHARMANDER
+ .byte 0x25 @ SPECIES_CHARMELEON
+ .byte 0x10 @ SPECIES_CHARIZARD
+ .byte 0x0b @ SPECIES_SQUIRTLE
+ .byte 0x13 @ SPECIES_WARTORTLE
+ .byte 0x19 @ SPECIES_BLASTOISE
+ .byte 0x0b @ SPECIES_CATERPIE
+ .byte 0x0b @ SPECIES_METAPOD
+ .byte 0x1d @ SPECIES_BUTTERFREE
+ .byte 0x46 @ SPECIES_WEEDLE
+ .byte 0x20 @ SPECIES_KAKUNA
+ .byte 0x02 @ SPECIES_BEEDRILL
+ .byte 0x47 @ SPECIES_PIDGEY
+ .byte 0x17 @ SPECIES_PIDGEOTTO
+ .byte 0x29 @ SPECIES_PIDGEOT
+ .byte 0x43 @ SPECIES_RATTATA
+ .byte 0x2b @ SPECIES_RATICATE
+ .byte 0x18 @ SPECIES_SPEAROW
+ .byte 0x2b @ SPECIES_FEAROW
+ .byte 0x16 @ SPECIES_EKANS
+ .byte 0x17 @ SPECIES_ARBOK
+ .byte 0x2c @ SPECIES_PIKACHU
+ .byte 0x17 @ SPECIES_RAICHU
+ .byte 0x2d @ SPECIES_SANDSHREW
+ .byte 0x17 @ SPECIES_SANDSLASH
+ .byte 0x00 @ SPECIES_NIDORAN_F
+ .byte 0x17 @ SPECIES_NIDORINA
+ .byte 0x0f @ SPECIES_NIDOQUEEN
+ .byte 0x09 @ SPECIES_NIDORAN_M
+ .byte 0x13 @ SPECIES_NIDORINO
+ .byte 0x0f @ SPECIES_NIDOKING
+ .byte 0x00 @ SPECIES_CLEFAIRY
+ .byte 0x4a @ SPECIES_CLEFABLE
+ .byte 0x17 @ SPECIES_VULPIX
+ .byte 0x10 @ SPECIES_NINETALES
+ .byte 0x48 @ SPECIES_JIGGLYPUFF
+ .byte 0x31 @ SPECIES_WIGGLYTUFF
+ .byte 0x00 @ SPECIES_ZUBAT
+ .byte 0x1d @ SPECIES_GOLBAT
+ .byte 0x00 @ SPECIES_ODDISH
+ .byte 0x45 @ SPECIES_GLOOM
+ .byte 0x49 @ SPECIES_VILEPLUME
+ .byte 0x46 @ SPECIES_PARAS
+ .byte 0x0f @ SPECIES_PARASECT
+ .byte 0x06 @ SPECIES_VENONAT
+ .byte 0x4b @ SPECIES_VENOMOTH
+ .byte 0x10 @ SPECIES_DIGLETT
+ .byte 0x4c @ SPECIES_DUGTRIO
+ .byte 0x52 @ SPECIES_MEOWTH
+ .byte 0x17 @ SPECIES_PERSIAN
+ .byte 0x06 @ SPECIES_PSYDUCK
+ .byte 0x4c @ SPECIES_GOLDUCK
+ .byte 0x32 @ SPECIES_MANKEY
+ .byte 0x48 @ SPECIES_PRIMEAPE
+ .byte 0x25 @ SPECIES_GROWLITHE
+ .byte 0x02 @ SPECIES_ARCANINE
+ .byte 0x00 @ SPECIES_POLIWAG
+ .byte 0x32 @ SPECIES_POLIWHIRL
+ .byte 0x19 @ SPECIES_POLIWRATH
+ .byte 0x31 @ SPECIES_ABRA
+ .byte 0x09 @ SPECIES_KADABRA
+ .byte 0x17 @ SPECIES_ALAKAZAM
+ .byte 0x00 @ SPECIES_MACHOP
+ .byte 0x10 @ SPECIES_MACHOKE
+ .byte 0x31 @ SPECIES_MACHAMP
+ .byte 0x17 @ SPECIES_BELLSPROUT
+ .byte 0x0d @ SPECIES_WEEPINBELL
+ .byte 0x32 @ SPECIES_VICTREEBEL
+ .byte 0x00 @ SPECIES_TENTACOOL
+ .byte 0x00 @ SPECIES_TENTACRUEL
+ .byte 0x48 @ SPECIES_GEODUDE
+ .byte 0x48 @ SPECIES_GRAVELER
+ .byte 0x2f @ SPECIES_GOLEM
+ .byte 0x20 @ SPECIES_PONYTA
+ .byte 0x11 @ SPECIES_RAPIDASH
+ .byte 0x45 @ SPECIES_SLOWPOKE
+ .byte 0x0b @ SPECIES_SLOWBRO
+ .byte 0x54 @ SPECIES_MAGNEMITE
+ .byte 0x2c @ SPECIES_MAGNETON
+ .byte 0x48 @ SPECIES_FARFETCH_D
+ .byte 0x4c @ SPECIES_DODUO
+ .byte 0x41 @ SPECIES_DODRIO
+ .byte 0x0b @ SPECIES_SEEL
+ .byte 0x45 @ SPECIES_DEWGONG
+ .byte 0x46 @ SPECIES_GRIMER
+ .byte 0x30 @ SPECIES_MUK
+ .byte 0x12 @ SPECIES_SHELLDER
+ .byte 0x1d @ SPECIES_CLOYSTER
+ .byte 0x15 @ SPECIES_GASTLY
+ .byte 0x35 @ SPECIES_HAUNTER
+ .byte 0x3a @ SPECIES_GENGAR
+ .byte 0x43 @ SPECIES_ONIX
+ .byte 0x4f @ SPECIES_DROWZEE
+ .byte 0x09 @ SPECIES_HYPNO
+ .byte 0x03 @ SPECIES_KRABBY
+ .byte 0x4b @ SPECIES_KINGLER
+ .byte 0x00 @ SPECIES_VOLTORB
+ .byte 0x00 @ SPECIES_ELECTRODE
+ .byte 0x46 @ SPECIES_EXEGGCUTE
+ .byte 0x32 @ SPECIES_EXEGGUTOR
+ .byte 0x48 @ SPECIES_CUBONE
+ .byte 0x05 @ SPECIES_MAROWAK
+ .byte 0x16 @ SPECIES_HITMONLEE
+ .byte 0x09 @ SPECIES_HITMONCHAN
+ .byte 0x45 @ SPECIES_LICKITUNG
+ .byte 0x13 @ SPECIES_KOFFING
+ .byte 0x04 @ SPECIES_WEEZING
+ .byte 0x10 @ SPECIES_RHYHORN
+ .byte 0x13 @ SPECIES_RHYDON
+ .byte 0x45 @ SPECIES_CHANSEY
+ .byte 0x48 @ SPECIES_TANGELA
+ .byte 0x17 @ SPECIES_KANGASKHAN
+ .byte 0x12 @ SPECIES_HORSEA
+ .byte 0x04 @ SPECIES_SEADRA
+ .byte 0x0d @ SPECIES_GOLDEEN
+ .byte 0x1c @ SPECIES_SEAKING
+ .byte 0x4e @ SPECIES_STARYU
+ .byte 0x12 @ SPECIES_STARMIE
+ .byte 0x46 @ SPECIES_MR_MIME
+ .byte 0x02 @ SPECIES_SCYTHER
+ .byte 0x17 @ SPECIES_JYNX
+ .byte 0x2c @ SPECIES_ELECTABUZZ
+ .byte 0x0f @ SPECIES_MAGMAR
+ .byte 0x09 @ SPECIES_PINSIR
+ .byte 0x19 @ SPECIES_TAUROS
+ .byte 0x05 @ SPECIES_MAGIKARP
+ .byte 0x48 @ SPECIES_GYARADOS
+ .byte 0x17 @ SPECIES_LAPRAS
+ .byte 0x01 @ SPECIES_DITTO
+ .byte 0x17 @ SPECIES_EEVEE
+ .byte 0x17 @ SPECIES_VAPOREON
+ .byte 0x00 @ SPECIES_JOLTEON
+ .byte 0x17 @ SPECIES_FLAREON
+ .byte 0x52 @ SPECIES_PORYGON
+ .byte 0x51 @ SPECIES_OMANYTE
+ .byte 0x09 @ SPECIES_OMASTAR
+ .byte 0x1d @ SPECIES_KABUTO
+ .byte 0x0f @ SPECIES_KABUTOPS
+ .byte 0x47 @ SPECIES_AERODACTYL
+ .byte 0x0b @ SPECIES_SNORLAX
+ .byte 0x09 @ SPECIES_ARTICUNO
+ .byte 0x2c @ SPECIES_ZAPDOS
+ .byte 0x45 @ SPECIES_MOLTRES
+ .byte 0x00 @ SPECIES_DRATINI
+ .byte 0x10 @ SPECIES_DRAGONAIR
+ .byte 0x47 @ SPECIES_DRAGONITE
+ .byte 0x09 @ SPECIES_MEWTWO
+ .byte 0x0d @ SPECIES_MEW
+ .byte 0x00 @ SPECIES_CHIKORITA
+ .byte 0x00 @ SPECIES_BAYLEEF
+ .byte 0x17 @ SPECIES_MEGANIUM
+ .byte 0x52 @ SPECIES_CYNDAQUIL
+ .byte 0x17 @ SPECIES_QUILAVA
+ .byte 0x10 @ SPECIES_TYPHLOSION
+ .byte 0x31 @ SPECIES_TOTODILE
+ .byte 0x0f @ SPECIES_CROCONAW
+ .byte 0x0f @ SPECIES_FERALIGATR
+ .byte 0x00 @ SPECIES_SENTRET
+ .byte 0x32 @ SPECIES_FURRET
+ .byte 0x47 @ SPECIES_HOOTHOOT
+ .byte 0x17 @ SPECIES_NOCTOWL
+ .byte 0x52 @ SPECIES_LEDYBA
+ .byte 0x47 @ SPECIES_LEDIAN
+ .byte 0x4f @ SPECIES_SPINARAK
+ .byte 0x0f @ SPECIES_ARIADOS
+ .byte 0x00 @ SPECIES_CROBAT
+ .byte 0x45 @ SPECIES_CHINCHOU
+ .byte 0x51 @ SPECIES_LANTURN
+ .byte 0x1e @ SPECIES_PICHU
+ .byte 0x52 @ SPECIES_CLEFFA
+ .byte 0x0c @ SPECIES_IGGLYBUFF
+ .byte 0x0b @ SPECIES_TOGEPI
+ .byte 0x00 @ SPECIES_TOGETIC
+ .byte 0x31 @ SPECIES_NATU
+ .byte 0x09 @ SPECIES_XATU
+ .byte 0x00 @ SPECIES_MAREEP
+ .byte 0x1e @ SPECIES_FLAAFFY
+ .byte 0x2c @ SPECIES_AMPHAROS
+ .byte 0x0b @ SPECIES_BELLOSSOM
+ .byte 0x00 @ SPECIES_MARILL
+ .byte 0x4a @ SPECIES_AZUMARILL
+ .byte 0x46 @ SPECIES_SUDOWOODO
+ .byte 0x32 @ SPECIES_POLITOED
+ .byte 0x1c @ SPECIES_HOPPIP
+ .byte 0x18 @ SPECIES_SKIPLOOM
+ .byte 0x51 @ SPECIES_JUMPLUFF
+ .byte 0x32 @ SPECIES_AIPOM
+ .byte 0x52 @ SPECIES_SUNKERN
+ .byte 0x00 @ SPECIES_SUNFLORA
+ .byte 0x2b @ SPECIES_YANMA
+ .byte 0x00 @ SPECIES_WOOPER
+ .byte 0x16 @ SPECIES_QUAGSIRE
+ .byte 0x09 @ SPECIES_ESPEON
+ .byte 0x10 @ SPECIES_UMBREON
+ .byte 0x00 @ SPECIES_MURKROW
+ .byte 0x13 @ SPECIES_SLOWKING
+ .byte 0x1c @ SPECIES_MISDREAVUS
+ .byte 0x0a @ SPECIES_UNOWN
+ .byte 0x30 @ SPECIES_WOBBUFFET
+ .byte 0x1e @ SPECIES_GIRAFARIG
+ .byte 0x0b @ SPECIES_PINECO
+ .byte 0x10 @ SPECIES_FORRETRESS
+ .byte 0x00 @ SPECIES_DUNSPARCE
+ .byte 0x13 @ SPECIES_GLIGAR
+ .byte 0x0f @ SPECIES_STEELIX
+ .byte 0x17 @ SPECIES_SNUBBULL
+ .byte 0x10 @ SPECIES_GRANBULL
+ .byte 0x3a @ SPECIES_QWILFISH
+ .byte 0x02 @ SPECIES_SCIZOR
+ .byte 0x0b @ SPECIES_SHUCKLE
+ .byte 0x41 @ SPECIES_HERACROSS
+ .byte 0x16 @ SPECIES_SNEASEL
+ .byte 0x17 @ SPECIES_TEDDIURSA
+ .byte 0x10 @ SPECIES_URSARING
+ .byte 0x17 @ SPECIES_SLUGMA
+ .byte 0x17 @ SPECIES_MAGCARGO
+ .byte 0x00 @ SPECIES_SWINUB
+ .byte 0x0f @ SPECIES_PILOSWINE
+ .byte 0x03 @ SPECIES_CORSOLA
+ .byte 0x52 @ SPECIES_REMORAID
+ .byte 0x17 @ SPECIES_OCTILLERY
+ .byte 0x52 @ SPECIES_DELIBIRD
+ .byte 0x0d @ SPECIES_MANTINE
+ .byte 0x17 @ SPECIES_SKARMORY
+ .byte 0x17 @ SPECIES_HOUNDOUR
+ .byte 0x10 @ SPECIES_HOUNDOOM
+ .byte 0x42 @ SPECIES_KINGDRA
+ .byte 0x32 @ SPECIES_PHANPY
+ .byte 0x19 @ SPECIES_DONPHAN
+ .byte 0x00 @ SPECIES_PORYGON2
+ .byte 0x00 @ SPECIES_STANTLER
+ .byte 0x31 @ SPECIES_SMEARGLE
+ .byte 0x16 @ SPECIES_TYROGUE
+ .byte 0x02 @ SPECIES_HITMONTOP
+ .byte 0x09 @ SPECIES_SMOOCHUM
+ .byte 0x2c @ SPECIES_ELEKID
+ .byte 0x00 @ SPECIES_MAGBY
+ .byte 0x45 @ SPECIES_MILTANK
+ .byte 0x00 @ SPECIES_BLISSEY
+ .byte 0x2c @ SPECIES_RAIKOU
+ .byte 0x09 @ SPECIES_ENTEI
+ .byte 0x10 @ SPECIES_SUICUNE
+ .byte 0x52 @ SPECIES_LARVITAR
+ .byte 0x10 @ SPECIES_PUPITAR
+ .byte 0x0f @ SPECIES_TYRANITAR
+ .byte 0x3a @ SPECIES_LUGIA
+ .byte 0x09 @ SPECIES_HO_OH
+ .byte 0x18 @ SPECIES_CELEBI
+ .byte 0x00 @ 252
+ .byte 0x00 @ 253
+ .byte 0x00 @ 254
+ .byte 0x00 @ 255
+ .byte 0x00 @ 256
+ .byte 0x00 @ 257
+ .byte 0x00 @ 258
+ .byte 0x00 @ 259
+ .byte 0x00 @ 260
+ .byte 0x00 @ 261
+ .byte 0x00 @ 262
+ .byte 0x00 @ 263
+ .byte 0x00 @ 264
+ .byte 0x00 @ 265
+ .byte 0x00 @ 266
+ .byte 0x00 @ 267
+ .byte 0x00 @ 268
+ .byte 0x00 @ 269
+ .byte 0x00 @ 270
+ .byte 0x00 @ 271
+ .byte 0x00 @ 272
+ .byte 0x00 @ 273
+ .byte 0x00 @ 274
+ .byte 0x00 @ 275
+ .byte 0x00 @ 276
+ .byte 0x00 @ SPECIES_TREECKO
+ .byte 0x17 @ SPECIES_GROVYLE
+ .byte 0x10 @ SPECIES_SCEPTILE
+ .byte 0x16 @ SPECIES_TORCHIC
+ .byte 0x06 @ SPECIES_COMBUSKEN
+ .byte 0x0f @ SPECIES_BLAZIKEN
+ .byte 0x01 @ SPECIES_MUDKIP
+ .byte 0x04 @ SPECIES_MARSHTOMP
+ .byte 0x1e @ SPECIES_SWAMPERT
+ .byte 0x10 @ SPECIES_POOCHYENA
+ .byte 0x10 @ SPECIES_MIGHTYENA
+ .byte 0x03 @ SPECIES_ZIGZAGOON
+ .byte 0x09 @ SPECIES_LINOONE
+ .byte 0x00 @ SPECIES_WURMPLE
+ .byte 0x00 @ SPECIES_SILCOON
+ .byte 0x04 @ SPECIES_BEAUTIFLY
+ .byte 0x04 @ SPECIES_CASCOON
+ .byte 0x06 @ SPECIES_DUSTOX
+ .byte 0x00 @ SPECIES_LOTAD
+ .byte 0x00 @ SPECIES_LOMBRE
+ .byte 0x49 @ SPECIES_LUDICOLO
+ .byte 0x05 @ SPECIES_SEEDOT
+ .byte 0x00 @ SPECIES_NUZLEAF
+ .byte 0x02 @ SPECIES_SHIFTRY
+ .byte 0x00 @ SPECIES_NINCADA
+ .byte 0x46 @ SPECIES_NINJASK
+ .byte 0x1c @ SPECIES_SHEDINJA
+ .byte 0x1e @ SPECIES_TAILLOW
+ .byte 0x01 @ SPECIES_SWELLOW
+ .byte 0x00 @ SPECIES_SHROOMISH
+ .byte 0x00 @ SPECIES_BRELOOM
+ .byte 0x31 @ SPECIES_SPINDA
+ .byte 0x1b @ SPECIES_WINGULL
+ .byte 0x1c @ SPECIES_PELIPPER
+ .byte 0x00 @ SPECIES_SURSKIT
+ .byte 0x00 @ SPECIES_MASQUERAIN
+ .byte 0x01 @ SPECIES_WAILMER
+ .byte 0x1c @ SPECIES_WAILORD
+ .byte 0x00 @ SPECIES_SKITTY
+ .byte 0x17 @ SPECIES_DELCATTY
+ .byte 0x35 @ SPECIES_KECLEON
+ .byte 0x1d @ SPECIES_BALTOY
+ .byte 0x51 @ SPECIES_CLAYDOL
+ .byte 0x49 @ SPECIES_NOSEPASS
+ .byte 0x17 @ SPECIES_TORKOAL
+ .byte 0x15 @ SPECIES_SABLEYE
+ .byte 0x49 @ SPECIES_BARBOACH
+ .byte 0x49 @ SPECIES_WHISCASH
+ .byte 0x1d @ SPECIES_LUVDISC
+ .byte 0x10 @ SPECIES_CORPHISH
+ .byte 0x09 @ SPECIES_CRAWDAUNT
+ .byte 0x49 @ SPECIES_FEEBAS
+ .byte 0x22 @ SPECIES_MILOTIC
+ .byte 0x49 @ SPECIES_CARVANHA
+ .byte 0x56 @ SPECIES_SHARPEDO
+ .byte 0x10 @ SPECIES_TRAPINCH
+ .byte 0x0f @ SPECIES_VIBRAVA
+ .byte 0x4b @ SPECIES_FLYGON
+ .byte 0x0b @ SPECIES_MAKUHITA
+ .byte 0x34 @ SPECIES_HARIYAMA
+ .byte 0x00 @ SPECIES_ELECTRIKE
+ .byte 0x00 @ SPECIES_MANECTRIC
+ .byte 0x04 @ SPECIES_NUMEL
+ .byte 0x10 @ SPECIES_CAMERUPT
+ .byte 0x53 @ SPECIES_SPHEAL
+ .byte 0x17 @ SPECIES_SEALEO
+ .byte 0x0f @ SPECIES_WALREIN
+ .byte 0x49 @ SPECIES_CACNEA
+ .byte 0x04 @ SPECIES_CACTURNE
+ .byte 0x45 @ SPECIES_SNORUNT
+ .byte 0x0a @ SPECIES_GLALIE
+ .byte 0x0e @ SPECIES_LUNATONE
+ .byte 0x08 @ SPECIES_SOLROCK
+ .byte 0x00 @ SPECIES_AZURILL
+ .byte 0x56 @ SPECIES_SPOINK
+ .byte 0x32 @ SPECIES_GRUMPIG
+ .byte 0x00 @ SPECIES_PLUSLE
+ .byte 0x01 @ SPECIES_MINUN
+ .byte 0x00 @ SPECIES_MAWILE
+ .byte 0x05 @ SPECIES_MEDITITE
+ .byte 0x45 @ SPECIES_MEDICHAM
+ .byte 0x04 @ SPECIES_SWABLU
+ .byte 0x16 @ SPECIES_ALTARIA
+ .byte 0x32 @ SPECIES_WYNAUT
+ .byte 0x0a @ SPECIES_DUSKULL
+ .byte 0x02 @ SPECIES_DUSCLOPS
+ .byte 0x45 @ SPECIES_ROSELIA
+ .byte 0x45 @ SPECIES_SLAKOTH
+ .byte 0x31 @ SPECIES_VIGOROTH
+ .byte 0x45 @ SPECIES_SLAKING
+ .byte 0x00 @ SPECIES_GULPIN
+ .byte 0x45 @ SPECIES_SWALOT
+ .byte 0x10 @ SPECIES_TROPIUS
+ .byte 0x03 @ SPECIES_WHISMUR
+ .byte 0x49 @ SPECIES_LOUDRED
+ .byte 0x19 @ SPECIES_EXPLOUD
+ .byte 0x12 @ SPECIES_CLAMPERL
+ .byte 0x09 @ SPECIES_HUNTAIL
+ .byte 0x1c @ SPECIES_GOREBYSS
+ .byte 0x11 @ SPECIES_ABSOL
+ .byte 0x1c @ SPECIES_SHUPPET
+ .byte 0x0d @ SPECIES_BANETTE
+ .byte 0x17 @ SPECIES_SEVIPER
+ .byte 0x09 @ SPECIES_ZANGOOSE
+ .byte 0x1a @ SPECIES_RELICANTH
+ .byte 0x45 @ SPECIES_ARON
+ .byte 0x00 @ SPECIES_LAIRON
+ .byte 0x19 @ SPECIES_AGGRON
+ .byte 0x1d @ SPECIES_CASTFORM
+ .byte 0x00 @ SPECIES_VOLBEAT
+ .byte 0x05 @ SPECIES_ILLUMISE
+ .byte 0x17 @ SPECIES_LILEEP
+ .byte 0x19 @ SPECIES_CRADILY
+ .byte 0x12 @ SPECIES_ANORITH
+ .byte 0x10 @ SPECIES_ARMALDO
+ .byte 0x45 @ SPECIES_RALTS
+ .byte 0x00 @ SPECIES_KIRLIA
+ .byte 0x00 @ SPECIES_GARDEVOIR
+ .byte 0x19 @ SPECIES_BAGON
+ .byte 0x04 @ SPECIES_SHELGON
+ .byte 0x0f @ SPECIES_SALAMENCE
+ .byte 0x0f @ SPECIES_BELDUM
+ .byte 0x04 @ SPECIES_METANG
+ .byte 0x10 @ SPECIES_METAGROSS
+ .byte 0x01 @ SPECIES_REGIROCK
+ .byte 0x44 @ SPECIES_REGICE
+ .byte 0x09 @ SPECIES_REGISTEEL
+ .byte 0x2d @ SPECIES_KYOGRE
+ .byte 0x10 @ SPECIES_GROUDON
+ .byte 0x0f @ SPECIES_RAYQUAZA
+ .byte 0x2d @ SPECIES_LATIAS
+ .byte 0x10 @ SPECIES_LATIOS
+ .byte 0x0d @ SPECIES_JIRACHI
+ .byte 0x1b @ SPECIES_DEOXYS
+ .byte 0x1d @ SPECIES_CHIMECHO
diff --git a/data/graphics/pokemon/front_anims.inc b/data/graphics/pokemon/front_anims.inc
new file mode 100644
index 000000000..69341c88d
--- /dev/null
+++ b/data/graphics/pokemon/front_anims.inc
@@ -0,0 +1,6915 @@
+
+ .align 2
+gAnimCmd_NONE_1:: @ 8305F68
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BULBASAUR_1:: @ 8305F78
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_IVYSAUR_1:: @ 8305F88
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 36
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VENUSAUR_1:: @ 8305F98
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHARMANDER_1:: @ 8305FA8
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 46
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHARMELEON_1:: @ 8305FB8
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHARIZARD_1:: @ 8305FC8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SQUIRTLE_1:: @ 8305FD4
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WARTORTLE_1:: @ 8305FE4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLASTOISE_1:: @ 8305FF4
+ obj_image_anim_frame 0, 50
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CATERPIE_1:: @ 830600C
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_METAPOD_1:: @ 8306030
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BUTTERFREE_1:: @ 830603C
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WEEDLE_1:: @ 8306074
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KAKUNA_1:: @ 8306094
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BEEDRILL_1:: @ 83060C4
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIDGEY_1:: @ 83060DC
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIDGEOTTO_1:: @ 8306110
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIDGEOT_1:: @ 8306128
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RATTATA_1:: @ 830613C
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 28
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RATICATE_1:: @ 8306150
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SPEAROW_1:: @ 8306184
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FEAROW_1:: @ 83061C8
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EKANS_1:: @ 83061EC
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARBOK_1:: @ 8306208
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIKACHU_1:: @ 8306218
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIKACHU_2:: @ 8306230
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAICHU_1:: @ 8306244
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAICHU_2:: @ 830625C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SANDSHREW_1:: @ 8306270
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SANDSHREW_2:: @ 8306288
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SANDSLASH_1:: @ 830629C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SANDSLASH_2:: @ 83062B4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDORAN_F_1:: @ 83062C8
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 50
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDORINA_1:: @ 83062F0
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDOQUEEN_1:: @ 83062FC
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDORAN_M_1:: @ 8306308
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDORINO_1:: @ 8306318
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDOKING_1:: @ 8306328
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLEFAIRY_1:: @ 830633C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLEFABLE_1:: @ 830634C
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 24
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VULPIX_1:: @ 8306368
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VULPIX_2:: @ 8306380
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NINETALES_1:: @ 8306394
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NINETALES_2:: @ 83063AC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JIGGLYPUFF_1:: @ 83063C0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JIGGLYPUFF_2:: @ 83063D8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WIGGLYTUFF_1:: @ 83063EC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WIGGLYTUFF_2:: @ 8306404
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ZUBAT_1:: @ 8306418
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLBAT_1:: @ 8306450
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ODDISH_1:: @ 83064A0
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GLOOM_1:: @ 83064C0
+ obj_image_anim_frame 0, 21
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VILEPLUME_1:: @ 83064D4
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 21
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 21
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PARAS_1:: @ 83064EC
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PARASECT_1:: @ 8306530
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VENONAT_1:: @ 830654C
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 35
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VENOMOTH_1:: @ 8306568
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DIGLETT_1:: @ 83065C4
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUGTRIO_1:: @ 83065D4
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEOWTH_1:: @ 8306600
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 17
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PERSIAN_1:: @ 830661C
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PSYDUCK_1:: @ 8306628
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PSYDUCK_2:: @ 8306640
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLDUCK_1:: @ 8306654
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLDUCK_2:: @ 830666C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MANKEY_1:: @ 8306680
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PRIMEAPE_1:: @ 830669C
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GROWLITHE_1:: @ 83066B8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARCANINE_1:: @ 83066D4
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POLIWAG_1:: @ 83066F0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POLIWHIRL_1:: @ 8306700
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POLIWRATH_1:: @ 8306718
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ABRA_1:: @ 8306724
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 21
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 21
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KADABRA_1:: @ 830673C
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ALAKAZAM_1:: @ 830674C
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 54
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MACHOP_1:: @ 830675C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MACHOKE_1:: @ 830677C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MACHAMP_1:: @ 830678C
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BELLSPROUT_1:: @ 83067AC
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WEEPINBELL_1:: @ 83067BC
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VICTREEBEL_1:: @ 83067DC
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TENTACOOL_1:: @ 83067FC
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TENTACRUEL_1:: @ 8306814
+ obj_image_anim_frame 0, 19
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 19
+ obj_image_anim_frame 1, 19
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GEODUDE_1:: @ 830682C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 36
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRAVELER_1:: @ 830683C
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLEM_1:: @ 8306854
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 31
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PONYTA_1:: @ 830686C
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAPIDASH_1:: @ 8306878
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLOWPOKE_1:: @ 8306888
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLOWBRO_1:: @ 8306898
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGNEMITE_1:: @ 83068A8
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 28
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 28
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGNETON_1:: @ 83068C0
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FARFETCHD_1:: @ 83068E0
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DODUO_1:: @ 8306914
+ obj_image_anim_frame 0, 18
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 18
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DODRIO_1:: @ 830692C
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEEL_1:: @ 8306954
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DEWGONG_1:: @ 8306978
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRIMER_1:: @ 8306988
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRIMER_2:: @ 83069A0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MUK_1:: @ 83069B4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MUK_2:: @ 83069CC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHELLDER_1:: @ 83069E0
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLOYSTER_1:: @ 83069F4
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GASTLY_1:: @ 8306A38
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HAUNTER_1:: @ 8306A48
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GENGAR_1:: @ 8306A60
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ONIX_1:: @ 8306A70
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DROWZEE_1:: @ 8306A80
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HYPNO_1:: @ 8306A9C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KRABBY_1:: @ 8306ABC
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KINGLER_1:: @ 8306AD8
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VOLTORB_1:: @ 8306B00
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ELECTRODE_1:: @ 8306B18
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EXEGGCUTE_1:: @ 8306B30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EXEGGUTOR_1:: @ 8306B58
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CUBONE_1:: @ 8306B64
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAROWAK_1:: @ 8306B80
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HITMONLEE_1:: @ 8306B9C
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HITMONCHAN_1:: @ 8306BA8
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LICKITUNG_1:: @ 8306BCC
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 32
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KOFFING_1:: @ 8306BDC
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KOFFING_2:: @ 8306BF4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WEEZING_1:: @ 8306C08
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WEEZING_2:: @ 8306C20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RHYHORN_1:: @ 8306C34
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RHYHORN_2:: @ 8306C4C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RHYDON_1:: @ 8306C60
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 48
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RHYDON_2:: @ 8306C78
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHANSEY_1:: @ 8306C8C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TANGELA_1:: @ 8306C9C
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KANGASKHAN_1:: @ 8306CC8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HORSEA_1:: @ 8306CDC
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HORSEA_2:: @ 8306CF4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEADRA_1:: @ 8306D08
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEADRA_2:: @ 8306D20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLDEEN_1:: @ 8306D34
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEAKING_1:: @ 8306D5C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STARYU_1:: @ 8306D74
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STARYU_2:: @ 8306D8C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STARMIE_1:: @ 8306DA0
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STARMIE_2:: @ 8306DB8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MR_MIME_1:: @ 8306DCC
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SCYTHER_1:: @ 8306DE8
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JYNX_1:: @ 8306E0C
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ELECTABUZZ_1:: @ 8306E24
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGMAR_1:: @ 8306E38
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PINSIR_1:: @ 8306E44
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PINSIR_2:: @ 8306E5C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TAUROS_1:: @ 8306E70
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGIKARP_1:: @ 8306E84
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GYARADOS_1:: @ 8306EAC
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 32
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LAPRAS_1:: @ 8306EBC
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DITTO_1:: @ 8306EC8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EEVEE_1:: @ 8306EDC
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VAPOREON_1:: @ 8306EE8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JOLTEON_1:: @ 8306EF4
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FLAREON_1:: @ 8306F00
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PORYGON_1:: @ 8306F0C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_OMANYTE_1:: @ 8306F20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_OMASTAR_1:: @ 8306F44
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KABUTO_1:: @ 8306F58
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KABUTOPS_1:: @ 8306F7C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AERODACTYL_1:: @ 8306F90
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 25
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SNORLAX_1:: @ 8306FA4
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARTICUNO_1:: @ 8306FB4
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ZAPDOS_1:: @ 8306FC8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MOLTRES_1:: @ 8306FDC
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DRATINI_1:: @ 8307060
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DRAGONAIR_1:: @ 8307070
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DRAGONITE_1:: @ 8307084
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEWTWO_1:: @ 8307094
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEW_1:: @ 83070A0
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHIKORITA_1:: @ 83070B0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BAYLEEF_1:: @ 83070C0
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEGANIUM_1:: @ 83070CC
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CYNDAQUIL_1:: @ 83070D8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_QUILAVA_1:: @ 83070EC
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TYPHLOSION_1:: @ 83070F8
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TOTODILE_1:: @ 8307104
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CROCONAW_1:: @ 8307120
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FERALIGATR_1:: @ 830712C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 40
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SENTRET_1:: @ 8307140
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FURRET_1:: @ 8307154
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HOOTHOOT_1:: @ 8307160
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NOCTOWL_1:: @ 8307194
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LEDYBA_1:: @ 83071A0
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LEDIAN_1:: @ 83071B4
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SPINARAK_1:: @ 8307220
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARIADOS_1:: @ 8307244
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CROBAT_1:: @ 8307258
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHINCHOU_1:: @ 83072A0
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHINCHOU_2:: @ 83072B8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LANTURN_1:: @ 83072CC
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LANTURN_2:: @ 83072E4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PICHU_1:: @ 83072F8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PICHU_2:: @ 8307310
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLEFFA_1:: @ 8307324
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_IGGLYBUFF_1:: @ 8307338
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_IGGLYBUFF_2:: @ 8307350
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TOGEPI_1:: @ 8307364
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TOGETIC_1:: @ 8307374
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NATU_1:: @ 8307384
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NATU_2:: @ 830739C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_XATU_1:: @ 83073B0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_XATU_2:: @ 83073D0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAREEP_1:: @ 83073E4
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FLAAFFY_1:: @ 8307400
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AMPHAROS_1:: @ 8307414
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BELLOSSOM_1:: @ 8307424
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MARILL_1:: @ 8307444
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AZUMARILL_1:: @ 830745C
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SUDOWOODO_1:: @ 8307474
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POLITOED_1:: @ 8307490
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HOPPIP_1:: @ 83074AC
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 25
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SKIPLOOM_1:: @ 83074C0
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JUMPLUFF_1:: @ 83074E4
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AIPOM_1:: @ 8307500
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SUNKERN_1:: @ 830750C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SUNFLORA_1:: @ 8307520
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_YANMA_1:: @ 8307530
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WOOPER_1:: @ 830758C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_QUAGSIRE_1:: @ 830759C
+ obj_image_anim_frame 1, 32
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ESPEON_1:: @ 83075A8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UMBREON_1:: @ 83075B8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MURKROW_1:: @ 83075C4
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLOWKING_1:: @ 83075D0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MISDREAVUS_1:: @ 83075E0
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_1:: @ 830760C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WOBBUFFET_1:: @ 830761C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WOBBUFFET_2:: @ 8307634
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GIRAFARIG_1:: @ 8307648
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GIRAFARIG_2:: @ 8307668
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PINECO_1:: @ 830767C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FORRETRESS_1:: @ 83076A0
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUNSPARCE_1:: @ 83076B4
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GLIGAR_1:: @ 83076C8
+ obj_image_anim_frame 1, 17
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STEELIX_1:: @ 83076D4
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SNUBBULL_1:: @ 83076F0
+ obj_image_anim_frame 1, 32
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRANBULL_1:: @ 83076FC
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_QWILFISH_1:: @ 8307708
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SCIZOR_1:: @ 8307728
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHUCKLE_1:: @ 8307734
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HERACROSS_1:: @ 8307744
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HERACROSS_2:: @ 830775C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SNEASEL_1:: @ 8307770
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TEDDIURSA_1:: @ 830777C
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_URSARING_1:: @ 8307788
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLUGMA_1:: @ 8307794
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLUGMA_2:: @ 83077AC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGCARGO_1:: @ 83077C0
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGCARGO_2:: @ 83077D8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWINUB_1:: @ 83077EC
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PILOSWINE_1:: @ 8307800
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CORSOLA_1:: @ 8307814
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CORSOLA_2:: @ 830782C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REMORAID_1:: @ 8307840
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_OCTILLERY_1:: @ 8307854
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DELIBIRD_1:: @ 8307868
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MANTINE_1:: @ 830787C
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 40
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SKARMORY_1:: @ 8307890
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SKARMORY_2:: @ 83078A8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HOUNDOUR_1:: @ 83078BC
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HOUNDOOM_1:: @ 83078D0
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KINGDRA_1:: @ 83078DC
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KINGDRA_2:: @ 83078F4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PHANPY_1:: @ 8307908
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PHANPY_2:: @ 8307928
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DONPHAN_1:: @ 830793C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DONPHAN_2:: @ 830795C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PORYGON2_1:: @ 8307970
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STANTLER_1:: @ 8307988
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SMEARGLE_1:: @ 8307994
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TYROGUE_1:: @ 83079A8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HITMONTOP_1:: @ 83079B4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SMOOCHUM_1:: @ 83079E4
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ELEKID_1:: @ 8307A00
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGBY_1:: @ 8307A10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MILTANK_1:: @ 8307A30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLISSEY_1:: @ 8307A3C
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAIKOU_1:: @ 8307A48
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ENTEI_1:: @ 8307A5C
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SUICUNE_1:: @ 8307A68
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LARVITAR_1:: @ 8307A74
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PUPITAR_1:: @ 8307A88
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TYRANITAR_1:: @ 8307A94
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUGIA_1:: @ 8307AA8
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HO_OH_1:: @ 8307AB4
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CELEBI_1:: @ 8307AC0
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_OLD_UNOWN_B_1:: @ 8307AD4
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TREECKO_1:: @ 8307AE4
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GROVYLE_1:: @ 8307AFC
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SCEPTILE_1:: @ 8307B14
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 26
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TORCHIC_1:: @ 8307B24
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_COMBUSKEN_1:: @ 8307B44
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 12
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLAZIKEN_1:: @ 8307B54
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLAZIKEN_2:: @ 8307B6C
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 2, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLAZIKEN_3:: @ 8307B7C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 2, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLAZIKEN_4:: @ 8307B88
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MUDKIP_1:: @ 8307B90
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 13
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MARSHTOMP_1:: @ 8307BA8
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWAMPERT_1:: @ 8307BD0
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 18
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POOCHYENA_1:: @ 8307BE8
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MIGHTYENA_1:: @ 8307BF8
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ZIGZAGOON_1:: @ 8307C10
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LINOONE_1:: @ 8307C28
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WURMPLE_1:: @ 8307C40
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SILCOON_1:: @ 8307C50
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SILCOON_2:: @ 8307C60
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BEAUTIFLY_1:: @ 8307C68
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BEAUTIFLY_2:: @ 8307C90
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASCOON_1:: @ 8307C98
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASCOON_2:: @ 8307CB0
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUSTOX_1:: @ 8307CB8
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUSTOX_2:: @ 8307CF8
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LOTAD_1:: @ 8307D00
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 55
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LOMBRE_1:: @ 8307D10
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUDICOLO_1:: @ 8307D28
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEEDOT_1:: @ 8307D48
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NUZLEAF_1:: @ 8307D70
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHIFTRY_1:: @ 8307D98
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NINCADA_1:: @ 8307DA8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NINJASK_1:: @ 8307DC0
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHEDINJA_1:: @ 8307E0C
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TAILLOW_1:: @ 8307E24
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWELLOW_1:: @ 8307E4C
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHROOMISH_1:: @ 8307E5C
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BRELOOM_1:: @ 8307E8C
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WINGULL_1:: @ 8307EA4
+ obj_image_anim_frame 0, 17
+ obj_image_anim_frame 1, 23
+ obj_image_anim_frame 0, 13
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PELIPPER_1:: @ 8307EB4
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SURSKIT_1:: @ 8307EDC
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SURSKIT_2:: @ 8307EF4
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MASQUERAIN_1:: @ 8307EFC
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MASQUERAIN_2:: @ 8307F24
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WAILMER_1:: @ 8307F2C
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WAILORD_1:: @ 8307F4C
+ obj_image_anim_frame 0, 26
+ obj_image_anim_frame 1, 48
+ obj_image_anim_frame 0, 33
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SKITTY_1:: @ 8307F5C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 9
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DELCATTY_1:: @ 8307F6C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 46
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KECLEON_1:: @ 8307F7C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BALTOY_1:: @ 8307F94
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLAYDOL_1:: @ 8307FB4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NOSEPASS_1:: @ 8307FD4
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TORKOAL_1:: @ 8307FF4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SABLEYE_1:: @ 830800C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BARBOACH_1:: @ 8308024
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WHISCASH_1:: @ 830805C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUVDISC_1:: @ 8308094
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CORPHISH_1:: @ 83080AC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CRAWDAUNT_1:: @ 83080CC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FEEBAS_1:: @ 83080E4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MILOTIC_1:: @ 8308104
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CARVANHA_1:: @ 8308124
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHARPEDO_1:: @ 830814C
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TRAPINCH_1:: @ 8308174
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VIBRAVA_1:: @ 830818C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FLYGON_1:: @ 83081AC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAKUHITA_1:: @ 83081CC
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HARIYAMA_1:: @ 83081F4
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ELECTRIKE_1:: @ 8308208
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 17
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MANECTRIC_1:: @ 8308220
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NUMEL_1:: @ 8308238
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 40
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CAMERUPT_1:: @ 8308250
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SPHEAL_1:: @ 8308270
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 43
+ obj_image_anim_frame 1, 60
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEALEO_1:: @ 8308294
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WALREIN_1:: @ 83082AC
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CACNEA_1:: @ 83082C4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CACTURNE_1:: @ 83082F4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SNORUNT_1:: @ 830830C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GLALIE_1:: @ 8308324
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUNATONE_1:: @ 830833C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUNATONE_2:: @ 8308354
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SOLROCK_1:: @ 8308368
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SOLROCK_2:: @ 8308380
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AZURILL_1:: @ 8308394
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SPOINK_1:: @ 83083B4
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRUMPIG_1:: @ 83083E4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PLUSLE_1:: @ 83083FC
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MINUN_1:: @ 8308414
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAWILE_1:: @ 830842C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEDITITE_1:: @ 830844C
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEDICHAM_1:: @ 830845C
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWABLU_1:: @ 830847C
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWABLU_2:: @ 830849C
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 2, 8
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 2, 8
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 2, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ALTARIA_1:: @ 83084B8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ALTARIA_2:: @ 83084D0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WYNAUT_1:: @ 83084E4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUSKULL_1:: @ 83084FC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUSCLOPS_1:: @ 8308514
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ROSELIA_1:: @ 830852C
+ obj_image_anim_frame 0, 18
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLAKOTH_1:: @ 830853C
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VIGOROTH_1:: @ 8308558
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLAKING_1:: @ 8308578
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GULPIN_1:: @ 8308598
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWALOT_1:: @ 83085B0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TROPIUS_1:: @ 83085C4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WHISMUR_1:: @ 83085DC
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LOUDRED_1:: @ 8308608
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 33
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EXPLOUD_1:: @ 8308620
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 9
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLAMPERL_1:: @ 8308630
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HUNTAIL_1:: @ 8308648
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOREBYSS_1:: @ 8308660
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ABSOL_1:: @ 8308678
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHUPPET_1:: @ 8308690
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BANETTE_1:: @ 83086B0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEVIPER_1:: @ 83086D0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ZANGOOSE_1:: @ 83086F0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RELICANTH_1:: @ 8308710
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARON_1:: @ 8308728
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LAIRON_1:: @ 8308740
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 29
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 29
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AGGRON_1:: @ 8308758
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASTFORM_0:: @ 8308768
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASTFORM_1:: @ 8308770
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASTFORM_2:: @ 8308778
+ obj_image_anim_frame 2, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASTFORM_3:: @ 8308780
+ obj_image_anim_frame 3, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VOLBEAT_1:: @ 8308788
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ILLUMISE_1:: @ 83087A8
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LILEEP_1:: @ 83087C0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CRADILY_1:: @ 83087D8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ANORITH_1:: @ 83087F8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARMALDO_1:: @ 8308818
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RALTS_1:: @ 8308830
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KIRLIA_1:: @ 8308840
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 39
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GARDEVOIR_1:: @ 8308850
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BAGON_1:: @ 8308888
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHELGON_1:: @ 83088A0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SALAMENCE_1:: @ 83088B8
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BELDUM_1:: @ 83088D0
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_METANG_1:: @ 83088E8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_METAGROSS_1:: @ 8308900
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGIROCK_1:: @ 8308918
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGIROCK_2:: @ 8308930
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGICE_1:: @ 8308944
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGISTEEL_1:: @ 830895C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGISTEEL_2:: @ 8308974
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KYOGRE_1:: @ 8308988
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KYOGRE_2:: @ 83089A0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GROUDON_1:: @ 83089B4
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GROUDON_2:: @ 83089CC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAYQUAZA_1:: @ 83089E0
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAYQUAZA_2:: @ 83089F8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LATIAS_1:: @ 8308A0C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LATIAS_2:: @ 8308A24
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LATIOS_1:: @ 8308A38
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LATIOS_2:: @ 8308A50
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JIRACHI_1:: @ 8308A64
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JIRACHI_2:: @ 8308A90
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DEOXYS_1:: @ 8308AA4
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 26
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DEOXYS_2:: @ 8308ABC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHIMECHO_1:: @ 8308AD0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EGG_1:: @ 8308AF8
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 2, 6
+ obj_image_anim_frame 3, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_B_1:: @ 8308B0C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_C_1:: @ 8308B1C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_D_1:: @ 8308B2C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_E_1:: @ 8308B3C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_F_1:: @ 8308B4C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_G_1:: @ 8308B5C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_H_1:: @ 8308B6C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_I_1:: @ 8308B7C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_J_1:: @ 8308B8C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_K_1:: @ 8308B9C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_L_1:: @ 8308BAC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_M_1:: @ 8308BBC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_N_1:: @ 8308BCC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_O_1:: @ 8308BDC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_P_1:: @ 8308BEC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_Q_1:: @ 8308BFC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_R_1:: @ 8308C0C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_S_1:: @ 8308C1C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_T_1:: @ 8308C2C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_U_1:: @ 8308C3C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_V_1:: @ 8308C4C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_W_1:: @ 8308C5C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_X_1:: @ 8308C6C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_Y_1:: @ 8308C7C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_Z_1:: @ 8308C8C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_EMARK_1:: @ 8308C9C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_QMARK_1:: @ 8308CAC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnims_NONE:: @ 8308CBC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NONE_1
+
+ .align 2
+gAnims_BULBASAUR:: @ 8308CC4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BULBASAUR_1
+
+ .align 2
+gAnims_IVYSAUR:: @ 8308CCC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_IVYSAUR_1
+
+ .align 2
+gAnims_VENUSAUR:: @ 8308CD4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VENUSAUR_1
+
+ .align 2
+gAnims_CHARMANDER:: @ 8308CDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHARMANDER_1
+
+ .align 2
+gAnims_CHARMELEON:: @ 8308CE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHARMELEON_1
+
+ .align 2
+gAnims_CHARIZARD:: @ 8308CEC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHARIZARD_1
+
+ .align 2
+gAnims_SQUIRTLE:: @ 8308CF4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SQUIRTLE_1
+
+ .align 2
+gAnims_WARTORTLE:: @ 8308CFC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WARTORTLE_1
+
+ .align 2
+gAnims_BLASTOISE:: @ 8308D04
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BLASTOISE_1
+
+ .align 2
+gAnims_CATERPIE:: @ 8308D0C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CATERPIE_1
+
+ .align 2
+gAnims_METAPOD:: @ 8308D14
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_METAPOD_1
+
+ .align 2
+gAnims_BUTTERFREE:: @ 8308D1C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BUTTERFREE_1
+
+ .align 2
+gAnims_WEEDLE:: @ 8308D24
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WEEDLE_1
+
+ .align 2
+gAnims_KAKUNA:: @ 8308D2C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KAKUNA_1
+
+ .align 2
+gAnims_BEEDRILL:: @ 8308D34
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BEEDRILL_1
+
+ .align 2
+gAnims_PIDGEY:: @ 8308D3C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PIDGEY_1
+
+ .align 2
+gAnims_PIDGEOTTO:: @ 8308D44
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PIDGEOTTO_1
+
+ .align 2
+gAnims_PIDGEOT:: @ 8308D4C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PIDGEOT_1
+
+ .align 2
+gAnims_RATTATA:: @ 8308D54
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RATTATA_1
+
+ .align 2
+gAnims_RATICATE:: @ 8308D5C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RATICATE_1
+
+ .align 2
+gAnims_SPEAROW:: @ 8308D64
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SPEAROW_1
+
+ .align 2
+gAnims_FEAROW:: @ 8308D6C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FEAROW_1
+
+ .align 2
+gAnims_EKANS:: @ 8308D74
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EKANS_1
+
+ .align 2
+gAnims_ARBOK:: @ 8308D7C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARBOK_1
+
+ .align 2
+gAnims_PIKACHU:: @ 8308D84
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PIKACHU_1
+ .4byte gAnimCmd_PIKACHU_2
+
+ .align 2
+gAnims_RAICHU:: @ 8308D90
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RAICHU_1
+ .4byte gAnimCmd_RAICHU_2
+
+ .align 2
+gAnims_SANDSHREW:: @ 8308D9C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SANDSHREW_1
+ .4byte gAnimCmd_SANDSHREW_2
+
+ .align 2
+gAnims_SANDSLASH:: @ 8308DA8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SANDSLASH_1
+ .4byte gAnimCmd_SANDSLASH_2
+
+ .align 2
+gAnims_NIDORAN_F:: @ 8308DB4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDORAN_F_1
+
+ .align 2
+gAnims_NIDORINA:: @ 8308DBC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDORINA_1
+
+ .align 2
+gAnims_NIDOQUEEN:: @ 8308DC4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDOQUEEN_1
+
+ .align 2
+gAnims_NIDORAN_M:: @ 8308DCC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDORAN_M_1
+
+ .align 2
+gAnims_NIDORINO:: @ 8308DD4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDORINO_1
+
+ .align 2
+gAnims_NIDOKING:: @ 8308DDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDOKING_1
+
+ .align 2
+gAnims_CLEFAIRY:: @ 8308DE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLEFAIRY_1
+
+ .align 2
+gAnims_CLEFABLE:: @ 8308DEC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLEFABLE_1
+
+ .align 2
+gAnims_VULPIX:: @ 8308DF4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VULPIX_1
+ .4byte gAnimCmd_VULPIX_2
+
+ .align 2
+gAnims_NINETALES:: @ 8308E00
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NINETALES_1
+ .4byte gAnimCmd_NINETALES_2
+
+ .align 2
+gAnims_JIGGLYPUFF:: @ 8308E0C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JIGGLYPUFF_1
+ .4byte gAnimCmd_JIGGLYPUFF_2
+
+ .align 2
+gAnims_WIGGLYTUFF:: @ 8308E18
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WIGGLYTUFF_1
+ .4byte gAnimCmd_WIGGLYTUFF_2
+
+ .align 2
+gAnims_ZUBAT:: @ 8308E24
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ZUBAT_1
+
+ .align 2
+gAnims_GOLBAT:: @ 8308E2C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOLBAT_1
+
+ .align 2
+gAnims_ODDISH:: @ 8308E34
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ODDISH_1
+
+ .align 2
+gAnims_GLOOM:: @ 8308E3C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GLOOM_1
+
+ .align 2
+gAnims_VILEPLUME:: @ 8308E44
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VILEPLUME_1
+
+ .align 2
+gAnims_PARAS:: @ 8308E4C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PARAS_1
+
+ .align 2
+gAnims_PARASECT:: @ 8308E54
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PARASECT_1
+
+ .align 2
+gAnims_VENONAT:: @ 8308E5C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VENONAT_1
+
+ .align 2
+gAnims_VENOMOTH:: @ 8308E64
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VENOMOTH_1
+
+ .align 2
+gAnims_DIGLETT:: @ 8308E6C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DIGLETT_1
+
+ .align 2
+gAnims_DUGTRIO:: @ 8308E74
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUGTRIO_1
+
+ .align 2
+gAnims_MEOWTH:: @ 8308E7C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEOWTH_1
+
+ .align 2
+gAnims_PERSIAN:: @ 8308E84
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PERSIAN_1
+
+ .align 2
+gAnims_PSYDUCK:: @ 8308E8C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PSYDUCK_1
+ .4byte gAnimCmd_PSYDUCK_2
+
+ .align 2
+gAnims_GOLDUCK:: @ 8308E98
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOLDUCK_1
+ .4byte gAnimCmd_GOLDUCK_2
+
+ .align 2
+gAnims_MANKEY:: @ 8308EA4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MANKEY_1
+
+ .align 2
+gAnims_PRIMEAPE:: @ 8308EAC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PRIMEAPE_1
+
+ .align 2
+gAnims_GROWLITHE:: @ 8308EB4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GROWLITHE_1
+
+ .align 2
+gAnims_ARCANINE:: @ 8308EBC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARCANINE_1
+
+ .align 2
+gAnims_POLIWAG:: @ 8308EC4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POLIWAG_1
+
+ .align 2
+gAnims_POLIWHIRL:: @ 8308ECC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POLIWHIRL_1
+
+ .align 2
+gAnims_POLIWRATH:: @ 8308ED4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POLIWRATH_1
+
+ .align 2
+gAnims_ABRA:: @ 8308EDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ABRA_1
+
+ .align 2
+gAnims_KADABRA:: @ 8308EE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KADABRA_1
+
+ .align 2
+gAnims_ALAKAZAM:: @ 8308EEC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ALAKAZAM_1
+
+ .align 2
+gAnims_MACHOP:: @ 8308EF4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MACHOP_1
+
+ .align 2
+gAnims_MACHOKE:: @ 8308EFC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MACHOKE_1
+
+ .align 2
+gAnims_MACHAMP:: @ 8308F04
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MACHAMP_1
+
+ .align 2
+gAnims_BELLSPROUT:: @ 8308F0C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BELLSPROUT_1
+
+ .align 2
+gAnims_WEEPINBELL:: @ 8308F14
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WEEPINBELL_1
+
+ .align 2
+gAnims_VICTREEBEL:: @ 8308F1C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VICTREEBEL_1
+
+ .align 2
+gAnims_TENTACOOL:: @ 8308F24
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TENTACOOL_1
+
+ .align 2
+gAnims_TENTACRUEL:: @ 8308F2C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TENTACRUEL_1
+
+ .align 2
+gAnims_GEODUDE:: @ 8308F34
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GEODUDE_1
+
+ .align 2
+gAnims_GRAVELER:: @ 8308F3C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GRAVELER_1
+
+ .align 2
+gAnims_GOLEM:: @ 8308F44
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOLEM_1
+
+ .align 2
+gAnims_PONYTA:: @ 8308F4C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PONYTA_1
+
+ .align 2
+gAnims_RAPIDASH:: @ 8308F54
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RAPIDASH_1
+
+ .align 2
+gAnims_SLOWPOKE:: @ 8308F5C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLOWPOKE_1
+
+ .align 2
+gAnims_SLOWBRO:: @ 8308F64
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLOWBRO_1
+
+ .align 2
+gAnims_MAGNEMITE:: @ 8308F6C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGNEMITE_1
+
+ .align 2
+gAnims_MAGNETON:: @ 8308F74
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGNETON_1
+
+ .align 2
+gAnims_FARFETCHD:: @ 8308F7C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FARFETCHD_1
+
+ .align 2
+gAnims_DODUO:: @ 8308F84
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DODUO_1
+
+ .align 2
+gAnims_DODRIO:: @ 8308F8C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DODRIO_1
+
+ .align 2
+gAnims_SEEL:: @ 8308F94
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEEL_1
+
+ .align 2
+gAnims_DEWGONG:: @ 8308F9C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DEWGONG_1
+
+ .align 2
+gAnims_GRIMER:: @ 8308FA4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GRIMER_1
+ .4byte gAnimCmd_GRIMER_2
+
+ .align 2
+gAnims_MUK:: @ 8308FB0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MUK_1
+ .4byte gAnimCmd_MUK_2
+
+ .align 2
+gAnims_SHELLDER:: @ 8308FBC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHELLDER_1
+
+ .align 2
+gAnims_CLOYSTER:: @ 8308FC4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLOYSTER_1
+
+ .align 2
+gAnims_GASTLY:: @ 8308FCC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GASTLY_1
+
+ .align 2
+gAnims_HAUNTER:: @ 8308FD4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HAUNTER_1
+
+ .align 2
+gAnims_GENGAR:: @ 8308FDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GENGAR_1
+
+ .align 2
+gAnims_ONIX:: @ 8308FE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ONIX_1
+
+ .align 2
+gAnims_DROWZEE:: @ 8308FEC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DROWZEE_1
+
+ .align 2
+gAnims_HYPNO:: @ 8308FF4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HYPNO_1
+
+ .align 2
+gAnims_KRABBY:: @ 8308FFC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KRABBY_1
+
+ .align 2
+gAnims_KINGLER:: @ 8309004
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KINGLER_1
+
+ .align 2
+gAnims_VOLTORB:: @ 830900C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VOLTORB_1
+
+ .align 2
+gAnims_ELECTRODE:: @ 8309014
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ELECTRODE_1
+
+ .align 2
+gAnims_EXEGGCUTE:: @ 830901C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EXEGGCUTE_1
+
+ .align 2
+gAnims_EXEGGUTOR:: @ 8309024
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EXEGGUTOR_1
+
+ .align 2
+gAnims_CUBONE:: @ 830902C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CUBONE_1
+
+ .align 2
+gAnims_MAROWAK:: @ 8309034
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAROWAK_1
+
+ .align 2
+gAnims_HITMONLEE:: @ 830903C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HITMONLEE_1
+
+ .align 2
+gAnims_HITMONCHAN:: @ 8309044
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HITMONCHAN_1
+
+ .align 2
+gAnims_LICKITUNG:: @ 830904C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LICKITUNG_1
+
+ .align 2
+gAnims_KOFFING:: @ 8309054
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KOFFING_1
+ .4byte gAnimCmd_KOFFING_2
+
+ .align 2
+gAnims_WEEZING:: @ 8309060
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WEEZING_1
+ .4byte gAnimCmd_WEEZING_2
+
+ .align 2
+gAnims_RHYHORN:: @ 830906C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RHYHORN_1
+ .4byte gAnimCmd_RHYHORN_2
+
+ .align 2
+gAnims_RHYDON:: @ 8309078
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RHYDON_1
+ .4byte gAnimCmd_RHYDON_2
+
+ .align 2
+gAnims_CHANSEY:: @ 8309084
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHANSEY_1
+
+ .align 2
+gAnims_TANGELA:: @ 830908C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TANGELA_1
+
+ .align 2
+gAnims_KANGASKHAN:: @ 8309094
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KANGASKHAN_1
+
+ .align 2
+gAnims_HORSEA:: @ 830909C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HORSEA_1
+ .4byte gAnimCmd_HORSEA_2
+
+ .align 2
+gAnims_SEADRA:: @ 83090A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEADRA_1
+ .4byte gAnimCmd_SEADRA_2
+
+ .align 2
+gAnims_GOLDEEN:: @ 83090B4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOLDEEN_1
+
+ .align 2
+gAnims_SEAKING:: @ 83090BC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEAKING_1
+
+ .align 2
+gAnims_STARYU:: @ 83090C4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_STARYU_1
+ .4byte gAnimCmd_STARYU_2
+
+ .align 2
+gAnims_STARMIE:: @ 83090D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_STARMIE_1
+ .4byte gAnimCmd_STARMIE_2
+
+ .align 2
+gAnims_MR_MIME:: @ 83090DC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MR_MIME_1
+
+ .align 2
+gAnims_SCYTHER:: @ 83090E4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SCYTHER_1
+
+ .align 2
+gAnims_JYNX:: @ 83090EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JYNX_1
+
+ .align 2
+gAnims_ELECTABUZZ:: @ 83090F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ELECTABUZZ_1
+
+ .align 2
+gAnims_MAGMAR:: @ 83090FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGMAR_1
+
+ .align 2
+gAnims_PINSIR:: @ 8309104
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PINSIR_1
+ .4byte gAnimCmd_PINSIR_2
+
+ .align 2
+gAnims_TAUROS:: @ 8309110
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TAUROS_1
+
+ .align 2
+gAnims_MAGIKARP:: @ 8309118
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGIKARP_1
+
+ .align 2
+gAnims_GYARADOS:: @ 8309120
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GYARADOS_1
+
+ .align 2
+gAnims_LAPRAS:: @ 8309128
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LAPRAS_1
+
+ .align 2
+gAnims_DITTO:: @ 8309130
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DITTO_1
+
+ .align 2
+gAnims_EEVEE:: @ 8309138
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EEVEE_1
+
+ .align 2
+gAnims_VAPOREON:: @ 8309140
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VAPOREON_1
+
+ .align 2
+gAnims_JOLTEON:: @ 8309148
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JOLTEON_1
+
+ .align 2
+gAnims_FLAREON:: @ 8309150
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FLAREON_1
+
+ .align 2
+gAnims_PORYGON:: @ 8309158
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PORYGON_1
+
+ .align 2
+gAnims_OMANYTE:: @ 8309160
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_OMANYTE_1
+
+ .align 2
+gAnims_OMASTAR:: @ 8309168
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_OMASTAR_1
+
+ .align 2
+gAnims_KABUTO:: @ 8309170
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KABUTO_1
+
+ .align 2
+gAnims_KABUTOPS:: @ 8309178
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KABUTOPS_1
+
+ .align 2
+gAnims_AERODACTYL:: @ 8309180
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AERODACTYL_1
+
+ .align 2
+gAnims_SNORLAX:: @ 8309188
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SNORLAX_1
+
+ .align 2
+gAnims_ARTICUNO:: @ 8309190
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARTICUNO_1
+
+ .align 2
+gAnims_ZAPDOS:: @ 8309198
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ZAPDOS_1
+
+ .align 2
+gAnims_MOLTRES:: @ 83091A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MOLTRES_1
+
+ .align 2
+gAnims_DRATINI:: @ 83091A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DRATINI_1
+
+ .align 2
+gAnims_DRAGONAIR:: @ 83091B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DRAGONAIR_1
+
+ .align 2
+gAnims_DRAGONITE:: @ 83091B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DRAGONITE_1
+
+ .align 2
+gAnims_MEWTWO:: @ 83091C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEWTWO_1
+
+ .align 2
+gAnims_MEW:: @ 83091C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEW_1
+
+ .align 2
+gAnims_CHIKORITA:: @ 83091D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHIKORITA_1
+
+ .align 2
+gAnims_BAYLEEF:: @ 83091D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BAYLEEF_1
+
+ .align 2
+gAnims_MEGANIUM:: @ 83091E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEGANIUM_1
+
+ .align 2
+gAnims_CYNDAQUIL:: @ 83091E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CYNDAQUIL_1
+
+ .align 2
+gAnims_QUILAVA:: @ 83091F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_QUILAVA_1
+
+ .align 2
+gAnims_TYPHLOSION:: @ 83091F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TYPHLOSION_1
+
+ .align 2
+gAnims_TOTODILE:: @ 8309200
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TOTODILE_1
+
+ .align 2
+gAnims_CROCONAW:: @ 8309208
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CROCONAW_1
+
+ .align 2
+gAnims_FERALIGATR:: @ 8309210
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FERALIGATR_1
+
+ .align 2
+gAnims_SENTRET:: @ 8309218
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SENTRET_1
+
+ .align 2
+gAnims_FURRET:: @ 8309220
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FURRET_1
+
+ .align 2
+gAnims_HOOTHOOT:: @ 8309228
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HOOTHOOT_1
+
+ .align 2
+gAnims_NOCTOWL:: @ 8309230
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NOCTOWL_1
+
+ .align 2
+gAnims_LEDYBA:: @ 8309238
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LEDYBA_1
+
+ .align 2
+gAnims_LEDIAN:: @ 8309240
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LEDIAN_1
+
+ .align 2
+gAnims_SPINARAK:: @ 8309248
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SPINARAK_1
+
+ .align 2
+gAnims_ARIADOS:: @ 8309250
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARIADOS_1
+
+ .align 2
+gAnims_CROBAT:: @ 8309258
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CROBAT_1
+
+ .align 2
+gAnims_CHINCHOU:: @ 8309260
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHINCHOU_1
+ .4byte gAnimCmd_CHINCHOU_2
+
+ .align 2
+gAnims_LANTURN:: @ 830926C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LANTURN_1
+ .4byte gAnimCmd_LANTURN_2
+
+ .align 2
+gAnims_PICHU:: @ 8309278
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PICHU_1
+ .4byte gAnimCmd_PICHU_2
+
+ .align 2
+gAnims_CLEFFA:: @ 8309284
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLEFFA_1
+
+ .align 2
+gAnims_IGGLYBUFF:: @ 830928C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_IGGLYBUFF_1
+ .4byte gAnimCmd_IGGLYBUFF_2
+
+ .align 2
+gAnims_TOGEPI:: @ 8309298
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TOGEPI_1
+
+ .align 2
+gAnims_TOGETIC:: @ 83092A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TOGETIC_1
+
+ .align 2
+gAnims_NATU:: @ 83092A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NATU_1
+ .4byte gAnimCmd_NATU_2
+
+ .align 2
+gAnims_XATU:: @ 83092B4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_XATU_1
+ .4byte gAnimCmd_XATU_2
+
+ .align 2
+gAnims_MAREEP:: @ 83092C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAREEP_1
+
+ .align 2
+gAnims_FLAAFFY:: @ 83092C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FLAAFFY_1
+
+ .align 2
+gAnims_AMPHAROS:: @ 83092D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AMPHAROS_1
+
+ .align 2
+gAnims_BELLOSSOM:: @ 83092D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BELLOSSOM_1
+
+ .align 2
+gAnims_MARILL:: @ 83092E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MARILL_1
+
+ .align 2
+gAnims_AZUMARILL:: @ 83092E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AZUMARILL_1
+
+ .align 2
+gAnims_SUDOWOODO:: @ 83092F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SUDOWOODO_1
+
+ .align 2
+gAnims_POLITOED:: @ 83092F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POLITOED_1
+
+ .align 2
+gAnims_HOPPIP:: @ 8309300
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HOPPIP_1
+
+ .align 2
+gAnims_SKIPLOOM:: @ 8309308
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SKIPLOOM_1
+
+ .align 2
+gAnims_JUMPLUFF:: @ 8309310
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JUMPLUFF_1
+
+ .align 2
+gAnims_AIPOM:: @ 8309318
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AIPOM_1
+
+ .align 2
+gAnims_SUNKERN:: @ 8309320
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SUNKERN_1
+
+ .align 2
+gAnims_SUNFLORA:: @ 8309328
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SUNFLORA_1
+
+ .align 2
+gAnims_YANMA:: @ 8309330
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_YANMA_1
+
+ .align 2
+gAnims_WOOPER:: @ 8309338
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WOOPER_1
+
+ .align 2
+gAnims_QUAGSIRE:: @ 8309340
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_QUAGSIRE_1
+
+ .align 2
+gAnims_ESPEON:: @ 8309348
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ESPEON_1
+
+ .align 2
+gAnims_UMBREON:: @ 8309350
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UMBREON_1
+
+ .align 2
+gAnims_MURKROW:: @ 8309358
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MURKROW_1
+
+ .align 2
+gAnims_SLOWKING:: @ 8309360
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLOWKING_1
+
+ .align 2
+gAnims_MISDREAVUS:: @ 8309368
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MISDREAVUS_1
+
+ .align 2
+gAnims_UNOWN:: @ 8309370
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_1
+
+ .align 2
+gAnims_WOBBUFFET:: @ 8309378
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WOBBUFFET_1
+ .4byte gAnimCmd_WOBBUFFET_2
+
+ .align 2
+gAnims_GIRAFARIG:: @ 8309384
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GIRAFARIG_1
+ .4byte gAnimCmd_GIRAFARIG_2
+
+ .align 2
+gAnims_PINECO:: @ 8309390
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PINECO_1
+
+ .align 2
+gAnims_FORRETRESS:: @ 8309398
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FORRETRESS_1
+
+ .align 2
+gAnims_DUNSPARCE:: @ 83093A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUNSPARCE_1
+
+ .align 2
+gAnims_GLIGAR:: @ 83093A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GLIGAR_1
+
+ .align 2
+gAnims_STEELIX:: @ 83093B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_STEELIX_1
+
+ .align 2
+gAnims_SNUBBULL:: @ 83093B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SNUBBULL_1
+
+ .align 2
+gAnims_GRANBULL:: @ 83093C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GRANBULL_1
+
+ .align 2
+gAnims_QWILFISH:: @ 83093C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_QWILFISH_1
+
+ .align 2
+gAnims_SCIZOR:: @ 83093D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SCIZOR_1
+
+ .align 2
+gAnims_SHUCKLE:: @ 83093D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHUCKLE_1
+
+ .align 2
+gAnims_HERACROSS:: @ 83093E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HERACROSS_1
+ .4byte gAnimCmd_HERACROSS_2
+
+ .align 2
+gAnims_SNEASEL:: @ 83093EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SNEASEL_1
+
+ .align 2
+gAnims_TEDDIURSA:: @ 83093F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TEDDIURSA_1
+
+ .align 2
+gAnims_URSARING:: @ 83093FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_URSARING_1
+
+ .align 2
+gAnims_SLUGMA:: @ 8309404
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLUGMA_1
+ .4byte gAnimCmd_SLUGMA_2
+
+ .align 2
+gAnims_MAGCARGO:: @ 8309410
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGCARGO_1
+ .4byte gAnimCmd_MAGCARGO_2
+
+ .align 2
+gAnims_SWINUB:: @ 830941C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWINUB_1
+
+ .align 2
+gAnims_PILOSWINE:: @ 8309424
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PILOSWINE_1
+
+ .align 2
+gAnims_CORSOLA:: @ 830942C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CORSOLA_1
+ .4byte gAnimCmd_CORSOLA_2
+
+ .align 2
+gAnims_REMORAID:: @ 8309438
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_REMORAID_1
+
+ .align 2
+gAnims_OCTILLERY:: @ 8309440
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_OCTILLERY_1
+
+ .align 2
+gAnims_DELIBIRD:: @ 8309448
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DELIBIRD_1
+
+ .align 2
+gAnims_MANTINE:: @ 8309450
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MANTINE_1
+
+ .align 2
+gAnims_SKARMORY:: @ 8309458
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SKARMORY_1
+ .4byte gAnimCmd_SKARMORY_2
+
+ .align 2
+gAnims_HOUNDOUR:: @ 8309464
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HOUNDOUR_1
+
+ .align 2
+gAnims_HOUNDOOM:: @ 830946C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HOUNDOOM_1
+
+ .align 2
+gAnims_KINGDRA:: @ 8309474
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KINGDRA_1
+ .4byte gAnimCmd_KINGDRA_2
+
+ .align 2
+gAnims_PHANPY:: @ 8309480
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PHANPY_1
+ .4byte gAnimCmd_PHANPY_2
+
+ .align 2
+gAnims_DONPHAN:: @ 830948C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DONPHAN_1
+ .4byte gAnimCmd_DONPHAN_2
+
+ .align 2
+gAnims_PORYGON2:: @ 8309498
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PORYGON2_1
+
+ .align 2
+gAnims_STANTLER:: @ 83094A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_STANTLER_1
+
+ .align 2
+gAnims_SMEARGLE:: @ 83094A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SMEARGLE_1
+
+ .align 2
+gAnims_TYROGUE:: @ 83094B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TYROGUE_1
+
+ .align 2
+gAnims_HITMONTOP:: @ 83094B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HITMONTOP_1
+
+ .align 2
+gAnims_SMOOCHUM:: @ 83094C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SMOOCHUM_1
+
+ .align 2
+gAnims_ELEKID:: @ 83094C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ELEKID_1
+
+ .align 2
+gAnims_MAGBY:: @ 83094D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGBY_1
+
+ .align 2
+gAnims_MILTANK:: @ 83094D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MILTANK_1
+
+ .align 2
+gAnims_BLISSEY:: @ 83094E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BLISSEY_1
+
+ .align 2
+gAnims_RAIKOU:: @ 83094E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RAIKOU_1
+
+ .align 2
+gAnims_ENTEI:: @ 83094F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ENTEI_1
+
+ .align 2
+gAnims_SUICUNE:: @ 83094F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SUICUNE_1
+
+ .align 2
+gAnims_LARVITAR:: @ 8309500
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LARVITAR_1
+
+ .align 2
+gAnims_PUPITAR:: @ 8309508
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PUPITAR_1
+
+ .align 2
+gAnims_TYRANITAR:: @ 8309510
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TYRANITAR_1
+
+ .align 2
+gAnims_LUGIA:: @ 8309518
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LUGIA_1
+
+ .align 2
+gAnims_HO_OH:: @ 8309520
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HO_OH_1
+
+ .align 2
+gAnims_CELEBI:: @ 8309528
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CELEBI_1
+
+ .align 2
+gAnims_OLD_UNOWN_B:: @ 8309530
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_OLD_UNOWN_B_1
+
+ .align 2
+gAnims_TREECKO:: @ 8309538
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TREECKO_1
+
+ .align 2
+gAnims_GROVYLE:: @ 8309540
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GROVYLE_1
+
+ .align 2
+gAnims_SCEPTILE:: @ 8309548
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SCEPTILE_1
+
+ .align 2
+gAnims_TORCHIC:: @ 8309550
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TORCHIC_1
+
+ .align 2
+gAnims_COMBUSKEN:: @ 8309558
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_COMBUSKEN_1
+
+ .align 2
+gAnims_BLAZIKEN:: @ 8309560
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BLAZIKEN_1
+ .4byte gAnimCmd_BLAZIKEN_2
+ .4byte gAnimCmd_BLAZIKEN_3
+ .4byte gAnimCmd_BLAZIKEN_4
+
+ .align 2
+gAnims_MUDKIP:: @ 8309574
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MUDKIP_1
+
+ .align 2
+gAnims_MARSHTOMP:: @ 830957C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MARSHTOMP_1
+
+ .align 2
+gAnims_SWAMPERT:: @ 8309584
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWAMPERT_1
+
+ .align 2
+gAnims_POOCHYENA:: @ 830958C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POOCHYENA_1
+
+ .align 2
+gAnims_MIGHTYENA:: @ 8309594
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MIGHTYENA_1
+
+ .align 2
+gAnims_ZIGZAGOON:: @ 830959C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ZIGZAGOON_1
+
+ .align 2
+gAnims_LINOONE:: @ 83095A4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LINOONE_1
+
+ .align 2
+gAnims_WURMPLE:: @ 83095AC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WURMPLE_1
+
+ .align 2
+gAnims_SILCOON:: @ 83095B4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SILCOON_1
+ .4byte gAnimCmd_SILCOON_2
+
+ .align 2
+gAnims_BEAUTIFLY:: @ 83095C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BEAUTIFLY_1
+ .4byte gAnimCmd_BEAUTIFLY_2
+
+ .align 2
+gAnims_CASCOON:: @ 83095CC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CASCOON_1
+ .4byte gAnimCmd_CASCOON_2
+
+ .align 2
+gAnims_DUSTOX:: @ 83095D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUSTOX_1
+ .4byte gAnimCmd_DUSTOX_2
+
+ .align 2
+gAnims_LOTAD:: @ 83095E4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LOTAD_1
+
+ .align 2
+gAnims_LOMBRE:: @ 83095EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LOMBRE_1
+
+ .align 2
+gAnims_LUDICOLO:: @ 83095F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LUDICOLO_1
+
+ .align 2
+gAnims_SEEDOT:: @ 83095FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEEDOT_1
+
+ .align 2
+gAnims_NUZLEAF:: @ 8309604
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NUZLEAF_1
+
+ .align 2
+gAnims_SHIFTRY:: @ 830960C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHIFTRY_1
+
+ .align 2
+gAnims_NINCADA:: @ 8309614
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NINCADA_1
+
+ .align 2
+gAnims_NINJASK:: @ 830961C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NINJASK_1
+
+ .align 2
+gAnims_SHEDINJA:: @ 8309624
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHEDINJA_1
+
+ .align 2
+gAnims_TAILLOW:: @ 830962C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TAILLOW_1
+
+ .align 2
+gAnims_SWELLOW:: @ 8309634
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWELLOW_1
+
+ .align 2
+gAnims_SHROOMISH:: @ 830963C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHROOMISH_1
+
+ .align 2
+gAnims_BRELOOM:: @ 8309644
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BRELOOM_1
+
+ .align 2
+gAnims_SPINDA:: @ 830964C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gAnims_WINGULL:: @ 8309650
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WINGULL_1
+
+ .align 2
+gAnims_PELIPPER:: @ 8309658
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PELIPPER_1
+
+ .align 2
+gAnims_SURSKIT:: @ 8309660
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SURSKIT_1
+ .4byte gAnimCmd_SURSKIT_2
+
+ .align 2
+gAnims_MASQUERAIN:: @ 830966C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MASQUERAIN_1
+ .4byte gAnimCmd_MASQUERAIN_2
+
+ .align 2
+gAnims_WAILMER:: @ 8309678
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WAILMER_1
+
+ .align 2
+gAnims_WAILORD:: @ 8309680
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WAILORD_1
+
+ .align 2
+gAnims_SKITTY:: @ 8309688
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SKITTY_1
+
+ .align 2
+gAnims_DELCATTY:: @ 8309690
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DELCATTY_1
+
+ .align 2
+gAnims_KECLEON:: @ 8309698
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KECLEON_1
+
+ .align 2
+gAnims_BALTOY:: @ 83096A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BALTOY_1
+
+ .align 2
+gAnims_CLAYDOL:: @ 83096A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLAYDOL_1
+
+ .align 2
+gAnims_NOSEPASS:: @ 83096B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NOSEPASS_1
+
+ .align 2
+gAnims_TORKOAL:: @ 83096B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TORKOAL_1
+
+ .align 2
+gAnims_SABLEYE:: @ 83096C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SABLEYE_1
+
+ .align 2
+gAnims_BARBOACH:: @ 83096C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BARBOACH_1
+
+ .align 2
+gAnims_WHISCASH:: @ 83096D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WHISCASH_1
+
+ .align 2
+gAnims_LUVDISC:: @ 83096D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LUVDISC_1
+
+ .align 2
+gAnims_CORPHISH:: @ 83096E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CORPHISH_1
+
+ .align 2
+gAnims_CRAWDAUNT:: @ 83096E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CRAWDAUNT_1
+
+ .align 2
+gAnims_FEEBAS:: @ 83096F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FEEBAS_1
+
+ .align 2
+gAnims_MILOTIC:: @ 83096F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MILOTIC_1
+
+ .align 2
+gAnims_CARVANHA:: @ 8309700
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CARVANHA_1
+
+ .align 2
+gAnims_SHARPEDO:: @ 8309708
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHARPEDO_1
+
+ .align 2
+gAnims_TRAPINCH:: @ 8309710
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TRAPINCH_1
+
+ .align 2
+gAnims_VIBRAVA:: @ 8309718
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VIBRAVA_1
+
+ .align 2
+gAnims_FLYGON:: @ 8309720
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FLYGON_1
+
+ .align 2
+gAnims_MAKUHITA:: @ 8309728
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAKUHITA_1
+
+ .align 2
+gAnims_HARIYAMA:: @ 8309730
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HARIYAMA_1
+
+ .align 2
+gAnims_ELECTRIKE:: @ 8309738
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ELECTRIKE_1
+
+ .align 2
+gAnims_MANECTRIC:: @ 8309740
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MANECTRIC_1
+
+ .align 2
+gAnims_NUMEL:: @ 8309748
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NUMEL_1
+
+ .align 2
+gAnims_CAMERUPT:: @ 8309750
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CAMERUPT_1
+
+ .align 2
+gAnims_SPHEAL:: @ 8309758
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SPHEAL_1
+
+ .align 2
+gAnims_SEALEO:: @ 8309760
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEALEO_1
+
+ .align 2
+gAnims_WALREIN:: @ 8309768
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WALREIN_1
+
+ .align 2
+gAnims_CACNEA:: @ 8309770
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CACNEA_1
+
+ .align 2
+gAnims_CACTURNE:: @ 8309778
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CACTURNE_1
+
+ .align 2
+gAnims_SNORUNT:: @ 8309780
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SNORUNT_1
+
+ .align 2
+gAnims_GLALIE:: @ 8309788
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GLALIE_1
+
+ .align 2
+gAnims_LUNATONE:: @ 8309790
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LUNATONE_1
+ .4byte gAnimCmd_LUNATONE_2
+
+ .align 2
+gAnims_SOLROCK:: @ 830979C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SOLROCK_1
+ .4byte gAnimCmd_SOLROCK_2
+
+ .align 2
+gAnims_AZURILL:: @ 83097A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AZURILL_1
+
+ .align 2
+gAnims_SPOINK:: @ 83097B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SPOINK_1
+
+ .align 2
+gAnims_GRUMPIG:: @ 83097B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GRUMPIG_1
+
+ .align 2
+gAnims_PLUSLE:: @ 83097C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PLUSLE_1
+
+ .align 2
+gAnims_MINUN:: @ 83097C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MINUN_1
+
+ .align 2
+gAnims_MAWILE:: @ 83097D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAWILE_1
+
+ .align 2
+gAnims_MEDITITE:: @ 83097D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEDITITE_1
+
+ .align 2
+gAnims_MEDICHAM:: @ 83097E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEDICHAM_1
+
+ .align 2
+gAnims_SWABLU:: @ 83097E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWABLU_1
+ .4byte gAnimCmd_SWABLU_2
+
+ .align 2
+gAnims_ALTARIA:: @ 83097F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ALTARIA_1
+ .4byte gAnimCmd_ALTARIA_2
+
+ .align 2
+gAnims_WYNAUT:: @ 8309800
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WYNAUT_1
+
+ .align 2
+gAnims_DUSKULL:: @ 8309808
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUSKULL_1
+
+ .align 2
+gAnims_DUSCLOPS:: @ 8309810
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUSCLOPS_1
+
+ .align 2
+gAnims_ROSELIA:: @ 8309818
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ROSELIA_1
+
+ .align 2
+gAnims_SLAKOTH:: @ 8309820
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLAKOTH_1
+
+ .align 2
+gAnims_VIGOROTH:: @ 8309828
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VIGOROTH_1
+
+ .align 2
+gAnims_SLAKING:: @ 8309830
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLAKING_1
+
+ .align 2
+gAnims_GULPIN:: @ 8309838
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GULPIN_1
+
+ .align 2
+gAnims_SWALOT:: @ 8309840
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWALOT_1
+
+ .align 2
+gAnims_TROPIUS:: @ 8309848
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TROPIUS_1
+
+ .align 2
+gAnims_WHISMUR:: @ 8309850
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WHISMUR_1
+
+ .align 2
+gAnims_LOUDRED:: @ 8309858
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LOUDRED_1
+
+ .align 2
+gAnims_EXPLOUD:: @ 8309860
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EXPLOUD_1
+
+ .align 2
+gAnims_CLAMPERL:: @ 8309868
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLAMPERL_1
+
+ .align 2
+gAnims_HUNTAIL:: @ 8309870
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HUNTAIL_1
+
+ .align 2
+gAnims_GOREBYSS:: @ 8309878
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOREBYSS_1
+
+ .align 2
+gAnims_ABSOL:: @ 8309880
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ABSOL_1
+
+ .align 2
+gAnims_SHUPPET:: @ 8309888
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHUPPET_1
+
+ .align 2
+gAnims_BANETTE:: @ 8309890
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BANETTE_1
+
+ .align 2
+gAnims_SEVIPER:: @ 8309898
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEVIPER_1
+
+ .align 2
+gAnims_ZANGOOSE:: @ 83098A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ZANGOOSE_1
+
+ .align 2
+gAnims_RELICANTH:: @ 83098A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RELICANTH_1
+
+ .align 2
+gAnims_ARON:: @ 83098B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARON_1
+
+ .align 2
+gAnims_LAIRON:: @ 83098B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LAIRON_1
+
+ .align 2
+gAnims_AGGRON:: @ 83098C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AGGRON_1
+
+ .align 2
+gAnims_CASTFORM:: @ 83098C8
+ .4byte gAnimCmd_CASTFORM_0
+ .4byte gAnimCmd_CASTFORM_1
+ .4byte gAnimCmd_CASTFORM_2
+ .4byte gAnimCmd_CASTFORM_3
+
+ .align 2
+gAnims_VOLBEAT:: @ 83098D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VOLBEAT_1
+
+ .align 2
+gAnims_ILLUMISE:: @ 83098E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ILLUMISE_1
+
+ .align 2
+gAnims_LILEEP:: @ 83098E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LILEEP_1
+
+ .align 2
+gAnims_CRADILY:: @ 83098F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CRADILY_1
+
+ .align 2
+gAnims_ANORITH:: @ 83098F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ANORITH_1
+
+ .align 2
+gAnims_ARMALDO:: @ 8309900
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARMALDO_1
+
+ .align 2
+gAnims_RALTS:: @ 8309908
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RALTS_1
+
+ .align 2
+gAnims_KIRLIA:: @ 8309910
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KIRLIA_1
+
+ .align 2
+gAnims_GARDEVOIR:: @ 8309918
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GARDEVOIR_1
+
+ .align 2
+gAnims_BAGON:: @ 8309920
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BAGON_1
+
+ .align 2
+gAnims_SHELGON:: @ 8309928
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHELGON_1
+
+ .align 2
+gAnims_SALAMENCE:: @ 8309930
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SALAMENCE_1
+
+ .align 2
+gAnims_BELDUM:: @ 8309938
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BELDUM_1
+
+ .align 2
+gAnims_METANG:: @ 8309940
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_METANG_1
+
+ .align 2
+gAnims_METAGROSS:: @ 8309948
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_METAGROSS_1
+
+ .align 2
+gAnims_REGIROCK:: @ 8309950
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_REGIROCK_1
+ .4byte gAnimCmd_REGIROCK_2
+
+ .align 2
+gAnims_REGICE:: @ 830995C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_REGICE_1
+
+ .align 2
+gAnims_REGISTEEL:: @ 8309964
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_REGISTEEL_1
+ .4byte gAnimCmd_REGISTEEL_2
+
+ .align 2
+gAnims_KYOGRE:: @ 8309970
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KYOGRE_1
+ .4byte gAnimCmd_KYOGRE_2
+
+ .align 2
+gAnims_GROUDON:: @ 830997C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GROUDON_1
+ .4byte gAnimCmd_GROUDON_2
+
+ .align 2
+gAnims_RAYQUAZA:: @ 8309988
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RAYQUAZA_1
+ .4byte gAnimCmd_RAYQUAZA_2
+
+ .align 2
+gAnims_LATIAS:: @ 8309994
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LATIAS_1
+ .4byte gAnimCmd_LATIAS_2
+
+ .align 2
+gAnims_LATIOS:: @ 83099A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LATIOS_1
+ .4byte gAnimCmd_LATIOS_2
+
+ .align 2
+gAnims_JIRACHI:: @ 83099AC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JIRACHI_1
+ .4byte gAnimCmd_JIRACHI_2
+
+ .align 2
+gAnims_DEOXYS:: @ 83099B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DEOXYS_1
+ .4byte gAnimCmd_DEOXYS_2
+
+ .align 2
+gAnims_CHIMECHO:: @ 83099C4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHIMECHO_1
+
+ .align 2
+gAnims_EGG:: @ 83099CC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EGG_1
+
+ .align 2
+gAnims_UNOWN_B:: @ 83099D4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_B_1
+
+ .align 2
+gAnims_UNOWN_C:: @ 83099DC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_C_1
+
+ .align 2
+gAnims_UNOWN_D:: @ 83099E4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_D_1
+
+ .align 2
+gAnims_UNOWN_E:: @ 83099EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_E_1
+
+ .align 2
+gAnims_UNOWN_F:: @ 83099F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_F_1
+
+ .align 2
+gAnims_UNOWN_G:: @ 83099FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_G_1
+
+ .align 2
+gAnims_UNOWN_H:: @ 8309A04
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_H_1
+
+ .align 2
+gAnims_UNOWN_I:: @ 8309A0C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_I_1
+
+ .align 2
+gAnims_UNOWN_J:: @ 8309A14
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_J_1
+
+ .align 2
+gAnims_UNOWN_K:: @ 8309A1C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_K_1
+
+ .align 2
+gAnims_UNOWN_L:: @ 8309A24
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_L_1
+
+ .align 2
+gAnims_UNOWN_M:: @ 8309A2C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_M_1
+
+ .align 2
+gAnims_UNOWN_N:: @ 8309A34
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_N_1
+
+ .align 2
+gAnims_UNOWN_O:: @ 8309A3C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_O_1
+
+ .align 2
+gAnims_UNOWN_P:: @ 8309A44
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_P_1
+
+ .align 2
+gAnims_UNOWN_Q:: @ 8309A4C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_Q_1
+
+ .align 2
+gAnims_UNOWN_R:: @ 8309A54
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_R_1
+
+ .align 2
+gAnims_UNOWN_S:: @ 8309A5C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_S_1
+
+ .align 2
+gAnims_UNOWN_T:: @ 8309A64
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_T_1
+
+ .align 2
+gAnims_UNOWN_U:: @ 8309A6C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_U_1
+
+ .align 2
+gAnims_UNOWN_V:: @ 8309A74
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_V_1
+
+ .align 2
+gAnims_UNOWN_W:: @ 8309A7C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_W_1
+
+ .align 2
+gAnims_UNOWN_X:: @ 8309A84
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_X_1
+
+ .align 2
+gAnims_UNOWN_Y:: @ 8309A8C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_Y_1
+
+ .align 2
+gAnims_UNOWN_Z:: @ 8309A94
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_Z_1
+
+ .align 2
+gAnims_UNOWN_EMARK:: @ 8309A9C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_EMARK_1
+
+ .align 2
+gAnims_UNOWN_QMARK:: @ 8309AA4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_QMARK_1
+
+ .align 2
+gMonAnimationsSpriteAnimsPtrTable:: @ 8309AAC
+ .4byte gAnims_NONE
+ .4byte gAnims_BULBASAUR
+ .4byte gAnims_IVYSAUR
+ .4byte gAnims_VENUSAUR
+ .4byte gAnims_CHARMANDER
+ .4byte gAnims_CHARMELEON
+ .4byte gAnims_CHARIZARD
+ .4byte gAnims_SQUIRTLE
+ .4byte gAnims_WARTORTLE
+ .4byte gAnims_BLASTOISE
+ .4byte gAnims_CATERPIE
+ .4byte gAnims_METAPOD
+ .4byte gAnims_BUTTERFREE
+ .4byte gAnims_WEEDLE
+ .4byte gAnims_KAKUNA
+ .4byte gAnims_BEEDRILL
+ .4byte gAnims_PIDGEY
+ .4byte gAnims_PIDGEOTTO
+ .4byte gAnims_PIDGEOT
+ .4byte gAnims_RATTATA
+ .4byte gAnims_RATICATE
+ .4byte gAnims_SPEAROW
+ .4byte gAnims_FEAROW
+ .4byte gAnims_EKANS
+ .4byte gAnims_ARBOK
+ .4byte gAnims_PIKACHU
+ .4byte gAnims_RAICHU
+ .4byte gAnims_SANDSHREW
+ .4byte gAnims_SANDSLASH
+ .4byte gAnims_NIDORAN_F
+ .4byte gAnims_NIDORINA
+ .4byte gAnims_NIDOQUEEN
+ .4byte gAnims_NIDORAN_M
+ .4byte gAnims_NIDORINO
+ .4byte gAnims_NIDOKING
+ .4byte gAnims_CLEFAIRY
+ .4byte gAnims_CLEFABLE
+ .4byte gAnims_VULPIX
+ .4byte gAnims_NINETALES
+ .4byte gAnims_JIGGLYPUFF
+ .4byte gAnims_WIGGLYTUFF
+ .4byte gAnims_ZUBAT
+ .4byte gAnims_GOLBAT
+ .4byte gAnims_ODDISH
+ .4byte gAnims_GLOOM
+ .4byte gAnims_VILEPLUME
+ .4byte gAnims_PARAS
+ .4byte gAnims_PARASECT
+ .4byte gAnims_VENONAT
+ .4byte gAnims_VENOMOTH
+ .4byte gAnims_DIGLETT
+ .4byte gAnims_DUGTRIO
+ .4byte gAnims_MEOWTH
+ .4byte gAnims_PERSIAN
+ .4byte gAnims_PSYDUCK
+ .4byte gAnims_GOLDUCK
+ .4byte gAnims_MANKEY
+ .4byte gAnims_PRIMEAPE
+ .4byte gAnims_GROWLITHE
+ .4byte gAnims_ARCANINE
+ .4byte gAnims_POLIWAG
+ .4byte gAnims_POLIWHIRL
+ .4byte gAnims_POLIWRATH
+ .4byte gAnims_ABRA
+ .4byte gAnims_KADABRA
+ .4byte gAnims_ALAKAZAM
+ .4byte gAnims_MACHOP
+ .4byte gAnims_MACHOKE
+ .4byte gAnims_MACHAMP
+ .4byte gAnims_BELLSPROUT
+ .4byte gAnims_WEEPINBELL
+ .4byte gAnims_VICTREEBEL
+ .4byte gAnims_TENTACOOL
+ .4byte gAnims_TENTACRUEL
+ .4byte gAnims_GEODUDE
+ .4byte gAnims_GRAVELER
+ .4byte gAnims_GOLEM
+ .4byte gAnims_PONYTA
+ .4byte gAnims_RAPIDASH
+ .4byte gAnims_SLOWPOKE
+ .4byte gAnims_SLOWBRO
+ .4byte gAnims_MAGNEMITE
+ .4byte gAnims_MAGNETON
+ .4byte gAnims_FARFETCHD
+ .4byte gAnims_DODUO
+ .4byte gAnims_DODRIO
+ .4byte gAnims_SEEL
+ .4byte gAnims_DEWGONG
+ .4byte gAnims_GRIMER
+ .4byte gAnims_MUK
+ .4byte gAnims_SHELLDER
+ .4byte gAnims_CLOYSTER
+ .4byte gAnims_GASTLY
+ .4byte gAnims_HAUNTER
+ .4byte gAnims_GENGAR
+ .4byte gAnims_ONIX
+ .4byte gAnims_DROWZEE
+ .4byte gAnims_HYPNO
+ .4byte gAnims_KRABBY
+ .4byte gAnims_KINGLER
+ .4byte gAnims_VOLTORB
+ .4byte gAnims_ELECTRODE
+ .4byte gAnims_EXEGGCUTE
+ .4byte gAnims_EXEGGUTOR
+ .4byte gAnims_CUBONE
+ .4byte gAnims_MAROWAK
+ .4byte gAnims_HITMONLEE
+ .4byte gAnims_HITMONCHAN
+ .4byte gAnims_LICKITUNG
+ .4byte gAnims_KOFFING
+ .4byte gAnims_WEEZING
+ .4byte gAnims_RHYHORN
+ .4byte gAnims_RHYDON
+ .4byte gAnims_CHANSEY
+ .4byte gAnims_TANGELA
+ .4byte gAnims_KANGASKHAN
+ .4byte gAnims_HORSEA
+ .4byte gAnims_SEADRA
+ .4byte gAnims_GOLDEEN
+ .4byte gAnims_SEAKING
+ .4byte gAnims_STARYU
+ .4byte gAnims_STARMIE
+ .4byte gAnims_MR_MIME
+ .4byte gAnims_SCYTHER
+ .4byte gAnims_JYNX
+ .4byte gAnims_ELECTABUZZ
+ .4byte gAnims_MAGMAR
+ .4byte gAnims_PINSIR
+ .4byte gAnims_TAUROS
+ .4byte gAnims_MAGIKARP
+ .4byte gAnims_GYARADOS
+ .4byte gAnims_LAPRAS
+ .4byte gAnims_DITTO
+ .4byte gAnims_EEVEE
+ .4byte gAnims_VAPOREON
+ .4byte gAnims_JOLTEON
+ .4byte gAnims_FLAREON
+ .4byte gAnims_PORYGON
+ .4byte gAnims_OMANYTE
+ .4byte gAnims_OMASTAR
+ .4byte gAnims_KABUTO
+ .4byte gAnims_KABUTOPS
+ .4byte gAnims_AERODACTYL
+ .4byte gAnims_SNORLAX
+ .4byte gAnims_ARTICUNO
+ .4byte gAnims_ZAPDOS
+ .4byte gAnims_MOLTRES
+ .4byte gAnims_DRATINI
+ .4byte gAnims_DRAGONAIR
+ .4byte gAnims_DRAGONITE
+ .4byte gAnims_MEWTWO
+ .4byte gAnims_MEW
+ .4byte gAnims_CHIKORITA
+ .4byte gAnims_BAYLEEF
+ .4byte gAnims_MEGANIUM
+ .4byte gAnims_CYNDAQUIL
+ .4byte gAnims_QUILAVA
+ .4byte gAnims_TYPHLOSION
+ .4byte gAnims_TOTODILE
+ .4byte gAnims_CROCONAW
+ .4byte gAnims_FERALIGATR
+ .4byte gAnims_SENTRET
+ .4byte gAnims_FURRET
+ .4byte gAnims_HOOTHOOT
+ .4byte gAnims_NOCTOWL
+ .4byte gAnims_LEDYBA
+ .4byte gAnims_LEDIAN
+ .4byte gAnims_SPINARAK
+ .4byte gAnims_ARIADOS
+ .4byte gAnims_CROBAT
+ .4byte gAnims_CHINCHOU
+ .4byte gAnims_LANTURN
+ .4byte gAnims_PICHU
+ .4byte gAnims_CLEFFA
+ .4byte gAnims_IGGLYBUFF
+ .4byte gAnims_TOGEPI
+ .4byte gAnims_TOGETIC
+ .4byte gAnims_NATU
+ .4byte gAnims_XATU
+ .4byte gAnims_MAREEP
+ .4byte gAnims_FLAAFFY
+ .4byte gAnims_AMPHAROS
+ .4byte gAnims_BELLOSSOM
+ .4byte gAnims_MARILL
+ .4byte gAnims_AZUMARILL
+ .4byte gAnims_SUDOWOODO
+ .4byte gAnims_POLITOED
+ .4byte gAnims_HOPPIP
+ .4byte gAnims_SKIPLOOM
+ .4byte gAnims_JUMPLUFF
+ .4byte gAnims_AIPOM
+ .4byte gAnims_SUNKERN
+ .4byte gAnims_SUNFLORA
+ .4byte gAnims_YANMA
+ .4byte gAnims_WOOPER
+ .4byte gAnims_QUAGSIRE
+ .4byte gAnims_ESPEON
+ .4byte gAnims_UMBREON
+ .4byte gAnims_MURKROW
+ .4byte gAnims_SLOWKING
+ .4byte gAnims_MISDREAVUS
+ .4byte gAnims_UNOWN
+ .4byte gAnims_WOBBUFFET
+ .4byte gAnims_GIRAFARIG
+ .4byte gAnims_PINECO
+ .4byte gAnims_FORRETRESS
+ .4byte gAnims_DUNSPARCE
+ .4byte gAnims_GLIGAR
+ .4byte gAnims_STEELIX
+ .4byte gAnims_SNUBBULL
+ .4byte gAnims_GRANBULL
+ .4byte gAnims_QWILFISH
+ .4byte gAnims_SCIZOR
+ .4byte gAnims_SHUCKLE
+ .4byte gAnims_HERACROSS
+ .4byte gAnims_SNEASEL
+ .4byte gAnims_TEDDIURSA
+ .4byte gAnims_URSARING
+ .4byte gAnims_SLUGMA
+ .4byte gAnims_MAGCARGO
+ .4byte gAnims_SWINUB
+ .4byte gAnims_PILOSWINE
+ .4byte gAnims_CORSOLA
+ .4byte gAnims_REMORAID
+ .4byte gAnims_OCTILLERY
+ .4byte gAnims_DELIBIRD
+ .4byte gAnims_MANTINE
+ .4byte gAnims_SKARMORY
+ .4byte gAnims_HOUNDOUR
+ .4byte gAnims_HOUNDOOM
+ .4byte gAnims_KINGDRA
+ .4byte gAnims_PHANPY
+ .4byte gAnims_DONPHAN
+ .4byte gAnims_PORYGON2
+ .4byte gAnims_STANTLER
+ .4byte gAnims_SMEARGLE
+ .4byte gAnims_TYROGUE
+ .4byte gAnims_HITMONTOP
+ .4byte gAnims_SMOOCHUM
+ .4byte gAnims_ELEKID
+ .4byte gAnims_MAGBY
+ .4byte gAnims_MILTANK
+ .4byte gAnims_BLISSEY
+ .4byte gAnims_RAIKOU
+ .4byte gAnims_ENTEI
+ .4byte gAnims_SUICUNE
+ .4byte gAnims_LARVITAR
+ .4byte gAnims_PUPITAR
+ .4byte gAnims_TYRANITAR
+ .4byte gAnims_LUGIA
+ .4byte gAnims_HO_OH
+ .4byte gAnims_CELEBI
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_TREECKO
+ .4byte gAnims_GROVYLE
+ .4byte gAnims_SCEPTILE
+ .4byte gAnims_TORCHIC
+ .4byte gAnims_COMBUSKEN
+ .4byte gAnims_BLAZIKEN
+ .4byte gAnims_MUDKIP
+ .4byte gAnims_MARSHTOMP
+ .4byte gAnims_SWAMPERT
+ .4byte gAnims_POOCHYENA
+ .4byte gAnims_MIGHTYENA
+ .4byte gAnims_ZIGZAGOON
+ .4byte gAnims_LINOONE
+ .4byte gAnims_WURMPLE
+ .4byte gAnims_SILCOON
+ .4byte gAnims_BEAUTIFLY
+ .4byte gAnims_CASCOON
+ .4byte gAnims_DUSTOX
+ .4byte gAnims_LOTAD
+ .4byte gAnims_LOMBRE
+ .4byte gAnims_LUDICOLO
+ .4byte gAnims_SEEDOT
+ .4byte gAnims_NUZLEAF
+ .4byte gAnims_SHIFTRY
+ .4byte gAnims_NINCADA
+ .4byte gAnims_NINJASK
+ .4byte gAnims_SHEDINJA
+ .4byte gAnims_TAILLOW
+ .4byte gAnims_SWELLOW
+ .4byte gAnims_SHROOMISH
+ .4byte gAnims_BRELOOM
+ .4byte gAnims_SPINDA
+ .4byte gAnims_WINGULL
+ .4byte gAnims_PELIPPER
+ .4byte gAnims_SURSKIT
+ .4byte gAnims_MASQUERAIN
+ .4byte gAnims_WAILMER
+ .4byte gAnims_WAILORD
+ .4byte gAnims_SKITTY
+ .4byte gAnims_DELCATTY
+ .4byte gAnims_KECLEON
+ .4byte gAnims_BALTOY
+ .4byte gAnims_CLAYDOL
+ .4byte gAnims_NOSEPASS
+ .4byte gAnims_TORKOAL
+ .4byte gAnims_SABLEYE
+ .4byte gAnims_BARBOACH
+ .4byte gAnims_WHISCASH
+ .4byte gAnims_LUVDISC
+ .4byte gAnims_CORPHISH
+ .4byte gAnims_CRAWDAUNT
+ .4byte gAnims_FEEBAS
+ .4byte gAnims_MILOTIC
+ .4byte gAnims_CARVANHA
+ .4byte gAnims_SHARPEDO
+ .4byte gAnims_TRAPINCH
+ .4byte gAnims_VIBRAVA
+ .4byte gAnims_FLYGON
+ .4byte gAnims_MAKUHITA
+ .4byte gAnims_HARIYAMA
+ .4byte gAnims_ELECTRIKE
+ .4byte gAnims_MANECTRIC
+ .4byte gAnims_NUMEL
+ .4byte gAnims_CAMERUPT
+ .4byte gAnims_SPHEAL
+ .4byte gAnims_SEALEO
+ .4byte gAnims_WALREIN
+ .4byte gAnims_CACNEA
+ .4byte gAnims_CACTURNE
+ .4byte gAnims_SNORUNT
+ .4byte gAnims_GLALIE
+ .4byte gAnims_LUNATONE
+ .4byte gAnims_SOLROCK
+ .4byte gAnims_AZURILL
+ .4byte gAnims_SPOINK
+ .4byte gAnims_GRUMPIG
+ .4byte gAnims_PLUSLE
+ .4byte gAnims_MINUN
+ .4byte gAnims_MAWILE
+ .4byte gAnims_MEDITITE
+ .4byte gAnims_MEDICHAM
+ .4byte gAnims_SWABLU
+ .4byte gAnims_ALTARIA
+ .4byte gAnims_WYNAUT
+ .4byte gAnims_DUSKULL
+ .4byte gAnims_DUSCLOPS
+ .4byte gAnims_ROSELIA
+ .4byte gAnims_SLAKOTH
+ .4byte gAnims_VIGOROTH
+ .4byte gAnims_SLAKING
+ .4byte gAnims_GULPIN
+ .4byte gAnims_SWALOT
+ .4byte gAnims_TROPIUS
+ .4byte gAnims_WHISMUR
+ .4byte gAnims_LOUDRED
+ .4byte gAnims_EXPLOUD
+ .4byte gAnims_CLAMPERL
+ .4byte gAnims_HUNTAIL
+ .4byte gAnims_GOREBYSS
+ .4byte gAnims_ABSOL
+ .4byte gAnims_SHUPPET
+ .4byte gAnims_BANETTE
+ .4byte gAnims_SEVIPER
+ .4byte gAnims_ZANGOOSE
+ .4byte gAnims_RELICANTH
+ .4byte gAnims_ARON
+ .4byte gAnims_LAIRON
+ .4byte gAnims_AGGRON
+ .4byte gAnims_CASTFORM
+ .4byte gAnims_VOLBEAT
+ .4byte gAnims_ILLUMISE
+ .4byte gAnims_LILEEP
+ .4byte gAnims_CRADILY
+ .4byte gAnims_ANORITH
+ .4byte gAnims_ARMALDO
+ .4byte gAnims_RALTS
+ .4byte gAnims_KIRLIA
+ .4byte gAnims_GARDEVOIR
+ .4byte gAnims_BAGON
+ .4byte gAnims_SHELGON
+ .4byte gAnims_SALAMENCE
+ .4byte gAnims_BELDUM
+ .4byte gAnims_METANG
+ .4byte gAnims_METAGROSS
+ .4byte gAnims_REGIROCK
+ .4byte gAnims_REGICE
+ .4byte gAnims_REGISTEEL
+ .4byte gAnims_KYOGRE
+ .4byte gAnims_GROUDON
+ .4byte gAnims_RAYQUAZA
+ .4byte gAnims_LATIAS
+ .4byte gAnims_LATIOS
+ .4byte gAnims_JIRACHI
+ .4byte gAnims_DEOXYS
+ .4byte gAnims_CHIMECHO
+ .4byte gAnims_EGG
+ .4byte gAnims_UNOWN_B
+ .4byte gAnims_UNOWN_C
+ .4byte gAnims_UNOWN_D
+ .4byte gAnims_UNOWN_E
+ .4byte gAnims_UNOWN_F
+ .4byte gAnims_UNOWN_G
+ .4byte gAnims_UNOWN_H
+ .4byte gAnims_UNOWN_I
+ .4byte gAnims_UNOWN_J
+ .4byte gAnims_UNOWN_K
+ .4byte gAnims_UNOWN_L
+ .4byte gAnims_UNOWN_M
+ .4byte gAnims_UNOWN_N
+ .4byte gAnims_UNOWN_O
+ .4byte gAnims_UNOWN_P
+ .4byte gAnims_UNOWN_Q
+ .4byte gAnims_UNOWN_R
+ .4byte gAnims_UNOWN_S
+ .4byte gAnims_UNOWN_T
+ .4byte gAnims_UNOWN_U
+ .4byte gAnims_UNOWN_V
+ .4byte gAnims_UNOWN_W
+ .4byte gAnims_UNOWN_X
+ .4byte gAnims_UNOWN_Y
+ .4byte gAnims_UNOWN_Z
+ .4byte gAnims_UNOWN_EMARK
+ .4byte gAnims_UNOWN_QMARK
diff --git a/data/graphics/pokemon/mon_front_pic_table.inc b/data/graphics/pokemon/front_pic_table.inc
index 7f481e190..7f481e190 100644
--- a/data/graphics/pokemon/mon_front_pic_table.inc
+++ b/data/graphics/pokemon/front_pic_table.inc
diff --git a/data/graphics/pokemon/mon_graphics.inc b/data/graphics/pokemon/graphics.inc
index 45ddfe1b5..45ddfe1b5 100644
--- a/data/graphics/pokemon/mon_graphics.inc
+++ b/data/graphics/pokemon/graphics.inc
diff --git a/data/graphics/pokemon/mon_icon_palette_indices.inc b/data/graphics/pokemon/icon_palette_indices.inc
index f1d57466c..f1d57466c 100644
--- a/data/graphics/pokemon/mon_icon_palette_indices.inc
+++ b/data/graphics/pokemon/icon_palette_indices.inc
diff --git a/data/graphics/pokemon/mon_icon_palette_table.inc b/data/graphics/pokemon/icon_palette_table.inc
index eb7919423..eb7919423 100644
--- a/data/graphics/pokemon/mon_icon_palette_table.inc
+++ b/data/graphics/pokemon/icon_palette_table.inc
diff --git a/data/graphics/pokemon/mon_icon_table.inc b/data/graphics/pokemon/icon_table.inc
index 06a86de43..06a86de43 100644
--- a/data/graphics/pokemon/mon_icon_table.inc
+++ b/data/graphics/pokemon/icon_table.inc
diff --git a/data/graphics/pokemon/mon_palette_table.inc b/data/graphics/pokemon/palette_table.inc
index d636d13ec..d636d13ec 100644
--- a/data/graphics/pokemon/mon_palette_table.inc
+++ b/data/graphics/pokemon/palette_table.inc
diff --git a/data/graphics/pokemon/mon_shiny_palette_table.inc b/data/graphics/pokemon/shiny_palette_table.inc
index 724820221..724820221 100644
--- a/data/graphics/pokemon/mon_shiny_palette_table.inc
+++ b/data/graphics/pokemon/shiny_palette_table.inc
diff --git a/data/graphics/pokemon/mon_still_front_pic_table.inc b/data/graphics/pokemon/still_front_pic_table.inc
index 448729955..448729955 100644
--- a/data/graphics/pokemon/mon_still_front_pic_table.inc
+++ b/data/graphics/pokemon/still_front_pic_table.inc
diff --git a/data/graphics/trainers/back_pic_coords.inc b/data/graphics/trainers/back_pic_coords.inc
new file mode 100644
index 000000000..57a45c71e
--- /dev/null
+++ b/data/graphics/trainers/back_pic_coords.inc
@@ -0,0 +1,10 @@
+ .align 2
+gTrainerBackPicCoords:: @ 8305D2C
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x05, 0x00, 0x00
+ .byte 0x08, 0x05, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
diff --git a/data/graphics/trainers/trainer_back_pic_palette_table.inc b/data/graphics/trainers/back_pic_palette_table.inc
index 46e56f2ac..46e56f2ac 100644
--- a/data/graphics/trainers/trainer_back_pic_palette_table.inc
+++ b/data/graphics/trainers/back_pic_palette_table.inc
diff --git a/data/graphics/trainers/trainer_back_pic_table.inc b/data/graphics/trainers/back_pic_table.inc
index e67c2a073..e67c2a073 100644
--- a/data/graphics/trainers/trainer_back_pic_table.inc
+++ b/data/graphics/trainers/back_pic_table.inc
diff --git a/data/graphics/trainers/front_pic_coords.inc b/data/graphics/trainers/front_pic_coords.inc
new file mode 100644
index 000000000..8d20f0a9e
--- /dev/null
+++ b/data/graphics/trainers/front_pic_coords.inc
@@ -0,0 +1,95 @@
+ .align 2
+gTrainerFrontPicCoords:: @ 83054E0
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
diff --git a/data/graphics/trainers/trainer_front_pic_palette_table.inc b/data/graphics/trainers/front_pic_palette_table.inc
index 44cf98dab..44cf98dab 100644
--- a/data/graphics/trainers/trainer_front_pic_palette_table.inc
+++ b/data/graphics/trainers/front_pic_palette_table.inc
diff --git a/data/graphics/trainers/trainer_front_pic_table.inc b/data/graphics/trainers/front_pic_table.inc
index 91294d170..91294d170 100644
--- a/data/graphics/trainers/trainer_front_pic_table.inc
+++ b/data/graphics/trainers/front_pic_table.inc
diff --git a/data/graphics/trainers/trainer_graphics.inc b/data/graphics/trainers/graphics.inc
index 897cb9ffb..897cb9ffb 100644
--- a/data/graphics/trainers/trainer_graphics.inc
+++ b/data/graphics/trainers/graphics.inc
diff --git a/data/intro.s b/data/intro.s
index 552799951..d43a57972 100644
--- a/data/intro.s
+++ b/data/intro.s
@@ -3,122 +3,527 @@
.section .rodata
-gUnknown_085E05C4:: @ 85E05C4
- .incbin "baserom.gba", 0x5e05c4, 0x200
+ .align 2
+gIntro1DropsPal:: @ 85DFF90
+ .incbin "graphics/intro/intro1_drops.gbapal"
-gUnknown_085E07C4:: @ 85E07C4
- .incbin "baserom.gba", 0x5e07c4, 0x3b4
+ .align 2
+gIntro1GFLogoPal:: @ 85DFFB0
+ .incbin "graphics/intro/intro1_gflogo.gbapal"
-gUnknown_085E0B78:: @ 85E0B78
- .incbin "baserom.gba", 0x5e0b78, 0x334
+ .align 2
+gIntroTiles:: @ 85DFFD0
+ .incbin "graphics/intro/intro.4bpp.lz"
-gUnknown_085E0EAC:: @ 85E0EAC
- .incbin "baserom.gba", 0x5e0eac, 0x2f0
+ .align 2
+gIntro1BGPals:: @ 85E05C4
+ .incbin "graphics/intro/intro1_bgpal.gbapal"
-gUnknown_085E119C:: @ 85E119C
- .incbin "baserom.gba", 0x5e119c, 0x218
+ .align 2
+gIntro1BG0_Tilemap:: @ 85E07C4
+ .incbin "graphics/intro/intro1_bg0_map.bin.lz"
-gUnknown_085E13B4:: @ 85E13B4
- .incbin "baserom.gba", 0x5e13b4, 0x2170
+ .align 2
+gIntro1BG1_Tilemap:: @ 85E0B78
+ .incbin "graphics/intro/intro1_bg1_map.bin.lz"
-gUnknown_085E3524:: @ 85E3524
- .incbin "baserom.gba", 0x5e3524, 0x200
+ .align 2
+gIntro1BG2_Tilemap:: @ 85E0EAC
+ .incbin "graphics/intro/intro1_bg2_map.bin.lz"
-gUnknown_085E3724:: @ 85E3724
- .incbin "baserom.gba", 0x5e3724, 0x130
+ .align 2
+gIntro1BG3_Tilemap:: @ 85E119C
+ .incbin "graphics/intro/intro1_bg3_map.bin.lz"
-gUnknown_085E3854:: @ 85E3854
- .incbin "baserom.gba", 0x5e3854, 0x1220
+ .align 2
+gIntro1BGLeavesGfx:: @ 85E13B4
+ .incbin "graphics/intro/introgfx.4bpp.lz"
+ .align 2
+gIntro3PokeballPal:: @ 85E3524
+ .incbin "graphics/intro/intro3_pokeball.gbapal"
+
+ .align 2
+gIntro3Pokeball_Tilemap:: @ 85E3724
+ .incbin "graphics/intro/intro3_pokeball_map.bin.lz"
+
+ .align 2
+gIntro3Pokeball_Gfx:: @ 85E3854
+ .incbin "graphics/intro/intro3_pokeball.8bpp.lz"
+
+ .align 2
+ .incbin "graphics/intro/intro3_streaks.gbapal"
+
+ .align 2
+ .incbin "graphics/intro/intro3_streaks.4bpp.lz"
+
+ .align 2
+ .incbin "graphics/intro/intro3_streaks_map.bin.lz"
+
+ .align 2
+gIntro3Misc1Pal:: @ 85E4570
+ .incbin "graphics/intro/intro3_misc1.gbapal"
+
+ .align 2
+ .incbin "graphics/intro/intro3_misc2.gbapal"
+
+ .align 2
+gIntro3MiscTiles:: @ 85E45B0
+ .incbin "graphics/intro/intro3_misc.4bpp.lz"
+
+ .align 2
+gIntro1FlygonPal:: @ 85E492C
+ .incbin "graphics/intro/intro1_flygon.gbapal"
+
+ .align 2
+ .incbin "graphics/intro/intro1_eon.4bpp.lz"
+
+ .align 2
+ .byte 0x02, 0x03, 0x04, 0x05, 0x01, 0x01, 0x01, 0x06
+ .byte 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x02, 0x0d
+ .byte 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15
+ .byte 0x16, 0x17, 0x18, 0x19, 0x02, 0x0d, 0x0e, 0x0f
+ .byte 0x10, 0x11, 0x12, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e
+ .byte 0x1f, 0x20, 0x21, 0x02, 0x0d, 0x0e, 0x0f, 0x10
+ .byte 0x11, 0x12, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27
+ .byte 0x28, 0x29, 0x2a, 0x00
+
+ .align 2
gUnknown_085E4A74:: @ 85E4A74
- .incbin "baserom.gba", 0x5e4a74, 0x10
+ obj_tiles gIntro1SparkleGfx, 0x0400, 0x05e1
+ null_obj_tiles
+ .align 2
gUnknown_085E4A84:: @ 85E4A84
- .incbin "baserom.gba", 0x5e4a84, 0x34
+ obj_pal gIntro3LightningPal, 0x05e1
+ null_obj_pal
+
+ .align 2
+gUnknown_085E4A94:: @ 85E4A94
+ .byte 0xa0, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00
+ .align 2
+gUnknown_085E4A9C:: @ 85E4A9C
+ .2byte 0x0000, 0x0002, 0x0004, 0x0002, 0x0008, 0x0002, 0x000c, 0x0002, 0x0010, 0x0002, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085E4AB4:: @ 85E4AB4
+ .4byte gUnknown_085E4A9C
+
+ .align 2
gUnknown_085E4AB8:: @ 85E4AB8
- .incbin "baserom.gba", 0x5e4ab8, 0x18
+ spr_template 0x05e1, 0x05e1, gUnknown_085E4A94, gUnknown_085E4AB4, NULL, gDummySpriteAffineAnimTable, sub_816D338
+ .align 2
gUnknown_085E4AD0:: @ 85E4AD0
- .incbin "baserom.gba", 0x5e4ad0, 0x18
+ .byte 0x7c, 0x28, 0x66, 0x1e, 0x4d, 0x1e, 0x36, 0x0f
+ .byte 0x94, 0x09, 0x3f, 0x1c, 0x5d, 0x28, 0x94, 0x20
+ .byte 0xad, 0x29, 0x5e, 0x14, 0xd0, 0x26, 0x00, 0x00
+ .align 2
gUnknown_085E4AE8:: @ 85E4AE8
- .incbin "baserom.gba", 0x5e4ae8, 0x20
+ obj_tiles gIntro2VolbeatGfx, 0x0400, 0x05dc
+ obj_tiles gIntro2TorchicGfx, 0x0c00, 0x05dd
+ obj_tiles gIntro2ManectricGfx, 0x2000, 0x05de
+ null_obj_tiles
+ .align 2
gUnknown_085E4B08:: @ 85E4B08
- .incbin "baserom.gba", 0x5e4b08, 0x38
+ obj_pal gIntro2VolbeatPal, 0x05dc
+ obj_pal gIntro2TorchicPal, 0x05dd
+ obj_pal gIntro2ManectricPal, 0x05de
+ null_obj_pal
+
+ .align 2
+gUnknown_085E4B28:: @ 85E4B28
+ .byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00
+
+ .align 2
+gUnknown_085E4B30:: @ 85E4B30
+ .2byte 0x0000, 0x0002, 0x0010, 0x0002, 0xfffe, 0x0000
+ .align 2
+gUnknown_085E4B3C:: @ 85E4B3C
+ .4byte gUnknown_085E4B30
+
+ .align 2
gUnknown_085E4B40:: @ 85E4B40
- .incbin "baserom.gba", 0x5e4b40, 0x64
+ spr_template 0x05dc, 0x05dc, gUnknown_085E4B28, gUnknown_085E4B3C, NULL, gDummySpriteAffineAnimTable, sub_816D81C
+
+ .align 2
+gUnknown_085E4B58:: @ 85E4B58
+ .byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x04, 0x00, 0x00
+
+ .align 2
+gUnknown_085E4B60:: @ 85E4B60
+ .2byte 0x0000, 0x0005, 0x0010, 0x0005, 0x0020, 0x0005, 0x0010, 0x0005, 0xfffe, 0x0000
+ .align 2
+gUnknown_085E4B74:: @ 85E4B74
+ .2byte 0x0000, 0x0003, 0x0010, 0x0003, 0x0020, 0x0003, 0x0010, 0x0003, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085E4B88:: @ 85E4B88
+ .2byte 0x0030, 0x0004, 0x0040, 0x0006, 0x0050, 0x0000, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4B98:: @ 85E4B98
+ .4byte gUnknown_085E4B60
+ .4byte gUnknown_085E4B74
+ .4byte gUnknown_085E4B88
+
+ .align 2
gUnknown_085E4BA4:: @ 85E4BA4
- .incbin "baserom.gba", 0x5e4ba4, 0x38
+ spr_template 0x05dd, 0x05dd, gUnknown_085E4B58, gUnknown_085E4B98, NULL, gDummySpriteAffineAnimTable, sub_816D9C0
+
+ .align 2
+gUnknown_085E4BBC:: @ 85E4BBC
+ .byte 0xa0, 0x00, 0x00, 0xc0, 0x00, 0x04, 0x00, 0x00
+
+ .align 2
+gUnknown_085E4BC4:: @ 85E4BC4
+ .2byte 0x0000, 0x0004, 0x0040, 0x0004, 0x0080, 0x0004, 0x00c0, 0x0004, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085E4BD8:: @ 85E4BD8
+ .4byte gUnknown_085E4BC4
+ .align 2
gUnknown_085E4BDC:: @ 85E4BDC
- .incbin "baserom.gba", 0x5e4bdc, 0x18
+ spr_template 0x05de, 0x05de, gUnknown_085E4BBC, gUnknown_085E4BD8, NULL, gDummySpriteAffineAnimTable, sub_816DAE8
+ .align 2
gUnknown_085E4BF4:: @ 85E4BF4
- .incbin "baserom.gba", 0x5e4bf4, 0x10
+ obj_tiles gIntro3LightningGfx, 0x0c00, 0x05df
+ null_obj_tiles
+ .align 2
gUnknown_085E4C04:: @ 85E4C04
- .incbin "baserom.gba", 0x5e4c04, 0x48
+ obj_pal gIntro3LightningPal, 0x05df
+ null_obj_pal
+ .align 2
+gUnknown_085E4C14:: @ 85E4C14
+ .byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_085E4C1C:: @ 85E4C1C
+ .2byte 0x0000, 0x0002, 0x0030, 0x0002, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4C28:: @ 85E4C28
+ .2byte 0x0010, 0x0002, 0x0040, 0x0002, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4C34:: @ 85E4C34
+ .2byte 0x0020, 0x0002, 0x0050, 0x0002, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4C40:: @ 85E4C40
+ .4byte gUnknown_085E4C1C
+ .4byte gUnknown_085E4C28
+ .4byte gUnknown_085E4C34
+
+ .align 2
gUnknown_085E4C4C:: @ 85E4C4C
- .incbin "baserom.gba", 0x5e4c4c, 0x18
+ spr_template 0x05df, 0x05df, gUnknown_085E4C14, gUnknown_085E4C40, NULL, gDummySpriteAffineAnimTable, sub_816EC6C
+ .align 2
gUnknown_085E4C64:: @ 85E4C64
- .incbin "baserom.gba", 0x5e4c64, 0x24
+ .2byte 0x0068, 0x0000, 0x00c0, 0x008e, 0x0003, 0x0280, 0x0053, 0x0001
+ .2byte 0x0180, 0x009b, 0x0000, 0x0080, 0x0038, 0x0002, 0x0200, 0x00ae
+ .2byte 0x0001, 0x0100
+ .align 2
gUnknown_085E4C88:: @ 85E4C88
- .incbin "baserom.gba", 0x5e4c88, 0x10
+ obj_tiles gIntro2BubblesGfx, 0x0600, 0x05e0
+ null_obj_tiles
+ .align 2
gUnknown_085E4C98:: @ 85E4C98
- .incbin "baserom.gba", 0x5e4c98, 0x10
+ obj_pal gIntro2BubblesPal, 0x05e0
+ null_obj_pal
+ .align 2
gUnknown_085E4CA8:: @ 85E4CA8
- .incbin "baserom.gba", 0x5e4ca8, 0x6c
-
+ .2byte 0x0042, 0x0040, 0x0001, 0x0060, 0x0060, 0x0008, 0x0080, 0x0040
+ .2byte 0x0001, 0x0090, 0x0030, 0x0008, 0x00a0, 0x0048, 0x0001, 0x00b0
+ .2byte 0x0060, 0x0008, 0x0060, 0x0060, 0x0004, 0x0070, 0x0068, 0x0008
+ .2byte 0x0080, 0x0060, 0x0004, 0x0058, 0x0020, 0x0004, 0x0068, 0x0018
+ .2byte 0x0008, 0x0078, 0x0020, 0x0004
+
+ .align 2
+gUnknown_085E4CF0:: @ 85E4CF0
+ .byte 0xa0, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_085E4CF8:: @ 85E4CF8
+ .2byte 0x0000, 0x0004, 0x0008, 0x0004, 0x0010, 0x0004, 0x0018, 0x0004
+ .2byte 0x0020, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4D10:: @ 85E4D10
+ .4byte gUnknown_085E4CF8
+
+ .align 2
gUnknown_085E4D14:: @ 85E4D14
- .incbin "baserom.gba", 0x5e4d14, 0x50
+ spr_template 0x05e0, 0x05e0, gUnknown_085E4CF0, gUnknown_085E4D10, NULL, gDummySpriteAffineAnimTable, sub_816E7B4
+
+ .align 2
+gUnknown_085E4D2C:: @ 85E4D2C
+ .byte 0xa0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00
+ .align 2
+gUnknown_085E4D34:: @ 85E4D34
+ .2byte 0x0010, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4D3C:: @ 85E4D3C
+ .2byte 0x0018, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4D44:: @ 85E4D44
+ .2byte 0x0000, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4D4C:: @ 85E4D4C
+ .2byte 0x0030, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4D54:: @ 85E4D54
+ .4byte gUnknown_085E4D34
+ .4byte gUnknown_085E4D3C
+ .4byte gUnknown_085E4D44
+ .4byte gUnknown_085E4D4C
+
+ .align 2
gUnknown_085E4D64:: @ 85E4D64
- .incbin "baserom.gba", 0x5e4d64, 0x60
+ spr_template 0x07d0, 0x07d0, gUnknown_085E4D2C, gUnknown_085E4D54, NULL, gDummySpriteAffineAnimTable, sub_816F454
-gUnknown_085E4DC4:: @ 85E4DC4
- .incbin "baserom.gba", 0x5e4dc4, 0xd0
+ .align 2
+gUnknown_085E4D7C:: @ 85E4D7C
+ .byte 0x00, 0x00, 0x04, 0x00, 0x40, 0x00, 0x04, 0x00
-gUnknown_085E4E94:: @ 85E4E94
- .incbin "baserom.gba", 0x5e4e94, 0xb4
+ .align 2
+gUnknown_085E4D84:: @ 85E4D84
+ .2byte 0x0080, 0x0004, 0x00c0, 0x0004, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085E4D90:: @ 85E4D90
+ .2byte 0x0000, 0x0008, 0x0040, 0x0008, 0x0080, 0x0008, 0x00c0, 0x0008, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085E4DA4:: @ 85E4DA4
+ .2byte 0x0100, 0x0004, 0x0140, 0x0004, 0x0180, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4DB4:: @ 85E4DB4
+ .2byte 0x0180, 0x0010, 0x0140, 0x0010, 0x0100, 0x0010, 0xffff, 0x0000
+ .align 2
+gUnknown_085E4DC4:: @ 85E4DC4
+ .4byte gUnknown_085E4D7C
+ .4byte gUnknown_085E4D90
+ .4byte gUnknown_085E4DA4
+ .4byte gUnknown_085E4DB4
+
+ .align 2
+gUnknown_085E4DD4:: @ 85E4DD4
+ .2byte 0x03a0, 0x4000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085E4DDC:: @ 85E4DDC
+ .2byte 0x00a0, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085E4DE4:: @ 85E4DE4
+ .2byte 0x87a0, 0xc000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085E4DEC:: @ 85E4DEC
+ .2byte 0x0050, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4DF4:: @ 85E4DF4
+ .2byte 0x0054, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4DFC:: @ 85E4DFC
+ .2byte 0x0058, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E04:: @ 85E4E04
+ .2byte 0x005c, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E0C:: @ 85E4E0C
+ .2byte 0x0060, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E14:: @ 85E4E14
+ .2byte 0x0064, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E1C:: @ 85E4E1C
+ .2byte 0x0068, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E24:: @ 85E4E24
+ .2byte 0x0070, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E2C:: @ 85E4E2C
+ .2byte 0x0071, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E34:: @ 85E4E34
+ .2byte 0x0072, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E3C:: @ 85E4E3C
+ .2byte 0x0073, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E44:: @ 85E4E44
+ .2byte 0x0074, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E4C:: @ 85E4E4C
+ .2byte 0x0075, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E54:: @ 85E4E54
+ .2byte 0x0080, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E4E5C:: @ 85E4E5C
+ .4byte gUnknown_085E4DEC
+ .4byte gUnknown_085E4DF4
+ .4byte gUnknown_085E4DFC
+ .4byte gUnknown_085E4E04
+ .4byte gUnknown_085E4E0C
+ .4byte gUnknown_085E4E14
+ .4byte gUnknown_085E4E1C
+
+ .align 2
+gUnknown_085E4E78:: @ 85E4E78
+ .4byte gUnknown_085E4E24
+ .4byte gUnknown_085E4E2C
+ .4byte gUnknown_085E4E34
+ .4byte gUnknown_085E4E3C
+ .4byte gUnknown_085E4E44
+ .4byte gUnknown_085E4E4C
+
+ .align 2
+gUnknown_085E4E90:: @ 85E4E90
+ .4byte gUnknown_085E4E54
+
+ .align 2
+gUnknown_085E4E94:: @ 85E4E94
+ .2byte 0x0000, 0xffb8, 0x0001, 0xffc8, 0x0002, 0xffd8, 0x0003, 0xffe8
+ .2byte 0x0004, 0x0008, 0x0005, 0x0018, 0x0003, 0x0028, 0x0001, 0x0038
+ .2byte 0x0006, 0x0048, 0x0000, 0xffe4, 0x0001, 0xffec, 0x0002, 0xfff4
+ .2byte 0x0003, 0xfffc, 0x0002, 0x0004, 0x0004, 0x000c, 0x0005, 0x0014
+ .2byte 0x0003, 0x001c
+
+ .align 2
+gUnknown_085E4ED8:: @ 85E4ED8
+ .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085E4EE8:: @ 85E4EE8
+ .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0010, 0x0010, 0x1000, 0x0000
+ .2byte 0xfff0, 0xfff0, 0x0800, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085E4F08:: @ 85E4F08
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0008, 0x0008, 0x3000, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085E4F20:: @ 85E4F20
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x0002, 0x0002, 0x3000, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_085E4F38:: @ 85E4F38
+ .4byte gUnknown_085E4ED8
+ .4byte gUnknown_085E4EE8
+ .4byte gUnknown_085E4F08
+ .4byte gUnknown_085E4F20
+
+ .align 2
gUnknown_085E4F48:: @ 85E4F48
- .incbin "baserom.gba", 0x5e4f48, 0x14
+ .2byte 0x0100, 0x00c0, 0x0080, 0x0040, 0x0000, 0x0040, 0x0080, 0x00c0
+ .2byte 0x0100, 0x0000
+ .align 2
gUnknown_085E4F5C:: @ 85E4F5C
- .incbin "baserom.gba", 0x5e4f5c, 0x30
+ spr_template 0x07d0, 0x07d1, gUnknown_085E4DD4, gUnknown_085E4E5C, NULL, gUnknown_085E4F38, sub_816FB38
+ spr_template 0x07d0, 0x07d1, gUnknown_085E4DDC, gUnknown_085E4E78, NULL, gDummySpriteAffineAnimTable, sub_816FB38
+ .align 2
gUnknown_085E4F8C:: @ 85E4F8C
- .incbin "baserom.gba", 0x5e4f8c, 0x18
+ spr_template 0x07d0, 0x07d1, gUnknown_085E4DE4, gUnknown_085E4E90, NULL, gUnknown_085E4F38, sub_816FD44
+ .align 2
gUnknown_085E4FA4:: @ 85E4FA4
- .incbin "baserom.gba", 0x5e4fa4, 0x20
+ .byte 0x00, 0x17, 0x17, 0x31, 0x3e, 0x24, 0x24, 0x0a, 0x0a, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_085E4FB0:: @ 85E4FB0
+ .byte 0xa0, 0x40, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+ .align 2
+gUnknown_085E4FB8:: @ 85E4FB8
+ .2byte 0x0000, 0x000a, 0xfffe, 0x0000
+
+ .align 2
+gUnknown_085E4FC0:: @ 85E4FC0
+ .4byte gUnknown_085E4FB8
+
+ .align 2
gUnknown_085E4FC4:: @ 85E4FC4
- .incbin "baserom.gba", 0x5e4fc4, 0x18
+ spr_template 0x07d2, 0x07d2, gUnknown_085E4FB0, gUnknown_085E4FC0, NULL, gDummySpriteAffineAnimTable, sub_816FEDC
+ .align 2
gUnknown_085E4FDC:: @ 85E4FDC
- .incbin "baserom.gba", 0x5e4fdc, 0x10
+ obj_tiles gIntroTiles, 0x1400, 0x07d0
+ null_obj_tiles
gUnknown_085E4FEC:: @ 85E4FEC
- .incbin "baserom.gba", 0x5e4fec, 0x10
+ obj_tiles gIntro1FlygonGfx, 0x0400, 0x07d2
+ null_obj_tiles
+ .align 2
gUnknown_085E4FFC:: @ 85E4FFC
- .incbin "baserom.gba", 0x5e4ffc, 0x34
+ obj_pal gIntro1DropsPal, 0x07d0
+ obj_pal gIntro1GFLogoPal, 0x07d1
+ obj_pal gIntro1FlygonPal, 0x07d2
+ null_obj_pal
+
+ .align 2
+gUnknown_085E501C:: @ 85E501C
+ .byte 0xa0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+ .align 2
+gUnknown_085E5024:: @ 85E5024
+ .2byte 0x0010, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085E502C:: @ 85E502C
+ .4byte gUnknown_085E5024
+
+ .align 2
gUnknown_085E5030:: @ 85E5030
- .incbin "baserom.gba", 0x5e5030, 0x18
+ spr_template 0x07d3, 0x07d3, gUnknown_085E501C, gUnknown_085E502C, NULL, gDummySpriteAffineAnimTable, sub_8170040
+ .align 2
gUnknown_085E5048:: @ 85E5048
- .incbin "baserom.gba", 0x5e5048, 0x10
+ obj_tiles gIntro3MiscTiles, 0x0a00, 0x07d3
+ null_obj_tiles
gUnknown_085E5058:: @ 85E5058
- .incbin "baserom.gba", 0x5e5058, 0x10
+ obj_pal gIntro3Misc1Pal, 0x07d3
+ null_obj_pal
+
diff --git a/data/intro_credits_graphics.s b/data/intro_credits_graphics.s
index a1a0eb460..636c1a8fb 100644
--- a/data/intro_credits_graphics.s
+++ b/data/intro_credits_graphics.s
@@ -3,146 +3,457 @@
.section .rodata
+ .align 2
gUnknown_085F06E0:: @ 85F06E0
- .incbin "baserom.gba", 0x5f06e0, 0x20
+ .incbin "graphics/intro/intro2_grass.gbapal"
+ .align 2
gUnknown_085F0700:: @ 85F0700
- .incbin "baserom.gba", 0x5f0700, 0x20
+ .incbin "graphics/intro/intro2_grass_afternoon.gbapal"
+ .align 2
gUnknown_085F0720:: @ 85F0720
- .incbin "baserom.gba", 0x5f0720, 0x20
+ .incbin "graphics/intro/intro2_grass_night.gbapal"
+ .align 2
gUnknown_085F0740:: @ 85F0740
- .incbin "baserom.gba", 0x5f0740, 0x480
+ .incbin "graphics/intro/intro2_grass.4bpp.lz"
+ .align 2
gUnknown_085F0BC0:: @ 85F0BC0
- .incbin "baserom.gba", 0x5f0bc0, 0x13c
+ .incbin "graphics/intro/intro2_grass_map.bin.lz"
+ .align 2
gUnknown_085F0CFC:: @ 85F0CFC
- .incbin "baserom.gba", 0x5f0cfc, 0x60
+ .incbin "graphics/intro/85F0CFC.gbapal"
+ .align 2
gUnknown_085F0D5C:: @ 85F0D5C
- .incbin "baserom.gba", 0x5f0d5c, 0x60
+ .incbin "graphics/intro/85F0D5C.gbapal"
+ .align 2
gUnknown_085F0DBC:: @ 85F0DBC
- .incbin "baserom.gba", 0x5f0dbc, 0x5dc
+ .incbin "graphics/intro/intro2_bgclouds.4bpp.lz"
+ .align 2
gUnknown_085F1398:: @ 85F1398
- .incbin "baserom.gba", 0x5f1398, 0x2d0
+ .incbin "graphics/intro/intro2_bgclouds_map.bin.lz"
+ .align 2
gUnknown_085F1668:: @ 85F1668
- .incbin "baserom.gba", 0x5f1668, 0x20
+ .incbin "graphics/intro/intro2_bgclouds.gbapal"
+ .align 2
gUnknown_085F1688:: @ 85F1688
- .incbin "baserom.gba", 0x5f1688, 0x20
+ .incbin "graphics/intro/intro2_bgclouds_afternoon.gbapal"
+ .align 2
gUnknown_085F16A8:: @ 85F16A8
- .incbin "baserom.gba", 0x5f16a8, 0x13c
+ .incbin "graphics/intro/intro2_bgclouds2.4bpp.lz"
+ .align 2
gUnknown_085F17E4:: @ 85F17E4
- .incbin "baserom.gba", 0x5f17e4, 0x20
+ .incbin "graphics/intro/intro2_bgtrees2.gbapal"
+ .align 2
gUnknown_085F1804:: @ 85F1804
- .incbin "baserom.gba", 0x5f1804, 0x20
+ .incbin "graphics/intro/intro2_bgtrees2_afternoon.gbapal"
+ .align 2
gUnknown_085F1824:: @ 85F1824
- .incbin "baserom.gba", 0x5f1824, 0x688
+ .incbin "graphics/intro/intro2_bgtrees.4bpp.lz"
+ .align 2
gUnknown_085F1EAC:: @ 85F1EAC
- .incbin "baserom.gba", 0x5f1eac, 0x304
+ .incbin "graphics/intro/intro2_bgtrees_map.bin.lz"
+ .align 2
gUnknown_085F21B0:: @ 85F21B0
- .incbin "baserom.gba", 0x5f21b0, 0x16c
+ .incbin "graphics/intro/intro2_bgtrees.gbapal"
+ .align 2
+gIntro2TreeGfx:: @ 85F21D0
+ .incbin "graphics/intro/intro2_bgtreessmall.4bpp.lz"
+
+ .align 2
gUnknown_085F231C:: @ 85F231C
- .incbin "baserom.gba", 0x5f231c, 0x40
+ .incbin "graphics/intro/85F231C.gbapal"
+ .align 2
gUnknown_085F235C:: @ 85F235C
- .incbin "baserom.gba", 0x5f235c, 0x1ec
+ .incbin "graphics/intro/intro2_bgnight.4bpp.lz"
+ .align 2
gUnknown_085F2548:: @ 85F2548
- .incbin "baserom.gba", 0x5f2548, 0x20
+ .incbin "graphics/intro/intro2_bgnight.gbapal"
+ .align 2
gUnknown_085F2568:: @ 85F2568
- .incbin "baserom.gba", 0x5f2568, 0x2ae4
+ .incbin "graphics/intro/intro2_bgnight_map.bin.lz"
+
+ .align 2
+gIntro2NightGfx:: @ 85F2814
+ .incbin "graphics/intro/intro2_night.4bpp.lz"
+
+ .align 2
+gIntro2BrendanPal:: @ 85F2898
+ .incbin "graphics/intro/intro2_brendan.gbapal"
+
+ .align 2
+gIntro2BrendanGfx:: @ 85F28B8
+ .incbin "graphics/intro/intro2_brendan.4bpp.lz"
+
+ .align 2
+gIntro2MayPal:: @ 85F3470
+ .incbin "graphics/intro/intro2_may.gbapal"
+
+ .align 2
+gUnknown_085F3490:: @ 85F3490
+ .space 0x1E0
+
+ .align 2
+gIntro2MayGfx:: @ 85F3670
+ .incbin "graphics/intro/intro2_may.4bpp.lz"
+ .align 2
+gIntro2BicycleGfx:: @ 85F4318
+ .incbin "graphics/intro/intro2_bicycle.4bpp.lz"
+
+ .align 2
+gIntro2LatiosPal:: @ 85F4744
+ .incbin "graphics/intro/intro2_latios.gbapal"
+
+ .align 2
+gIntro2LatiosGfx:: @ 85F4764
+ .incbin "graphics/intro/intro2_latios.4bpp.lz"
+
+ .align 2
+gIntro2LatiasPal:: @ 85F4C08
+ .incbin "graphics/intro/intro2_latias.gbapal"
+
+ .align 2
+gIntro2LatiasGfx:: @ 85F4C28
+ .incbin "graphics/intro/intro2_latias.4bpp.lz"
+
+ .align 2
gUnknown_085F504C:: @ 85F504C
- .incbin "baserom.gba", 0x5f504c, 0x18
+ spr_template 0x07d0, 0xffff, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_817B62C
+ .align 2
gUnknown_085F5064:: @ 85F5064
- .incbin "baserom.gba", 0x5f5064, 0x30
-
+ obj_tiles gUnknown_085F16A8, 0x0400, 0x07d0
+ null_obj_tiles
+
+ .align 2
+gUnknown_085F5074:: @ 85F5074
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gUnknown_085F507C:: @ 85F507C
+ obj_image_anim_frame 16, 30
+ obj_image_anim_end
+
+ .align 2
+gUnknown_085F5084:: @ 85F5084
+ obj_image_anim_frame 20, 30
+ obj_image_anim_end
+
+ .align 2
+gUnknown_085F508C:: @ 85F508C
+ obj_image_anim_frame 22, 30
+ obj_image_anim_end
+
+ .align 2
gUnknown_085F5094:: @ 85F5094
- .incbin "baserom.gba", 0x5f5094, 0x10
+ .4byte gUnknown_085F5074
+ .4byte gUnknown_085F507C
+ .4byte gUnknown_085F5084
+ .4byte gUnknown_085F508C
+ .align 2
gUnknown_085F50A4:: @ 85F50A4
- .incbin "baserom.gba", 0x5f50a4, 0x48
-
+ .byte -128, 72, 32, 100
+ .2byte 0xC00
+ .space 2
+ .byte -128, -98, 32, 100
+ .2byte 0xC00
+ .space 2
+ .byte 65, -64, 40, 101
+ .2byte 0x800
+ .space 2
+ .byte 65, 56, 40, 101
+ .2byte 0x800
+ .space 2
+ .byte 18, 100, 44, 102
+ .2byte 0x400
+ .space 2
+ .byte 18, -104, 44, 102
+ .2byte 0x400
+ .space 2
+ .byte 19, 8, 46, 103
+ .2byte 0x100
+ .space 2
+ .byte 19, 56, 46, 103
+ .2byte 0x100
+ .space 2
+ .byte 19, -16, 46, 103
+ .2byte 0x100
+ .space 2
+
+ .align 2
gUnknown_085F50EC:: @ 85F50EC
- .incbin "baserom.gba", 0x5f50ec, 0x28
+ obj_tiles gIntro2TreeGfx, 0x0400, 0x07d0
+ null_obj_tiles
+
+ .align 2
+gUnknown_085F50FC:: @ 85F50FC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gUnknown_085F5104:: @ 85F5104
+ obj_image_anim_frame 16, 30
+ obj_image_anim_end
+ .align 2
+gUnknown_085F510C:: @ 85F510C
+ obj_image_anim_frame 24, 30
+ obj_image_anim_end
+
+ .align 2
gUnknown_085F5114:: @ 85F5114
- .incbin "baserom.gba", 0x5f5114, 0xc
+ .4byte gUnknown_085F50FC
+ .4byte gUnknown_085F5104
+ .4byte gUnknown_085F510C
+ .align 2
gUnknown_085F5120:: @ 85F5120
- .incbin "baserom.gba", 0x5f5120, 0x60
-
+ .byte -128, 16, 88, 100
+ .2byte 0x2000
+ .space 2
+ .byte -128, 80, 88, 100
+ .2byte 0x2000
+ .space 2
+ .byte -128, -112, 88, 100
+ .2byte 0x2000
+ .space 2
+ .byte -128, -48, 88, 100
+ .2byte 0x2000
+ .space 2
+ .byte -95, 40, 88, 101
+ .2byte 0x1000
+ .space 2
+ .byte -95, 104, 88, 101
+ .2byte 0x1000
+ .space 2
+ .byte -95, -88, 88, 101
+ .2byte 0x1000
+ .space 2
+ .byte -95, -24, 88, 101
+ .2byte 0x1000
+ .space 2
+ .byte -94, 56, 88, 102
+ .2byte 0x800
+ .space 2
+ .byte -94, 120, 88, 102
+ .2byte 0x800
+ .space 2
+ .byte -94, -72, 88, 102
+ .2byte 0x800
+ .space 2
+ .byte -94, -8, 88, 102
+ .2byte 0x800
+ .space 2
+
+ .align 2
gUnknown_085F5180:: @ 85F5180
- .incbin "baserom.gba", 0x5f5180, 0x18
+ obj_tiles gIntro2NightGfx, 0x0400, 0x07d0
+ null_obj_tiles
+
+ .align 2
+gUnknown_085F5190:: @ 85F5190
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+ .align 2
gUnknown_085F5198:: @ 85F5198
- .incbin "baserom.gba", 0x5f5198, 0x4
+ .4byte gUnknown_085F5190
+ .align 2
gUnknown_085F519C:: @ 85F519C
- .incbin "baserom.gba", 0x5f519c, 0x50
-
+ .byte -128, 24, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, 64, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, 104, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, -112, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, -72, 88, 100
+ .2byte 0x1000
+ .space 2
+ .byte -128, -32, 88, 100
+ .2byte 0x1000
+ .space 2
+
+ .align 2
+gOamData_85F51CC:: @ 85F51CC
+ .2byte 0x00A0
+ .2byte 0xC000
+ .2byte 0x0400
+
+ .align 2
+gUnknown_085F51D4:: @ 85F51D4
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 64, 8
+ obj_image_anim_frame 128, 8
+ obj_image_anim_frame 192, 8
+ obj_image_anim_jump 0
+
+ .align 2
+gUnknown_085F51E8:: @ 85F51E8
+ .4byte gUnknown_085F51D4
+
+ .align 2
gUnknown_085F51EC:: @ 85F51EC
- .incbin "baserom.gba", 0x5f51ec, 0x18
+ spr_template 0x03ea, 0x03ea, gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65
+ .align 2
gUnknown_085F5204:: @ 85F5204
- .incbin "baserom.gba", 0x5f5204, 0x38
-
+ spr_template 0x03eb, 0x03eb, gOamData_85F51CC, gUnknown_085F51E8, NULL, gDummySpriteAffineAnimTable, nullsub_65
+
+ .align 2
+gUnknown_085F521C:: @ 85F521C
+ .2byte 0x40A0
+ .2byte 0xC000
+ .2byte 0x0400
+
+ .align 2
+gUnknown_085F5224:: @ 85F5224
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 32, 8
+ obj_image_anim_frame 64, 8
+ obj_image_anim_frame 96, 8
+ obj_image_anim_jump 0
+
+ .align 2
+gUnknown_085F5238:: @ 85F5238
+ .4byte gUnknown_085F5224
+
+ .align 2
gUnknown_085F523C:: @ 85F523C
- .incbin "baserom.gba", 0x5f523c, 0x18
+ spr_template 0x03e9, 0x03ea, gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4
+ .align 2
gUnknown_085F5254:: @ 85F5254
- .incbin "baserom.gba", 0x5f5254, 0x38
-
+ spr_template 0x03e9, 0x03eb, gUnknown_085F521C, gUnknown_085F5238, NULL, gDummySpriteAffineAnimTable, sub_817B7C4
+
+ .align 2
+gUnknown_085F526C:: @ 85F526C
+ .2byte 0x00A0
+ .2byte 0xC000
+ .2byte 0x0400
+
+ .align 2
+gUnknown_085F5274:: @ 85F5274
+ obj_image_anim_frame 0, 16
+ obj_image_anim_end
+
+ .align 2
+gUnknown_085F527C:: @ 85F527C
+ obj_image_anim_frame 64, 16
+ obj_image_anim_end
+
+ .align 2
+gUnknown_085F5284:: @ 85F5284
+ .4byte gUnknown_085F5274
+ .4byte gUnknown_085F527C
+
+ .align 2
gUnknown_085F528C:: @ 85F528C
- .incbin "baserom.gba", 0x5f528c, 0x18
+ spr_template 0x03ec, 0x03ec, gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66
+ .align 2
gUnknown_085F52A4:: @ 85F52A4
- .incbin "baserom.gba", 0x5f52a4, 0x18
+ spr_template 0x03ed, 0x03ed, gUnknown_085F526C, gUnknown_085F5284, NULL, gDummySpriteAffineAnimTable, nullsub_66
+ .align 2
gUnknown_085F52BC:: @ 85F52BC
- .incbin "baserom.gba", 0x5f52bc, 0x10
+ obj_tiles gIntro2BrendanNoTurnGfx, 0x2000, 0x03ea
+ null_obj_tiles
+ .align 2
gUnknown_085F52CC:: @ 85F52CC
- .incbin "baserom.gba", 0x5f52cc, 0x10
+ obj_tiles gIntro2MayNoTurnGfx, 0x2000, 0x03eb
+ null_obj_tiles
+ .align 2
gUnknown_085F52DC:: @ 85F52DC
- .incbin "baserom.gba", 0x5f52dc, 0x20
+ obj_tiles gIntro2BicycleGfx, 0x1000, 0x03e9
+ null_obj_tiles
+ .align 2
+gUnknown_085F52EC:: @ 85F52EC
+ obj_tiles gIntro2FlygonGfx, 0x1000, 0x03ec
+ null_obj_tiles
+
+ .align 2
gUnknown_085F52FC:: @ 85F52FC
- .incbin "baserom.gba", 0x5f52fc, 0x10
+ obj_tiles gIntro2FlygonGfx, 0x1000, 0x03ed
+ null_obj_tiles
+ .align 2
gUnknown_085F530C:: @ 85F530C
- .incbin "baserom.gba", 0x5f530c, 0x28
+ obj_pal gIntro2BrendanNoTurnPal, 0x03ea
+ obj_pal gIntro2BrendanNoTurnPal, 0x03eb
+ obj_pal gIntro2FlygonPal, 0x03ec
+ obj_pal gIntro2FlygonPal, 0x03ed
+ null_obj_pal
+ .align 2
gUnknown_085F5334:: @ 85F5334
- .incbin "baserom.gba", 0x5f5334, 0x10
+ obj_tiles gIntro2BrendanGfx, 0x3800, 0x03ea
+ null_obj_tiles
+ .align 2
gUnknown_085F5344:: @ 85F5344
- .incbin "baserom.gba", 0x5f5344, 0x10
+ obj_tiles gIntro2MayGfx, 0x3800, 0x03eb
+ null_obj_tiles
+ .align 2
gUnknown_085F5354:: @ 85F5354
- .incbin "baserom.gba", 0x5f5354, 0x30
+ obj_tiles gIntro2BicycleGfx, 0x1000, 0x03e9
+ null_obj_tiles
+
+ .align 2
+gUnknown_085F5364:: @ 85F5364
+ obj_tiles gIntro2LatiosGfx, 0x1000, 0x03ec
+ null_obj_tiles
+
+ .align 2
+gUnknown_085F5374:: @ 85F5374
+ obj_tiles gIntro2LatiasGfx, 0x1000, 0x03ed
+ null_obj_pal
+ .align 2
gUnknown_085F5384:: @ 85F5384
- .incbin "baserom.gba", 0x5f5384, 0x28
+ obj_pal gIntro2BrendanPal, 0x03ea
+ obj_pal gIntro2MayPal, 0x03eb
+ obj_pal gIntro2LatiosPal, 0x03ec
+ obj_pal gIntro2LatiasPal, 0x03ed
+ null_obj_pal
+ .align 2
gUnknown_085F53AC:: @ 85F53AC
- .incbin "baserom.gba", 0x5f53ac, 0x10
+ obj_tiles gIntro2BrendanGfx, 0x2000, 0x03ea
+ null_obj_tiles
+ .align 2
gUnknown_085F53BC:: @ 85F53BC
- .incbin "baserom.gba", 0x5f53bc, 0x8
+ obj_tiles gIntro2MayGfx, 0x2000, 0x03eb
+ null_obj_tiles
diff --git a/data/item_use.s b/data/item_use.s
index 20ca8d683..d9bcc44f6 100644
--- a/data/item_use.s
+++ b/data/item_use.s
@@ -5,11 +5,17 @@
.section .rodata
.align 2, 0
+ .align 2
gUnknown_085920D8:: @ 85920D8
- .incbin "baserom.gba", 0x5920d8, 0xc
+ .4byte sub_81B617C
+ .4byte c2_exit_to_overworld_2_switch
+ .4byte NULL
+ .align 2
gUnknown_085920E4:: @ 85920E4
- .incbin "baserom.gba", 0x5920e4, 0x4
+ .byte 0x02, 0x04, 0x01, 0x03
+ .align 2
gUnknown_085920E8:: @ 85920E8
- .incbin "baserom.gba", 0x5920e8, 0x128
+ .4byte sub_80FE03C
+ .4byte bag_menu_inits_lists_menu
diff --git a/data/learn_move.s b/data/learn_move.s
new file mode 100644
index 000000000..bcb8aeba1
--- /dev/null
+++ b/data/learn_move.s
@@ -0,0 +1,22 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+gUnknown_085CEBB0:: @ 85CEBB0
+ .incbin "baserom.gba", 0x5cebb0, 0x8
+
+gUnknown_085CEBB8:: @ 85CEBB8
+ .incbin "baserom.gba", 0x5cebb8, 0x8
+
+gUnknown_085CEBC0:: @ 85CEBC0
+ .incbin "baserom.gba", 0x5cebc0, 0x10
+
+gUnknown_085CEBD0:: @ 85CEBD0
+ .incbin "baserom.gba", 0x5cebd0, 0x40
+
+gUnknown_085CEC10:: @ 85CEC10
+ .incbin "baserom.gba", 0x5cec10, 0x18
+
+gUnknown_085CEC28:: @ 85CEC28
+ .incbin "baserom.gba", 0x5cec28, 0x8
diff --git a/data/mail.s b/data/mail.s
deleted file mode 100644
index 5dc8270bc..000000000
--- a/data/mail.s
+++ /dev/null
@@ -1,26 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0859F290:: @ 859F290
- .incbin "baserom.gba", 0x59f290, 0xc
-
-gUnknown_0859F29C:: @ 859F29C
- .incbin "baserom.gba", 0x59f29c, 0x10
-
-gUnknown_0859F2AC:: @ 859F2AC
- .incbin "baserom.gba", 0x59f2ac, 0x4
-
-gUnknown_0859F2B0:: @ 859F2B0
- .incbin "baserom.gba", 0x59f2b0, 0x8
-
-gUnknown_0859F2B8:: @ 859F2B8
- .incbin "baserom.gba", 0x59f2b8, 0xfc
-
-gUnknown_0859F3B4:: @ 859F3B4
- .incbin "baserom.gba", 0x59f3b4, 0xa4
-
-gUnknown_0859F458:: @ 859F458
- .incbin "baserom.gba", 0x59f458, 0xbc
diff --git a/data/main_menu.s b/data/main_menu.s
new file mode 100644
index 000000000..fba0e7ddb
--- /dev/null
+++ b/data/main_menu.s
@@ -0,0 +1,141 @@
+@ the second big chunk of data
+
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+gUnknown_082FECFC:: @ 82FECFC
+ .incbin "graphics/birch_speech/bg0.gbapal"
+ .incbin "graphics/birch_speech/bg1.gbapal"
+
+ .align 2
+gBirchIntroShadowGfx:: @ 82FED3C
+ .incbin "graphics/birch_speech/shadow.4bpp.lz"
+
+ .align 2
+gUnknown_082FEEF0:: @ 82FEEF0
+ .incbin "graphics/birch_speech/map.bin.lz"
+
+ .align 2
+gUnknown_082FF018:: @ 82FF018
+ .incbin "graphics/birch_speech/bg2.gbapal"
+
+ .align 2
+gUnknown_082FF028:: @ 82FF028
+ .space 16
+
+ .align 2
+gUnknown_082FF038:: @ 82FF038
+ window_template 0x00, 0x02, 0x01, 0x1a, 0x02, 0x0f, 0x0001
+ window_template 0x00, 0x02, 0x05, 0x1a, 0x02, 0x0f, 0x0035
+
+ .align 2
+gUnknown_082FF048:: @ 82FF048
+ window_template 0x00, 0x02, 0x01, 0x1a, 0x06, 0x0f, 0x0001
+ window_template 0x00, 0x02, 0x09, 0x1a, 0x02, 0x0f, 0x009d
+ window_template 0x00, 0x02, 0x0d, 0x1a, 0x02, 0x0f, 0x00d1
+ window_template 0x00, 0x02, 0x11, 0x1a, 0x02, 0x0f, 0x0105
+ window_template 0x00, 0x02, 0x15, 0x1a, 0x02, 0x0f, 0x0139
+
+ .align 2
+gUnknown_082FF070:: @ 82FF070
+ window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x0f, 0x016d
+ window_template_terminator
+
+ .align 2
+gUnknown_082FF080:: @ 82FF080
+ window_template 0x00, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x0001
+
+ .align 2
+gUnknown_082FF088:: @ 82FF088
+ window_template 0x00, 0x03, 0x05, 0x06, 0x04, 0x0f, 0x006d
+ window_template 0x00, 0x03, 0x02, 0x09, 0x0a, 0x0f, 0x0085
+ window_template_terminator
+
+ .align 2
+gMainMenuBgPal:: @ 82FF0A0
+ .incbin "graphics/misc/main_menu_bg.gbapal"
+
+ .align 2
+gMainMenuTextPal:: @ 82FF0C0
+ .incbin "graphics/misc/main_menu_text.gbapal"
+
+ .align 2
+gUnknown_082FF0E0:: @ 82FF0E0
+ .byte 0x0a, 0x0b, 0x0c
+
+gUnknown_082FF0E3:: @ 82FF0E3
+ .byte 0x0a, 0x01, 0x0c
+
+ .align 2
+gUnknown_082FF0E8:: @ 82FF0E8
+ .4byte 0x000001e8, 0x00003071
+
+ .align 2
+gUnknown_082FF0F0:: @ 82FF0F0
+ .4byte 0x000001ec
+
+ .align 2
+gUnknown_082FF0F4:: @ 82FF0F4
+ .byte 0x02, 0x78, 0x08, 0x03, 0x78, 0x98, 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_082FF104:: @ 82FF104
+ .2byte 0xfffe, 0xfffe, 0x3000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_082FF114:: @ 82FF114
+ .4byte gUnknown_082FF104
+
+ .align 2
+gUnknown_082FF118:: @ 82FF118
+ .4byte gText_BirchBoy, 0x00000000
+ .4byte gText_BirchGirl, 0x00000000
+
+ .align 2
+gMalePresetNames:: @ 82FF128
+ .4byte gText_DefaultNameStu
+ .4byte gText_DefaultNameMilton
+ .4byte gText_DefaultNameTom
+ .4byte gText_DefaultNameKenny
+ .4byte gText_DefaultNameReid
+ .4byte gText_DefaultNameJude
+ .4byte gText_DefaultNameJaxson
+ .4byte gText_DefaultNameEaston
+ .4byte gText_DefaultNameWalker
+ .4byte gText_DefaultNameTeru
+ .4byte gText_DefaultNameJohnny
+ .4byte gText_DefaultNameBrett
+ .4byte gText_DefaultNameSeth
+ .4byte gText_DefaultNameTerry
+ .4byte gText_DefaultNameCasey
+ .4byte gText_DefaultNameDarren
+ .4byte gText_DefaultNameLandon
+ .4byte gText_DefaultNameCollin
+ .4byte gText_DefaultNameStanley
+ .4byte gText_DefaultNameQuincy
+
+ .align 2
+gFemalePresetNames:: @ 82FF178
+ .4byte gText_DefaultNameKimmy
+ .4byte gText_DefaultNameTiara
+ .4byte gText_DefaultNameBella
+ .4byte gText_DefaultNameJayla
+ .4byte gText_DefaultNameAllie
+ .4byte gText_DefaultNameLianna
+ .4byte gText_DefaultNameSara
+ .4byte gText_DefaultNameMonica
+ .4byte gText_DefaultNameCamila
+ .4byte gText_DefaultNameAubree
+ .4byte gText_DefaultNameRuthie
+ .4byte gText_DefaultNameHazel
+ .4byte gText_DefaultNameNadine
+ .4byte gText_DefaultNameTanja
+ .4byte gText_DefaultNameYasmin
+ .4byte gText_DefaultNameNicola
+ .4byte gText_DefaultNameLillie
+ .4byte gText_DefaultNameTerra
+ .4byte gText_DefaultNameLucy
+ .4byte gText_DefaultNameHalie
diff --git a/data/money.s b/data/money.s
deleted file mode 100644
index d7457be46..000000000
--- a/data/money.s
+++ /dev/null
@@ -1,13 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_0858C28C:: @ 858C28C
- .incbin "baserom.gba", 0x58c28c, 0x18
-
-gUnknown_0858C2A4:: @ 858C2A4
- .incbin "baserom.gba", 0x58c2a4, 0x8
-
-gUnknown_0858C2AC:: @ 858C2AC
- .incbin "baserom.gba", 0x58c2ac, 0x8
diff --git a/data/naming_screen.s b/data/naming_screen.s
index 352fac8e4..80cbd0b09 100644
--- a/data/naming_screen.s
+++ b/data/naming_screen.s
@@ -148,4 +148,4 @@ gUnknown_0858C1C8:: @ 858C1C8
.incbin "baserom.gba", 0x58c1c8, 0x68
gUnknown_0858C230:: @ 858C230
- .incbin "baserom.gba", 0x58c230, 0x5c
+ .incbin "baserom.gba", 0x58c230, 0x48
diff --git a/data/palette.s b/data/palette.s
deleted file mode 100644
index 2dbfed8d2..000000000
--- a/data/palette.s
+++ /dev/null
@@ -1,18 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0852487C:: @ 852487C
- .incbin "baserom.gba", 0x52487c, 0x10
-
-gDummyPaletteStructTemplate:: @ 852488C
- .2byte 0xFFFF
- .space 9
- .byte 0x20
- .space 4
-
- .align 2
-gUnknown_0852489C:: @ 852489C
- .incbin "baserom.gba", 0x52489c, 0x20
diff --git a/data/pickup_items.inc b/data/pickup_items.inc
deleted file mode 100644
index 88ad1a43d..000000000
--- a/data/pickup_items.inc
+++ /dev/null
@@ -1,45 +0,0 @@
- .align 1
-gPickupItems:: @ 831C440
- .2byte ITEM_POTION
- .2byte ITEM_ANTIDOTE
- .2byte ITEM_SUPER_POTION
- .2byte ITEM_GREAT_BALL
- .2byte ITEM_REPEL
- .2byte ITEM_ESCAPE_ROPE
- .2byte ITEM_X_ATTACK
- .2byte ITEM_FULL_HEAL
- .2byte ITEM_ULTRA_BALL
- .2byte ITEM_HYPER_POTION
- .2byte ITEM_RARE_CANDY
- .2byte ITEM_PROTEIN
- .2byte ITEM_REVIVE
- .2byte ITEM_HP_UP
- .2byte ITEM_FULL_RESTORE
- .2byte ITEM_MAX_REVIVE
- .2byte ITEM_PP_UP
- .2byte ITEM_MAX_ELIXIR
-
- .align 1
-gRarePickupItems:: @ 831C464
- .2byte ITEM_HYPER_POTION
- .2byte ITEM_NUGGET
- .2byte ITEM_KINGS_ROCK
- .2byte ITEM_FULL_RESTORE
- .2byte ITEM_ETHER
- .2byte ITEM_WHITE_HERB
- .2byte ITEM_TM44
- .2byte ITEM_ELIXIR
- .2byte ITEM_TM01
- .2byte ITEM_LEFTOVERS
- .2byte ITEM_TM26
-
-gPickupProbabilities:: @ 831C47A
- .byte 30
- .byte 40
- .byte 50
- .byte 60
- .byte 70
- .byte 80
- .byte 90
- .byte 94
- .byte 98
diff --git a/data/player_pc.s b/data/player_pc.s
index 1a4f62b4f..c3422db30 100644
--- a/data/player_pc.s
+++ b/data/player_pc.s
@@ -3,41 +3,72 @@
.section .rodata
+ .align 2
gUnknown_085DFEA4:: @ 85DFEA4
- .incbin "baserom.gba", 0x5dfea4, 0x10
+ .4byte gText_TakeOutItemsFromPC
+ .4byte gText_StoreItemsInPC
+ .4byte gText_ThrowAwayItemsInPC
+ .4byte gText_GoBackPrevMenu
+ .align 2
gUnknown_085DFEB4:: @ 85DFEB4
- .incbin "baserom.gba", 0x5dfeb4, 0x20
+ .4byte gText_ItemStorage, task_pc_itemstorage
+ .4byte gText_Mailbox, sub_816B0A8
+ .4byte gText_Decoration, sub_816B138
+ .4byte gText_TurnOff, sub_816B148
+ .align 2
gUnknown_085DFED4:: @ 85DFED4
- .incbin "baserom.gba", 0x5dfed4, 0x4
+ .byte 0x00, 0x01, 0x02, 0x03
+ .align 2
gUnknown_085DFED8:: @ 85DFED8
- .incbin "baserom.gba", 0x5dfed8, 0x4
+ .byte 0x00, 0x01, 0x03, 0x00
+ .align 2
gUnknown_085DFEDC:: @ 85DFEDC
- .incbin "baserom.gba", 0x5dfedc, 0x20
+ .4byte gText_WithdrawItem, sub_816B398
+ .4byte gText_DepositItem, sub_816B2C8
+ .4byte gText_TossItem, sub_816B3E4
+ .4byte gText_Cancel, sub_816B4A4
+ .align 2
gUnknown_085DFEFC:: @ 85DFEFC
- .incbin "baserom.gba", 0x5dfefc, 0x8
+ .2byte ITEM_POTION, 0x0001
+ .2byte 0x0000, 0x0000
+ .align 2
gUnknown_085DFF04:: @ 85DFF04
- .incbin "baserom.gba", 0x5dff04, 0x20
+ .4byte gText_Read, sub_816B878
+ .4byte gText_MoveToBag, sub_816B994
+ .4byte gText_Give2, sub_816BABC
+ .4byte gText_Cancel2, sub_816BBD4
+ .align 2
gUnknown_085DFF24:: @ 85DFF24
- .incbin "baserom.gba", 0x5dff24, 0x18
+ .4byte 0x09010100, 0x00010f06, 0x09010100, 0x00010f08, 0x0a010100, 0x00010f08
+ .align 2
gUnknown_085DFF3C:: @ 85DFF3C
- .incbin "baserom.gba", 0x5dff3c, 0x8
+ .4byte sub_816CA94
+ .4byte sub_816CAC8
+ .align 2
gUnknown_085DFF44:: @ 85DFF44
- .incbin "baserom.gba", 0x5dff44, 0x18
+ .4byte 0x00000000, sub_816BDDC, fish4_goto_x5_or_x6, 0x00000000, 0x00080000, 0x07003129
+ .align 2
gUnknown_085DFF5C:: @ 85DFF5C
- .incbin "baserom.gba", 0x5dff5c, 0x28
+ window_template 0x00, 0x10, 0x01, 0x0d, 0x12, 0x0f, 0x0001
+ window_template 0x00, 0x01, 0x0d, 0x0d, 0x06, 0x0f, 0x00eb
+ window_template 0x00, 0x01, 0x08, 0x03, 0x03, 0x0f, 0x0153
+ window_template 0x00, 0x01, 0x01, 0x0d, 0x02, 0x0f, 0x0139
+ window_template 0x00, 0x08, 0x09, 0x06, 0x02, 0x0f, 0x015c
+ .align 2
gUnknown_085DFF84:: @ 85DFF84
- .incbin "baserom.gba", 0x5dff84, 0x8
+ window_template 0x00, 0x09, 0x07, 0x05, 0x04, 0x0f, 0x0168
+ .align 2
gUnknown_085DFF8C:: @ 85DFF8C
- .incbin "baserom.gba", 0x5dff8c, 0x638
+ .byte 0x01, 0x03, 0x02, 0x00
diff --git a/data/pokedex.s b/data/pokedex.s
index e81a3d78a..3ba94dbc5 100644
--- a/data/pokedex.s
+++ b/data/pokedex.s
@@ -95,7 +95,7 @@ gUnknown_0856E688:: @ 856E688
.incbin "baserom.gba", 0x56e688, 0xc
@ 856E694
- .include "data/graphics/pokemon/mon_footprint_table.inc"
+ .include "data/graphics/pokemon/footprint_table.inc"
gUnknown_0856ED08:: @ 856ED08
.incbin "baserom.gba", 0x56ed08, 0x28
diff --git a/data/pokemon_icon.s b/data/pokemon_icon.s
index ab3824f35..9d6c7ac2e 100644
--- a/data/pokemon_icon.s
+++ b/data/pokemon_icon.s
@@ -5,19 +5,20 @@
.align 2, 0
@ 857BCA8
- .include "data/graphics/pokemon/mon_icon_table.inc"
+ .include "data/graphics/pokemon/icon_table.inc"
@ 857C388
- .include "data/graphics/pokemon/mon_icon_palette_indices.inc"
+ .include "data/graphics/pokemon/icon_palette_indices.inc"
@ 857C540
- .include "data/graphics/pokemon/mon_icon_palette_table.inc"
+ .include "data/graphics/pokemon/icon_palette_table.inc"
gUnknown_0857C570:: @ 857C570
.incbin "baserom.gba", 0x57c570, 0x44
gUnknown_0857C5B4:: @ 857C5B4
- .incbin "baserom.gba", 0x57c5b4, 0x34
+ .incbin "baserom.gba", 0x57c5b4, 0x14
+ .incbin "baserom.gba", 0x57c5c8, 0x20
gUnknown_0857C5E8:: @ 857C5E8
.incbin "baserom.gba", 0x57c5e8, 0x8
diff --git a/data/pokemon_summary_screen.s b/data/pokemon_summary_screen.s
index ac28d47c5..fc1c79096 100644
--- a/data/pokemon_summary_screen.s
+++ b/data/pokemon_summary_screen.s
@@ -40,7 +40,10 @@ gUnknown_0861CD14:: @ 861CD14
.incbin "baserom.gba", 0x61cd14, 0x18
gUnknown_0861CD2C:: @ 861CD2C
- .incbin "baserom.gba", 0x61cd2c, 0xa7
+ .incbin "baserom.gba", 0x61cd2c, 0x27
+
+gUnknown_0861CD53:: @ 861CD53
+ .incbin "baserom.gba", 0x61cd53, 0x80
gUnknown_0861CDD3:: @ 861CDD3
.incbin "baserom.gba", 0x61cdd3, 0x81
diff --git a/data/reset_rtc_screen.s b/data/reset_rtc_screen.s
index 2ed5f746c..f680a87bc 100644
--- a/data/reset_rtc_screen.s
+++ b/data/reset_rtc_screen.s
@@ -4,20 +4,75 @@
.section .rodata
.align 2, 0
-gUnknown_08510404:: @ 8510404
- .incbin "baserom.gba", 0x510404, 0x4
+gUnknown_08510404:: @ 8510404 struct BgTemplate
+ .4byte 0x000001f0
+ .align 2
gUnknown_08510408:: @ 8510408
- .incbin "baserom.gba", 0x510408, 0x14
-
-gUnknown_0851041C:: @ 851041C
- .incbin "baserom.gba", 0x51041c, 0x4
+ window_template 0x00, 0x01, 0x01, 0x13, 0x09, 0x0f, 0x0155
+ window_template 0x00, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x00e9
+ window_template_terminator
+ .align 2
gUnknown_08510420:: @ 8510420
- .incbin "baserom.gba", 0x510420, 0xa4
+ window_template 0x00, 0x04, 0x09, 0x15, 0x02, 0x0f, 0x00bf
+
+ .align 2
+gUnknown_08510428:: @ 8510428
+ .byte 3, 0, 1, 0, 15, 39, 0, 2, 0, 0, 0, 0
+ .byte 4, 0, 0, 0, 23, 0, 1, 3, 0, 0, 0, 0
+ .byte 5, 0, 0, 0, 59, 0, 2, 4, 0, 0, 0, 0
+ .byte 6, 0, 0, 0, 59, 0, 3, 5, 0, 0, 0, 0
+ .byte 7, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0
+
+ .align 2
+gOamData_08510464:: @ 8510464
+ .2byte 0x0000
+ .2byte 0x0000
+ .2byte 0x0000
+
+ .align 2
+gResetRtcScreen_DownArrowGfx:: @ 851046C
+ .incbin "graphics/misc/reset_rtc_screen_downarrow.4bpp"
+
+ .align 2
+gResetRtcScreen_RightArrowGfx:: @ 851048C
+ .incbin "graphics/misc/reset_rtc_screen_rightarrow.4bpp"
+
+ .align 2
+gResetRtcScreen_ArrowPal: @ 85104AC
+ .incbin "graphics/misc/reset_rtc_screen_arrow.gbapal"
+ .align 2
+gSpriteImageTable_85104B4:: @ 85104B4
+ obj_frame_tiles gResetRtcScreen_DownArrowGfx, 0x20
+ obj_frame_tiles gResetRtcScreen_RightArrowGfx, 0x20
+
+ .align 2
gUnknown_085104C4:: @ 85104C4
- .incbin "baserom.gba", 0x5104c4, 0x2c
+ obj_pal gResetRtcScreen_ArrowPal, 0x1000
+
+ .align 2
+gSpriteAnim_85104CC:: @ 85104CC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_jump 0
+
+ .align 2
+gSpriteAnim_85104D4: @ 85104D4
+ obj_image_anim_frame 0, 30, OBJ_IMAGE_ANIM_V_FLIP
+ obj_image_anim_jump 0
+
+ .align 2
+gSpriteAnim_85104DC:: @ 85104DC
+ obj_image_anim_frame 1, 30
+ obj_image_anim_jump 0
+
+ .align 2
+gSpriteAnimTable_85104E4:: @ 85104E4
+ .4byte gSpriteAnim_85104CC
+ .4byte gSpriteAnim_85104D4
+ .4byte gSpriteAnim_85104DC
-gUnknown_085104F0:: @ 85104F0
- .incbin "baserom.gba", 0x5104f0, 0x18
+ .align 2
+gSpriteTemplate_85104F0:: @ 85104F0
+ spr_template 0xFFFF, 0x1000, gOamData_08510464, gSpriteAnimTable_85104E4, gSpriteImageTable_85104B4, gDummySpriteAffineAnimTable, SpriteCallbackDummy
diff --git a/data/rom_8158B30.s b/data/rom_8158B30.s
deleted file mode 100644
index c8d9baa1a..000000000
--- a/data/rom_8158B30.s
+++ /dev/null
@@ -1,236 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-
-gUnknown_085CE2A0:: @ 85CE2A0
- .incbin "baserom.gba", 0x5ce2a0, 0xb0
-
-gUnknown_085CE350:: @ 85CE350
- .incbin "baserom.gba", 0x5ce350, 0x38
-
-gUnknown_085CE388:: @ 85CE388
- .incbin "baserom.gba", 0x5ce388, 0x18
-
-gUnknown_085CE3A0:: @ 85CE3A0
- .incbin "baserom.gba", 0x5ce3a0, 0x18
-
-gUnknown_085CE3B8:: @ 85CE3B8
- .incbin "baserom.gba", 0x5ce3b8, 0x28
-
-gUnknown_085CE3E0:: @ 85CE3E0
- .incbin "baserom.gba", 0x5ce3e0, 0x50
-
-gUnknown_085CE430:: @ 85CE430
- .incbin "baserom.gba", 0x5ce430, 0x30
-
-gUnknown_085CE460:: @ 85CE460
- .incbin "baserom.gba", 0x5ce460, 0x2c
-
-gUnknown_085CE48C:: @ 85CE48C
- .incbin "baserom.gba", 0x5ce48c, 0x18
-
-gUnknown_085CE4A4:: @ 85CE4A4
- .incbin "baserom.gba", 0x5ce4a4, 0x4
-
-gUnknown_085CE4A8:: @ 85CE4A8
- .incbin "baserom.gba", 0x5ce4a8, 0x8
-
-gUnknown_085CE4B0:: @ 85CE4B0
- .incbin "baserom.gba", 0x5ce4b0, 0x140
-
-gUnknown_085CE5F0:: @ 85CE5F0
- .incbin "baserom.gba", 0x5ce5f0, 0x15c
-
-gUnknown_085CE74C:: @ 85CE74C
- .incbin "baserom.gba", 0x5ce74c, 0x20
-
-gUnknown_085CE76C:: @ 85CE76C
- .incbin "baserom.gba", 0x5ce76c, 0x18
-
-gUnknown_085CE784:: @ 85CE784
- .incbin "baserom.gba", 0x5ce784, 0x68
-
-gUnknown_085CE7EC:: @ 85CE7EC
- .incbin "baserom.gba", 0x5ce7ec, 0x60
-
-gUnknown_085CE84C:: @ 85CE84C
- .incbin "baserom.gba", 0x5ce84c, 0x30
-
-gUnknown_085CE87C:: @ 85CE87C
- .incbin "baserom.gba", 0x5ce87c, 0x14c
-
-gUnknown_085CE9C8:: @ 85CE9C8
- .incbin "baserom.gba", 0x5ce9c8, 0x1e8
-
-gUnknown_085CEBB0:: @ 85CEBB0
- .incbin "baserom.gba", 0x5cebb0, 0x8
-
-gUnknown_085CEBB8:: @ 85CEBB8
- .incbin "baserom.gba", 0x5cebb8, 0x8
-
-gUnknown_085CEBC0:: @ 85CEBC0
- .incbin "baserom.gba", 0x5cebc0, 0x10
-
-gUnknown_085CEBD0:: @ 85CEBD0
- .incbin "baserom.gba", 0x5cebd0, 0x40
-
-gUnknown_085CEC10:: @ 85CEC10
- .incbin "baserom.gba", 0x5cec10, 0x18
-
-gUnknown_085CEC28:: @ 85CEC28
- .incbin "baserom.gba", 0x5cec28, 0x8
-
-sRoamerLocations:: @ 85CEC30
- .incbin "baserom.gba", 0x5cec30, 0x80
-
-@ 85CECB0
- .include "data/battle_frontier/battle_frontier_held_items.inc"
-
-@ 85CED2E
- .include "data/battle_frontier/battle_frontier_trainer_mons.inc"
-
-@ 85D5ACC
- .include "data/battle_frontier/battle_frontier_trainers.inc"
-
-@ 85D97BC
- .include "data/battle_frontier/battle_frontier_mons.inc"
-
-gUnknown_085DCEDC:: @ 85DCEDC
- .incbin "baserom.gba", 0x5dcedc, 0x1e
-
-gUnknown_085DCEFA:: @ 85DCEFA
- .incbin "baserom.gba", 0x5dcefa, 0x14
-
-gUnknown_085DCF0E:: @ 85DCF0E
- .incbin "baserom.gba", 0x5dcf0e, 0x1e
-
-gUnknown_085DCF2C:: @ 85DCF2C
- .incbin "baserom.gba", 0x5dcf2c, 0x14
-
-gUnknown_085DCF40:: @ 85DCF40
- .incbin "baserom.gba", 0x5dcf40, 0x5c0
-
-gUnknown_085DD500:: @ 85DD500
- .incbin "baserom.gba", 0x5dd500, 0x190
-
-gUnknown_085DD690:: @ 85DD690
- .incbin "baserom.gba", 0x5dd690, 0x40
-
-gUnknown_085DD6D0:: @ 85DD6D0
- .incbin "baserom.gba", 0x5dd6d0, 0x5
-
-gUnknown_085DD6D5:: @ 85DD6D5
- .incbin "baserom.gba", 0x5dd6d5, 0x7
-
-gUnknown_085DD6DC:: @ 85DD6DC
- .incbin "baserom.gba", 0x5dd6dc, 0x30
-
-@ 85DD70C
- .include "data/battle_frontier/slateport_battle_tent_trainer_mons.inc"
-
-@ 85DDA14
- .include "data/battle_frontier/slateport_battle_tent_trainers.inc"
-
-@ 85DE02C
- .include "data/battle_frontier/slateport_battle_tent_mons.inc"
-
-@ 85DE48C
- .include "data/battle_frontier/verdanturf_battle_tent_trainer_mons.inc"
-
-@ 85DE610
- .include "data/battle_frontier/verdanturf_battle_tent_trainers.inc"
-
-@ 85DEC28
- .include "data/battle_frontier/verdanturf_battle_tent_mons.inc"
-
-@ 85DEEF8
- .include "data/battle_frontier/fallarbor_battle_tent_trainer_mons.inc"
-
-@ 85DF084
- .include "data/battle_frontier/fallarbor_battle_tent_trainers.inc"
-
-@ 85DF69C
- .include "data/battle_frontier/fallarbor_battle_tent_mons.inc"
-
-gUnknown_085DF96C:: @ 85DF96C
- .incbin "baserom.gba", 0x5df96c, 0x40
-
-gUnknown_085DF9AC:: @ 85DF9AC
- .incbin "baserom.gba", 0x5df9ac, 0x20
-
-gUnknown_085DF9CC:: @ 85DF9CC
- .incbin "baserom.gba", 0x5df9cc, 0x20
-
-gUnknown_085DF9EC:: @ 85DF9EC
- .incbin "baserom.gba", 0x5df9ec, 0xa
-
-gUnknown_085DF9F6:: @ 85DF9F6
- .incbin "baserom.gba", 0x5df9f6, 0x4
-
-gUnknown_085DF9FA:: @ 85DF9FA
- .incbin "baserom.gba", 0x5df9fa, 0x20
-
-gUnknown_085DFA1A:: @ 85DFA1A
- .incbin "baserom.gba", 0x5dfa1a, 0x28
-
-gUnknown_085DFA42:: @ 85DFA42
- .incbin "baserom.gba", 0x5dfa42, 0x4
-
-gUnknown_085DFA46:: @ 85DFA46
- .incbin "baserom.gba", 0x5dfa46, 0xc
-
-gUnknown_085DFA52:: @ 85DFA52
- .incbin "baserom.gba", 0x5dfa52, 0xe
-
-gUnknown_085DFA60:: @ 85DFA60
- .incbin "baserom.gba", 0x5dfa60, 0x20
-
-gUnknown_085DFA80:: @ 85DFA80
- .incbin "baserom.gba", 0x5dfa80, 0xe0
-
-gUnknown_085DFB60:: @ 85DFB60
- .incbin "baserom.gba", 0x5dfb60, 0xac
-
-gUnknown_085DFC0C:: @ 85DFC0C
- .incbin "baserom.gba", 0x5dfc0c, 0xa4
-
-gUnknown_085DFCB0:: @ 85DFCB0
- .incbin "baserom.gba", 0x5dfcb0, 0x14
-
-gUnknown_085DFCC4:: @ 85DFCC4
- .incbin "baserom.gba", 0x5dfcc4, 0x5
-
-gUnknown_085DFCC9:: @ 85DFCC9
- .incbin "baserom.gba", 0x5dfcc9, 0x3
-
-gUnknown_085DFCCC:: @ 85DFCCC
- .incbin "baserom.gba", 0x5dfccc, 0x10
-
-gUnknown_085DFCDC:: @ 85DFCDC
- .incbin "baserom.gba", 0x5dfcdc, 0x20
-
-gUnknown_085DFCFC:: @ 85DFCFC
- .incbin "baserom.gba", 0x5dfcfc, 0x8
-
-gUnknown_085DFD04:: @ 85DFD04
- .incbin "baserom.gba", 0x5dfd04, 0x14
-
-gUnknown_085DFD18:: @ 85DFD18
- .incbin "baserom.gba", 0x5dfd18, 0x8
-
-gUnknown_085DFD20:: @ 85DFD20
- .incbin "baserom.gba", 0x5dfd20, 0x8
-
-gUnknown_085DFD28:: @ 85DFD28
- .incbin "baserom.gba", 0x5dfd28, 0x34
-
-gUnknown_085DFD5C:: @ 85DFD5C
- .incbin "baserom.gba", 0x5dfd5c, 0x44
-
-gUnknown_085DFDA0:: @ 85DFDA0
- .incbin "baserom.gba", 0x5dfda0, 0x18
-
-gUnknown_085DFDB8:: @ 85DFDB8
- .incbin "baserom.gba", 0x5dfdb8, 0x8
diff --git a/data/metatile_behavior.s b/data/rom_8486FEC.s
index ea19a3031..9b7834a32 100644
--- a/data/metatile_behavior.s
+++ b/data/rom_8486FEC.s
@@ -4,5 +4,5 @@
.section .rodata
.align 2, 0
-gUnknown_08486EFC:: @ 8486EFC
- .incbin "baserom.gba", 0x486efc, 0x10090
+gUnknown_8486FEC:: @ 8486FEC
+ .incbin "baserom.gba", 0x486fec, 0xFFA0
diff --git a/data/rom_8525F58.s b/data/rom_8525F58.s
new file mode 100644
index 000000000..1cee7112a
--- /dev/null
+++ b/data/rom_8525F58.s
@@ -0,0 +1,57 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+
+
+gUnknown_08525F58:: @ 8525F58
+ .byte 0x48, 0x50, 0x00, 0x00, 0xb0, 0x28, 0x00, 0x00
+ .byte 0x30, 0x28, 0x00, 0x00, 0x70, 0x50, 0x00, 0x00
+ .byte 0x20, 0x50, 0x00, 0x00, 0xc8, 0x28, 0x00, 0x00
+ .byte 0x5a, 0x58, 0x00, 0x00, 0x98, 0x20, 0x00, 0x00
+
+ .align 2
+gCastformFrontSpriteCoords:: @ 8525F78
+ .byte 0x44, 0x11, 0x00, 0x00, 0x66, 0x09, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00, 0x86, 0x08, 0x00, 0x00
+
+ .align 2
+gUnknown_08525F88:: @ 8525F88
+ .byte 0x0d, 0x0e, 0x0d, 0x0d
+
+ .align 2
+gUnknown_08525F8C:: @ 8525F8C
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_08525F90:: @ 8525F90
+ spr_template 0xd755, 0xd755, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ spr_template 0xd756, 0xd756, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
+ .align 2
+gUnknown_08525FC0:: @ 8525FC0
+ obj_tiles gMiscBlank_Gfx, 0x0800, 0xd755
+ obj_tiles gMiscBlank_Gfx, 0x0800, 0xd756
+
+ .align 2
+@ the mother of all baserom includes
+ .incbin "baserom.gba", 0x525fd0, 0x18f60
+
+ .align 2
+gUnknown_0853EF30:: @ 853EF30
+ .byte 0xf0, 0xf0, 0x0c, 0x80, 0xf0, 0x30, 0x0d, 0x84, 0x30, 0xf0, 0x0e, 0x86, 0x30, 0x30, 0x08, 0x88
+
+ .align 2
+gUnknown_0853EF40:: @ 853EF40
+ .4byte 0x00000004, gUnknown_0853EF30
+
+ .align 2
+gUnknown_0853EF48:: @ 853EF48
+ spr_template 0x271a, 0x271a, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
+ .align 2
+gUnknown_0853EF60:: @ 853EF60
+ spr_template 0x2798, 0x2798, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9E44
+
diff --git a/data/save_failed_screen.s b/data/save_failed_screen.s
deleted file mode 100644
index 446eee2d2..000000000
--- a/data/save_failed_screen.s
+++ /dev/null
@@ -1,28 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_085EFD80:: @ 85EFD80
- .incbin "baserom.gba", 0x5efd80, 0x8
-
-gUnknown_085EFD88:: @ 85EFD88
- .incbin "baserom.gba", 0x5efd88, 0xc
-
-gUnknown_085EFD94:: @ 85EFD94
- .incbin "baserom.gba", 0x5efd94, 0x8
-
-gUnknown_085EFD9C:: @ 85EFD9C
- .incbin "baserom.gba", 0x5efd9c, 0x8
-
-gUnknown_085EFDA4:: @ 85EFDA4
- .incbin "baserom.gba", 0x5efda4, 0x8
-
-gUnknown_085EFDAC:: @ 85EFDAC
- .incbin "baserom.gba", 0x5efdac, 0x18
-
-gUnknown_085EFDC4:: @ 85EFDC4
- .incbin "baserom.gba", 0x5efdc4, 0x20
-
-gUnknown_085EFDE4:: @ 85EFDE4
- .incbin "baserom.gba", 0x5efde4, 0x90
diff --git a/data/save_location.s b/data/save_location.s
deleted file mode 100644
index eabed7d86..000000000
--- a/data/save_location.s
+++ /dev/null
@@ -1,13 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_086143BC:: @ 86143BC
- .incbin "baserom.gba", 0x6143bc, 0x4e
-
-gUnknown_0861440A:: @ 861440A
- .incbin "baserom.gba", 0x61440a, 0x4
-
-gUnknown_0861440E:: @ 861440E
- .incbin "baserom.gba", 0x61440e, 0x2
diff --git a/data/scrcmd.s b/data/scrcmd.s
deleted file mode 100644
index dfa802684..000000000
--- a/data/scrcmd.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gNullScriptPtr:: @ 85102BC
- .incbin "baserom.gba", 0x5102bc, 0x4
-
-gUnknown_085102C0:: @ 85102C0
- .incbin "baserom.gba", 0x5102c0, 0x14
-
-gUnknown_085102D4:: @ 85102D4
- .incbin "baserom.gba", 0x5102d4, 0xc
diff --git a/data/smokescreen.s b/data/smokescreen.s
new file mode 100644
index 000000000..6f2478842
--- /dev/null
+++ b/data/smokescreen.s
@@ -0,0 +1,64 @@
+@ data used in battle_7.s and smokescreen.s, can't split because they're interleaved
+
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+gUnknown_0831C604:: @ 831C604
+ .byte 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x02, 0x00
+ .byte 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x02, 0x01
+ .byte 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01
+ .byte 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_0831C620:: @ 831C620
+ obj_tiles gUnknown_08C01644, 0x0180, 0xd6eb
+
+ .align 2
+gUnknown_0831C628:: @ 831C628
+ obj_pal gUnknown_08C01724, 0xd6eb
+
+ .align 2
+gUnknown_0831C630:: @ 831C630
+ .byte 0x00, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00
+
+ .align 2
+gUnknown_0831C638:: @ 831C638
+ .2byte 0x0000, 0x0004, 0x0004, 0x0004, 0x0008, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0831C648:: @ 831C648
+ .2byte 0x0000, 0x0044, 0x0004, 0x0044, 0x0008, 0x0044, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0831C658:: @ 831C658
+ .2byte 0x0000, 0x0084, 0x0004, 0x0084, 0x0008, 0x0084, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0831C668:: @ 831C668
+ .2byte 0x0000, 0x00c4, 0x0004, 0x00c4, 0x0008, 0x00c4, 0xffff, 0x0000
+
+ .align 2
+gUnknown_0831C678:: @ 831C678
+ .4byte gUnknown_0831C638
+ .4byte gUnknown_0831C648
+ .4byte gUnknown_0831C658
+ .4byte gUnknown_0831C668
+
+ .align 2
+gUnknown_0831C688:: @ 831C688
+ spr_template 0xd6eb, 0xd6eb, gUnknown_0831C630, gUnknown_0831C678, NULL, gDummySpriteAffineAnimTable, sub_80753B4
+
+ .align 2
+gUnknown_0831C6A0:: @ 831C6A0
+ obj_tiles gUnknown_08D8FBC0, 0x0080, 0xd759
+
+ .align 2
+gUnknown_0831C6A8:: @ 831C6A8
+ .byte 0x00, 0x40, 0x00, 0x40, 0x00, 0x0c, 0x00, 0x00
+
+ .align 2
+gUnknown_0831C6B0:: @ 831C6B0
+ spr_template 0xd759, 0xd6ff, gUnknown_0831C6A8, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_805EE48
diff --git a/data/specials.inc b/data/specials.inc
new file mode 100644
index 000000000..49f6b91a0
--- /dev/null
+++ b/data/specials.inc
@@ -0,0 +1,537 @@
+.macro def_special ptr
+.set SPECIAL_\ptr, __special__
+.set __special__, __special__ + 1
+ .4byte \ptr
+ .endm
+
+.set __special__, 0
+ .align 2
+gSpecials:: @ 81DBA64
+ def_special sp000_heal_pokemon
+ def_special sub_809D2BC
+ def_special sub_80AF948
+ def_special sub_80AF9F8
+ def_special sub_80B36EC
+ def_special sub_80B371C
+ def_special sub_80E8E18
+ def_special sub_80E8BC8
+ def_special sub_80E9068
+ def_special sub_80E9A90
+ def_special sub_80E9AC0
+ def_special sub_80E9744
+ def_special sub_80E9BDC
+ def_special sub_80E9C2C
+ def_special sub_80E9C74
+ def_special sub_80E9C88
+ def_special sub_80EA2E4
+ def_special sub_80EA354
+ def_special sub_80E933C
+ def_special sub_8127E18
+ def_special sub_81297AC
+ def_special sub_80E8C98
+ def_special sub_80E95D4
+ def_special sub_8129708
+ def_special sub_80E91F8
+ def_special sub_80EA30C
+ def_special sub_80FA57C
+ def_special sub_80E6BE8
+ def_special sub_80B2DA4
+ def_special sub_80B2E4C
+ def_special sub_80B2E74
+ def_special sub_80B2EA8
+ def_special sub_80097E8
+ def_special sub_80B3968
+ def_special sub_80B3924
+ def_special nullsub_37
+ def_special sub_80B3254
+ def_special sub_80B2FD8
+ def_special sub_8138240
+ def_special SpawnLinkPartnerFieldObject
+ def_special copy_player_party_to_sav1
+ def_special copy_player_party_from_sav1
+ def_special sub_80F9438
+ def_special sp02A_crash_sound
+ def_special FieldObjectInteractionGetBerryTreeData
+ def_special FieldObjectInteractionGetBerryName
+ def_special FieldObjectInteractionGetBerryCountString
+ def_special Bag_ChooseBerry
+ def_special FieldObjectInteractionPlantBerryTree
+ def_special FieldObjectInteractionPickBerryTree
+ def_special FieldObjectInteractionRemoveBerryTree
+ def_special FieldObjectInteractionWaterBerryTree
+ def_special PlayerHasBerries
+ def_special IsEnigmaBerryValid
+ def_special sub_80B170C
+ def_special sub_80B1A14
+ def_special special_trainer_unable_to_battle
+ def_special check_trainer_flag
+ def_special sub_80B45AC
+ def_special SetUpTrainerEncounterMusic
+ def_special sub_80B226C
+ def_special sub_80B22A0
+ def_special sub_80B19EC
+ def_special sub_80C7578
+ def_special sub_80F92F8
+ def_special TurnOffTVScreen
+ def_special DoTVShow
+ def_special DoPokeNews
+ def_special special_0x44
+ def_special special_0x45
+ def_special InterviewBefore
+ def_special InterviewAfter
+ def_special sub_80EF8F8
+ def_special SetContestCategoryStringVarForInterview
+ def_special special_0x4a
+ def_special TV_IsScriptShowKindAlreadyInQueue
+ def_special CheckForBigMovieOrEmergencyNewsOnTV
+ def_special GetMomOrDadStringForTVMessage
+ def_special ResetTVShowState
+ def_special sub_80F831C
+ def_special sub_80F84B0
+ def_special sub_80F8814
+ def_special sub_80F834C
+ def_special sub_80F8390
+ def_special sub_80F8850
+ def_special sub_80F82B4
+ def_special sub_80F87D8
+ def_special sub_80F7F30
+ def_special sub_80F8970
+ def_special sub_80F8AFC
+ def_special sub_80F82FC
+ def_special sub_80F7F7C
+ def_special sub_80F7FFC
+ def_special sub_80F8D24
+ def_special sub_80F8C7C
+ def_special sub_80B3000
+ def_special sub_809FF80
+ def_special sub_80FAFF8
+ def_special easy_chat_input_maybe
+ def_special sub_811EECC
+ def_special sub_81201DC
+ def_special sub_81201F4
+ def_special sub_8120210
+ def_special sub_8120358
+ def_special sub_8120374
+ def_special sub_812038C
+ def_special sub_8120340
+ def_special sub_8120B5C
+ def_special sub_81203FC
+ def_special sub_81203C4
+ def_special sub_81213B0
+ def_special sub_812139C
+ def_special sub_8121388
+ def_special sub_81213D8
+ def_special sub_8121450
+ def_special sub_8121424
+ def_special sub_8133EC0
+ def_special sub_8133CD8
+ def_special sub_8133CF4
+ def_special sub_8133D2C
+ def_special sub_8133D8C
+ def_special sub_8133E38
+ def_special GetSeedotSizeRecordInfo
+ def_special CompareSeedotSize
+ def_special GetLotadSizeRecordInfo
+ def_special CompareLotadSize
+ def_special TV_PutNameRaterShowOnTheAirIfNicnkameChanged
+ def_special TV_CopyNicknameToStringVar1AndEnsureTerminated
+ def_special TV_CheckMonOTIDEqualsPlayerID
+ def_special sub_8122998
+ def_special sub_81229C8
+ def_special sub_811EF6C
+ def_special sub_8122A30
+ def_special sub_80D6EDC
+ def_special CalculatePlayerPartyCount
+ def_special sub_80C7008
+ def_special sub_80C70AC
+ def_special sub_80F88E8
+ def_special sub_80F88DC
+ def_special sub_80F8864
+ def_special sub_80F8940
+ def_special ShowContestWinner
+ def_special sub_8138540
+ def_special sub_81384F0
+ def_special sub_8138AC0
+ def_special DrawWholeMapView
+ def_special sub_8138AD0
+ def_special sub_8138750
+ def_special sub_81388E4
+ def_special sub_8138AA4
+ def_special sub_8138AF0
+ def_special sub_8138B10
+ def_special sub_8138B48
+ def_special sub_8138BC8
+ def_special sub_8138B8C
+ def_special sub_814FC9C
+ def_special sub_8085784
+ def_special Special_StartWallClock
+ def_special Special_ViewWallClock
+ def_special sub_80B1138
+ def_special sub_80B086C
+ def_special ChangePokemonNickname
+ def_special sub_81B94B0
+ def_special sub_8136EF4
+ def_special sub_807FA80
+ def_special sub_8142BC8
+ def_special sub_813BD60
+ def_special sub_813BCA8
+ def_special sub_813BDB4
+ def_special sub_813BA30
+ def_special sub_813BCE8
+ def_special sub_813BF60
+ def_special sub_813BA60
+ def_special sub_813BF7C
+ def_special rock_smash_wild_pokemon_encounter
+ def_special GabbyAndTyGetBattleNum
+ def_special GabbyAndTyAfterInterview
+ def_special GabbyAndTyBeforeInterview
+ def_special DoTVShowInSearchOfTrainers
+ def_special IsTVShowInSearchOfTrainersAiring
+ def_special GabbyAndTyGetLastQuote
+ def_special GabbyAndTyGetLastBattleTrivia
+ def_special GabbyAndTySetScriptVarsToFieldObjectLocalIds
+ def_special sub_8138B80
+ def_special sp0B5_daycare
+ def_special sp0B6_daycare
+ def_special sub_8070728
+ def_special sp0B8_daycare
+ def_special sp0B9_daycare_relationship_comment
+ def_special sub_8070C58
+ def_special daycare_send_selected_pokemon
+ def_special sub_8071330
+ def_special sub_80712C0
+ def_special sub_806FF30
+ def_special sub_806FED8
+ def_special sub_806FDC4
+ def_special ScriptHatchMon
+ def_special EggHatch
+ def_special sub_8071614
+ def_special sub_813C4BC
+ def_special IsEnoughForCostInVar0x8005
+ def_special SubtractMoneyFromVar0x8005
+ def_special sub_80F972C
+ def_special sp0C8_whiteout_maybe
+ def_special sub_80FBE90
+ def_special sub_80FBED0
+ def_special sub_8137F90
+ def_special sub_8137FB0
+ def_special EnterSafariMode
+ def_special ExitSafariMode
+ def_special GetPokeblockFeederInFront
+ def_special sub_8135908
+ def_special sub_813793C
+ def_special sub_8137988
+ def_special sub_8137A0C
+ def_special sub_8137A4C
+ def_special sub_8137C10
+ def_special sp0D9_ComputerRelated
+ def_special sub_8138E20
+ def_special sub_8139994
+ def_special sub_8138EC0
+ def_special sub_8138FAC
+ def_special sub_81B951C
+ def_special sub_81B968C
+ def_special sub_81B9770
+ def_special sub_81B9718
+ def_special sub_81B96D0
+ def_special sub_8160638
+ def_special sub_8137EFC
+ def_special sub_8137D0C
+ def_special sp0E3_walkrun_bitfield_interpretation
+ def_special sub_8137E6C
+ def_special sub_8137F44
+ def_special sub_8138C04
+ def_special sub_81A1780
+ def_special sub_8161F74
+ def_special sub_818E9AC
+ def_special sub_8195960
+ def_special sub_8165360
+ def_special sub_8163AC4
+ def_special sub_81A5238
+ def_special sub_81A5E74
+ def_special sub_81A703C
+ def_special sub_81A8E7C
+ def_special StopMapMusic
+ def_special sub_81B99B4
+ def_special sub_81B9B80
+ def_special sub_81B9D08
+ def_special sub_80F9490
+ def_special sub_81652B4
+ def_special sub_8139228
+ def_special sub_80F94E8
+ def_special sub_816AE58
+ def_special sub_816AE98
+ def_special sub_8138C94
+ def_special sub_807E73C
+ def_special sub_807EA10
+ def_special sub_807F0E4
+ def_special sub_807E9D4
+ def_special sub_8138BDC
+ def_special RetrieveLotteryNumber
+ def_special PickLotteryCornerTicket
+ def_special ShowBerryBlenderRecordWindow
+ def_special sub_8138FEC
+ def_special sub_8138FD4
+ def_special sp109_CreatePCMenu
+ def_special sub_8137C28
+ def_special sub_8137CB4
+ def_special sub_8139004
+ def_special sub_8139030
+ def_special sub_813905C
+ def_special sub_8139088
+ def_special sub_81390B4
+ def_special sub_80FB7A4
+ def_special DoSoftReset
+ def_special sub_8137734
+ def_special sub_8139A78
+ def_special nullsub_55
+ def_special SpawnScriptFieldObject
+ def_special RemoveScriptFieldObject
+ def_special sub_81391D0
+ def_special sub_8139200
+ def_special CheckRelicanthWailord
+ def_special ShouldDoBrailleStrengthEffectOld
+ def_special sub_80B0534
+ def_special sub_80B058C
+ def_special sub_81379F8
+ def_special sub_8139238
+ def_special sub_8139248
+ def_special player_get_direction_lower_nybble
+ def_special sub_81392AC
+ def_special sub_81392D4
+ def_special sub_81392F8
+ def_special sub_8139320
+ def_special sub_8139348
+ def_special sub_8139370
+ def_special sub_81393C8
+ def_special sub_8098574
+ def_special sub_809859C
+ def_special InitRoamer
+ def_special sub_81393FC
+ def_special sub_81390E0
+ def_special sub_80AFC60
+ def_special sub_813946C
+ def_special sub_81394D8
+ def_special sub_80E980C
+ def_special sub_8139530
+ def_special DoSealedChamberShakingEffect1
+ def_special sub_8139B60
+ def_special sub_80FAC78
+ def_special sub_8139540
+ def_special sub_809E1C8
+ def_special sub_8139560
+ def_special sub_80B0A18
+ def_special sub_80B0934
+ def_special sub_80B0A74
+ def_special sub_80B16D8
+ def_special DoSealedChamberShakingEffect2
+ def_special sub_8139634
+ def_special sub_80AC81C
+ def_special sp13E_warp_to_last_warp
+ def_special sp13F_fall_to_last_warp
+ def_special sub_80F8D28
+ def_special sub_80F8EB8
+ def_special sub_8162794
+ def_special sub_80B08EC
+ def_special sub_8139648
+ def_special sub_8139668
+ def_special sub_80F8FA0
+ def_special sub_81396E0
+ def_special sub_81B98DC
+ def_special nullsub_54
+ def_special sub_80E9B70
+ def_special copy_bags_and_unk_data_from_save_blocks
+ def_special sub_80B05B4
+ def_special sub_8139754
+ def_special sub_813970C
+ def_special sub_80C08E4
+ def_special sub_8139770
+ def_special sub_81397C4
+ def_special sub_81653CC
+ def_special sub_80F9370
+ def_special sub_80F8FE8
+ def_special sub_81AFDD0
+ def_special sub_80EDCE8
+ def_special sub_80EE2CC
+ def_special sub_80EE72C
+ def_special sub_80EE7C0
+ def_special nullsub_55
+ def_special PutFanClubSpecialOnTheAir
+ def_special sub_80EED10
+ def_special sub_80EED34
+ def_special sub_80EB1AC
+ def_special sub_80EBE7C
+ def_special sub_80EB300
+ def_special sub_80EB438
+ def_special sub_80EB368
+ def_special sub_80EB3D0
+ def_special sub_80EB290
+ def_special sub_80EB2C8
+ def_special sub_80EB56C
+ def_special sub_80EB9E0
+ def_special sub_80EBB28
+ def_special sub_80EB498
+ def_special sub_818D9C0
+ def_special sub_818DAEC
+ def_special sub_818DBE8
+ def_special sub_818DC2C
+ def_special sub_818DC60
+ def_special sub_818DCC8
+ def_special sub_818DD14
+ def_special sub_818DD54
+ def_special sub_818DD78
+ def_special sub_818DE44
+ def_special sub_818DE5C
+ def_special sub_818DEA0
+ def_special sub_818DEDC
+ def_special sub_818E038
+ def_special sub_818E06C
+ def_special sub_818E2D8
+ def_special sub_811A858
+ def_special sub_818E2FC
+ def_special sub_818E308
+ def_special sub_818E358
+ def_special sub_818E37C
+ def_special sub_818E298
+ def_special sub_818E39C
+ def_special sub_818E3BC
+ def_special sub_818E3E0
+ def_special sub_818E430
+ def_special sub_818E47C
+ def_special sub_818E490
+ def_special sub_813986C
+ def_special sub_818E4A4
+ def_special sub_818E510
+ def_special sub_818E538
+ def_special sub_818E274
+ def_special sub_818E3EC
+ def_special sub_818E8E0
+ def_special sub_818E8B4
+ def_special sub_818E914
+ def_special sub_818E92C
+ def_special sub_818E940
+ def_special sub_818E960
+ def_special sub_818E990
+ def_special PutLilycoveContestLadyShowOnTheAir
+ def_special sub_813B880
+ def_special sub_81A085C
+ def_special CheckIfMultipleTrainersWantBattle
+ def_special AddMapNamePopUpWindowTask
+ def_special AddMapNamePopUpWindowTask
+ def_special sub_81BE994
+ def_special sub_81BE79C
+ def_special sub_81BE7F4
+ def_special sub_81398C0
+ def_special sub_80093CC
+ def_special BerryBlenderLinkBecomeLeader
+ def_special BerryBlenderLinkJoinGroup
+ def_special UnionRoomSpecial
+ def_special sub_801A42C
+ def_special sub_8016934
+ def_special sp182_move_string
+ def_special sub_801DC20
+ def_special sub_81B8958
+ def_special sub_8018090
+ def_special sub_813990C
+ def_special sub_801B27C
+ def_special HasAtLeastOneBerry
+ def_special sub_802C920
+ def_special sub_802E3C4
+ def_special sub_8027A5C
+ def_special sub_8027AAC
+ def_special sub_8139980
+ def_special sub_81399F4
+ def_special sub_8139D98
+ def_special sub_80F905C
+ def_special sub_800B518
+ def_special sub_80F90DC
+ def_special sub_80F910C
+ def_special sub_80F9160
+ def_special sub_81A4AA0
+ def_special sub_81A4AE8
+ def_special sub_8139F20
+ def_special sub_80F9134
+ def_special sub_80F9154
+ def_special sub_80B3028
+ def_special sub_813A128
+ def_special sub_813A630
+ def_special sub_813A080
+ def_special sub_81C6A94
+ def_special sub_81C4F24
+ def_special sub_81B95E0
+ def_special sub_81B9620
+ def_special sub_813A76C
+ def_special sub_813A7B8
+ def_special sub_813A958
+ def_special sub_813A8FC
+ def_special sub_813A988
+ def_special sub_813A9D0
+ def_special sub_813A9A4
+ def_special sub_813AA04
+ def_special sub_813AA18
+ def_special sub_813AA44
+ def_special sub_80248B0
+ def_special sub_8024918
+ def_special sub_80246D4
+ def_special sub_802477C
+ def_special sub_802488C
+ def_special sub_813A820
+ def_special sub_813A854
+ def_special sub_813B7D8
+ def_special sub_81C72A4
+ def_special sp106_CreateStartMenu
+ def_special sub_80C2E40
+ def_special sub_813AC7C
+ def_special sub_813ADB8
+ def_special sub_813ADD4
+ def_special sub_81B892C
+ def_special sub_813AEB4
+ def_special sub_813AF48
+ def_special sub_813AFC8
+ def_special sub_813B1D0
+ def_special DoScriptedWildBattle
+ def_special sub_81BEB54
+ def_special sub_81BEB68
+ def_special sub_81BEB7C
+ def_special ChangeBoxPokemonNickname
+ def_special get_unknown_box_id
+ def_special sub_813B21C
+ def_special sub_81D1C20
+ def_special sub_8175280
+ def_special sub_813B2E4
+ def_special sub_813B374
+ def_special sub_813B490
+ def_special sub_80A08CC
+ def_special sub_813B484
+ def_special sub_81AFDA0
+ def_special sub_813B4E0
+ def_special ShouldDoBrailleRegicePuzzle
+ def_special EnableNationalPokedex
+ def_special sub_80E2548
+ def_special sub_80E2878
+ def_special TurnOnTVScreen
+ def_special sub_81D4A90
+ def_special sub_813B514
+ def_special sub_813B568
+ def_special sub_813B534
+ def_special sp194_trainer_tower
+ def_special sub_813B7D8
+ def_special sub_813B80C
+ def_special sub_81D4BEC
+ def_special sub_80224D0
+ def_special TryBufferWaldaPhrase
+ def_special DoWaldaNamingScreen
+ def_special TryGetWallpaperWithWaldaPhrase
+ def_special sub_8139ED0
+ def_special sub_813B968
+ def_special sub_80F8B94
+ def_special sub_813C904
+ def_special sub_80B4808
+ def_special sub_813B9A0
+ def_special sub_81B9918
+ def_special sub_80722E0
+ def_special sub_80B45D0
+ def_special sub_813C5A0
+ def_special sub_8139C10
+ def_special sub_80B3BC4
+
diff --git a/data/start_menu.s b/data/start_menu.s
index eaba0b8e1..07e428d0d 100644
--- a/data/start_menu.s
+++ b/data/start_menu.s
@@ -26,4 +26,4 @@ gUnknown_085105AC:: @ 85105AC
.incbin "baserom.gba", 0x5105ac, 0x10
gUnknown_085105BC:: @ 85105BC
- .incbin "baserom.gba", 0x5105bc, 0x1a8
+ .incbin "baserom.gba", 0x5105bc, 0x8
diff --git a/data/strings.s b/data/strings.s
index bfe642915..2b88c6d03 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -165,130 +165,130 @@ gText_PickCancel:: @ 85E8574
gText_UnkCtrlF800Exit:: @ 85E8588
.string "{UNK_CTRL_F800}EXIT$"
-gUnknown_085E858F:: @ 85E858F
+gText_BirchBoy:: @ 85E858F
.string "BOY$"
-gUnknown_085E8593:: @ 85E8593
+gText_BirchGirl:: @ 85E8593
.string "GIRL$"
-gUnknown_085E8598:: @ 85E8598
+gText_DefaultNameStu:: @ 85E8598
.string "STU$"
-gUnknown_085E859C:: @ 85E859C
+gText_DefaultNameMilton:: @ 85E859C
.string "MILTON$"
-gUnknown_085E85A3:: @ 85E85A3
+gText_DefaultNameTom:: @ 85E85A3
.string "TOM$"
-gUnknown_085E85A7:: @ 85E85A7
+gText_DefaultNameKenny:: @ 85E85A7
.string "KENNY$"
-gUnknown_085E85AD:: @ 85E85AD
+gText_DefaultNameReid:: @ 85E85AD
.string "REID$"
-gUnknown_085E85B2:: @ 85E85B2
+gText_DefaultNameJude:: @ 85E85B2
.string "JUDE$"
-gUnknown_085E85B7:: @ 85E85B7
+gText_DefaultNameJaxson:: @ 85E85B7
.string "JAXSON$"
-gUnknown_085E85BE:: @ 85E85BE
+gText_DefaultNameEaston:: @ 85E85BE
.string "EASTON$"
-gUnknown_085E85C5:: @ 85E85C5
+gText_DefaultNameWalker:: @ 85E85C5
.string "WALKER$"
-gUnknown_085E85CC:: @ 85E85CC
+gText_DefaultNameTeru:: @ 85E85CC
.string "TERU$"
-gUnknown_085E85D1:: @ 85E85D1
+gText_DefaultNameJohnny:: @ 85E85D1
.string "JOHNNY$"
-gUnknown_085E85D8:: @ 85E85D8
+gText_DefaultNameBrett:: @ 85E85D8
.string "BRETT$"
-gUnknown_085E85DE:: @ 85E85DE
+gText_DefaultNameSeth:: @ 85E85DE
.string "SETH$"
-gUnknown_085E85E3:: @ 85E85E3
+gText_DefaultNameTerry:: @ 85E85E3
.string "TERRY$"
-gUnknown_085E85E9:: @ 85E85E9
+gText_DefaultNameCasey:: @ 85E85E9
.string "CASEY$"
-gUnknown_085E85EF:: @ 85E85EF
+gText_DefaultNameDarren:: @ 85E85EF
.string "DARREN$"
-gUnknown_085E85F6:: @ 85E85F6
+gText_DefaultNameLandon:: @ 85E85F6
.string "LANDON$"
-gUnknown_085E85FD:: @ 85E85FD
+gText_DefaultNameCollin:: @ 85E85FD
.string "COLLIN$"
-gUnknown_085E8604:: @ 85E8604
+gText_DefaultNameStanley:: @ 85E8604
.string "STANLEY$"
-gUnknown_085E860C:: @ 85E860C
+gText_DefaultNameQuincy:: @ 85E860C
.string "QUINCY$"
-gUnknown_085E8613:: @ 85E8613
+gText_DefaultNameKimmy:: @ 85E8613
.string "KIMMY$"
-gUnknown_085E8619:: @ 85E8619
+gText_DefaultNameTiara:: @ 85E8619
.string "TIARA$"
-gUnknown_085E861F:: @ 85E861F
+gText_DefaultNameBella:: @ 85E861F
.string "BELLA$"
-gUnknown_085E8625:: @ 85E8625
+gText_DefaultNameJayla:: @ 85E8625
.string "JAYLA$"
-gUnknown_085E862B:: @ 85E862B
+gText_DefaultNameAllie:: @ 85E862B
.string "ALLIE$"
-gUnknown_085E8631:: @ 85E8631
+gText_DefaultNameLianna:: @ 85E8631
.string "LIANNA$"
-gUnknown_085E8638:: @ 85E8638
+gText_DefaultNameSara:: @ 85E8638
.string "SARA$"
-gUnknown_085E863D:: @ 85E863D
+gText_DefaultNameMonica:: @ 85E863D
.string "MONICA$"
-gUnknown_085E8644:: @ 85E8644
+gText_DefaultNameCamila:: @ 85E8644
.string "CAMILA$"
-gUnknown_085E864B:: @ 85E864B
+gText_DefaultNameAubree:: @ 85E864B
.string "AUBREE$"
-gUnknown_085E8652:: @ 85E8652
+gText_DefaultNameRuthie:: @ 85E8652
.string "RUTHIE$"
-gUnknown_085E8659:: @ 85E8659
+gText_DefaultNameHazel:: @ 85E8659
.string "HAZEL$"
-gUnknown_085E865F:: @ 85E865F
+gText_DefaultNameNadine:: @ 85E865F
.string "NADINE$"
-gUnknown_085E8666:: @ 85E8666
+gText_DefaultNameTanja:: @ 85E8666
.string "TANJA$"
-gUnknown_085E866C:: @ 85E866C
+gText_DefaultNameYasmin:: @ 85E866C
.string "YASMIN$"
-gUnknown_085E8673:: @ 85E8673
+gText_DefaultNameNicola:: @ 85E8673
.string "NICOLA$"
-gUnknown_085E867A:: @ 85E867A
+gText_DefaultNameLillie:: @ 85E867A
.string "LILLIE$"
-gUnknown_085E8681:: @ 85E8681
+gText_DefaultNameTerra:: @ 85E8681
.string "TERRA$"
-gUnknown_085E8687:: @ 85E8687
+gText_DefaultNameLucy:: @ 85E8687
.string "LUCY$"
-gUnknown_085E868C:: @ 85E868C
+gText_DefaultNameHalie:: @ 85E868C
.string "HALIE$"
gText_ThisIsAPokemon:: @ 85E8692
@@ -824,7 +824,6 @@ gText_FirmSlash:: @ 85E922C
gText_Var1DotVar2:: @ 85E9233
.string "{STR_VAR_1}.{STR_VAR_2}”$"
-
.include "data/text/berry_firmness_strings.inc"
gText_UnkF908Var1Var2:: @ 85E9263
@@ -833,7 +832,6 @@ gText_UnkF908Var1Var2:: @ 85E9263
gText_BerryTag:: @ 85E926B
.string "BERRY TAG$"
-
gUnknown_085E9275:: @ 85E9275
.string "RED {POKEBLOCK}$"
@@ -891,7 +889,6 @@ gText_Bitter:: @ 85E932D
gText_Sour:: @ 85E9334
.string "SOUR$"
-
gUnknown_085E9339:: @ 85E9339
.string "TASTY$"
@@ -919,7 +916,6 @@ gText_Var1HappilyAteVar2:: @ 85E9390
gText_Var1DisdainfullyAteVar2:: @ 85E93A9
.string "{STR_VAR_1} disdainfully ate the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
-
gUnknown_085E93C7:: @ 85E93C7
.string "BUY$"
@@ -992,7 +988,6 @@ gText_TurnedOverVar1ForVar2:: @ 85E9677
gText_PokedollarVar1:: @ 85E969C
.string "¥{STR_VAR_1}$"
-
gUnknown_085E96A0:: @ 85E96A0
.string "SHIFT$"
@@ -1149,7 +1144,6 @@ gText_PkmnThawedOut:: @ 85E9CA2
gText_PPWasRestored:: @ 85E9CB7
.string "PP was restored.{PAUSE_UNTIL_PRESS}$"
-
gUnknown_085E9CCA:: @ 85E9CCA
.string "{STR_VAR_1} regained health.{PAUSE_UNTIL_PRESS}$"
@@ -1186,7 +1180,6 @@ gText_ThrowAwayItem:: @ 85E9E00
gText_ItemThrownAway:: @ 85E9E14
.string "The {STR_VAR_1}\nwas thrown away.{PAUSE_UNTIL_PRESS}$"
-
gUnknown_085E9E2E:: @ 85E9E2E
.string "Teach which POKéMON?$"
@@ -1392,7 +1385,6 @@ gText_Speed2:: @ 85EA35B
gText_HP4:: @ 85EA361
.string "HP$"
-
gUnknown_085EA364:: @ 85EA364
.string "$"
@@ -1432,7 +1424,6 @@ gText_RibbonsVar1:: @ 85EA3B4
gText_EmptyString5:: @ 85EA3C0
.string "$"
-
gUnknown_085EA3C1:: @ 85EA3C1
.string "EVENTS$"
@@ -1520,61 +1511,58 @@ gText_RegisteredDataDeleted:: @ 85EA762
gText_NoRegistry:: @ 85EA785
.string "There is no REGISTRY.{PAUSE_UNTIL_PRESS}$"
-
gUnknown_085EA79D:: @ 85EA79D
.string "DEL REGIST.$"
gUnknown_085EA7A9:: @ 85EA7A9
.string "{STR_VAR_3}{STR_VAR_1}/{STR_VAR_2}$"
-gUnknown_085EA7B1:: @ 85EA7B1
+gText_Decorate:: @ 85EA7B1
.string "DECORATE$"
-gUnknown_085EA7BA:: @ 85EA7BA
+gText_PutAway:: @ 85EA7BA
.string "PUT AWAY$"
-gUnknown_085EA7C3:: @ 85EA7C3
+gText_Toss2:: @ 85EA7C3
.string "TOSS$"
gText_Color161Shadow161:: @ 85EA7C8
.string "{COLOR 161}{SHADOW 161}$"
-
-gUnknown_085EA7CF:: @ 85EA7CF
+gText_PutOutSelectedDecorItem:: @ 85EA7CF
.string "Put out the selected decoration item.$"
-gUnknown_085EA7F5:: @ 85EA7F5
+gText_StoreChosenDecorInPC:: @ 85EA7F5
.string "Store the chosen decoration in the PC.$"
-gUnknown_085EA81C:: @ 85EA81C
+gText_ThrowAwayUnwantedDecors:: @ 85EA81C
.string "Throw away unwanted decorations.$"
gText_NoDecorations:: @ 85EA83D
.string "There are no decorations.{PAUSE_UNTIL_PRESS}$"
-
-gUnknown_085EA859:: @ 85EA859
+gText_Desk:: @ 85EA859
.string "DESK$"
-gUnknown_085EA85E:: @ 85EA85E
+gText_Chair:: @ 85EA85E
.string "CHAIR$"
-gUnknown_085EA864:: @ 85EA864
+gText_Plant:: @ 85EA864
.string "PLANT$"
-gUnknown_085EA86A:: @ 85EA86A
+gText_Ornament:: @ 85EA86A
.string "ORNAMENT$"
-gUnknown_085EA873:: @ 85EA873
+gText_Mat:: @ 85EA873
.string "MAT$"
-gUnknown_085EA877:: @ 85EA877
+gText_Poster:: @ 85EA877
.string "POSTER$"
-gUnknown_085EA87E:: @ 85EA87E
+gText_Doll:: @ 85EA87E
.string "DOLL$"
-gUnknown_085EA883:: @ 85EA883
+gText_Cushion:: @ 85EA883
.string "CUSHION$"
gText_Gold:: @ 85EA88B
@@ -1601,7 +1589,6 @@ gText_NoMoreDecorations:: @ 85EA8EA
gText_NoMoreDecorations2:: @ 85EA931
.string "No more decorations can be placed.\nThe most that can be placed are {STR_VAR_1}.$"
-
gUnknown_085EA978:: @ 85EA978
.string "This can’t be placed here.\nIt must be on a DESK, etc.$"
@@ -1632,7 +1619,6 @@ gText_DecorationReturnedToPC:: @ 85EAAC5
gText_NoDecorationsInUse:: @ 85EAAEC
.string "There are no decorations in use.{PAUSE_UNTIL_PRESS}$"
-
gUnknown_085EAB0F:: @ 85EAB0F
.string "TRISTAN$"
@@ -1645,20 +1631,19 @@ gUnknown_085EAB1E:: @ 85EAB1E
gUnknown_085EAB25:: @ 85EAB25
.string "ROBERTO$"
-gUnknown_085EAB2D:: @ 85EAB2D
+gText_TurnOff:: @ 85EAB2D
.string "TURN OFF$"
-gUnknown_085EAB36:: @ 85EAB36
+gText_Decoration:: @ 85EAB36
.string "DECORATION$"
-gUnknown_085EAB41:: @ 85EAB41
+gText_ItemStorage:: @ 85EAB41
.string "ITEM STORAGE$"
gText_Mailbox:: @ 85EAB4E
.string "MAILBOX$"
-
-gUnknown_085EAB56:: @ 85EAB56
+gText_DepositItem:: @ 85EAB56
.string "DEPOSIT ITEM$"
gText_WithdrawItem:: @ 85EAB63
@@ -1667,14 +1652,13 @@ gText_WithdrawItem:: @ 85EAB63
gText_TossItem:: @ 85EAB71
.string "TOSS ITEM$"
-
-gUnknown_085EAB7B:: @ 85EAB7B
+gText_StoreItemsInPC:: @ 85EAB7B
.string "Store items in the PC.$"
-gUnknown_085EAB92:: @ 85EAB92
+gText_TakeOutItemsFromPC:: @ 85EAB92
.string "Take out items from the PC.$"
-gUnknown_085EABAE:: @ 85EABAE
+gText_ThrowAwayItemsInPC:: @ 85EABAE
.string "Throw away items stored in the PC.$"
gText_NoItems:: @ 85EABD1
@@ -1689,14 +1673,13 @@ gText_WithdrawHowManyItems:: @ 85EAC09
gText_WithdrawXItems:: @ 85EAC22
.string "Withdrew {STR_VAR_2}\n{STR_VAR_1}(s).$"
-
-gUnknown_085EAC35:: @ 85EAC35
+gText_Read:: @ 85EAC35
.string "READ$"
-gUnknown_085EAC3A:: @ 85EAC3A
+gText_MoveToBag:: @ 85EAC3A
.string "MOVE TO BAG$"
-gUnknown_085EAC46:: @ 85EAC46
+gText_Give2:: @ 85EAC46
.string "GIVE$"
gText_NoMailHere:: @ 85EAC4B
@@ -1738,7 +1721,6 @@ gText_Phoebe:: @ 85EAD29
gText_Glacia:: @ 85EAD30
.string "GLACIA$"
-
gUnknown_085EAD37:: @ 85EAD37
.string "PETALBURG$"
@@ -1844,7 +1826,6 @@ gText_Yes:: @ 85EAE62
gText_No:: @ 85EAE66
.string "NO$"
-
gUnknown_085EAE69:: @ 85EAE69
.string "INFO$"
@@ -1872,7 +1853,6 @@ gText_Lv50:: @ 85EAEB1
gText_OpenLevel:: @ 85EAEB8
.string "OPEN LEVEL$"
-
gUnknown_085EAEC3:: @ 85EAEC3
.string "FRESH WATER{CLEAR_TO 0x48}¥200$"
@@ -2005,7 +1985,6 @@ gText_Smart:: @ 85EB0F9
gText_Tough:: @ 85EB0FF
.string "TOUGH$"
-
gUnknown_085EB105:: @ 85EB105
.string "NORMAL$"
@@ -2063,7 +2042,6 @@ gText_HallOfFame:: @ 85EB18B
gText_LogOff:: @ 85EB198
.string "LOG OFF$"
-
gUnknown_085EB1A0:: @ 85EB1A0
.string "OPPONENT$"
@@ -2130,7 +2108,6 @@ gText_MenuOptionBag:: @ 85EB26C
gText_MenuOptionPokenav:: @ 85EB270
.string "POKéNAV$"
-
gUnknown_085EB278:: @ 85EB278
.string "$"
@@ -2371,7 +2348,6 @@ gText_SpaceSeconds:: @ 85EB5E5
gText_SpaceTimes:: @ 85EB5EE
.string " time(s)$"
-
gUnknown_085EB5F7:: @ 85EB5F7
.string ".$"
@@ -2387,7 +2363,6 @@ gText_Son:: @ 85EB60A
gText_Daughter:: @ 85EB60E
.string "daughter$"
-
gUnknown_085EB617:: @ 85EB617
.string "BLUE FLUTE$"
@@ -2463,7 +2438,6 @@ gText_ElevatorNowOn:: @ 85EB6A5
gText_BP:: @ 85EB6AD
.string "BP$"
-
gUnknown_085EB6B0:: @ 85EB6B0
.string "ENERGYPOWDER{CLEAR_TO 0x72}{SIZE 0}50$"
@@ -2524,7 +2498,6 @@ gUnknown_085EB7DB:: @ 85EB7DB
gText_Exit:: @ 85EB7EA
.string "EXIT$"
-
gUnknown_085EB7EF:: @ 85EB7EF
.string "Exit from the BOX?$"
@@ -2771,7 +2744,6 @@ gText_PartyFull:: @ 85EBCAD
gText_Box:: @ 85EBCC1
.string "BOX$"
-
gUnknown_085EBCC5:: @ 85EBCC5
.string "Check the map of the HOENN region.$"
@@ -2790,7 +2762,6 @@ gUnknown_085EBD34:: @ 85EBD34
gText_NoRibbonWinners:: @ 85EBD4A
.string "There are no RIBBON winners.$"
-
gUnknown_085EBD67:: @ 85EBD67
.string "No TRAINERS are registered.$"
@@ -2827,7 +2798,6 @@ gText_NumberRegistered:: @ 85EBE5F
gText_NumberOfBattles:: @ 85EBE6E
.string "No. of battles$"
-
gUnknown_085EBE7D:: @ 85EBE7D
.string "DETAIL$"
@@ -2897,7 +2867,6 @@ gText_InParty:: @ 85EBFCE
gText_Number2:: @ 85EBFD7
.string "No. $"
-
gUnknown_085EBFDC:: @ 85EBFDC
.string "RIBBONS$"
@@ -2913,7 +2882,6 @@ gUnknown_085EC008:: @ 85EC008
gText_Unknown:: @ 85EC00F
.string "UNKNOWN$"
-
gUnknown_085EC017:: @ 85EC017
.string "CALL$"
@@ -2929,7 +2897,6 @@ gText_NumberF700:: @ 85EC029
gText_RibbonsF700:: @ 85EC030
.string "RIBBONS {SPECIAL_F7 0x00}$"
-
gUnknown_085EC03B:: @ 85EC03B
.string "{SPECIAL_F7 0x00}{COLOR_HIGHLIGHT_SHADOW LIGHT_RED WHITE GREEN}♂{COLOR_HIGHLIGHT_SHADOW DARK_GREY WHITE LIGHT_GREY}/{LV}{SPECIAL_F7 0x01}{SPECIAL_F7 0x02}$"
@@ -3053,7 +3020,6 @@ gText_QuitEditing:: @ 85EC3A6
gText_StopGivingPkmnMail:: @ 85EC3B4
.string "Stop giving the POKéMON MAIL?$"
-
gUnknown_085EC3D2:: @ 85EC3D2
.string "and fill out the questionnaire.$"
@@ -3066,7 +3032,6 @@ gText_AllTextBeingEditedWill:: @ 85EC410
gText_BeDeletedThatOkay:: @ 85EC42F
.string "be deleted. Is that okay?$"
-
gUnknown_085EC449:: @ 85EC449
.string "Quit editing?$"
@@ -3088,14 +3053,12 @@ gText_OnlyOnePhrase:: @ 85EC4C9
gText_OriginalSongWillBeUsed:: @ 85EC4E9
.string "The original song will be used.$"
-
gUnknown_085EC509:: @ 85EC509
.string "That’s trendy already!$"
gText_CombineTwoWordsOrPhrases:: @ 85EC520
.string "Combine two words or phrases.$"
-
gUnknown_085EC53E:: @ 85EC53E
.string "Quit giving information?$"
@@ -3159,7 +3122,6 @@ gText_F700sQuiz:: @ 85EC6A8
gText_Lady:: @ 85EC6B2
.string "Lady$"
-
gUnknown_085EC6B7:: @ 85EC6B7
.string "After you have read the quiz$"
@@ -3175,7 +3137,6 @@ gText_LikeToQuitQuiz:: @ 85EC706
gText_ChallengeQuestionMark:: @ 85EC727
.string "challenge?$"
-
gUnknown_085EC732:: @ 85EC732
.string "Is this quiz OK?$"
@@ -3188,7 +3149,6 @@ gText_SelectTheAnswer:: @ 85EC752
gText_LyricsCantBeDeleted:: @ 85EC765
.string "The lyrics can’t be deleted.$"
-
gUnknown_085EC782:: @ 85EC782
.string "POKéMON LEAGUE$"
@@ -3198,7 +3158,6 @@ gUnknown_085EC791:: @ 85EC791
gText_GetsAPokeBlockQuestion:: @ 85EC7A0
.string " gets a {POKEBLOCK}?$"
-
gUnknown_085EC7AF:: @ 85EC7AF
.string "Coolness $"
@@ -3334,7 +3293,6 @@ gText_Second:: @ 85ECB80
gText_Third:: @ 85ECB87
.string "third$"
-
gUnknown_085ECB8D:: @ 85ECB8D
.string "0 pts$"
@@ -3536,7 +3494,6 @@ gText_TrainerCardIDNo:: @ 85ECF78
gText_TrainerCardMoney:: @ 85ECF7E
.string "MONEY$"
-
gUnknown_085ECF84:: @ 85ECF84
.string "¥$"
@@ -3549,14 +3506,12 @@ gText_EmptyString6:: @ 85ECF8E
gText_Colon2:: @ 85ECF8F
.string ":$"
-
gUnknown_085ECF91:: @ 85ECF91
.string " points$"
gText_TrainerCardTime:: @ 85ECF99
.string "TIME$"
-
gUnknown_085ECF9E:: @ 85ECF9E
.string "ゲ-ムポイント$" @ "geemupointo" ("game point" in Japanese)
@@ -3566,7 +3521,6 @@ gText_Var1sTrainerCard:: @ 85ECFA6
gText_HallOfFameDebut:: @ 85ECFB8
.string "HALL OF FAME DEBUT $"
-
gUnknown_085ECFCD:: @ 85ECFCD
.string "LINK BATTLES$"
@@ -3609,7 +3563,6 @@ gText_BattleTower:: @ 85ED0D3
gText_WSlashStraightSlash:: @ 85ED0E0
.string "W/{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_1}{COLOR DARK_GREY}{SHADOW LIGHT_GREY} STRAIGHT/{COLOR RED}{SHADOW LIGHT_RED}{STR_VAR_2}$"
-
gUnknown_085ED104:: @ 85ED104
.string "BATTLE TOWER$"
@@ -3695,14 +3648,12 @@ gText_CommunicationStandby:: @ 85ED207
gText_ColorDarkGrey:: @ 85ED21E
.string "{COLOR DARK_GREY}$"
-
gUnknown_085ED222:: @ 85ED222
.string "{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR6 WHITE DYNAMIC_COLOR5}$"
gText_HighlightDarkGrey:: @ 85ED228
.string "{HIGHLIGHT DARK_GREY}$"
-
gUnknown_085ED22C:: @ 85ED22C
.string " $"
@@ -3751,7 +3702,6 @@ gText_F700JoinedChat:: @ 85ED2A9
gText_F700LeftChat:: @ 85ED2BD
.string "{SPECIAL_F7 0x00} left the chat.$"
-
gUnknown_085ED2CF:: @ 85ED2CF
.string "{SPECIAL_F7 0x00}の{SPECIAL_F7 0x01}ひきめ:$" @ "{SPECIAL_F7 0x00}'s {SPECIAL_F7 0x01}hikime"
@@ -3809,7 +3759,6 @@ gText_ThankYou:: @ 85ED440
gText_ByeBye:: @ 85ED44A
.string "BYE-BYE!$"
-
gUnknown_085ED453:: @ 85ED453
.string "Attack the weak points!$"
@@ -3992,7 +3941,6 @@ gText_BattleRecord:: @ 85ED90E
gText_BattlePoints:: @ 85ED91C
.string "Battle Points$"
-
gUnknown_085ED92A:: @ 85ED92A
.string "CANCEL$"
@@ -4212,7 +4160,6 @@ gText_4th:: @ 85EDFAC
gText_Friend:: @ 85EDFB0
.string "Friend$"
-
gUnknown_085EDFB7:: @ 85EDFB7
.string "POKeMON$"
@@ -4397,7 +4344,6 @@ gUnknown_085EE410:: @ 85EE410
gText_1Dot:: @ 85EE424
.string "1.$"
-
gUnknown_085EE427:: @ 85EE427
.string "2.$"
@@ -4440,7 +4386,6 @@ gText_ABtnTitleScreen:: @ 85EE572
gText_Option:: @ 85EE589
.string "OPTION$"
-
gUnknown_085EE590:: @ 85EE590
.string "TEXT SPEED$"
@@ -4507,17 +4452,16 @@ gText_ButtonTypeLEqualsA:: @ 85EE65D
gText_XPLink:: @ 85EE667
.string "{STR_VAR_1}P LINK$"
-
-gUnknown_085EE670:: @ 85EE670
+gText_BronzeCard:: @ 85EE670
.string "BRONZE$"
-gUnknown_085EE677:: @ 85EE677
+gText_CopperCard:: @ 85EE677
.string "COPPER$"
-gUnknown_085EE67E:: @ 85EE67E
+gText_SilverCard:: @ 85EE67E
.string "SILVER$"
-gUnknown_085EE685:: @ 85EE685
+gText_GoldCard:: @ 85EE685
.string "GOLD$"
gText_Day:: @ 85EE68A
@@ -4529,7 +4473,6 @@ gText_Colon3:: @ 85EE68E
gText_Confirm2:: @ 85EE690
.string "CONFIRM$"
-
gUnknown_085EE698:: @ 85EE698
.string "Days$"
@@ -4581,7 +4524,6 @@ gText_SafariBallStock:: @ 85EE6FF
gText_BattlePyramidFloor:: @ 85EE716
.string "Battle Pyramid\n{STR_VAR_1}$"
-
gUnknown_085EE728:: @ 85EE728
.string "Floor 1$"
@@ -4624,7 +4566,6 @@ gText_EventSafelyLoaded:: @ 85EE80A
gText_LoadErrorEndingSession:: @ 85EE827
.string "Loading error.\nEnding session.$"
-
gUnknown_085EE846:: @ 85EE846
.string "プレイヤー$" @ "pureiyaa" ("player" in Japanese)
@@ -4640,7 +4581,6 @@ gText_DexNational:: @ 85EE855
gText_PokedexDiploma:: @ 85EE85E
.string "PLAYER: {CLEAR 0x10}{COLOR RED}{SHADOW LIGHT_RED}{PLAYER}{COLOR DARK_GREY}{SHADOW LIGHT_GREY}\n\nThis document certifies\nthat you have successfully\ncompleted your\n{STR_VAR_1} POKéDEX.\n\n{CLEAR_TO 0x42}{COLOR RED}{SHADOW LIGHT_RED}GAME FREAK$"
-
gUnknown_085EE8DC:: @ 85EE8DC
.string "{COLOR RED}{SHADOW LIGHT_RED}ゲ-ムフリ-ク$" @ geemufuriku ("Game Freak" in Japanese)
@@ -4674,13 +4614,11 @@ gText_XSentOverY:: @ 85EE966
gText_TakeGoodCareOfX:: @ 85EE977
.string "Take good care of {STR_VAR_3}!$"
-
.include "data/text/easy_chat/easy_chat_group_names.inc"
gText_ThreeQuestionMarks:: @ 85EEA42
.string "???$"
-
gUnknown_085EEA46:: @ 85EEA46
.string "MAX. HP$"
@@ -4714,7 +4652,6 @@ gText_MixingRecords:: @ 85EEA7E
gText_RecordMixingComplete:: @ 85EEA8E
.string "Record mixing completed.\nThank you for waiting.$"
-
gUnknown_085EEABE:: @ 85EEABE
.string "YOUR NAME?$"
@@ -4853,7 +4790,6 @@ gText_PkmnForSwap:: @ 85EECD1
gText_Cancel3:: @ 85EECDD
.string "CANCEL$"
-
gUnknown_085EECE4:: @ 85EECE4
.string "SWAP$"
@@ -4863,7 +4799,6 @@ gUnknown_085EECE9:: @ 85EECE9
gText_AcceptThisPkmn:: @ 85EECF0
.string "Accept this POKéMON?$"
-
gUnknown_085EED05:: @ 85EED05
.string " $"
@@ -5186,7 +5121,6 @@ gText_YouDontHaveThreeCoins:: @ 85EF734
gText_ReelTimeHelp:: @ 85EF750
.string "REEL TIME\nHere’s your chance to take\naim and nail marks!\nReel Time continues for the\nawarded number of spins.\nIt all ends on a Big Bonus.$"
-
gUnknown_085EF7DA:: @ 85EF7DA
.string "The two seem to get along\nvery well.$"
@@ -5217,7 +5151,6 @@ gText_TimeCleared:: @ 85EF895
gText_XMinYDotZSec:: @ 85EF8A3
.string "{STR_VAR_1} min. {STR_VAR_2}.{STR_VAR_3} sec.$"
-
gUnknown_085EF8B6:: @ 85EF8B6
.string "1F$"
@@ -5251,7 +5184,6 @@ gText_12AndPoof:: @ 85EF979
gText_PkmnForgotMoveAndLearnedNew:: @ 85EF9A6
.string "{STR_VAR_1} forgot {STR_VAR_3}.\pAnd…\p{STR_VAR_1} learned {STR_VAR_2}.$"
-
gUnknown_085EF9C8:: @ 85EF9C8
.string "{STR_VAR_1} did not learn the\nmove {STR_VAR_2}.$"
@@ -5267,7 +5199,6 @@ gText_BattleMoves2:: @ 85EFA31
gText_ContestMoves2:: @ 85EFA3E
.string "CONTEST MOVES$"
-
gUnknown_085EFA4C:: @ 85EFA4C
.string "TYPE/$"
@@ -5286,7 +5217,6 @@ gText_Appeal2:: @ 85EFA67
gText_Jam2:: @ 85EFA6E
.string "JAM$"
-
gUnknown_085EFA72:: @ 85EFA72
.string "KIRA$"
@@ -5320,7 +5250,6 @@ gText_Confirm3:: @ 85EFAE0
gText_Cancel4:: @ 85EFAE8
.string "CANCEL$"
-
gUnknown_085EFAEF:: @ 85EFAEF
.string "DEVON PRES$"
@@ -5396,7 +5325,6 @@ gText_BattleWasRefused:: @ 85EFC0C
gText_RefusedBattle:: @ 85EFC27
.string "Refused the battle.{PAUSE 60}$"
-
gUnknown_085EFC3E:: @ 85EFC3E
.string "NO WEATHER$"
diff --git a/data/text/pokemon_news.inc b/data/text/pokemon_news.inc
new file mode 100644
index 000000000..5af4e2994
--- /dev/null
+++ b/data/text/pokemon_news.inc
@@ -0,0 +1,165 @@
+
+gPokeNewsTextSlateport_Upcoming:: @ 0828D0F8
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "SLATEPORT’s most popular kind of guy,\n"
+ .string "the ENERGY GURU, is in the news again!\p"
+ .string "He promises to, “Stupendously go for\n"
+ .string "it in just this many days: {STR_VAR_1}!”\p"
+ .string "While he refused to elaborate on what\n"
+ .string "he will stupendously go for, the\l"
+ .string "ENERGY GURU advised, “Save up your\l"
+ .string "money. That’ll be good…”\p"
+ .string "It sounds like a trip to SLATEPORT\n"
+ .string "would be well worth your while that day.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextSlateport_Ongoing:: @ 0828D2A1
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "This is the news you’ve all been\n"
+ .string "waiting for!\p"
+ .string "SLATEPORT’S ENERGY GURU is going\n"
+ .string "for it stupendously in the MARKET!\p"
+ .string "He promises unbeatable bargain\n"
+ .string "prices on CALCIUM and PROTEIN!\p"
+ .string "A trip to SLATEPORT CITY sounds\n"
+ .string "worthwhile. Why not visit and shop\l"
+ .string "to your heart’s content?\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextSlateport_Ending:: @ 0828D3F5
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "This is the news you’ve all been\n"
+ .string "waiting for!\p"
+ .string "SLATEPORT’S ENERGY GURU is going\n"
+ .string "for it stupendously in the MARKET!\p"
+ .string "He promises unbeatable bargain\n"
+ .string "prices on CALCIUM and PROTEIN!\p"
+ .string "According to the ENERGY GURU, he\n"
+ .string "still has ample merchandise left.\p"
+ .string "Why not visit SLATEPORT CITY for\n"
+ .string "a most enjoyable shopping trip?\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextGameCorner_Upcoming:: @ 0828D571
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "It’s approaching!\n"
+ .string "It’s finally coming!\p"
+ .string "The GAME CORNER’s service day will be\n"
+ .string "here in just this many days: {STR_VAR_1}!\p"
+ .string "Even those who are usually unlucky\n"
+ .string "may be lucky on this particular day!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextGameCorner_Ongoing:: @ 0828D66F
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "It’s here!\n"
+ .string "It’s finally arrived!\p"
+ .string "GAME CORNER’s service day has finally\n"
+ .string "arrived!\p"
+ .string "Could you be lucky at the SLOTS \n"
+ .string "and ROULETTE?\p"
+ .string "The location is MAUVILLE CITY.\n"
+ .string "This is the place!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextGameCorner_Ending:: @ 0828D768
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "It’s here!\n"
+ .string "It’s finally arrived!\p"
+ .string "GAME CORNER’s service day has finally\n"
+ .string "arrived!\p"
+ .string "Could you be lucky at the SLOTS\n"
+ .string "and ROULETTE?\p"
+ .string "Time is limited and has almost run out.\n"
+ .string "The location is MAUVILLE CITY.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextLilycove_Upcoming:: @ 0828D875
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We’ve just received wonderful news\n"
+ .string "from LILYCOVE DEPARTMENT STORE.\p"
+ .string "The DEPARTMENT STORE’s clear-out sale\n"
+ .string "will be in just this many days: {STR_VAR_1}!\p"
+ .string "That thingamajig or that doodad that\n"
+ .string "you’ve always wanted could be yours!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextLilycove_Ongoing:: @ 0828D994
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "This is the news you’ve all been\n"
+ .string "waiting for!\p"
+ .string "LILYCOVE DEPARTMENT STORE’s clear-out\n"
+ .string "sale has finally arrived!\p"
+ .string "All the thingamajigs and doodads that\n"
+ .string "you’ve always dreamt about…\p"
+ .string "You may be in for fateful encounters\n"
+ .string "with them all!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextLilycove_Ending:: @ 0828DAC0
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "This is the news you’ve all been\n"
+ .string "waiting for!\p"
+ .string "LILYCOVE DEPARTMENT STORE’s clear-out\n"
+ .string "sale has finally arrived!\p"
+ .string "All the thingamajigs and doodads that\n"
+ .string "you’ve always dreamt about…\p"
+ .string "You may be in for fateful encounters\n"
+ .string "with them all!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextBlendMaster_Upcoming:: @ 0828DBEC
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We have big news for everyone\n"
+ .string "involved in the making of {POKEBLOCK}S.\p"
+ .string "The legendary BLEND MASTER will be\n"
+ .string "appearing in LILYCOVE CITY with just\l"
+ .string "a mere {STR_VAR_1}-day wait to go!\p"
+ .string "The BLEND MASTER is said to be\n"
+ .string "the best in all HOENN when it comes to\l"
+ .string "spinning a BERRY BLENDER.\p"
+ .string "Those people who want to make great\n"
+ .string "{POKEBLOCK}S or see the MASTER in action\l"
+ .string "are urged to save their BERRIES.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextBlendMaster_Ongoing:: @ 0828DD9E
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We have big news for everyone\n"
+ .string "involved in the making of {POKEBLOCK}S.\p"
+ .string "The legendary BLEND MASTER has\n"
+ .string "finally appeared!\p"
+ .string "The BLEND MASTER is spinning\n"
+ .string "the BERRY BLENDER at the LILYCOVE\l"
+ .string "CONTEST HALL.\p"
+ .string "Those people who want to make great\n"
+ .string "{POKEBLOCK}S or see the MASTER in action\l"
+ .string "should hurry to LILYCOVE.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextBlendMaster_Ending:: @ 0828DF05
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "It’s incredible!\n"
+ .string "Too incredible, even!\p"
+ .string "The BERRY BLENDER is spinning at\n"
+ .string "a dizzying pace!\p"
+ .string "The BLEND MASTER has lived up to\n"
+ .string "his reputation!\p"
+ .string "The BLEND MASTER will soon be\n"
+ .string "leaving LILYCOVE.\p"
+ .string "If you haven’t seen the MASTER in\n"
+ .string "action, don’t waste this chance!\l"
+ .string "Head to LILYCOVE right now!\p"
+ .string "That’s the news on POKéMON NEWS.$"
diff --git a/data/text/tv.inc b/data/text/tv.inc
new file mode 100644
index 000000000..fa2d0ac73
--- /dev/null
+++ b/data/text/tv.inc
@@ -0,0 +1,2891 @@
+gTVBravoTrainerText00:: @ 0827F275
+ .string "Yeah!\n"
+ .string "It’s BRAVO TRAINER time!\p"
+ .string "Today, we’re going to profile a POKéMON\n"
+ .string "belonging to {STR_VAR_1}.\p"
+ .string "Now, this POKéMON boasts a {STR_VAR_3}\n"
+ .string "Rank in the {STR_VAR_2} Category.$"
+
+gTVBravoTrainerText01:: @ 0827F304
+ .string "Introducing {STR_VAR_2} the\n"
+ .string "{STR_VAR_1}!\p"
+ .string "The nickname {STR_VAR_2}…\p"
+ .string "Even the nickname exudes an air that\n"
+ .string "proclaims “{STR_VAR_3}”!$"
+
+gTVBravoTrainerText02:: @ 0827F361
+ .string "Anyway, when the TRAINER {STR_VAR_1}\n"
+ .string "entered the POKéMON in a CONTEST,\l"
+ .string "we managed to get a few impassioned\l"
+ .string "quotes about the trusty partner.$"
+
+gTVBravoTrainerText03:: @ 0827F3E4
+ .string "Asked about the CONTEST afterwards,\n"
+ .string "{STR_VAR_1} happily replied with a huge\l"
+ .string "grin, “{STR_VAR_2}!”\p"
+ .string "Well, sure, {STR_VAR_1}’s POKéMON came in\n"
+ .string "number {STR_VAR_3} in the CONTEST.\p"
+ .string "That line perfectly suits {STR_VAR_1}\n"
+ .string "right now, I’d say!$"
+
+gTVBravoTrainerText04:: @ 0827F49F
+ .string "Asked about the CONTEST afterwards,\n"
+ .string "{STR_VAR_1} replied with a tinge of\l"
+ .string "bitterness, “{STR_VAR_2}.”\p"
+ .string "Well, sure, {STR_VAR_1}’s POKéMON came in\n"
+ .string "number {STR_VAR_3} in the CONTEST.\p"
+ .string "{STR_VAR_1}’s disappointment comes across\n"
+ .string "loud and clear, I’d say!$"
+
+gTVBravoTrainerText05:: @ 0827F565
+ .string "Wouldn’t you also like to know what\n"
+ .string "{STR_VAR_1} imagines {STR_VAR_2} to be?\p"
+ .string "You bet we did!\n"
+ .string "So we asked, of course!\p"
+ .string "The answer is all perfectly condensed:\n"
+ .string "“{STR_VAR_3}!”\p"
+ .string "That’s what the concept of {STR_VAR_2}\n"
+ .string "represents to {STR_VAR_1}!$"
+
+gTVBravoTrainerText06:: @ 0827F624
+ .string "The last move {STR_VAR_2} used by\n"
+ .string "the {STR_VAR_1} is entirely about\l"
+ .string "“{STR_VAR_3}”!$"
+
+gTVBravoTrainerText07:: @ 0827F65C
+ .string "Bravo, {STR_VAR_1}!\n"
+ .string "Bravo, {STR_VAR_2}!\p"
+ .string "I hope we can count on seeing\n"
+ .string "{STR_VAR_1} scale even greater heights!\p"
+ .string "That’s all the time we have!\n"
+ .string "Until next time, see you!$"
+
+gTVBravoTrainerText08:: @ 0827F6E6
+ .string "Introducing the TRAINER’s {STR_VAR_1}!$"
+
+ .string "Hello! You’re the TRAINER who just had\n"
+ .string "a battle, right?\p"
+ .string "I’m gathering interviews with TRAINERS\n"
+ .string "all over the place.\p"
+ .string "May I get a few words from you about\n"
+ .string "your impressions on battling?$"
+
+ .string "You will? Really?\n"
+ .string "Thank you!\l"
+ .string "Then, uh…\p"
+ .string "How did things turn out in\n"
+ .string "the BATTLE TOWER today?\p"
+ .string "Were you satisfied with the battle?\n"
+ .string "Or are you unhappy?$"
+
+ .string "Oh…\n"
+ .string "Sorry we disturbed you.\p"
+ .string "Please give us an interview the next\n"
+ .string "time you visit the BATTLE TOWER.$"
+
+ .string "Well, of course!\p"
+ .string "That unmistakable look of satisfaction\n"
+ .string "on your face…\p"
+ .string "It’s obvious that you’ve had a great\n"
+ .string "battle.$"
+
+ .string "Oh, I see…\p"
+ .string "Well, it certainly is difficult to make a\n"
+ .string "battle turn out exactly as planned.$"
+
+ .string "Oh, oh, may I ask one more question?\p"
+ .string "If you were to describe your\n"
+ .string "impressions about this battle with\l"
+ .string "one saying, what would it be?$"
+
+ .string "Oh, that is stunningly cool!\p"
+ .string "That’s a great line!\n"
+ .string "I hope you’ll do great next time, too.\p"
+ .string "I hope to see you again!$"
+
+ .string "Oh, I see…\p"
+ .string "Still, being the silent type is also\n"
+ .string "cool, isn’t it?\p"
+ .string "I hope you’ll give me the opportunity\n"
+ .string "to share your thoughts again!$"
+
+ .string "I’ll be looking forward to your\n"
+ .string "next battle!$"
+
+gTVBravoTrainerBattleTowerText00:: @ 0827FB20
+ .string "Yeah!\n"
+ .string "It’s BRAVO TRAINER time!\p"
+ .string "Today, we’re going to profile {STR_VAR_1},\n"
+ .string "who took the BATTLE TOWER challenge!\p"
+ .string "For the challenge, {STR_VAR_1} entered\n"
+ .string "one wicked {STR_VAR_2}.$"
+
+gTVBravoTrainerBattleTowerText01:: @ 0827FBB3
+ .string "The pair set a new record of {STR_VAR_2} wins\n"
+ .string "in a row in {STR_VAR_1} competition!\l"
+ .string "Bravo, TRAINER!$"
+
+gTVBravoTrainerBattleTowerText02:: @ 0827FC04
+ .string "The twosome finally succumbed to\n"
+ .string "{STR_VAR_1} in match number {STR_VAR_2}.\l"
+ .string "Nice try, TRAINER!\p"
+ .string "But, hey, it’s just bad luck to run into\n"
+ .string "{STR_VAR_1} so early in the challenge.\p"
+ .string "We asked the TRAINER for impressions\n"
+ .string "on the match with {STR_VAR_1}.$"
+
+gTVBravoTrainerBattleTowerText03:: @ 0827FCD1
+ .string "The twosome won it all by defeating\n"
+ .string "{STR_VAR_1}’s {STR_VAR_2} thoroughly.\l"
+ .string "Bravo, TRAINER!\p"
+ .string "Knocking off even {STR_VAR_1}…\n"
+ .string "It defies belief! Simply astounding!\p"
+ .string "We asked the TRAINER for impressions\n"
+ .string "on the moment of glory.$"
+
+gTVBravoTrainerBattleTowerText04:: @ 0827FD91
+ .string "After a string of wins, the pair finally\n"
+ .string "succumbed to {STR_VAR_1}’s {STR_VAR_2},\l"
+ .string "their final hurdle.\p"
+ .string "Nice try, TRAINER!\p"
+ .string "Still, you have to give credit.\n"
+ .string "You don’t see many famous combinations\l"
+ .string "like {STR_VAR_1} and {STR_VAR_2}.\p"
+ .string "We asked the TRAINER for impressions\n"
+ .string "on battling the celebrity pair.$"
+
+gTVBravoTrainerBattleTowerText05:: @ 0827FE93
+ .string "This is what the TRAINER had to say:\n"
+ .string "“I’m satisfied!”\p"
+ .string "Now isn’t that a refreshing reply?\n"
+ .string "Bravo, TRAINER!\p"
+ .string "Isn’t it out-and-out awesome to be\n"
+ .string "able to battle to full satisfaction?\p"
+ .string "I found out exactly how satisfied\n"
+ .string "when I heard the TRAINER say this:$"
+
+gTVBravoTrainerBattleTowerText06:: @ 0827FF89
+ .string "This is what the TRAINER had to say:\n"
+ .string "“I’m not satisfied…”\p"
+ .string "Our TRAINER was obviously a little down\n"
+ .string "when that was uttered.\p"
+ .string "Still, it’s not easy to be able to battle\n"
+ .string "with complete satisfaction, am I right?\p"
+ .string "Anyway, I found out how dissatisfied\n"
+ .string "our TRAINER was when I heard this:$"
+
+gTVBravoTrainerBattleTowerText07:: @ 0828009C
+ .string "None$"
+
+gTVBravoTrainerBattleTowerText08:: @ 082800A1
+ .string "None$"
+
+gTVBravoTrainerBattleTowerText09:: @ 082800A6
+ .string "None$"
+
+gTVBravoTrainerBattleTowerText10:: @ 082800AB
+ .string "None$"
+
+gTVBravoTrainerBattleTowerText11:: @ 082800B0
+ .string "“{STR_VAR_1}.”$"
+
+gTVBravoTrainerBattleTowerText12:: @ 082800B6
+ .string "“{STR_VAR_1}.”\n"
+ .string "Now isn’t that great?\p"
+ .string "It really expresses {STR_VAR_2}’s joy,\n"
+ .string "I’d say.\p"
+ .string "That battle with {STR_VAR_3} at the\n"
+ .string "end… It really was what you’d call\l"
+ .string "“{STR_VAR_1}”!$"
+
+gTVBravoTrainerBattleTowerText13:: @ 0828013D
+ .string "“{STR_VAR_1}.”\n"
+ .string "Now isn’t that fitting?\p"
+ .string "That battle with {STR_VAR_3} at the\n"
+ .string "end… You can’t describe it as anything\l"
+ .string "else but “{STR_VAR_1}”!\p"
+ .string "{STR_VAR_2}’s disappointment comes across\n"
+ .string "loud and clear, I’d say!$"
+
+gTVBravoTrainerBattleTowerText14:: @ 082801E6
+ .string "Bravo, {STR_VAR_1}!\n"
+ .string "Bravo, {STR_VAR_2}!\p"
+ .string "I hope we can count on seeing\n"
+ .string "{STR_VAR_1} scale even greater heights!\p"
+ .string "That’s all the time we have!\n"
+ .string "Until next time, see you!$"
+
+ .string "Wow!\p"
+ .string "It’s plain to see that you lavish your\n"
+ .string "love on your {STR_VAR_1}.\p"
+ .string "Okay, it’s named {STR_VAR_2}.\p"
+ .string "Can I ask you a favor?\p"
+ .string "I’m a TV reporter, and I’m running\n"
+ .string "a survey on POKéMON.\p"
+ .string "Would you be willing to answer a few\n"
+ .string "simple questions for me?$"
+
+ .string "Great! Thank you!\p"
+ .string "Okay, here goes.\n"
+ .string "I just need quick answers, okay?$"
+
+ .string "When you first met {STR_VAR_1},\n"
+ .string "what did you feel?\p"
+ .string "How would you describe your feelings\n"
+ .string "at the time?$"
+
+ .string "Your {STR_VAR_1} is cared for lovingly.\p"
+ .string "If you were to liken it to something\n"
+ .string "that you like, what would it be?$"
+
+ .string "This question also relates to your\n"
+ .string "beloved {STR_VAR_1}.\p"
+ .string "What was it about {STR_VAR_1} that\n"
+ .string "attracted you?$"
+
+ .string "Okay, that makes sense.\p"
+ .string "The next question might be a little\n"
+ .string "on the tough side.\p"
+ .string "Here goes…\p"
+ .string "What do POKéMON mean to you?$"
+
+ .string "I see!\p"
+ .string "Hmhm…\p"
+ .string "Okay!\n"
+ .string "Thanks for helping me out.\p"
+ .string "It was fun and enlightening\n"
+ .string "chatting with you.\p"
+ .string "It’s possible that our interview will\n"
+ .string "end up on TV. Tune in and check!\p"
+ .string "Okay, that’s all.\n"
+ .string "Bye-bye!$"
+
+ .string "Oh, okay…\p"
+ .string "Well, if you get the urge to tell me\n"
+ .string "about POKéMON, I’ll be here!$"
+
+ .string "I enjoy this job--you get to learn\n"
+ .string "about POKéMON by doing interviews.$"
+
+ .string "Hi, you seem to be very close to your\n"
+ .string "{STR_VAR_1}.\p"
+ .string "Do you know what?\n"
+ .string "I’m a TV reporter.\p"
+ .string "I travel around interviewing people\n"
+ .string "about POKéMON.\p"
+ .string "I’m wondering if you’d be willing to tell\n"
+ .string "me a little about your {STR_VAR_1}?$"
+
+ .string "Wow, thank you!\p"
+ .string "Okay, then, please tell me anything\n"
+ .string "you’d like about your {STR_VAR_1}.$"
+
+ .string "Wow…\n"
+ .string "That’s an interesting account.\p"
+ .string "You really are tight with {STR_VAR_1},\n"
+ .string "aren’t you?\p"
+ .string "I get the feeling that your account\n"
+ .string "will make a great TV story.\p"
+ .string "I promise that I’ll turn this into\n"
+ .string "an entertaining show.\l"
+ .string "Keep your eyes out for it.\p"
+ .string "Okay, that’s all.\n"
+ .string "Bye-bye!$"
+
+gTVFanClubOpinionsText00:: @ 08280886
+ .string "WE ARE THE POKéMON FAN CLUB!\p"
+ .string "We’re on the air!\p"
+ .string "On this program, we get your opinions,\n"
+ .string "and I shout them out on your behalf!\l"
+ .string "Isn’t it a fantastic program concept?\p"
+ .string "Today, we bring you this report from\n"
+ .string "our reporter, who we sent out to the\l"
+ .string "POKéMON FAN CLUB.\p"
+ .string "So, just who is today’s featured\n"
+ .string "POKéMON fan?\p"
+ .string "… … … … … … … …\p"
+ .string "{STR_VAR_1}!\p"
+ .string "So, let’s hear what {STR_VAR_1} has to\n"
+ .string "say about {STR_VAR_3} the {STR_VAR_2}.\p"
+ .string "And, I will shout those words of love\n"
+ .string "out loud on TV!\p"
+ .string "Hoo-hah!\p"
+ .string "Let’s shout!$"
+
+gTVFanClubOpinionsText01:: @ 08280A44
+ .string "We asked {STR_VAR_1}, “When you first\n"
+ .string "laid eyes on your {STR_VAR_2}, what was\l"
+ .string "your initial thought?”\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "Yeahah! That’s a mighty fine shout!\p"
+ .string "Doesn’t it bring back memories of those\n"
+ .string "days long gone by?$"
+
+gTVFanClubOpinionsText02:: @ 08280AFC
+ .string "We asked {STR_VAR_1}, “If you were to\n"
+ .string "liken your {STR_VAR_2} to something,\l"
+ .string "it would be…”\p"
+ .string "… … … … … … … …\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "Whoah-oh, now that’s an original idea!\p"
+ .string "You sure can sense the intensity of\n"
+ .string "feeling the TRAINER has for\l"
+ .string "{STR_VAR_2}.$"
+
+gTVFanClubOpinionsText03:: @ 08280BC4
+ .string "And let’s see…\n"
+ .string "What was it about that {STR_VAR_2}\l"
+ .string "that so attracted {STR_VAR_1}?\p"
+ .string "… … … … … … … …\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "Whoa! Such a spectacular declaration!\p"
+ .string "The TRAINER’s love for the {STR_VAR_2}\n"
+ .string "comes across loud and clear!$"
+
+gTVFanClubOpinionsText04:: @ 08280C7A
+ .string "Hm? Oh, there’s still more.\n"
+ .string "Let’s check it out!\p"
+ .string "Let me see, now…\p"
+ .string "We asked {STR_VAR_1}, “What do POKéMON\n"
+ .string "mean to you?”\p"
+ .string "… … … … … …\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "Bravo!\p"
+ .string "That’s the best shout I’ve had all day!\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "It makes you want to shout it out loud\n"
+ .string "again and again!\p"
+ .string "Now that we’ve had a great shout, it’s\n"
+ .string "time to say good-bye until next time!\p"
+ .string "So, let’s all have one last shout!\n"
+ .string "All together now…\p"
+ .string "“{STR_VAR_3}!”$"
+
+gTVFanClubText00:: @ 08280DEE
+ .string "WE ARE THE POKéMON FAN CLUB!\p"
+ .string "We’re on the air!\p"
+ .string "Today, we’ll get rolling with the\n"
+ .string "POKéMON SURVEY CORNER.\p"
+ .string "Out of all the tales woven by POKéMON\n"
+ .string "and TRAINERS, what startling new drama\l"
+ .string "will grab our attention today?\p"
+ .string "Let me see…\p"
+ .string "This one!\p"
+ .string "We’ll start with this letter!\p"
+ .string "It’s a letter from {STR_VAR_1} about a\n"
+ .string "beloved {STR_VAR_2}.\p"
+ .string "Let’s see how passionately our writer\n"
+ .string "can express love for the {STR_VAR_2}!\l"
+ .string "Hmhm…$"
+
+gTVFanClubText01:: @ 08280F69
+ .string "Whoah!\n"
+ .string "What an amazing letter!$"
+
+gTVFanClubText02:: @ 08280F88
+ .string "I loved it, so here it is again!$"
+
+gTVFanClubText03:: @ 08280FA9
+ .string "A great letter bears reading over\n"
+ .string "and over!$"
+
+gTVFanClubText04:: @ 08280FD5
+ .string "The bit “{STR_VAR_3},” that really\n"
+ .string "accentuates emotional impact!\p"
+ .string "It’s a great letter that has real\n"
+ .string "heartfelt depth!$"
+
+gTVFanClubText05:: @ 08281040
+ .string "Especially that “{STR_VAR_3}” bit!\p"
+ .string "I love how “{STR_VAR_3}” is used!$"
+
+gTVFanClubText06:: @ 08281073
+ .string "By the way, and it’s not important,\n"
+ .string "but “{STR_VAR_3}” is a great saying.\p"
+ .string "I’ve been using “{STR_VAR_3}” a lot\n"
+ .string "in conversations lately.$"
+
+gTVFanClubText07:: @ 082810E7
+ .string "If I had to score this letter,\n"
+ .string "I’d give it {STR_VAR_3} points.\p"
+ .string "Next time, I’ll be expecting an even\n"
+ .string "better letter, {STR_VAR_1}!\p"
+ .string "A-whoops, will you look at the time?\n"
+ .string "Time to say good-bye until next time!$"
+
+ .string "Oh?\n"
+ .string "Do you perhaps like POKéMON?\p"
+ .string "I’m on assignment with the TV network.\p"
+ .string "I’m gathering stories on POKéMON and\n"
+ .string "TRAINERS that occurred recently.\p"
+ .string "If you don’t mind, could you tell me\n"
+ .string "something about yourself?$"
+
+ .string "I’m gathering stories on POKéMON and\n"
+ .string "TRAINERS that occurred recently.\p"
+ .string "If you don’t mind, could you tell me\n"
+ .string "something about yourself?$"
+
+ .string "Oh, you will?\n"
+ .string "Thank you!\p"
+ .string "Then, please, tell me anything of\n"
+ .string "interest that you experienced recently\l"
+ .string "involving POKéMON.$"
+
+ .string "Oh, I see…\p"
+ .string "Well, if you do have an interesting\n"
+ .string "story to tell, please let me know.$"
+
+ .string "Oh, what an uplifting story!\p"
+ .string "I’ll be sure to get your story told\n"
+ .string "on television.\p"
+ .string "It should be aired sometime, I think,\n"
+ .string "so please look forward to it.$"
+
+ .string "Hmmm…\n"
+ .string "I’ve got a good story for a TV program.\p"
+ .string "I’d better write it up in a hurry!$"
+
+gTVRecentHappeningsText00:: @ 0828149E
+ .string "Hello, it’s time for RECENT HAPPENINGS.\p"
+ .string "For POKéMON TRAINERS, every day\n"
+ .string "is a storybook tale.\p"
+ .string "What we want to do is to introduce you\n"
+ .string "to some of these POKéMON tales.\p"
+ .string "Today, we bring you the story\n"
+ .string "of the TRAINER {STR_VAR_1}.\p"
+ .string "What did {STR_VAR_1} experience recently?\n"
+ .string "Let’s find out.\p"
+ .string "Let’s see…$"
+
+gTVRecentHappeningsText01:: @ 082815AF
+ .string "Wasn’t that enlightening?\p"
+ .string "The story gives you a clear idea of what\n"
+ .string "{STR_VAR_1} has experienced recently.\l"
+ .string "It’s as if we were there as witnesses!$"
+
+gTVRecentHappeningsText02:: @ 08281636
+ .string "“{STR_VAR_3}.” That\n"
+ .string "accents the tale and gives it depth.$"
+
+gTVRecentHappeningsText03:: @ 08281666
+ .string "“{STR_VAR_3}.”\n"
+ .string "That gives the tale a sense of place.\l"
+ .string "It lets us envision the tale’s setting.$"
+
+gTVRecentHappeningsText04:: @ 082816BA
+ .string "The “{STR_VAR_3}”\n"
+ .string "section of the tale is very expressive.$"
+
+gTVRecentHappeningsText05:: @ 082816EB
+ .string "{STR_VAR_1} has recounted a wonderful\n"
+ .string "tale involving POKéMON.\p"
+ .string "And now {STR_VAR_1}’s tale is indelibly\n"
+ .string "etched into your soul, too.\p"
+ .string "That’s it for today.\n"
+ .string "Please tune in next time.$"
+
+gTVMassOutbreakText00:: @ 0828178A
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We’ve just received word of a very\n"
+ .string "rare occurrence.\p"
+ .string "There have been reports of a mass\n"
+ .string "outbreak of {STR_VAR_2} in the vicinity\l"
+ .string "of {STR_VAR_1}.\p"
+ .string "{STR_VAR_2}, as you’re probably aware,\n"
+ .string "is known as a POKéMON that’s rare\l"
+ .string "and hard to find.\p"
+ .string "It sounds like a rare opportunity to\n"
+ .string "see the mystifying outbreak of\l"
+ .string "{STR_VAR_2} in the wild.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gTV3CheersForPokeblocksText00:: @ 082818F4
+ .string "MC: We hope you’re in good cheer,\n"
+ .string "“3 CHEERS FOR {POKEBLOCK}S” is here!\p"
+ .string "Today, we examine the {POKEBLOCK} blended\n"
+ .string "by {STR_VAR_1} and associates.\p"
+ .string "Without any delay, let me feed it\n"
+ .string "to my gourmet POKéMON GULPIN.\p"
+ .string "… … … … … …\n"
+ .string "… … … … … …$"
+
+gTV3CheersForPokeblocksText01:: @ 082819C7
+ .string "GULPIN: Gubi! Gubii!\p"
+ .string "MC: And the verdict is very {STR_VAR_1}!\n"
+ .string "GULPIN says it tastes “{STR_VAR_2}!”\p"
+ .string "Thank you so much, {STR_VAR_3}!$"
+
+gTV3CheersForPokeblocksText02:: @ 08281A2F
+ .string "{STR_VAR_1}’s blending performance\n"
+ .string "left something to be desired.\p"
+ .string "If this TRAINER could blend better,\n"
+ .string "the {POKEBLOCK} would be much tastier.$"
+
+gTV3CheersForPokeblocksText03:: @ 08281AAC
+ .string "GULPIN: Gubi! Gubii!\p"
+ .string "MC: Hmm… It’s too {STR_VAR_1}.\n"
+ .string "GULPIN says it tastes “{STR_VAR_2}!”\p"
+ .string "It looks like {STR_VAR_3}’s errors\n"
+ .string "hurt the blending quality…$"
+
+gTV3CheersForPokeblocksText04:: @ 08281B28
+ .string "It’s too bad that {STR_VAR_1}’s\n"
+ .string "leading effort went to waste.\p"
+ .string "Let’s hope {STR_VAR_2} can turn in\n"
+ .string "a better showing next time!$"
+
+gTV3CheersForPokeblocksText05:: @ 08281B93
+ .string "Tune in next time!\n"
+ .string "Our slogan is “3 CHEERS FOR {POKEBLOCK}S!”$"
+
+ .string "Hi, there!\p"
+ .string "I’m a big fan of {STR_VAR_1}.\n"
+ .string "What’s your opinion of {STR_VAR_1}?$"
+
+ .string "I see, I see. That’s what you think\n"
+ .string "about the TRAINER.$"
+
+ .string "Have you completely forgotten\n"
+ .string "about {STR_VAR_1}?$"
+
+ .string "I’m a big fan of {STR_VAR_1}.\n"
+ .string "What’s your opinion of {STR_VAR_1}?$"
+
+ .string "How strong would you rate {STR_VAR_1}\n"
+ .string "on a scale of one hundred?$"
+
+ .string "Have you completely forgotten\n"
+ .string "about {STR_VAR_1}?$"
+
+ .string "Oh, I see!\n"
+ .string "You should meet {STR_VAR_1} sometime.\l"
+ .string "I’m sure you’ll become a fan, too!$"
+
+ .string "I see, I see.\p"
+ .string "Thank you!\n"
+ .string "That’s very useful to know.\p"
+ .string "I’ll share this information with other\n"
+ .string "{STR_VAR_1} fans and discuss it.$"
+
+ .string "There’s going to be a TV special on\n"
+ .string "{STR_VAR_1} very soon.\p"
+ .string "I hope you catch it!$"
+
+gTVTrainerFanClubSpecialText00:: @ 08281DFB
+ .string "TRAINER FAN CLUB\n"
+ .string "{STR_VAR_1} SPECIAL!\p"
+ .string "This is a special presentation for\n"
+ .string "the fans of {STR_VAR_1} all over HOENN!\p"
+ .string "Today, we ask the question, “What do\n"
+ .string "people think of {STR_VAR_1}?”\p"
+ .string "We posed the question to {STR_VAR_2}\n"
+ .string "as the TRAINER representative.\p"
+ .string "We asked, “In one word, how would\n"
+ .string "you describe {STR_VAR_1}?”\p"
+ .string "The reply: “{STR_VAR_3}.”\p"
+ .string "Kudos to {STR_VAR_2}!\n"
+ .string "What a perceptive opinion!\p"
+ .string "“{STR_VAR_3} {STR_VAR_1}.”\n"
+ .string "It has such a nice ring to it!\p"
+ .string "{STR_VAR_2} also scored {STR_VAR_1}’s\n"
+ .string "strength from 0 to 100.$"
+
+gTVTrainerFanClubSpecialText01:: @ 08281F90
+ .string "The score was {STR_VAR_3} points!\n"
+ .string "That is a very high score indeed!\p"
+ .string "{STR_VAR_2} must obviously hold\n"
+ .string "{STR_VAR_1} in very high esteem.$"
+
+gTVTrainerFanClubSpecialText02:: @ 08281FFA
+ .string "The score was {STR_VAR_3} points!\n"
+ .string "That is quite a good score.\p"
+ .string "{STR_VAR_2} must consider\n"
+ .string "{STR_VAR_1} to be a rival.$"
+
+gTVTrainerFanClubSpecialText03:: @ 08282052
+ .string "The score was {STR_VAR_3} points!\n"
+ .string "That’s a rather weak score.\p"
+ .string "{STR_VAR_2} must consider\n"
+ .string "{STR_VAR_1} to be a mere sidekick.$"
+
+gTVTrainerFanClubSpecialText04:: @ 082820B2
+ .string "The score was {STR_VAR_3} point(s)!\n"
+ .string "That’s a terrible score.\p"
+ .string "{STR_VAR_2} must consider\n"
+ .string "{STR_VAR_1} to be an underling.$"
+
+gTVTrainerFanClubSpecialText05:: @ 0828210E
+ .string "There you have it, folks!\p"
+ .string "I think we all learned something\n"
+ .string "new about {STR_VAR_1}.\p"
+ .string "In closing, I’ll leave you with\n"
+ .string "{STR_VAR_2}’s words.\p"
+ .string "{STR_VAR_3} {STR_VAR_1}!$"
+
+gTVNameRaterText00:: @ 0828218A
+ .string "And now, it’s time for…\n"
+ .string "THE NAME RATER SHOW.\p"
+ .string "I tell your POKéMON’s fortune from\n"
+ .string "the nickname you’ve bestowed.\p"
+ .string "Advice is what I have to give, and it is\n"
+ .string "helpful advice that I offer.\p"
+ .string "Today, I shall do a reading of\n"
+ .string "the nickname {STR_VAR_3} of {STR_VAR_1}’s\l"
+ .string "POKéMON {STR_VAR_2}.\p"
+ .string "Hmhm…\p"
+ .string "Hmm…\n"
+ .string "This nickname is…$"
+
+gTVNameRaterText01:: @ 0828229E
+ .string "A nickname that hints at talent in many\n"
+ .string "different ways.\p"
+ .string "I urge this TRAINER to take courage\n"
+ .string "and take on many challenges.$"
+
+gTVNameRaterText02:: @ 08282317
+ .string "A nickname that perfectly complements\n"
+ .string "{STR_VAR_1}, the TRAINER’s name.\p"
+ .string "It suggests that you will forge a fine\n"
+ .string "partnership with precise timing.$"
+
+gTVNameRaterText03:: @ 0828239D
+ .string "A nickname fit for a unique individual\n"
+ .string "of a POKéMON!\p"
+ .string "If raised properly, this POKéMON’s\n"
+ .string "uniqueness will bloom excessively!$"
+
+gTVNameRaterText04:: @ 08282418
+ .string "A nickname that will nurture the caring\n"
+ .string "and compassionate side of POKéMON.\p"
+ .string "If raised properly, this POKéMON will\n"
+ .string "come to exhibit real warmth!$"
+
+gTVNameRaterText05:: @ 082824A6
+ .string "A very fine nickname that hints at\n"
+ .string "greatness to come.\p"
+ .string "I am intrigued about what the future\n"
+ .string "holds in store for this POKéMON.$"
+
+gTVNameRaterText06:: @ 08282522
+ .string "A good nickname that should make the\n"
+ .string "POKéMON hale and hearty!\p"
+ .string "That POKéMON should remain fit and\n"
+ .string "robust for a long, long time.$"
+
+gTVNameRaterText07:: @ 082825A1
+ .string "A good nickname that should make the\n"
+ .string "POKéMON very active!\p"
+ .string "I should think that this POKéMON will be\n"
+ .string "a strong performer in battles.$"
+
+gTVNameRaterText08:: @ 08282623
+ .string "An appealing nickname that should make\n"
+ .string "the POKéMON very charming!\p"
+ .string "I don’t doubt that this POKéMON will be\n"
+ .string "quite the charmer in POKéMON CONTESTS.$"
+
+gTVNameRaterText09:: @ 082826B4
+ .string "The nickname {STR_VAR_1} is rooted by\n"
+ .string "the letter “{STR_VAR_3}.”\p"
+ .string "That letter is supported by the first\n"
+ .string "letter “{STR_VAR_2},” which gives it a solid sense\l"
+ .string "of presence as a nickname.$"
+
+gTVNameRaterText10:: @ 0828274D
+ .string "The nickname {STR_VAR_1} is very\n"
+ .string "shapely in a pleasing manner.\p"
+ .string "The presence of the letters “{STR_VAR_2}” and\n"
+ .string "“{STR_VAR_3}”--now that is remarkably good!$"
+
+gTVNameRaterText11:: @ 082827CB
+ .string "The nickname {STR_VAR_1}--it has a\n"
+ .string "sublime, flowing feel to it.\p"
+ .string "The flow from the initial letter “{STR_VAR_2}” to\n"
+ .string "“{STR_VAR_3}” is especially wonderful.$"
+
+gTVNameRaterText12:: @ 08282849
+ .string "Let’s examine other examples of fine\n"
+ .string "nicknames, shall we?$"
+
+gTVNameRaterText13:: @ 08282883
+ .string "Try this example. Take a part of the\n"
+ .string "TRAINER name of {STR_VAR_1}, and end\l"
+ .string "up with the fine nickname {STR_VAR_2}{STR_VAR_3}.$"
+
+gTVNameRaterText14:: @ 082828E4
+ .string "The nickname {STR_VAR_2}{STR_VAR_3} would also work\n"
+ .string "quite well.$"
+
+gTVNameRaterText15:: @ 08282912
+ .string "The POKéMON’s species name of\n"
+ .string "{STR_VAR_2} could be used as the basis\l"
+ .string "for making the nickname {STR_VAR_1}{STR_VAR_3}.$"
+
+gTVNameRaterText16:: @ 0828296C
+ .string "{STR_VAR_1}{STR_VAR_3} would also be an effective\n"
+ .string "nickname.$"
+
+gTVNameRaterText17:: @ 08282996
+ .string "What should always be avoided is using\n"
+ .string "another POKéMON species name.\p"
+ .string "For instance, avoid taking the name of\n"
+ .string "{STR_VAR_2} to make the nickname {STR_VAR_1}{STR_VAR_3}.\l"
+ .string "That is unacceptable.$"
+
+gTVNameRaterText18:: @ 08282A36
+ .string "I must say that {STR_VAR_1} is quite\n"
+ .string "a good nickname.\p"
+ .string "I hope that the TRAINER will continue\n"
+ .string "to treat {STR_VAR_1} with love.\p"
+ .string "That’s it for today’s show.\n"
+ .string "May we meet again.$"
+
+gTVPokemonAnglerText00:: @ 08282ACF
+ .string "{STR_VAR_2} ANGLER\p"
+ .string "ANNOUNCER: Hello! Today, we’ll get tips\n"
+ .string "on fishing for {STR_VAR_2}.\p"
+ .string "GURU, what advice can you give for\n"
+ .string "catching {STR_VAR_2}?\p"
+ .string "GURU: Hm? Catching {STR_VAR_2}?\n"
+ .string "Well, let me tell you, be patient and\l"
+ .string "wait. That’s the bottom line.\p"
+ .string "Do you see {STR_VAR_1} over there?\n"
+ .string "That TRAINER makes a good example.\p"
+ .string "That TRAINER’s already had\n"
+ .string "{STR_VAR_3} POKéMON get away.\p"
+ .string "But there {STR_VAR_1} waits. No giving up.\n"
+ .string "That’s the law for catching {STR_VAR_2}.\p"
+ .string "ANNOUNCER: I see…\p"
+ .string "Oh! {STR_VAR_1} has finally landed an\n"
+ .string "elusive {STR_VAR_2}!\p"
+ .string "The TRAINER appears close to tears\n"
+ .string "out of sheer joy!\p"
+ .string "Seeing that elated look, I’m getting\n"
+ .string "the itch to go fishing, too!\p"
+ .string "Viewers, why not take this as a cue to\n"
+ .string "try some {STR_VAR_2} fishing?\p"
+ .string "Until our next broadcast, farewell and\n"
+ .string "good fishing to you all!$"
+
+gTVPokemonAnglerText01:: @ 08282D7C
+ .string "{STR_VAR_2} ANGLER\p"
+ .string "ANNOUNCER: Hello! Today, we’ll get tips\n"
+ .string "on fishing for {STR_VAR_2}.\p"
+ .string "GURU, what advice can you give for\n"
+ .string "catching {STR_VAR_2}?\p"
+ .string "GURU: Hm? Catching {STR_VAR_2}?\n"
+ .string "Well, let me tell you, use your fishing\l"
+ .string "ROD with vigor!\p"
+ .string "Do you see {STR_VAR_1} over there?\n"
+ .string "See how the ROD is handled?\p"
+ .string "That TRAINER’s already caught\n"
+ .string "{STR_VAR_3} in a row.\p"
+ .string "ANNOUNCER: It’s incredible!\n"
+ .string "It looks like a storm…\p"
+ .string "Seeing technique of that caliber, I’m\n"
+ .string "getting the itch to go fishing, too.\p"
+ .string "Viewers, why not take this as a cue to\n"
+ .string "try some {STR_VAR_2} fishing?\p"
+ .string "Until our next broadcast, farewell and\n"
+ .string "good fishing to you all!$"
+
+gTVPokemonTodayFailedText00:: @ 08282F9B
+ .string "Hello!\p"
+ .string "It’s time for POKéMON TODAY!\p"
+ .string "BIG SIS: Hi! Is everyone peachy and\n"
+ .string "perky today?\p"
+ .string "Today, we’re going to look at {STR_VAR_1}’s\n"
+ .string "POKéMON {STR_VAR_2}!\p"
+ .string "BIG BRO: Yeah! That’s what we’re going\n"
+ .string "to do!$"
+
+gTVPokemonTodayFailedText01:: @ 0828304D
+ .string "Oh!\n"
+ .string "Speaking of {STR_VAR_1}…\p"
+ .string "BIG SIS, I saw the TRAINER with my very\n"
+ .string "own eyes!\p"
+ .string "BIG SIS: Oh, what did you see?\p"
+ .string "BIG BRO: Well, I had to go on a trip to\n"
+ .string "{STR_VAR_2}.\p"
+ .string "That’s when I happened to come across\n"
+ .string "{STR_VAR_1}, who was trying to catch the\l"
+ .string "POKéMON {STR_VAR_3}, but…$"
+
+gTVPokemonTodayFailedText02:: @ 08283135
+ .string "The POKéMON managed to get away!\p"
+ .string "It ended up wasting this many\n"
+ .string "POKé BALLS: {STR_VAR_2}!\p"
+ .string "You should have seen the expression\n"
+ .string "of frustration on {STR_VAR_1}’s face when\l"
+ .string "the POKéMON took off!$"
+
+gTVPokemonTodayFailedText03:: @ 082831DF
+ .string "But {STR_VAR_1} goofed and made the\n"
+ .string "POKéMON faint!\p"
+ .string "It ended up wasting this many\n"
+ .string "POKé BALLS: {STR_VAR_2}!\p"
+ .string "You should have seen the expression\n"
+ .string "of stunned dismay on {STR_VAR_1}’s face\l"
+ .string "when the POKéMON fainted!$"
+
+gTVPokemonTodayFailedText04:: @ 08283294
+ .string "BIG SIS: Hey, there!\n"
+ .string "That’s not nice!\p"
+ .string "You shouldn’t be laughing at other\n"
+ .string "people’s misfortune!\p"
+ .string "Oh, poor {STR_VAR_1}.\n"
+ .string "What a shame!\p"
+ .string "BIG BRO: That’s true!\n"
+ .string "Sorry for laughing.$"
+
+gTVPokemonTodayFailedText05:: @ 08283337
+ .string "BIG SIS: Bufufu…\p"
+ .string "BIG BRO: Hey!\n"
+ .string "You just laughed, too!\p"
+ .string "BIG SIS: Huh?!\p"
+ .string "I didn’t laugh!\n"
+ .string "Honestly, I didn’t!\p"
+ .string "Oh, poor {STR_VAR_1}.\n"
+ .string "What a shame!\p"
+ .string "BIG BRO: …$"
+
+gTVPokemonTodayFailedText06:: @ 082833C6
+ .string "BIG SIS: That’s enough silliness!\n"
+ .string "Let’s look at today’s POKéMON…\p"
+ .string "Huh?\n"
+ .string "We’re out of time already?\p"
+ .string "Aww!\n"
+ .string "We couldn’t profile a POKéMON today!\p"
+ .string "BIG BRO: See you again next time!\p"
+ .string "BIG SIS: Hey, don’t end the show\n"
+ .string "without me!$"
+
+gTVPokemonTodaySuccessfulText00:: @ 082834A0
+ .string "Hello!\p"
+ .string "It’s time for POKéMON TODAY!\p"
+ .string "BIG SIS: Hi! Is everyone peachy and\n"
+ .string "perky today?\p"
+ .string "Today, we’re going to look at {STR_VAR_1}’s\n"
+ .string "POKéMON {STR_VAR_2}!\p"
+ .string "BIG BRO: Yeah! That’s what we’re going\n"
+ .string "to do!$"
+
+gTVPokemonTodaySuccessfulText01:: @ 08283552
+ .string "BIG SIS: {STR_VAR_1} gave the nickname\n"
+ .string "{STR_VAR_3} to the {STR_VAR_2}!\p"
+ .string "It sounds like {STR_VAR_3} is getting\n"
+ .string "good, loving care!$"
+
+gTVPokemonTodaySuccessfulText02:: @ 082835AE
+ .string "BIG BRO: The TRAINER had to throw this\n"
+ .string "many POKé BALLS to catch it: {STR_VAR_3}!\p"
+ .string "It finally took a single {STR_VAR_2}\n"
+ .string "to catch it!$"
+
+gTVPokemonTodaySuccessfulText03:: @ 0828361F
+ .string "BIG SIS: If it was that easy to catch,\n"
+ .string "it must have been destiny that brought\l"
+ .string "{STR_VAR_1} and the {STR_VAR_2} together!$"
+
+gTVPokemonTodaySuccessfulText04:: @ 08283685
+ .string "BIG SIS: Wow! That’s so neat!\p"
+ .string "But you know what they say, a POKéMON\n"
+ .string "that takes a lot of effort to catch\l"
+ .string "earns the love of its TRAINER!$"
+
+gTVPokemonTodaySuccessfulText05:: @ 0828370C
+ .string "BIG SIS: {STR_VAR_1}’s {STR_VAR_2} is a\n"
+ .string "memorable POKéMON because it took an\l"
+ .string "invaluable MASTER BALL to catch!\p"
+ .string "BIG BRO: Wow! That’s mega-awesome!\p"
+ .string "BIG SIS: {STR_VAR_1} must have really\n"
+ .string "wanted that {STR_VAR_2}, for sure!$"
+
+gTVPokemonTodaySuccessfulText06:: @ 082837C2
+ .string "BIG BRO: Then to give the nickname\n"
+ .string "{STR_VAR_3} to that {STR_VAR_2}…\p"
+ .string "You really get a good idea about\n"
+ .string "{STR_VAR_1}’s TRAINER sense.\p"
+ .string "BIG SIS: I second that notion!$"
+
+gTVPokemonTodaySuccessfulText07:: @ 08283848
+ .string "If it were me, I’d give that nickname\n"
+ .string "to something like this {STR_VAR_3}!\p"
+ .string "BIG BRO: Whoa! That could be the start\n"
+ .string "of something new!$"
+
+gTVPokemonTodaySuccessfulText08:: @ 082838C2
+ .string "{STR_VAR_2} the {STR_VAR_1}?\n"
+ .string "Doesn’t that sound perfect?\p"
+ .string "The letters and everything--they\n"
+ .string "sound just right for the POKéMON\l"
+ .string "{STR_VAR_1}!\p"
+ .string "BIG BRO: Yeah, true, that!$"
+
+gTVPokemonTodaySuccessfulText09:: @ 0828394A
+ .string "As far as I know, no TRAINER has ever\n"
+ .string "given the nickname {STR_VAR_2} to their\l"
+ .string "{STR_VAR_1}!\p"
+ .string "BIG BRO: That just goes to show what\n"
+ .string "great taste the TRAINER has in picking\l"
+ .string "nicknames!$"
+
+gTVPokemonTodaySuccessfulText10:: @ 082839EA
+ .string "The next time I catch a POKéMON,\n"
+ .string "I should give it the name {STR_VAR_2}.\p"
+ .string "BIG BRO: Huh? Me, too!\n"
+ .string "I’ll use the nickname {STR_VAR_2}, too!$"
+
+gTVPokemonTodaySuccessfulText11:: @ 08283A5F
+ .string "BIG SIS: Oh, no!\n"
+ .string "Look at the time!\p"
+ .string "Well, gang, this is it for today.\n"
+ .string "See you again next time!\p"
+ .string "BIG BRO: Remember, it could be your\n"
+ .string "POKéMON in the spotlight next time!$"
+
+gTVTodaysSmartShopperText00:: @ 08283B05
+ .string "Hello!\p"
+ .string "It’s time for TODAY’S SMART SHOPPER.\p"
+ .string "INTERVIEWER: How are you, viewers?\p"
+ .string "Today we’re visiting a shop\n"
+ .string "in {STR_VAR_2}.\p"
+ .string "Let’s check on what the hot sellers\n"
+ .string "have been recently.$"
+
+gTVTodaysSmartShopperText01:: @ 08283BAF
+ .string "Let’s interview the clerk to get the\n"
+ .string "lowdown.\p"
+ .string "Hi, how’s your business?\p"
+ .string "CLERK: Oh, we’re doing excellent.\p"
+ .string "Recently, {STR_VAR_2} has been\n"
+ .string "selling especially strongly.\p"
+ .string "Why, just the other day a TRAINER\n"
+ .string "named {STR_VAR_1} bought {STR_VAR_3}.$"
+
+gTVTodaysSmartShopperText02:: @ 08283C81
+ .string "INTERVIEWER: The TRAINER bought\n"
+ .string "{STR_VAR_3} {STR_VAR_2}S? That’s a haul!\p"
+ .string "If I may say so, {STR_VAR_1} must have\n"
+ .string "been stocking up for a long journey\l"
+ .string "to far-off places.\p"
+ .string "For traveling, {STR_VAR_2}S are so\n"
+ .string "important!$"
+
+gTVTodaysSmartShopperText03:: @ 08283D32
+ .string "INTERVIEWER: Speaking of the item\n"
+ .string "{STR_VAR_2}, I just bought {STR_VAR_3} of\l"
+ .string "them recently.\p"
+ .string "After all, {STR_VAR_2}’s a great item!$"
+
+gTVTodaysSmartShopperText04:: @ 08283D99
+ .string "INTERVIEWER: {STR_VAR_2}?!\n"
+ .string "But {STR_VAR_3} of them?!\p"
+ .string "I didn’t think there would be anyone\n"
+ .string "buying that many.\p"
+ .string "My goodness, I can only afford one or\n"
+ .string "two at a time…$"
+
+gTVTodaysSmartShopperText05:: @ 08283E28
+ .string "INTERVIEWER: One time, I bought\n"
+ .string "a whole lot of the item {STR_VAR_2}.\p"
+ .string "But it turned out to be too many.\n"
+ .string "I ended up regretting it…\p"
+ .string "Since then, I only buy strictly what\n"
+ .string "I absolutely need…\p"
+ .string "Oops!\p"
+ .string "There’s no point talking about me!$"
+
+gTVTodaysSmartShopperText06:: @ 08283F01
+ .string "CLERK: {STR_VAR_1} also bought the item\n"
+ .string "{STR_VAR_2} in bulk, taking {STR_VAR_3}.\p"
+ .string "INTERVIEWER: Oh, that’s smart.\n"
+ .string "{STR_VAR_2}’s a very good item, too.$"
+
+gTVTodaysSmartShopperText07:: @ 08283F72
+ .string "CLERK: And, the TRAINER also bought\n"
+ .string "{STR_VAR_3} of the item {STR_VAR_2}.$"
+
+gTVTodaysSmartShopperText08:: @ 08283FA9
+ .string "CLERK: Plus, it was during a big sale.\n"
+ .string "That’s smart shopping.$"
+
+gTVTodaysSmartShopperText09:: @ 08283FE7
+ .string "INTERVIEWER: Hmm… {STR_VAR_1} sounds like\n"
+ .string "quite the shrewd bargain hunter!\p"
+ .string "In total, {STR_VAR_1}’s purchases came to…\p"
+ .string "¥{STR_VAR_2}?!\n"
+ .string "What an amazing sum!\p"
+ .string "Oops! We’re out of time!\n"
+ .string "See you on our next broadcast!$"
+
+gTVTodaysSmartShopperText10:: @ 0828409E
+ .string "CLERK: {STR_VAR_1} is a VIP customer,\n"
+ .string "no doubt about it.$"
+
+gTVTodaysSmartShopperText11:: @ 082840CE
+ .string "Let’s interview the clerk to get the\n"
+ .string "lowdown.\p"
+ .string "Hi, how’s your business?\p"
+ .string "CLERK: Oh, we’re doing unbelievable\n"
+ .string "business. It’s almost overwhelming.\p"
+ .string "Recently, a TRAINER named {STR_VAR_1}\n"
+ .string "bought the item {STR_VAR_2} in bulk.\p"
+ .string "The TRAINER almost cleared out our\n"
+ .string "entire stock of {STR_VAR_2}S.\p"
+ .string "I never dreamt that any customer\n"
+ .string "would ever need so many {STR_VAR_2}S.\l"
+ .string "It’s just unheard of!\p"
+ .string "INTERVIEWER: So that would be like 100\n"
+ .string "or 200 sold?\p"
+ .string "CLERK: Oh, no, much more than that!\p"
+ .string "INTERVIEWER: Oh, my goodness!\n"
+ .string "{STR_VAR_1} must be a special shopper!\p"
+ .string "CLERK: {STR_VAR_1} is a VIP customer,\n"
+ .string "no doubt about it.$"
+
+gTVTodaysSmartShopperText12:: @ 082842E6
+ .string "INTERVIEWER: Hmm…\n"
+ .string "That is amazing.\p"
+ .string "But why would the TRAINER need to buy\n"
+ .string "so many?\p"
+ .string "… …\p"
+ .string "The mystery deepens, but this is all\n"
+ .string "the time we have today.\l"
+ .string "See you on our next broadcast!\p"
+ .string "Still, {STR_VAR_1} is certainly an enigma…$"
+
+gTVWorldOfMastersText00:: @ 082843BA
+ .string "THE WORLD OF MASTERS\p"
+ .string "Hello, viewers.\p"
+ .string "Perhaps you are aware of a TRAINER\n"
+ .string "named {STR_VAR_1}.\p"
+ .string "{STR_VAR_1} is famous as a master at\n"
+ .string "catching POKéMON.\p"
+ .string "{STR_VAR_1}’s quest for POKéMON depends\n"
+ .string "entirely on a careful search on foot.\p"
+ .string "On one memorable day, the TRAINER\n"
+ .string "walked some {STR_VAR_2} steps.\p"
+ .string "The total number of POKéMON caught\n"
+ .string "that day reached an impressive {STR_VAR_3}!$"
+
+gTVWorldOfMastersText01:: @ 082844FD
+ .string "That remarkable feat must have been\n"
+ .string "possible because of the trust between\l"
+ .string "the TRAINER and {STR_VAR_1}.$"
+
+gTVWorldOfMastersText02:: @ 0828455B
+ .string "The master caught the day’s last\n"
+ .string "{STR_VAR_3} near {STR_VAR_2}.\p"
+ .string "That POKéMON apparently enjoys\n"
+ .string "a special status as a record holder.\p"
+ .string "Skilled TRAINERS should be encouraged\n"
+ .string "to challenge this fine record.\p"
+ .string "That’s all for today.\n"
+ .string "Please tune in next time.$"
+
+gTVTodaysRivalTrainerText00:: @ 08284641
+ .string "TODAY’S RIVAL TRAINER!\p"
+ .string "Hello, fellow POKéMON TRAINERS!\n"
+ .string "How are we all doing today?\p"
+ .string "Today, like every other day,\n"
+ .string "we’ll examine one of our rivals!$"
+
+gTVTodaysRivalTrainerText07:: @ 082846D2
+ .string "Today’s rival TRAINER is {STR_VAR_1},\n"
+ .string "who’s around {STR_VAR_3} now.\p"
+ .string "{STR_VAR_1} has so far registered\n"
+ .string "{STR_VAR_2} POKéMON in the POKéDEX.$"
+
+gTVTodaysRivalTrainerText08:: @ 08284738
+ .string "Today’s rival TRAINER is {STR_VAR_1},\n"
+ .string "who’s in a SECRET BASE now.\p"
+ .string "{STR_VAR_1} has so far registered\n"
+ .string "{STR_VAR_2} POKéMON in the POKéDEX.$"
+
+gTVTodaysRivalTrainerText09:: @ 082847A5
+ .string "Today’s rival TRAINER is {STR_VAR_1}.\p"
+ .string "So far, {STR_VAR_1} has registered\n"
+ .string "{STR_VAR_2} POKéMON in the POKéDEX.$"
+
+gTVTodaysRivalTrainerText10:: @ 082847F7
+ .string "Today’s rival TRAINER is {STR_VAR_1},\n"
+ .string "who’s on a ferry now.\p"
+ .string "{STR_VAR_1} has so far registered\n"
+ .string "{STR_VAR_2} POKéMON in the POKéDEX.$"
+
+ .string "$"
+
+gTVTodaysRivalTrainerText01:: @ 0828485F
+ .string "And how many BADGES does our rival\n"
+ .string "have? The number is {STR_VAR_1}!$"
+
+gTVTodaysRivalTrainerText02:: @ 0828489A
+ .string "But our rival hasn’t obtained\n"
+ .string "a single BADGE yet!$"
+
+gTVTodaysRivalTrainerText03:: @ 082848CC
+ .string "Our rival hasn’t obtained a single\n"
+ .string "BATTLE FRONTIER Symbol yet.$"
+
+gTVTodaysRivalTrainerText04:: @ 0828490B
+ .string "Let’s see how many BATTLE FRONTIER\n"
+ .string "Symbols our rival has.\p"
+ .string "Gold Symbols: {STR_VAR_1}!\n"
+ .string "Silver Symbols: {STR_VAR_2}!$"
+
+gTVTodaysRivalTrainerText05:: @ 0828496B
+ .string "Our rival has collected {STR_VAR_1} Battle\n"
+ .string "Point(s) at the BATTLE FRONTIER.$"
+
+gTVTodaysRivalTrainerText06:: @ 082849AE
+ .string "So, how did you measure up in\n"
+ .string "comparison to {STR_VAR_1}?\p"
+ .string "The adventure rolls on!\p"
+ .string "Fellow TRAINERS!\p"
+ .string "Let’s all keep moving forward\n"
+ .string "and ahead of our rivals!$"
+
+gTVDewfordTrendWatcherNetworkText00:: @ 08284A3E
+ .string "DEWFORD TREND-WATCHER NETWORK!\p"
+ .string "MC: Wassup?\n"
+ .string "We’ll keep it real with the latest on\l"
+ .string "what’s hip and happening in DEWFORD.\p"
+ .string "Our guest today is this old cat whose\n"
+ .string "claim to fame is being the authority\l"
+ .string "on all things in DEWFORD.\p"
+ .string "Old man: Glad to be here.\p"
+ .string "MC: Let’s cut to the chase, right on.\p"
+ .string "What’s your word on what’s groovin’\n"
+ .string "the good folks of DEWFORD?\p"
+ .string "Old man: {STR_VAR_1} {STR_VAR_2}.\p"
+ .string "MC: {STR_VAR_1} {STR_VAR_2},\n"
+ .string "you say?\p"
+ .string "Old man: No.\p"
+ .string "{STR_VAR_1} {STR_VAR_2} never\n"
+ .string "did get popular at all.\p"
+ .string "Would you like to hear about it?\p"
+ .string "MC: Uh, no. What we want to know is\n"
+ .string "what’s the in thing of the moment…$"
+
+gTVDewfordTrendWatcherNetworkText01:: @ 08284C55
+ .string "Old man: {STR_VAR_1} {STR_VAR_2}\n"
+ .string "was what {STR_VAR_3} from LITTLEROOT\l"
+ .string "taught me as being trendy…$"
+
+gTVDewfordTrendWatcherNetworkText02:: @ 08284C9B
+ .string "Old man: {STR_VAR_1} {STR_VAR_2}\n"
+ .string "was what {STR_VAR_3} from LITTLEROOT\l"
+ .string "taught me as being trendy…$"
+
+gTVDewfordTrendWatcherNetworkText03:: @ 08284CE1
+ .string "But it was utterly hopeless.\p"
+ .string "{STR_VAR_1} {STR_VAR_2} festival!\p"
+ .string "{STR_VAR_1} {STR_VAR_2} contest!\p"
+ .string "I tried teaching everyone the best\n"
+ .string "I could, but…\p"
+ .string "Perhaps the {STR_VAR_1} part just\n"
+ .string "wasn’t right…\p"
+ .string "MC: Uh, excuse me, compadre, I need\n"
+ .string "to hear about what’s in now…$"
+
+gTVDewfordTrendWatcherNetworkText04:: @ 08284DB6
+ .string "Old man: {STR_VAR_3}!\n"
+ .string "Please, tell me something bigger than\l"
+ .string "that {STR_VAR_1} {STR_VAR_2}!$"
+
+gTVDewfordTrendWatcherNetworkText05:: @ 08284DF5
+ .string "Old man: {STR_VAR_3}!\n"
+ .string "Please, tell me something bigger than\l"
+ .string "that {STR_VAR_1} {STR_VAR_2}!$"
+
+gTVDewfordTrendWatcherNetworkText06:: @ 08284E34
+ .string "MC: …Uh… So, there you have it,\n"
+ .string "all you trendy, hep cats out there!\p"
+ .string "{STR_VAR_1} {STR_VAR_2}…uh…\n"
+ .string "Didn’t get hip or happening in DEWFORD!\p"
+ .string "My time is up. Catch you on the fly!\p"
+ .string "Old man: {STR_VAR_1} {STR_VAR_2}!$"
+
+gTVHoennTreasureInvestigatorsText00:: @ 08284EDF
+ .string "HOENN TREASURE INVESTIGATORS!\p"
+ .string "Hi, gang!\n"
+ .string "Score any secret items lately?\p"
+ .string "As always, we’ll examine eyewitness\n"
+ .string "reports of secrets from all over!\p"
+ .string "Let’s start with a letter.\n"
+ .string "It says, “{STR_VAR_1} discovered!”$"
+
+gTVHoennTreasureInvestigatorsText01:: @ 08284FA1
+ .string "Wow, we’d better check this letter\n"
+ .string "out! Let me read it to you.\p"
+ .string "…Dear INVESTIGATORS,\n"
+ .string "I hope you are well.\p"
+ .string "I recently saw {STR_VAR_2} somewhere\n"
+ .string "around {STR_VAR_3}.\p"
+ .string "The TRAINER found the item\n"
+ .string "{STR_VAR_1}. It made me envious.\p"
+ .string "…Well, good going, {STR_VAR_2}!\p"
+ .string "Viewers, let that motivate you to\n"
+ .string "fire up your ITEMFINDERS and search!\p"
+ .string "I’ll be waiting for exciting news\n"
+ .string "from all of you!$"
+
+gTVHoennTreasureInvestigatorsText02:: @ 082850F5
+ .string "Wow, we’d better check this letter\n"
+ .string "out! Let me read it to you.\p"
+ .string "…Dear INVESTIGATORS,\n"
+ .string "I hope you are well.\p"
+ .string "I recently saw {STR_VAR_2} on a ferry.\p"
+ .string "The TRAINER found the item\n"
+ .string "{STR_VAR_1}. It made me envious.\p"
+ .string "…Well, good going, {STR_VAR_2}!\p"
+ .string "Viewers, let that motivate you to\n"
+ .string "fire up your ITEMFINDERS and search!\p"
+ .string "I’ll be waiting for exciting news\n"
+ .string "from all of you!$"
+
+gTVFindThatGamerText00:: @ 08285240
+ .string "FIND THAT GAMER!\p"
+ .string "Hey, all you gamers!\n"
+ .string "How’s your {STR_VAR_2} spinning?\p"
+ .string "Like always, we’ll cast our spotlight\n"
+ .string "on a rare TRAINER who’s visited the\l"
+ .string "GAME CORNER!\p"
+ .string "Today, our no. 1 gamer is…\n"
+ .string "{STR_VAR_1}!$"
+
+gTVFindThatGamerText01:: @ 082852F4
+ .string "{STR_VAR_1} played the {STR_VAR_2} game\n"
+ .string "and won a rare {STR_VAR_3} COINS.\p"
+ .string "“When {STR_VAR_1} comes, we need to\n"
+ .string "make sure we have enough COINS.”\p"
+ .string "That’s what the GAME CORNER clerks\n"
+ .string "mutter when our gamer is in play!\p"
+ .string "Viewers, it’s best to watch your COINS\n"
+ .string "like {STR_VAR_1} if you visit the GAME\l"
+ .string "CORNER and play the {STR_VAR_2} game.\p"
+ .string "This is live from the GAME CORNER--\n"
+ .string "where you can feel the excitement!\p"
+ .string "That’s all for today!$"
+
+gTVFindThatGamerText02:: @ 08285463
+ .string "{STR_VAR_1} played the {STR_VAR_2} game\n"
+ .string "and lost {STR_VAR_3} COINS.\p"
+ .string "“When {STR_VAR_1} comes, our COIN\n"
+ .string "sales seem to increase.”\p"
+ .string "That’s what the GAME CORNER clerks\n"
+ .string "say when our gamer is in play!$"
+
+gTVFindThatGamerText03:: @ 08285500
+ .string "Viewers, it’s best to watch your COINS\n"
+ .string "like {STR_VAR_1} if you visit the GAME\l"
+ .string "CORNER and play the {STR_VAR_2} game.\p"
+ .string "This is live from the GAME CORNER--\n"
+ .string "where you can feel the excitement!\p"
+ .string "That’s all for today!$"
+
+gTVBreakingNewsText00:: @ 082855BF
+ .string "BREAKING NEWS TV!$"
+
+gTVBreakingNewsText01:: @ 082855D1
+ .string "Rare {STR_VAR_2} caught by\n"
+ .string "{STR_VAR_1}!\p"
+ .string "We’re live from the vicinity of\n"
+ .string "{STR_VAR_3}!\p"
+ .string "{STR_VAR_1} successfully captured\n"
+ .string "a rare {STR_VAR_2} earlier here!$"
+
+gTVBreakingNewsText02:: @ 0828563C
+ .string "When {STR_VAR_1} encountered the rare\n"
+ .string "{STR_VAR_2}, the TRAINER sent out\l"
+ .string "the POKéMON {STR_VAR_3}.$"
+
+gTVBreakingNewsText03:: @ 08285682
+ .string "In the battle, the number of POKé\n"
+ .string "BALLS thrown by the TRAINER was {STR_VAR_1}.\p"
+ .string "Ultimately, the rare POKéMON was\n"
+ .string "caught by the {STR_VAR_2} used last.$"
+
+gTVBreakingNewsText04:: @ 08285705
+ .string "In that instant, {STR_VAR_2}\n"
+ .string "echoed with {STR_VAR_1}’s roars of\l"
+ .string "triumphant joy.\p"
+ .string "I must say I’m a little envious of\n"
+ .string "{STR_VAR_1}. I’d love to roar, too.\p"
+ .string "…That ends the live feed from\n"
+ .string "the happy scene!$"
+
+gTVBreakingNewsText05:: @ 082857B0
+ .string "{STR_VAR_1} fails to capture a rare\n"
+ .string "{STR_VAR_2}!\p"
+ .string "We’re live from the vicinity of\n"
+ .string "{STR_VAR_3}!\p"
+ .string "It was here that {STR_VAR_1} failed\n"
+ .string "to capture a rare {STR_VAR_2}!$"
+
+gTVBreakingNewsText06:: @ 08285824
+ .string "When {STR_VAR_1} encountered the rare\n"
+ .string "{STR_VAR_2}, the TRAINER sent out\l"
+ .string "the POKéMON {STR_VAR_3}.$"
+
+gTVBreakingNewsText07:: @ 0828586A
+ .string "The TRAINER made the {STR_VAR_2}\n"
+ .string "use the move {STR_VAR_1}.\p"
+ .string "Without meaning to, the TRAINER\n"
+ .string "made the rare POKéMON faint…$"
+
+gTVBreakingNewsText12:: @ 082858D0
+ .string "However, {STR_VAR_1} panicked at\n"
+ .string "the sight of the rare {STR_VAR_2}.\p"
+ .string "In confusion, the TRAINER ordered\n"
+ .string "{STR_VAR_3} to attack.\p"
+ .string "Without meaning to, the TRAINER\n"
+ .string "made the rare POKéMON faint.$"
+
+gTVBreakingNewsText08:: @ 0828596F
+ .string "In that instant, {STR_VAR_2}\n"
+ .string "echoed with {STR_VAR_1}’s shrieks of\l"
+ .string "frustration…$"
+
+gTVBreakingNewsText09:: @ 082859AC
+ .string "However, {STR_VAR_1} seemed to run\n"
+ .string "out of POKé BALLS.\p"
+ .string "The TRAINER had to break off\n"
+ .string "the battle with the rare {STR_VAR_2}.\p"
+ .string "In that instant, {STR_VAR_3}\n"
+ .string "echoed with {STR_VAR_1}’s shrieks of\l"
+ .string "frustration…$"
+
+gTVBreakingNewsText10:: @ 08285A50
+ .string "However, the {STR_VAR_2} fled without\n"
+ .string "warning.\p"
+ .string "In that instant, {STR_VAR_3}\n"
+ .string "echoed with {STR_VAR_1}’s shrieks of\l"
+ .string "frustration…$"
+
+gTVBreakingNewsText11:: @ 08285AB3
+ .string "I must say I feel for {STR_VAR_1}.\n"
+ .string "Why, it makes me want to shriek, too.\p"
+ .string "…That ends the live feed from\n"
+ .string "the melancholy scene!$"
+
+gTVSecretBaseVisitText00:: @ 08285B27
+ .string "Hello, folks!\n"
+ .string "It’s time again for\l"
+ .string "a SECRET BASE VISIT.\p"
+ .string "Today, we visit the SECRET BASE\n"
+ .string "of {STR_VAR_1}.\p"
+ .string "How has {STR_VAR_1} personalized\n"
+ .string "the SECRET BASE?\p"
+ .string "Let’s find out!\n"
+ .string "… … … … … …$"
+
+gTVSecretBaseVisitText01:: @ 08285BCA
+ .string "Oh!\n"
+ .string "How marvelous!\p"
+ .string "This {STR_VAR_2}…\n"
+ .string "It’s not what one would expect to\l"
+ .string "find here!$"
+
+gTVSecretBaseVisitText02:: @ 08285C13
+ .string "Oh!\n"
+ .string "How remarkable!\p"
+ .string "There isn’t a single piece\n"
+ .string "of furniture or interior goods!\p"
+ .string "Mere mortals couldn’t hope to\n"
+ .string "imitate this bold statement!\p"
+ .string "It’s simple, but it bursts, yes,\n"
+ .string "bursts with wildness!\p"
+ .string "My hat’s off to you, {STR_VAR_1}.\n"
+ .string "It had to be you!$"
+
+gTVSecretBaseVisitText03:: @ 08285CFF
+ .string "Oh! I see!\n"
+ .string "With perfect clarity, I see it!\p"
+ .string "This {STR_VAR_2} being here…\n"
+ .string "It sends an effective message!$"
+
+gTVSecretBaseVisitText04:: @ 08285D5D
+ .string "Oh! I see!\n"
+ .string "With perfect clarity, I see it!\p"
+ .string "This space is kept deliberately\n"
+ .string "clear of interior items!\p"
+ .string "It sends an effective message!$"
+
+gTVSecretBaseVisitText05:: @ 08285DE0
+ .string "Wheeew!\p"
+ .string "The pairing of the {STR_VAR_2}\n"
+ .string "with the {STR_VAR_3}!\p"
+ .string "It’s a dream combination if there\n"
+ .string "ever was one!$"
+
+gTVSecretBaseVisitText06:: @ 08285E3B
+ .string "Wheeew!\p"
+ .string "The placement of this {STR_VAR_2}\n"
+ .string "right here…\p"
+ .string "It has a presence that fills\n"
+ .string "the entire SECRET BASE!$"
+
+gTVSecretBaseVisitText07:: @ 08285E9D
+ .string "Wheeew!\p"
+ .string "There’s nothing in place here.\p"
+ .string "This empty space has an effect on\n"
+ .string "the entire SECRET BASE.$"
+
+gTVSecretBaseVisitText08:: @ 08285EFE
+ .string "Oh!\n"
+ .string "Here comes {STR_VAR_1}!\l"
+ .string "Let’s challenge the TRAINER!\p"
+ .string "… … … … … …\n"
+ .string "… … … … … …$"
+
+gTVSecretBaseVisitText09:: @ 08285F46
+ .string "Sigh…\n"
+ .string "I’ve got to hand it to {STR_VAR_1}.\p"
+ .string "The TRAINER’s POKéMON were truly\n"
+ .string "worthy of the CHAMPION’s title.\p"
+ .string "They gave ample proof of {STR_VAR_1}’s\n"
+ .string "toughness as a TRAINER.\p"
+ .string "That the {STR_VAR_2} knew the move\n"
+ .string "{STR_VAR_3}…\p"
+ .string "It shows you what sort of a TRAINER\n"
+ .string "{STR_VAR_1} is.\p"
+ .string "Certainly, it was quite a lesson!$"
+
+gTVSecretBaseVisitText10:: @ 08286049
+ .string "Aiyeeh!\n"
+ .string "I’ve got to hand it to {STR_VAR_1}.\p"
+ .string "The TRAINER’s POKéMON were\n"
+ .string "monstrously tough!\p"
+ .string "They gave ample proof of {STR_VAR_1}’s\n"
+ .string "tenacity as a TRAINER.\p"
+ .string "That the {STR_VAR_2} knew the move\n"
+ .string "{STR_VAR_3}…\p"
+ .string "It shows you what sort of a TRAINER\n"
+ .string "{STR_VAR_1} is.\p"
+ .string "Certainly, it was quite a lesson!$"
+
+gTVSecretBaseVisitText11:: @ 0828613A
+ .string "Wheeew!\n"
+ .string "I’ve got to hand it to {STR_VAR_1}.\p"
+ .string "The TRAINER’s POKéMON were clearly\n"
+ .string "raised in a well-balanced manner.\p"
+ .string "They gave ample proof of {STR_VAR_1}’s\n"
+ .string "thoughtfulness as a TRAINER.\p"
+ .string "That the {STR_VAR_2} knew the move\n"
+ .string "{STR_VAR_3}…\p"
+ .string "It shows you what sort of a TRAINER\n"
+ .string "{STR_VAR_1} is.\p"
+ .string "Certainly, it was quite a lesson!$"
+
+gTVSecretBaseVisitText12:: @ 08286248
+ .string "Well, well!\n"
+ .string "I’ve got to hand it to {STR_VAR_1}.\p"
+ .string "The TRAINER’s POKéMON showed\n"
+ .string "great promise for future growth.\p"
+ .string "They represented {STR_VAR_1}’s\n"
+ .string "hopes and dreams.\p"
+ .string "That the {STR_VAR_2} knew the move\n"
+ .string "{STR_VAR_3}…\p"
+ .string "It shows you what sort of a TRAINER\n"
+ .string "{STR_VAR_1} is.\p"
+ .string "Certainly, it was quite a lesson!$"
+
+gTVSecretBaseVisitText13:: @ 08286340
+ .string "I must say, what a superb SECRET BASE\n"
+ .string "it was!\p"
+ .string "Viewers, if you have the chance,\n"
+ .string "do visit {STR_VAR_1}’s SECRET BASE.\p"
+ .string "Until next time, I bid you adieu!$"
+
+gTVPokemonLotteryWinnerFlashReportText00:: @ 082863CC
+ .string "It’s exciting!\n"
+ .string "It’s dramatic!\p"
+ .string "It’s the POKéMON LOTTERY\n"
+ .string "WINNER FLASH REPORT!\p"
+ .string "Hello! We’re coming at you live from\n"
+ .string "the POKéMON LOTTERY CORNER on\l"
+ .string "the ground floor of the LILYCOVE\l"
+ .string "DEPARTMENT STORE!\p"
+ .string "Like it always happens, another\n"
+ .string "lucky TRAINER appeared today!\p"
+ .string "That TRAINER’s name…\n"
+ .string "{STR_VAR_1}!\p"
+ .string "{STR_VAR_1} won the {STR_VAR_2} prize\n"
+ .string "and took home the {STR_VAR_3}!\p"
+ .string "{STR_VAR_1}!\n"
+ .string "Congratulations!\p"
+ .string "Viewers, don’t just watch,\n"
+ .string "get in on the action!\p"
+ .string "All of us at the LILYCOVE DEPARTMENT\n"
+ .string "STORE look forward to your next visit!\p"
+ .string "This has been a live broadcast from\n"
+ .string "the LILYCOVE DEPARTMENT STORE,\l"
+ .string "offering you the greatest selection\l"
+ .string "in all HOENN!$"
+
+gTVThePokemonBattleSeminarText00:: @ 08286616
+ .string "THE POKéMON BATTLE SEMINAR!\p"
+ .string "We examine battles to see what\n"
+ .string "lessons we may learn from others.\p"
+ .string "Today’s case study is on {STR_VAR_1}’s\n"
+ .string "battle.\p"
+ .string "{STR_VAR_1}’s {STR_VAR_2} was\n"
+ .string "battling one {STR_VAR_3}…$"
+
+gTVThePokemonBattleSeminarText01:: @ 082866B6
+ .string "And it used the move {STR_VAR_3}\n"
+ .string "on the {STR_VAR_2}…\p"
+ .string "Hmm… {STR_VAR_1}!\n"
+ .string "That’s the wrong thing to do!$"
+
+gTVThePokemonBattleSeminarText02:: @ 08286700
+ .string "In addition to the doomed move,\n"
+ .string "the TRAINER’s {STR_VAR_1} also knew$"
+
+gTVThePokemonBattleSeminarText03:: @ 0828673B
+ .string "the moves {STR_VAR_1}, {STR_VAR_2},\n"
+ .string "and {STR_VAR_3}.$"
+
+gTVThePokemonBattleSeminarText04:: @ 08286755
+ .string "the moves {STR_VAR_1} and\n"
+ .string "{STR_VAR_2}.$"
+
+gTVThePokemonBattleSeminarText05:: @ 0828676A
+ .string "the move {STR_VAR_2}.$"
+
+gTVThePokemonBattleSeminarText06:: @ 08286777
+ .string "So, in this situation, what should\n"
+ .string "the TRAINER have used?\p"
+ .string "… … … … … …\n"
+ .string "The move {STR_VAR_1}!\p"
+ .string "The move {STR_VAR_1} would have been\n"
+ .string "absolutely better than {STR_VAR_2}.\p"
+ .string "Viewers, I urge you to learn from this\n"
+ .string "case and battle with intelligence!\p"
+ .string "Until next time, farewell!$"
+
+gTVTrainerFanClubText00:: @ 08286866
+ .string "All together now!\n"
+ .string "TRAINER FAN CLUB!\p"
+ .string "MC: How’s everyone groovin’?\n"
+ .string "Today, we’ve rounded up the fans of\l"
+ .string "the hyper-popular TRAINER {STR_VAR_1}!\p"
+ .string "FANS: Wrooooooaaaaah!\p"
+ .string "FANS: {STR_VAR_1}!\p"
+ .string "MC: Everyone!\n"
+ .string "How do you like {STR_VAR_1}?!\p"
+ .string "FANS: We love {STR_VAR_1}!\p"
+ .string "MC: What do you love about\n"
+ .string "{STR_VAR_1}?!$"
+
+gTVTrainerFanClubText01:: @ 0828695E
+ .string "FANS: Their cool way of throwing\n"
+ .string "POKé BALLS!$"
+
+gTVTrainerFanClubText02:: @ 0828698B
+ .string "FANS: Their adorable way of running!$"
+
+gTVTrainerFanClubText03:: @ 082869B0
+ .string "FANS: How the TRAINER turns tough\n"
+ .string "when the going gets tough!$"
+
+gTVTrainerFanClubText04:: @ 082869ED
+ .string "FANS: The TRAINER’s knowledge of\n"
+ .string "POKéMON!$"
+
+gTVTrainerFanClubText05:: @ 08286A17
+ .string "FANS: The TRAINER’s kindness toward\n"
+ .string "all POKéMON!$"
+
+gTVTrainerFanClubText06:: @ 08286A48
+ .string "FANS: The TRAINER’s amazing\n"
+ .string "BIKE-riding techniques!$"
+
+gTVTrainerFanClubText07:: @ 08286A7C
+ .string "FANS: The TRAINER’s impressive\n"
+ .string "item-buying style!$"
+
+gTVTrainerFanClubText08:: @ 08286AAE
+ .string "FANS: The TRAINER’s charming way\n"
+ .string "of nicknaming POKéMON!$"
+
+gTVTrainerFanClubText09:: @ 08286AE6
+ .string "FANS: The TRAINER’s nifty style of\n"
+ .string "decorating a SECRET BASE!$"
+
+gTVTrainerFanClubText10:: @ 08286B23
+ .string "FANS: The TRAINER’s bold ways of\n"
+ .string "using TMs!$"
+
+gTVTrainerFanClubText11:: @ 08286B4F
+ .string "MC: As you’ve just seen, {STR_VAR_1}\n"
+ .string "is hot! Like, too hot to touch, yow!\p"
+ .string "Among {STR_VAR_1}’s FANS\n"
+ .string "there’s a special slogan!\p"
+ .string "MC: When I say {STR_VAR_1},\n"
+ .string "you say…\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!\p"
+ .string "MC: That’s right, when someone says,\n"
+ .string "“{STR_VAR_1}”…\p"
+ .string "Come back with, “{STR_VAR_2}\n"
+ .string "{STR_VAR_3}!”\p"
+ .string "That has such a unique ring to it!\n"
+ .string "I can see why people become FANS\l"
+ .string "of {STR_VAR_1}!\p"
+ .string "Okay, you, in front of the TV, join us!\n"
+ .string "All together now!\p"
+ .string "MC: When I say {STR_VAR_1},\n"
+ .string "you say…\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!\p"
+ .string "MC: Thanks for joining us, all you\n"
+ .string "wild FANS of {STR_VAR_1}!\l"
+ .string "That’s the show! See you again!\p"
+ .string "MC: When I say {STR_VAR_1},\n"
+ .string "you say…\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!$"
+
+gTVCutiesText00:: @ 08286D8F
+ .string "SPOT THE CUTIES!\n"
+ .string "POKéMON IN RIBBONS!\p"
+ .string "Hello, my sweet viewers!\p"
+ .string "I just know you’ll agree, but a POKéMON\n"
+ .string "wearing RIBBONS is simply divine!\p"
+ .string "Today, I want to share with you\n"
+ .string "a lovely POKéMON I spotted while\l"
+ .string "out on a stroll in town.\p"
+ .string "Today’s featured pretty POKéMON\n"
+ .string "is {STR_VAR_1}’s {STR_VAR_2}.$"
+
+gTVCutiesText01:: @ 08286E9D
+ .string "The number of RIBBONS that\n"
+ .string "{STR_VAR_2} wears is {STR_VAR_3}.\p"
+ .string "It says a lot about how much\n"
+ .string "{STR_VAR_1} adores the POKéMON.$"
+
+gTVCutiesText02:: @ 08286EFC
+ .string "{STR_VAR_2} wears an amazing\n"
+ .string "{STR_VAR_3} RIBBONS!\p"
+ .string "It speaks volumes about {STR_VAR_1}’s\n"
+ .string "commitment to the POKéMON!$"
+
+gTVCutiesText03:: @ 08286F54
+ .string "{STR_VAR_2} wears an incredible\n"
+ .string "{STR_VAR_3} RIBBONS!\p"
+ .string "It shows you {STR_VAR_1}’s total\n"
+ .string "dedication as a collector!$"
+
+gTVCutiesText04:: @ 08286FAA
+ .string "Let us take a closer look at the many\n"
+ .string "RIBBONS worn by {STR_VAR_2}.$"
+
+gTVCutiesText05:: @ 08286FE4
+ .string "The CHAMPION RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it upon entering\n"
+ .string "the HALL OF FAME.\p"
+ .string "It verily draws out the bravery\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the CHAMP RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText06:: @ 082870A3
+ .string "The COOL RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a COOL CONTEST.\p"
+ .string "It verily draws out the coolness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the COOL RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText07:: @ 0828715A
+ .string "The BEAUTY RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a BEAUTY CONTEST.\p"
+ .string "It verily draws out the beauty\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the BEAUTY RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText08:: @ 08287215
+ .string "The CUTE RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a CUTE CONTEST.\p"
+ .string "It verily draws out the cuteness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the CUTE RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText09:: @ 082872CC
+ .string "The SMART RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a SMART CONTEST.\p"
+ .string "It verily draws out the smartness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the SMART RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText10:: @ 08287387
+ .string "The TOUGH RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a TOUGH CONTEST.\p"
+ .string "It verily draws out the toughness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the TOUGH RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText11:: @ 08287442
+ .string "The WINNING RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for its feats\n"
+ .string "at the BATTLE TOWER.\p"
+ .string "It verily draws out the mightiness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the WINNING RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText12:: @ 08287508
+ .string "The VICTORY RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for its feats\n"
+ .string "at the BATTLE TOWER.\p"
+ .string "It verily draws out the incredible\n"
+ .string "mightiness of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the VICTORY RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText13:: @ 082875D9
+ .string "The ARTIST RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for being\n"
+ .string "the model for an artist.\p"
+ .string "It verily draws out the pop-star charm\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the ARTIST RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText14:: @ 082876A1
+ .string "The Hard Worker RIBBON is\n"
+ .string "especially fetching.\p"
+ .string "{STR_VAR_2} received it for being\n"
+ .string "an especially dedicated worker.\p"
+ .string "It verily draws out the determination\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the Hard Worker RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText15:: @ 08287779
+ .string "…Sigh…\p"
+ .string "RIBBONS and POKéMON…\n"
+ .string "They go so wonderfully together!\p"
+ .string "Before I swoon,\n"
+ .string "I bid you all farewell!$"
+
+gTVPokemonNewsBattleFrontierText00:: @ 082877DE
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We’ve got some uplifting news from\n"
+ .string "the BATTLE FRONTIER.$"
+
+gTVPokemonNewsBattleFrontierText01:: @ 0828783D
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE TOWER’s SINGLE BATTLE\l"
+ .string "ROOM challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText02:: @ 082878B3
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE TOWER’s DOUBLE BATTLE\l"
+ .string "ROOM challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText03:: @ 08287929
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE TOWER’s MULTI BATTLE\l"
+ .string "ROOM challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText04:: @ 0828799E
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE TOWER’s LINK MULTI BATTLE\l"
+ .string "ROOM challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText05:: @ 08287A18
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-championship-streak record\l"
+ .string "competing in the BATTLE DOME’s\l"
+ .string "SINGLE BATTLE Tournaments.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText06:: @ 08287A97
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-championship-streak record\l"
+ .string "competing in the BATTLE DOME’s\l"
+ .string "DOUBLE BATTLE Tournaments.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText07:: @ 08287B16
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE FACTORY’s Battle\l"
+ .string "Swap Single challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText08:: @ 08287B8E
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE FACTORY’s Battle\l"
+ .string "Swap Double challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText09:: @ 08287C06
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "record of clearing {STR_VAR_2} rooms\l"
+ .string "while on the BATTLE PIKE’s Battle\l"
+ .string "Choice challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText10:: @ 08287C7D
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while\l"
+ .string "competing in the BATTLE ARENA’s\l"
+ .string "Set KO Tournaments.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText11:: @ 08287CF3
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE PALACE’s SINGLE BATTLE\l"
+ .string "HALL challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText12:: @ 08287D6A
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE PALACE’s DOUBLE BATTLE\l"
+ .string "HALL challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText13:: @ 08287DE1
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "record of clearing {STR_VAR_2} floors\l"
+ .string "while on the BATTLE PYRAMID’s\l"
+ .string "Battle Quest challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText14:: @ 08287E5B
+ .string "And to the three POKéMON, {STR_VAR_1},\n"
+ .string "{STR_VAR_2}, and {STR_VAR_3}!\p"
+ .string "Congratulations for your\n"
+ .string "record-breaking performance!$"
+
+gTVPokemonNewsBattleFrontierText15:: @ 08287EBB
+ .string "And to the two POKéMON, {STR_VAR_1}\n"
+ .string "and {STR_VAR_2}!\p"
+ .string "Congratulations for your\n"
+ .string "record-breaking performance!$"
+
+gTVPokemonNewsBattleFrontierText16:: @ 08287F14
+ .string "And to the four POKéMON: {STR_VAR_1}!\p"
+ .string "{STR_VAR_2}!\p"
+ .string "{STR_VAR_3}!$"
+
+gTVPokemonNewsBattleFrontierText17:: @ 08287F39
+ .string "And {STR_VAR_1}!\p"
+ .string "Congratulations for your\n"
+ .string "record-breaking performance!$"
+
+gTVPokemonNewsBattleFrontierText18:: @ 08287F77
+ .string "Let’s hope for more record-setting\n"
+ .string "feats from {STR_VAR_1} and the loyal\l"
+ .string "POKéMON!\p"
+ .string "That’s the news on POKéMON NEWS!$"
+
+gTVWhatsNo1InHoennTodayText00:: @ 08287FE0
+ .string "WHAT’S NO. 1 IN HOENN TODAY?\n"
+ .string "Yes, it’s that time again!\p"
+ .string "Hello, viewers! Are you giving your\n"
+ .string "best at whatever you do?\p"
+ .string "Let’s have a look at the TRAINER\n"
+ .string "who did the very best today!\p"
+ .string "Today’s no. 1 TRAINER is none other\n"
+ .string "than {STR_VAR_1}!$"
+
+gTVWhatsNo1InHoennTodayText01:: @ 082880C0
+ .string "In one day, {STR_VAR_1} spun the SLOTS\n"
+ .string "at the GAME CORNER {STR_VAR_2} times.\p"
+ .string "While playing, {STR_VAR_1} was heard\n"
+ .string "murmuring, “For me, the reels don’t\l"
+ .string "even move…”\l"
+ .string "Isn’t that interesting?$"
+
+gTVWhatsNo1InHoennTodayText02:: @ 0828815F
+ .string "In one day, {STR_VAR_1} played\n"
+ .string "the ROULETTE game at the GAME\l"
+ .string "CORNER {STR_VAR_2} times.\p"
+ .string "While playing, {STR_VAR_1} shouted,\n"
+ .string "“Let the balls decide!”\p"
+ .string "The TRAINER’s eyes were focused and\n"
+ .string "the face showed concentration.$"
+
+gTVWhatsNo1InHoennTodayText03:: @ 0828821A
+ .string "In one day, {STR_VAR_1} battled\n"
+ .string "wild POKéMON {STR_VAR_2} times!\p"
+ .string "Apparently, {STR_VAR_1}’s POKéMON\n"
+ .string "have grown incomparably stronger.\p"
+ .string "They appear eager to battle anywhere,\n"
+ .string "anytime, and anyhow!$"
+
+gTVWhatsNo1InHoennTodayText04:: @ 082882BE
+ .string "In just one day, {STR_VAR_1} spun\n"
+ .string "the BERRY BLENDER {STR_VAR_2} times!\p"
+ .string "Toward the end, even {STR_VAR_1}\n"
+ .string "seemed to get dizzy.\p"
+ .string "The TRAINER appeared to totter\n"
+ .string "around like a SPINDA!$"
+
+gTVWhatsNo1InHoennTodayText05:: @ 08288355
+ .string "In just one day, {STR_VAR_1} planted\n"
+ .string "{STR_VAR_2} BERRIES!\p"
+ .string "As a result, {STR_VAR_1}’s clothes\n"
+ .string "became filthy with dirt.\p"
+ .string "Where the TRAINER planted, countless\n"
+ .string "flowers have burst into bloom.\p"
+ .string "The flowers are said to soothe\n"
+ .string "the emotions of people.$"
+
+gTVWhatsNo1InHoennTodayText06:: @ 0828842B
+ .string "In just one day, {STR_VAR_1} picked\n"
+ .string "{STR_VAR_2} BERRIES!\p"
+ .string "{STR_VAR_1}’s BAG became so filled\n"
+ .string "with BERRIES, the TRAINER had trouble\l"
+ .string "walking afterward!$"
+
+gTVWhatsNo1InHoennTodayText07:: @ 082884A5
+ .string "In just one day, {STR_VAR_1} obtained\n"
+ .string "{STR_VAR_2} Battle Points!\p"
+ .string "{STR_VAR_1} was later seen wrestling\n"
+ .string "with the choice of exchanging\l"
+ .string "the Battle Points for a cool item or\l"
+ .string "a nifty interior decoration.\p"
+ .string "The TRAINER reportedly was grinning\n"
+ .string "while mulling options.$"
+
+gTVWhatsNo1InHoennTodayText08:: @ 0828858B
+ .string "Well, isn’t that something!\p"
+ .string "{STR_VAR_1}!\n"
+ .string "You’re today’s no. 1 TRAINER!\p"
+ .string "Viewers, take heart from {STR_VAR_1}!\n"
+ .string "You, too, can be no. 1 every day!$"
+
+gTVSecretBaseSecretsText00:: @ 08288608
+ .string "SECRET BASE SECRETS!\p"
+ .string "What do TRAINERS do in the secrecy\n"
+ .string "of SECRET BASES?\p"
+ .string "Today, we investigate {STR_VAR_1}’s\n"
+ .string "SECRET BASE.\p"
+ .string "Oh? It looks like {STR_VAR_2} has come\n"
+ .string "for a visit.\p"
+ .string "Let’s have a peek!\p"
+ .string "What will {STR_VAR_2} do?$"
+
+gTVSecretBaseSecretsText01:: @ 082886C8
+ .string "What will {STR_VAR_2} do next?$"
+
+gTVSecretBaseSecretsText02:: @ 082886DE
+ .string "And now, what will {STR_VAR_2} do?$"
+
+gTVSecretBaseSecretsText03:: @ 082886F8
+ .string "In the end, {STR_VAR_2} took {STR_VAR_3} steps\n"
+ .string "in {STR_VAR_1}’s SECRET BASE before\l"
+ .string "leaving.$"
+
+gTVSecretBaseSecretsText04:: @ 08288739
+ .string "Hmm…\p"
+ .string "It appears as if {STR_VAR_1}’s SECRET\n"
+ .string "BASE failed to interest {STR_VAR_2}…$"
+
+gTVSecretBaseSecretsText05:: @ 08288777
+ .string "{STR_VAR_2} appears to have enjoyed\n"
+ .string "{STR_VAR_1}’s SECRET BASE thoroughly.$"
+
+gTVSecretBaseSecretsText06:: @ 082887AF
+ .string "{STR_VAR_2} appears to have become\n"
+ .string "a huge fan of {STR_VAR_1}’s\l"
+ .string "SECRET BASE.$"
+
+gTVSecretBaseSecretsText07:: @ 082887E9
+ .string "Viewers may want to check out\n"
+ .string "{STR_VAR_1}’s SECRET BASE, too.\p"
+ .string "Tune in next time as we visit another\n"
+ .string "SECRET BASE! Thanks for joining us!$"
+
+gTVSecretBaseSecretsText08:: @ 08288868
+ .string "The visitor has stopped!\p"
+ .string "The visitor isn’t moving at all!\p"
+ .string "Was {STR_VAR_1}’s SECRET BASE\n"
+ .string "that unimpressive?$"
+
+gTVSecretBaseSecretsText09:: @ 082888CA
+ .string "The visitor has stopped!\p"
+ .string "The visitor isn’t moving at all!\p"
+ .string "Is it fatigue?\n"
+ .string "Has the visitor grown weary?$"
+
+gTVSecretBaseSecretsText10:: @ 08288930
+ .string "The visitor sat down on a chair!\n"
+ .string "The visitor is seated!\p"
+ .string "Look at that look of delight!\p"
+ .string "That chair must be very comfortable\n"
+ .string "to get that response!$"
+
+gTVSecretBaseSecretsText11:: @ 082889C0
+ .string "The visitor charged at a balloon!\p"
+ .string "It burst!\n"
+ .string "Oh, my goodness, it popped!\p"
+ .string "The visitor appears startled by\n"
+ .string "the sudden noise!$"
+
+gTVSecretBaseSecretsText12:: @ 08288A3A
+ .string "The visitor entered a TENT!\p"
+ .string "The visitor is running around!\p"
+ .string "Oh, my, the visitor is frolicking!\p"
+ .string "The visitor appears surprised by\n"
+ .string "the TENT’s size!$"
+
+gTVSecretBaseSecretsText13:: @ 08288ACA
+ .string "The visitor is examining\n"
+ .string "a potted plant!\p"
+ .string "The visitor has surprisingly\n"
+ .string "mature taste!$"
+
+gTVSecretBaseSecretsText14:: @ 08288B1E
+ .string "The visitor is examining\n"
+ .string "a GOLD SHIELD!\p"
+ .string "The visitor’s eyes appear to be\n"
+ .string "lit up with wonder!$"
+
+gTVSecretBaseSecretsText15:: @ 08288B7A
+ .string "The visitor is examining\n"
+ .string "a SILVER SHIELD!\p"
+ .string "The visitor appears to be wide-eyed!$"
+
+gTVSecretBaseSecretsText16:: @ 08288BC9
+ .string "The visitor is examining\n"
+ .string "a GLASS ORNAMENT!\p"
+ .string "Oh, no!\p"
+ .string "The visitor is touching it!\p"
+ .string "It’s getting covered with\n"
+ .string "fingerprints…$"
+
+gTVSecretBaseSecretsText17:: @ 08288C40
+ .string "The visitor is watching television!\p"
+ .string "Looks like we have a big fan of TV!$"
+
+gTVSecretBaseSecretsText18:: @ 08288C88
+ .string "The visitor stomped on a MUD BALL!\p"
+ .string "The visitor looks delighted!$"
+
+gTVSecretBaseSecretsText19:: @ 08288CC8
+ .string "…Oh?\p"
+ .string "The visitor is reaching for their own\n"
+ .string "BAG and rummaging about in it!\p"
+ .string "The visitor pulled out\n"
+ .string "one {STR_VAR_2}!\p"
+ .string "Look at the visitor smile while\n"
+ .string "holding up the {STR_VAR_2}!\p"
+ .string "It’s like a TV commercial!$"
+
+gTVSecretBaseSecretsText20:: @ 08288D7F
+ .string "The visitor grabs a cushion and…$"
+
+gTVSecretBaseSecretsText21:: @ 08288DA0
+ .string "…begins hitting it!\p"
+ .string "Is the visitor under a lot of stress?$"
+
+gTVSecretBaseSecretsText22:: @ 08288DDA
+ .string "…hugs it tight!\p"
+ .string "Could the visitor be feeling happy\n"
+ .string "about something?$"
+
+gTVSecretBaseSecretsText23:: @ 08288E1E
+ .string "The visitor is chatting with\n"
+ .string "{STR_VAR_1}!\p"
+ .string "It looks like they’re going to\n"
+ .string "have a battle!\p"
+ .string "And…\p"
+ .string "It’s the visitor!\n"
+ .string "The visitor won an away match!\p"
+ .string "The visitor is doing\n"
+ .string "a victory dance!$"
+
+gTVSecretBaseSecretsText24:: @ 08288EC9
+ .string "The visitor is chatting with\n"
+ .string "{STR_VAR_1}!\p"
+ .string "It looks like they’re going to\n"
+ .string "have a battle!\p"
+ .string "And…\p"
+ .string "It’s {STR_VAR_1}!\n"
+ .string "The visitor has lost!\p"
+ .string "The visitor looks dejected!$"
+
+gTVSecretBaseSecretsText25:: @ 08288F58
+ .string "The visitor is chatting with\n"
+ .string "{STR_VAR_1}!\p"
+ .string "It looks like they’re going to\n"
+ .string "have a battle!\p"
+ .string "And…\p"
+ .string "No, the visitor has refused!\p"
+ .string "There won’t be a battle after all!\p"
+ .string "Did the visitor find {STR_VAR_1}\n"
+ .string "unappealing?$"
+
+gTVSecretBaseSecretsText26:: @ 08289011
+ .string "The visitor is staring intently\n"
+ .string "at a poster!\p"
+ .string "Is the poster to the visitor’s\n"
+ .string "liking?\p"
+ .string "…But… There’s something disturbing\n"
+ .string "about the visitor’s stares.$"
+
+gTVSecretBaseSecretsText27:: @ 082890A4
+ .string "The visitor stepped on a NOTE MAT!\p"
+ .string "…Hmm…\n"
+ .string "The visitor composed a funny tune!$"
+
+gTVSecretBaseSecretsText28:: @ 082890F0
+ .string "The visitor is chatting with\n"
+ .string "{STR_VAR_1}!\p"
+ .string "It looks like they’re going to\n"
+ .string "have a battle!\p"
+ .string "And…\p"
+ .string "It’s a draw!\n"
+ .string "Nothing’s resolved!\p"
+ .string "Both TRAINERS appear to be very\n"
+ .string "disappointed!$"
+
+gTVSecretBaseSecretsText29:: @ 08289193
+ .string "The visitor stepped on\n"
+ .string "a SPIN MAT!\p"
+ .string "It looks like the visitor is dizzy!\p"
+ .string "The visitor is tottering about!\n"
+ .string "Look out!$"
+
+gTVSecretBaseSecretsText30:: @ 08289204
+ .string "The visitor is reaching for\n"
+ .string "a SAND ORNAMENT!\p"
+ .string "Oh!\p"
+ .string "It crumbled!\n"
+ .string "It’s fallen apart!\p"
+ .string "The visitor looks sheepish\n"
+ .string "and guilty!$"
+
+gTVSecretBaseSecretsText31:: @ 0828927C
+ .string "The visitor is rubbing a desktop\n"
+ .string "with their finger!\p"
+ .string "Apparently, the visitor disapproves\n"
+ .string "of dust!\p"
+ .string "The visitor is surprisingly concerned\n"
+ .string "about neatness!$"
+
+gTVSecretBaseSecretsText32:: @ 08289313
+ .string "The visitor is staring at a BRICK!\p"
+ .string "Perhaps the visitor is thinking about\n"
+ .string "the object on the BRICK.$"
+
+gTVSecretBaseSecretsText33:: @ 08289375
+ .string "The visitor is walking across\n"
+ .string "the SOLID BOARD.\p"
+ .string "The visitor keeps looking down.\p"
+ .string "The visitor appears to be surprisingly\n"
+ .string "timid and cautious!$"
+
+gTVSecretBaseSecretsText34:: @ 082893FF
+ .string "The visitor is looking intently\n"
+ .string "at a FENCE!\p"
+ .string "Has a new idea for a trap popped\n"
+ .string "into the visitor’s head?$"
+
+gTVSecretBaseSecretsText35:: @ 08289465
+ .string "The visitor stepped on\n"
+ .string "a GLITTER MAT!\p"
+ .string "The visitor is striking a variety\n"
+ .string "of poses!\p"
+ .string "The visitor appears to be fantasizing\n"
+ .string "about being an idol!$"
+
+gTVSecretBaseSecretsText36:: @ 082894F2
+ .string "The visitor is staring intently\n"
+ .string "at a TIRE!\p"
+ .string "Could the visitor be thinking about\n"
+ .string "the kind of car that would use it?$"
+
+gTVSecretBaseSecretsText37:: @ 08289564
+ .string "The visitor climbed a STAND!\p"
+ .string "The visitor is looking out across\n"
+ .string "{STR_VAR_1}’s BASE from high up!\p"
+ .string "And…\p"
+ .string "Lets loose a roar!\n"
+ .string "The visitor is roaring!$"
+
+gTVSecretBaseSecretsText38:: @ 082895EB
+ .string "The visitor charged headlong into\n"
+ .string "a BREAKABLE DOOR!\p"
+ .string "The visitor is laughing uproariously!$"
+
+gTVSecretBaseSecretsText39:: @ 08289645
+ .string "The visitor is talking to a DOLL!\p"
+ .string "…It’s a little creepy…$"
+
+gTVSecretBaseSecretsText40:: @ 0828967E
+ .string "The visitor is climbing the ladder\n"
+ .string "on a SLIDE!\p"
+ .string "And…\p"
+ .string "The visitor slid down!\p"
+ .string "Looks like the visitor is having\n"
+ .string "a grand old time!$"
+
+gTVSecretBaseSecretsText41:: @ 082896FC
+ .string "The visitor is climbing the ladder\n"
+ .string "on a SLIDE!\p"
+ .string "And…\p"
+ .string "The visitor went back down\n"
+ .string "the ladder!\p"
+ .string "Did the visitor suddenly chicken out?$"
+
+gTVSecretBaseSecretsText42:: @ 0828977D
+ .string "The visitor stepped on\n"
+ .string "a JUMP MAT!\p"
+ .string "The visitor jumped once!\p"
+ .string "Jumped twice!\p"
+ .string "And a successful landing!\p"
+ .string "The visitor is clapping!\n"
+ .string "What a solo performance!$"
+
+gTVSafariFanClubText00:: @ 08289813
+ .string "SAFARI FAN CLUB!\p"
+ .string "REPORTER: All right, mates!\n"
+ .string "Tossing them SAFARI BALLS, are you?\p"
+ .string "You can bet I am here in the SAFARI\n"
+ .string "ZONE chock-full of amazing POKéMON!\p"
+ .string "Let’s get with it and have a chat with\n"
+ .string "this good fellow of a SAFARI GUIDE!\p"
+ .string "All right, mate, how are the visiting\n"
+ .string "TRAINERS looking?$"
+
+gTVSafariFanClubText01:: @ 0828992F
+ .string "GUIDE: Everyone seems to be going\n"
+ .string "hard at it.\p"
+ .string "{STR_VAR_1} is doing especially well.\p"
+ .string "Why, before, {STR_VAR_1} caught\n"
+ .string "{STR_VAR_2} POKéMON.$"
+
+gTVSafariFanClubText02:: @ 0828999D
+ .string "The TRAINER is clever with {POKEBLOCK}S.\n"
+ .string "Used {STR_VAR_2} that time, I think.$"
+
+gTVSafariFanClubText03:: @ 082899DC
+ .string "The TRAINER didn’t use a single\n"
+ .string "{POKEBLOCK}! Not a one!\p"
+ .string "There’s an expert for you.$"
+
+gTVSafariFanClubText04:: @ 08289A29
+ .string "REPORTER: Is that right, then?\p"
+ .string "Sounds like our mate {STR_VAR_1}\n"
+ .string "is a stout SAFARI master!\p"
+ .string "GUIDE: I hope the TRAINER comes back\n"
+ .string "and shows us that great technique.$"
+
+gTVSafariFanClubText05:: @ 08289AC2
+ .string "GUIDE: No one seems to be doing\n"
+ .string "very well.\p"
+ .string "{STR_VAR_1} had it especially bad.\p"
+ .string "Why, before, the TRAINER only\n"
+ .string "managed to catch {STR_VAR_2} POKéMON.$"
+
+gTVSafariFanClubText06:: @ 08289B42
+ .string "GUIDE: No one seems to be doing\n"
+ .string "very well.\p"
+ .string "{STR_VAR_1} had it especially bad.\p"
+ .string "Why, before, the TRAINER didn’t\n"
+ .string "catch one POKéMON. Not a one!$"
+
+gTVSafariFanClubText07:: @ 08289BC5
+ .string "The TRAINER does use {POKEBLOCK}S.\n"
+ .string "Used {STR_VAR_2} that time, I think.\p"
+ .string "But, boy, I wish the TRAINER would\n"
+ .string "get a bit better at this.$"
+
+gTVSafariFanClubText08:: @ 08289C3B
+ .string "I think the TRAINER would have better\n"
+ .string "luck using {POKEBLOCK}S, which weren’t\l"
+ .string "used at all that time.$"
+
+gTVSafariFanClubText09:: @ 08289C99
+ .string "REPORTER: Is that right, then?\p"
+ .string "Sounds like our mate {STR_VAR_1}\n"
+ .string "needs more SAFARI seasoning.\p"
+ .string "GUIDE: I hope the TRAINER visits\n"
+ .string "over and over to get the hang of it.$"
+
+gTVSafariFanClubText10:: @ 08289D33
+ .string "REPORTER: Quite right, it is!\n"
+ .string "Facing up to challenges is important!\p"
+ .string "Viewers, come on down to the SAFARI\n"
+ .string "and make the challenge yourself!\p"
+ .string "Until next time, cheerio!$"
+
+gTVContestLiveUpdatesText00:: @ 08289DD6
+ .string "“POKéMON CONTEST LIVE UPDATES!”\p"
+ .string "MC: Thanks for joining us!\p"
+ .string "We’re live from the just-ended\n"
+ .string "{STR_VAR_1} site.\p"
+ .string "The hall is still filled with\n"
+ .string "an audience unwilling to leave.\p"
+ .string "Spectator: {STR_VAR_2}!\p"
+ .string "Spectator: {STR_VAR_3}!\p"
+ .string "MC: As you’ve just heard, the CONTEST\n"
+ .string "was won by the POKéMON {STR_VAR_2}\l"
+ .string "of {STR_VAR_3}.\p"
+ .string "Spectator: {STR_VAR_2}!\n"
+ .string "You’re the best!\p"
+ .string "Spectator: {STR_VAR_3}!\n"
+ .string "Way to go!\p"
+ .string "MC: Let’s hear what the fans have\n"
+ .string "to say about this CONTEST.$"
+
+gTVContestLiveUpdatesText01:: @ 08289F53
+ .string "Spectator: The {STR_VAR_2} was tops in\n"
+ .string "both primary and secondary judging!\p"
+ .string "That {STR_VAR_2} will keep winning!$"
+
+gTVContestLiveUpdatesText02:: @ 08289FB0
+ .string "Spectator: The {STR_VAR_2} didn’t do\n"
+ .string "well in the primary judging, but it\l"
+ .string "cleaned up in the secondary judging!\p"
+ .string "It was a miraculous comeback\n"
+ .string "for that {STR_VAR_2}. Yippee!$"
+
+gTVContestLiveUpdatesText03:: @ 0828A047
+ .string "Spectator: The {STR_VAR_2} remained\n"
+ .string "consistent throughout both primary\l"
+ .string "and secondary judging.\p"
+ .string "{STR_VAR_3} and the {STR_VAR_2},\n"
+ .string "they’re no ordinary combo!$"
+
+gTVContestLiveUpdatesText04:: @ 0828A0C6
+ .string "Spectator: In terms of being {STR_VAR_1},\n"
+ .string "that {STR_VAR_2} was outstanding.\p"
+ .string "I hope it makes better appeals\n"
+ .string "next time, though.$"
+
+gTVContestLiveUpdatesText05:: @ 0828A132
+ .string "Spectator: When the {STR_VAR_2} got\n"
+ .string "nervous, I couldn’t stop myself from\l"
+ .string "shouting encouragement.\p"
+ .string "I’d like to say this to that\n"
+ .string "{STR_VAR_2}, “Congratulations!”$"
+
+gTVContestLiveUpdatesText06:: @ 0828A1BE
+ .string "Spectator: That {STR_VAR_2}’s appeal\n"
+ .string "startled even me!\p"
+ .string "{STR_VAR_2}, you were awesome!$"
+
+gTVContestLiveUpdatesText07:: @ 0828A202
+ .string "Spectator: That {STR_VAR_2}’s combo\n"
+ .string "appeal was stunning!\p"
+ .string "It’s shaken me to the core!$"
+
+gTVContestLiveUpdatesText08:: @ 0828A24E
+ .string "Spectator: The winning {STR_VAR_2}’s\n"
+ .string "appeal got my heart pounding!$"
+
+gTVContestLiveUpdatesText09:: @ 0828A288
+ .string "{STR_VAR_2}!\n"
+ .string "You were cool!$"
+
+gTVContestLiveUpdatesText10:: @ 0828A29B
+ .string "{STR_VAR_2}!\n"
+ .string "You were beautiful!$"
+
+gTVContestLiveUpdatesText11:: @ 0828A2B3
+ .string "{STR_VAR_2}!\n"
+ .string "You were cute!$"
+
+gTVContestLiveUpdatesText12:: @ 0828A2C6
+ .string "{STR_VAR_2}!\n"
+ .string "You were smart!$"
+
+gTVContestLiveUpdatesText13:: @ 0828A2DA
+ .string "{STR_VAR_2}!\n"
+ .string "You were tough!$"
+
+gTVContestLiveUpdatesText14:: @ 0828A2EE
+ .string "Spectator: The winning {STR_VAR_2}’s\n"
+ .string "appeal still has my heart pounding!$"
+
+gTVContestLiveUpdatesText15:: @ 0828A32E
+ .string "{STR_VAR_2}!\n"
+ .string "You’re the last word in cool!$"
+
+gTVContestLiveUpdatesText16:: @ 0828A350
+ .string "{STR_VAR_2}!\n"
+ .string "You’re the most beautiful!$"
+
+gTVContestLiveUpdatesText17:: @ 0828A36F
+ .string "{STR_VAR_2}!\n"
+ .string "You’re simply the cutest!$"
+
+gTVContestLiveUpdatesText18:: @ 0828A38D
+ .string "{STR_VAR_2}!\n"
+ .string "You’re the smartest among the smart!$"
+
+gTVContestLiveUpdatesText19:: @ 0828A3B6
+ .string "{STR_VAR_2}!\n"
+ .string "You’re the toughest of the tough!$"
+
+gTVContestLiveUpdatesText20:: @ 0828A3DC
+ .string "Spectator: Even when the {STR_VAR_2}\n"
+ .string "took a break from making appeals,\l"
+ .string "I couldn’t take my eyes off it.\p"
+ .string "I’m captivated by that {STR_VAR_2}.$"
+
+gTVContestLiveUpdatesText21:: @ 0828A455
+ .string "Spectator: When the {STR_VAR_2} was\n"
+ .string "startled by another POKéMON’s appeal,\l"
+ .string "I was close to tears.\p"
+ .string "{STR_VAR_2}, you were resilient!\n"
+ .string "Way to go!$"
+
+gTVContestLiveUpdatesText22:: @ 0828A4CF
+ .string "Spectator: Oh…\n"
+ .string "That {STR_VAR_2}’s {STR_VAR_3}!\l"
+ .string "{STR_VAR_2}’s {STR_VAR_3}!\l"
+ .string "{STR_VAR_2}’s {STR_VAR_3}!\l"
+ .string "How could it be so wonderful?$"
+
+gTVContestLiveUpdatesText23:: @ 0828A51C
+ .string "MC: Well, there you have it. This place\n"
+ .string "is full of the {STR_VAR_1}’s fans!\p"
+ .string "I should also mention that another\n"
+ .string "POKéMON, {STR_VAR_2}’s {STR_VAR_3}, \l"
+ .string "caught my eye.\p"
+ .string "{STR_VAR_2}’s {STR_VAR_3}…$"
+
+gTVContestLiveUpdatesText24:: @ 0828A5AC
+ .string "It failed to make a single appeal during\n"
+ .string "secondary judging out of nervousness.\p"
+ .string "Next time, I would like to see this\n"
+ .string "{STR_VAR_1} make even one appeal.$"
+
+gTVContestLiveUpdatesText25:: @ 0828A638
+ .string "It came dead last in both primary\n"
+ .string "and secondary judging.\p"
+ .string "I hope that {STR_VAR_1} will retrain this\n"
+ .string "{STR_VAR_2} and erase the shame of\l"
+ .string "this undisputed last-place finish.$"
+
+gTVContestLiveUpdatesText26:: @ 0828A6CF
+ .string "It failed to take advantage of\n"
+ .string "the audience’s excitement and make\l"
+ .string "an appropriate appeal.\p"
+ .string "We hope {STR_VAR_1} will learn how to get\n"
+ .string "a feel for the audience and whip their\l"
+ .string "excitement to a fever pitch next time.$"
+
+gTVContestLiveUpdatesText27:: @ 0828A797
+ .string "While finishing first in the primary\n"
+ .string "judging, its appeals in the secondary\l"
+ .string "judging failed to click.\p"
+ .string "It suffered a humiliating come-from-\n"
+ .string "behind loss.\p"
+ .string "I’m sure {STR_VAR_1} is studying how to\n"
+ .string "make more effective appeals now.$"
+
+gTVContestLiveUpdatesText28:: @ 0828A86D
+ .string "The audience never got excited by its\n"
+ .string "appeals during the secondary judging.\p"
+ .string "We hope it will stop worrying about\n"
+ .string "other POKéMON and learn to pitch\l"
+ .string "its appeals to the audience more.$"
+
+gTVContestLiveUpdatesText29:: @ 0828A920
+ .string "It lost to {STR_VAR_1}’s {STR_VAR_2}\n"
+ .string "by only a small margin.\p"
+ .string "It must be heartbreaking to come\n"
+ .string "so close to victory only to fail.\p"
+ .string "I wouldn’t be surprised if {STR_VAR_3}\n"
+ .string "were weeping over this outcome.$"
+
+gTVContestLiveUpdatesText30:: @ 0828A9CC
+ .string "It disappointed the JUDGE by\n"
+ .string "repeating the same appeals.\p"
+ .string "It’s an unforgivable error in any\n"
+ .string "CONTEST, and the POKéMON paid.\p"
+ .string "{STR_VAR_1} should feel guilty for\n"
+ .string "this sorry showing.$"
+
+gTVContestLiveUpdatesText31:: @ 0828AA74
+ .string "{STR_VAR_1} turned in a valiant effort,\n"
+ .string "but…\p"
+ .string "It was all for naught, finishing last.\p"
+ .string "{STR_VAR_1} should learn from this loss\n"
+ .string "and put the knowledge to good use.$"
+
+gTVContestLiveUpdatesText32:: @ 0828AB01
+ .string "I’d like to end this program with our\n"
+ .string "usual farewell to the winners.\p"
+ .string "This time, it’s {STR_VAR_1} and\n"
+ .string "the {STR_VAR_2}!\p"
+ .string "MC: Is everyone ready?\n"
+ .string "All together now!\p"
+ .string "Audience: {STR_VAR_1}! {STR_VAR_2}!\n"
+ .string "Congratulations!\l"
+ .string "You’re the CONTEST winner!$"
+
+gTVPokemonBattleUpdateText00:: @ 0828ABCC
+ .string "“POKéMON BATTLE UPDATE!”\p"
+ .string "Bringing you the results of POKéMON\n"
+ .string "battles as they come in!$"
+
+gTVPokemonBattleUpdateText01:: @ 0828AC22
+ .string "The TRAINERS {STR_VAR_1} and\n"
+ .string "{STR_VAR_2} faced each other in\l"
+ .string "a {STR_VAR_3} BATTLE.\p"
+ .string "This match ended in victory for\n"
+ .string "{STR_VAR_1}!$"
+
+gTVPokemonBattleUpdateText02:: @ 0828AC7E
+ .string "In the battle, {STR_VAR_1}’s\n"
+ .string "{STR_VAR_2} was a formidable force\l"
+ .string "using {STR_VAR_3}!$"
+
+gTVPokemonBattleUpdateText03:: @ 0828ACB6
+ .string "{STR_VAR_1}’s {STR_VAR_2} had a weak\n"
+ .string "showing that really hurt.$"
+
+gTVPokemonBattleUpdateText04:: @ 0828ACE3
+ .string "Congratulations on your victory,\n"
+ .string "{STR_VAR_1}!\p"
+ .string "And for the defeated {STR_VAR_2},\n"
+ .string "we hope for a better result next time!\p"
+ .string "This concludes this episode of\n"
+ .string "“POKéMON BATTLE UPDATE!”$"
+
+gTVPokemonBattleUpdateText05:: @ 0828AD80
+ .string "The teams of TRAINERS {STR_VAR_1} and\n"
+ .string "{STR_VAR_2} met in a MULTI BATTLE.\p"
+ .string "This match ended in victory for\n"
+ .string "{STR_VAR_1}’s team.$"
+
+gTVPokemonBattleUpdateText06:: @ 0828ADE2
+ .string "In the battle, the {STR_VAR_2} on\n"
+ .string "{STR_VAR_1}’s team was a formidable\l"
+ .string "force using {STR_VAR_3}.$"
+
+gTVPokemonBattleUpdateText07:: @ 0828AE26
+ .string "The weak showing by the {STR_VAR_3}\n"
+ .string "on {STR_VAR_2}’s team really hurt.\p"
+ .string "Congratulations on your team’s\n"
+ .string "victory, {STR_VAR_1}!\p"
+ .string "As for the defeated {STR_VAR_2}’s team,\n"
+ .string "we hope for a better result next time!\p"
+ .string "This concludes this episode of\n"
+ .string "“POKéMON BATTLE UPDATE!”$"
+
+ .string "GABBY: Oh! We’ve just spotted a tough-\n"
+ .string "looking TRAINER here of all places!\p"
+ .string "Okay, roll camera!\n"
+ .string "Let’s get this interview.$"
+
+ .string "GABBY: Oh! You’re {PLAYER}! Hi!\n"
+ .string "Do you remember us from last time?\p"
+ .string "Can you show us how much stronger\n"
+ .string "you’ve become? Okay, cue interview!$"
+
+ .string "GABBY: My eyes didn’t lie!\n"
+ .string "I did discover an astonishing TRAINER!$"
+
+ .string "GABBY: Awesome! Awesome!\n"
+ .string "Who are you?!\p"
+ .string "I knew we were onto something wild\n"
+ .string "when we spotted you!\p"
+ .string "Oh, please let me explain. We travel\n"
+ .string "around everywhere interviewing all\l"
+ .string "sorts of TRAINERS.\p"
+ .string "So, would you give us a bit of your time\n"
+ .string "for an interview?$"
+
+ .string "GABBY: “{STR_VAR_1}!”\p"
+ .string "Remember? That’s the quote you gave\n"
+ .string "us as the battle clincher last time.\p"
+ .string "I never, ever forget stuff like that!$"
+
+ .string "The last time we battled, you stomped\n"
+ .string "us before we could brace ourselves…\p"
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "The last time we battled, didn’t you\n"
+ .string "throw a POKé BALL at us?\p"
+ .string "We were shocked! So we told everyone,\n"
+ .string "just everyone, about it!\p"
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "The last time we battled, your item\n"
+ .string "skills cleverly did us in.\p"
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "The last time we battled, we managed\n"
+ .string "to look respectable.\p"
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "You will?\n"
+ .string "Thank you!\p"
+ .string "Okay, I need you to describe your\n"
+ .string "feelings about our battle, but it\l"
+ .string "has to be short and sweet. Go!$"
+
+ .string "GABBY: Mmm, yeah!\n"
+ .string "That’s the perfect clincher!\p"
+ .string "I get the feeling that this will make\n"
+ .string "a great TV show.\p"
+ .string "There’s a chance that they’ll air this\n"
+ .string "on TV, so make sure to look for us!\p"
+ .string "Okay!\n"
+ .string "We’ll be seeing you!$"
+
+ .string "GABBY: Oh…\p"
+ .string "Okay, but don’t give up!\n"
+ .string "We’ll be keeping an eye out for you!$"
+
+ .string "GABBY: We’ll be keeping an eye out\n"
+ .string "for you!$"
+
+ .string "GABBY: Is there a strong TRAINER\n"
+ .string "anywhere with a lot of POKéMON?$"
+
+ .string "GABBY: Wow, you are something!\p"
+ .string "You’ve gotten a lot stronger--a lot--\n"
+ .string "since we last battled.\p"
+ .string "We were right about you when we\n"
+ .string "spotted you as a hot TRAINER.\p"
+ .string "So, anyway, what do you think?\n"
+ .string "Are you willing to give us an interview\l"
+ .string "this time?$"
+
+ .string "GABBY: That was an intense battle!\n"
+ .string "Did you get all that on camera?$"
+
+ .string "TY: Hey, lookie here! A tough-looking\n"
+ .string "TRAINER here, of all places!\l"
+ .string "Camera’s rolling!$"
+
+ .string "TY: Hey, lookie here!\n"
+ .string "I remember you!\p"
+ .string "I’ll get this battle all on this\n"
+ .string "here camera!$"
+
+ .string "TY: You’re a natural!\n"
+ .string "Got me some prime footage right here!$"
+
+ .string "TY: Do you only have the one POKéMON\n"
+ .string "and that’s it?\p"
+ .string "If you had more POKéMON, it’d make for\n"
+ .string "better footage, but…$"
+
+ .string "TY: Yep, we sure spotted a hot TRAINER.\n"
+ .string "This is a huge scoop for us!$"
+
+ .string "TY: Yep, I got it all.\n"
+ .string "That whole battle’s on camera.$"
+
+gTVInSearchOfTrainersText00:: @ 0828B92C
+ .string "IN SEARCH OF TRAINERS…\p"
+ .string "GABBY: Hi! Today I’m visiting an area\n"
+ .string "near {STR_VAR_1}.\p"
+ .string "We’re trying to spot some up-and-\n"
+ .string "coming new talent in the field.\p"
+ .string "Today, we turned our lens on the\n"
+ .string "TRAINER {PLAYER}.\p"
+ .string "There’s something about this TRAINER\n"
+ .string "that piqued our interest.$"
+
+gTVInSearchOfTrainersText01:: @ 0828BA20
+ .string "We’ve battled {PLAYER} before, but we\n"
+ .string "can attest that the TRAINER has most\l"
+ .string "definitely improved from before.\p"
+ .string "I knew we were onto someone special\n"
+ .string "when we spotted this TRAINER!$"
+
+gTVInSearchOfTrainersText02:: @ 0828BAC8
+ .string "The best way to determine how strong\n"
+ .string "a TRAINER is…\p"
+ .string "Well, the fastest way is to battle.\n"
+ .string "And so we began our investigation!\p"
+ .string "… …\p"
+ .string "That’s how we ended up in battle\n"
+ .string "with {PLAYER}.\p"
+ .string "In a dominating performance, we were\n"
+ .string "flattened, rolled up, and tossed aside!\p"
+ .string "{PLAYER} is ruthlessly strong…\p"
+ .string "Here’s our impressions after having\n"
+ .string "battled our featured TRAINER.$"
+
+gTVInSearchOfTrainersText03:: @ 0828BC18
+ .string "The combination of {STR_VAR_1} and\n"
+ .string "{STR_VAR_3} was divine!\p"
+ .string "The sight of them--{STR_VAR_1} and\n"
+ .string "{STR_VAR_3}--selflessly supporting\l"
+ .string "each other in the thick of battle…\p"
+ .string "It was a marvelous sight to behold!\p"
+ .string "{STR_VAR_2} was the move the TRAINER\n"
+ .string "used last in our battle.\p"
+ .string "The move {STR_VAR_2} is {STR_VAR_1}\n"
+ .string "and {STR_VAR_3}’s sign of friendship!$"
+
+gTVInSearchOfTrainersText04:: @ 0828BD20
+ .string "…I lost confidence in myself as\n"
+ .string "a result of our encounter.\p"
+ .string "We were beaten before we could launch\n"
+ .string "a single attack.\l"
+ .string "Ohhh… Snivel…\p"
+ .string "In spite of that, {PLAYER}’s battles\n"
+ .string "are worth seeing.\p"
+ .string "I recommend confident TRAINERS to\n"
+ .string "challenge {PLAYER}.$"
+
+gTVInSearchOfTrainersText05:: @ 0828BE01
+ .string "There’s only one thing to be said.\n"
+ .string "Don’t you dare throw a POKé BALL during\l"
+ .string "a TRAINER battle!\p"
+ .string "{PLAYER} is certainly strong, but has\n"
+ .string "no clue about the basic rules.\p"
+ .string "To our TV audience, I have a request.\p"
+ .string "If you see {PLAYER}, please caution\n"
+ .string "the TRAINER!$"
+
+gTVInSearchOfTrainersText06:: @ 0828BEEE
+ .string "{PLAYER} is adept at reading the\n"
+ .string "opponent’s actions.\p"
+ .string "The timing of item usage was remarkably\n"
+ .string "effective!$"
+
+gTVInSearchOfTrainersText07:: @ 0828BF50
+ .string "Honestly speaking, I thought that\n"
+ .string "I might even be pretty good.\p"
+ .string "While we did end up losing, we did have\n"
+ .string "a hotly contested battle.\p"
+ .string "But if you’re struggling against me,\n"
+ .string "you have a ways to go, {PLAYER}!$"
+
+gTVInSearchOfTrainersText08:: @ 0828C011
+ .string "After our battle, we asked {PLAYER} for\n"
+ .string "a succinct summary.\p"
+ .string "The TRAINER replied, “{STR_VAR_1}.”\p"
+ .string "{PLAYER}’s POKéMON {STR_VAR_2} and\n"
+ .string "{STR_VAR_3}…\l"
+ .string "And “{STR_VAR_1}”…\p"
+ .string "Mmm! That’s deep! There’s deep\n"
+ .string "significance behind that quote!\p"
+ .string "It’s no surprise--a good TRAINER has\n"
+ .string "good things to say.\p"
+ .string "That’s all for today!\n"
+ .string "See you again on our next broadcast!$"
+
+gTVPokemonContestLiveUpdates2Text00:: @ 0828C137
+ .string "“POKéMON CONTEST LIVE UPDATES!”\p"
+ .string "MC: Sorry to interrupt the regular\n"
+ .string "programming, and thanks for joining us!\p"
+ .string "We bring you this live from\n"
+ .string "the scene of a just-completed\l"
+ .string "{STR_VAR_1}!\p"
+ .string "Spectators: ?!!!!\p"
+ .string "MC: Oh! It looks like the CONTEST\n"
+ .string "participants are headed this way!\p"
+ .string "I’ll try to get an impromptu interview\n"
+ .string "for you folks at home!\p"
+ .string "Spectators: ?!!!!\n"
+ .string "?!!!!$"
+
+gTVPokemonContestLiveUpdates2Text01:: @ 0828C28C
+ .string "MC: Excuse me!\n"
+ .string "Thanks for joining us on live TV!\p"
+ .string "May I congratulate you on your win?\p"
+ .string "What was the key factor in today’s\n"
+ .string "stunning victory?\p"
+ .string "BEAUTY: We gave it our best effort\n"
+ .string "today, my {STR_VAR_2} and I!\p"
+ .string "But I’m sure we wouldn’t have made it\n"
+ .string "if it weren’t for all the help we\l"
+ .string "received leading up to the CONTEST!\p"
+ .string "MC: Do you have a special someone\n"
+ .string "with whom you’d like to share your joy?\l"
+ .string "Let’s hear it live!\p"
+ .string "BEAUTY: Hey, out there!\p"
+ .string "{STR_VAR_3}! Are you watching?\n"
+ .string "We did it!\l"
+ .string "Thank you!$"
+
+gTVPokemonContestLiveUpdates2Text02:: @ 0828C45B
+ .string "MC: Excuse me!\n"
+ .string "Thanks for joining us on live TV!\p"
+ .string "You must be disappointed by that turn\n"
+ .string "of events. Do you have any comments?\p"
+ .string "BEAUTY: It’s heartbreaking…\n"
+ .string "My {STR_VAR_2} and I, we did our best…\p"
+ .string "But I feel like I’ve let down everyone\n"
+ .string "who has supported us through this.\p"
+ .string "MC: I hate to say it, but the POKéMON’s\n"
+ .string "coloration is a little wanting.\p"
+ .string "BEAUTY: {STR_VAR_3}, I’m so sorry…\n"
+ .string "I’ll do better next time, I swear…\l"
+ .string "…Sniff… Waaaaah!\p"
+ .string "Spectators: See that?\n"
+ .string "The poor girl!\p"
+ .string "MC: Uh… Uh-oh…\p"
+ .string "Uh… That’s all the time we have today!\n"
+ .string "Thanks for tuning in!$"
+
+gTVPokemonContestLiveUpdates2Text03:: @ 0828C662
+ .string "MC: Excuse me!\n"
+ .string "Thanks for joining us on live TV!\p"
+ .string "How did your CONTEST appearance go?\p"
+ .string "BEAUTY: Nothing went right…\n"
+ .string "For some reason, my {STR_VAR_2}\l"
+ .string "couldn’t attract any popularity.\p"
+ .string "MC: I hate to say it, but the POKéMON’s\n"
+ .string "coloration is a little wanting.\p"
+ .string "BEAUTY: … … … … … …\n"
+ .string "…Sniff… Waaaaah!\p"
+ .string "Spectators: See that?\n"
+ .string "The poor girl!\p"
+ .string "MC: Uh… Uh-oh…\p"
+ .string "Uh… That’s all the time we have today!\n"
+ .string "Thanks for tuning in!$"
diff --git a/data/tileset.s b/data/tileset.s
deleted file mode 100644
index 1221d8967..000000000
--- a/data/tileset.s
+++ /dev/null
@@ -1,116 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_08510764:: @ 8510764
- .incbin "baserom.gba", 0x510764, 0xb60
-
-gUnknown_085112C4:: @ 85112C4
- .incbin "baserom.gba", 0x5112c4, 0x908
-
-gUnknown_08511BCC:: @ 8511BCC
- .incbin "baserom.gba", 0x511bcc, 0x9a8
-
-gUnknown_08512574:: @ 8512574
- .incbin "baserom.gba", 0x512574, 0x8e0
-
-gUnknown_08512E54:: @ 8512E54
- .incbin "baserom.gba", 0x512e54, 0x320
-
-gUnknown_08513174:: @ 8513174
- .incbin "baserom.gba", 0x513174, 0x510
-
-gUnknown_08513684:: @ 8513684
- .incbin "baserom.gba", 0x513684, 0x210
-
-gUnknown_08513894:: @ 8513894
- .incbin "baserom.gba", 0x513894, 0xb50
-
-gUnknown_085143E4:: @ 85143E4
- .incbin "baserom.gba", 0x5143e4, 0x210
-
-gUnknown_085145F4:: @ 85145F4
- .incbin "baserom.gba", 0x5145f4, 0x810
-
-gUnknown_08514E04:: @ 8514E04
- .incbin "baserom.gba", 0x514e04, 0x540
-
-gUnknown_08515344:: @ 8515344
- .incbin "baserom.gba", 0x515344, 0x20
-
-gUnknown_08515364:: @ 8515364
- .incbin "baserom.gba", 0x515364, 0x20
-
-gUnknown_08515384:: @ 8515384
- .incbin "baserom.gba", 0x515384, 0x30
-
-gUnknown_085153B4:: @ 85153B4
- .incbin "baserom.gba", 0x5153b4, 0x30
-
-gUnknown_085153E4:: @ 85153E4
- .incbin "baserom.gba", 0x5153e4, 0x10
-
-gUnknown_085153F4:: @ 85153F4
- .incbin "baserom.gba", 0x5153f4, 0x410
-
-gUnknown_08515804:: @ 8515804
- .incbin "baserom.gba", 0x515804, 0x20
-
-gUnknown_08515824:: @ 8515824
- .incbin "baserom.gba", 0x515824, 0x140
-
-gUnknown_08515964:: @ 8515964
- .incbin "baserom.gba", 0x515964, 0x428
-
-gUnknown_08515D8C:: @ 8515D8C
- .incbin "baserom.gba", 0x515d8c, 0x430
-
-gUnknown_085161BC:: @ 85161BC
- .incbin "baserom.gba", 0x5161bc, 0x20
-
-gUnknown_085161DC:: @ 85161DC
- .incbin "baserom.gba", 0x5161dc, 0x320
-
-gUnknown_085164FC:: @ 85164FC
- .incbin "baserom.gba", 0x5164fc, 0x310
-
-gUnknown_0851680C:: @ 851680C
- .incbin "baserom.gba", 0x51680c, 0x310
-
-gUnknown_08516B1C:: @ 8516B1C
- .incbin "baserom.gba", 0x516b1c, 0x210
-
-gUnknown_08516D2C:: @ 8516D2C
- .incbin "baserom.gba", 0x516d2c, 0x110
-
-gUnknown_08516E3C:: @ 8516E3C
- .incbin "baserom.gba", 0x516e3c, 0xc08
-
-gUnknown_08517A44:: @ 8517A44
- .incbin "baserom.gba", 0x517a44, 0xc
-
-gUnknown_08517A50:: @ 8517A50
- .incbin "baserom.gba", 0x517a50, 0x1ac
-
-gUnknown_08517BFC:: @ 8517BFC
- .incbin "baserom.gba", 0x517bfc, 0x10
-
-gUnknown_08517C0C:: @ 8517C0C
- .incbin "baserom.gba", 0x517c0c, 0x428
-
-gUnknown_08518034:: @ 8518034
- .incbin "baserom.gba", 0x518034, 0x268
-
-gUnknown_0851829C:: @ 851829C
- .incbin "baserom.gba", 0x51829c, 0x8028
-
-gUnknown_085202C4:: @ 85202C4
- .incbin "baserom.gba", 0x5202c4, 0x45a0
-
-gUnknown_08524864:: @ 8524864
- .incbin "baserom.gba", 0x524864, 0xc
-
-gUnknown_08524870:: @ 8524870
- .incbin "baserom.gba", 0x524870, 0xc
diff --git a/data/tilesets/primary/building/anim/0.png b/data/tilesets/primary/building/anim/0.png
new file mode 100644
index 000000000..004eccc67
--- /dev/null
+++ b/data/tilesets/primary/building/anim/0.png
Binary files differ
diff --git a/data/tilesets/primary/building/anim/1.png b/data/tilesets/primary/building/anim/1.png
new file mode 100644
index 000000000..e28281dea
--- /dev/null
+++ b/data/tilesets/primary/building/anim/1.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/0/0.png b/data/tilesets/primary/general/anim/0/0.png
new file mode 100644
index 000000000..d535d920e
--- /dev/null
+++ b/data/tilesets/primary/general/anim/0/0.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/0/1.png b/data/tilesets/primary/general/anim/0/1.png
new file mode 100644
index 000000000..74f93ecce
--- /dev/null
+++ b/data/tilesets/primary/general/anim/0/1.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/0/2.png b/data/tilesets/primary/general/anim/0/2.png
new file mode 100644
index 000000000..fb0bfe89f
--- /dev/null
+++ b/data/tilesets/primary/general/anim/0/2.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/1/0.png b/data/tilesets/primary/general/anim/1/0.png
new file mode 100644
index 000000000..a7bb2e631
--- /dev/null
+++ b/data/tilesets/primary/general/anim/1/0.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/1/1.png b/data/tilesets/primary/general/anim/1/1.png
new file mode 100644
index 000000000..c215f1683
--- /dev/null
+++ b/data/tilesets/primary/general/anim/1/1.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/1/2.png b/data/tilesets/primary/general/anim/1/2.png
new file mode 100644
index 000000000..f8e0ee273
--- /dev/null
+++ b/data/tilesets/primary/general/anim/1/2.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/1/3.png b/data/tilesets/primary/general/anim/1/3.png
new file mode 100644
index 000000000..6c6ce3611
--- /dev/null
+++ b/data/tilesets/primary/general/anim/1/3.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/1/4.png b/data/tilesets/primary/general/anim/1/4.png
new file mode 100644
index 000000000..cc1f9576c
--- /dev/null
+++ b/data/tilesets/primary/general/anim/1/4.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/1/5.png b/data/tilesets/primary/general/anim/1/5.png
new file mode 100644
index 000000000..3c0c57a86
--- /dev/null
+++ b/data/tilesets/primary/general/anim/1/5.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/1/6.png b/data/tilesets/primary/general/anim/1/6.png
new file mode 100644
index 000000000..be5ecacaa
--- /dev/null
+++ b/data/tilesets/primary/general/anim/1/6.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/1/7.png b/data/tilesets/primary/general/anim/1/7.png
new file mode 100644
index 000000000..85bc7561a
--- /dev/null
+++ b/data/tilesets/primary/general/anim/1/7.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/2/0.png b/data/tilesets/primary/general/anim/2/0.png
new file mode 100644
index 000000000..6f9f0c309
--- /dev/null
+++ b/data/tilesets/primary/general/anim/2/0.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/2/1.png b/data/tilesets/primary/general/anim/2/1.png
new file mode 100644
index 000000000..bef1f3023
--- /dev/null
+++ b/data/tilesets/primary/general/anim/2/1.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/2/2.png b/data/tilesets/primary/general/anim/2/2.png
new file mode 100644
index 000000000..b5d7a9ee9
--- /dev/null
+++ b/data/tilesets/primary/general/anim/2/2.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/2/3.png b/data/tilesets/primary/general/anim/2/3.png
new file mode 100644
index 000000000..42a953a83
--- /dev/null
+++ b/data/tilesets/primary/general/anim/2/3.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/2/4.png b/data/tilesets/primary/general/anim/2/4.png
new file mode 100644
index 000000000..112b20077
--- /dev/null
+++ b/data/tilesets/primary/general/anim/2/4.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/2/5.png b/data/tilesets/primary/general/anim/2/5.png
new file mode 100644
index 000000000..7f58c0b94
--- /dev/null
+++ b/data/tilesets/primary/general/anim/2/5.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/2/6.png b/data/tilesets/primary/general/anim/2/6.png
new file mode 100644
index 000000000..784a543b4
--- /dev/null
+++ b/data/tilesets/primary/general/anim/2/6.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/3/0.png b/data/tilesets/primary/general/anim/3/0.png
new file mode 100644
index 000000000..2f8bb49b6
--- /dev/null
+++ b/data/tilesets/primary/general/anim/3/0.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/3/1.png b/data/tilesets/primary/general/anim/3/1.png
new file mode 100644
index 000000000..5a2744a66
--- /dev/null
+++ b/data/tilesets/primary/general/anim/3/1.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/3/2.png b/data/tilesets/primary/general/anim/3/2.png
new file mode 100644
index 000000000..0ddf1cda7
--- /dev/null
+++ b/data/tilesets/primary/general/anim/3/2.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/3/3.png b/data/tilesets/primary/general/anim/3/3.png
new file mode 100644
index 000000000..f3fee8470
--- /dev/null
+++ b/data/tilesets/primary/general/anim/3/3.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/4/0.png b/data/tilesets/primary/general/anim/4/0.png
new file mode 100644
index 000000000..90dc0bc02
--- /dev/null
+++ b/data/tilesets/primary/general/anim/4/0.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/4/1.png b/data/tilesets/primary/general/anim/4/1.png
new file mode 100644
index 000000000..4459a94e5
--- /dev/null
+++ b/data/tilesets/primary/general/anim/4/1.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/4/2.png b/data/tilesets/primary/general/anim/4/2.png
new file mode 100644
index 000000000..389875c31
--- /dev/null
+++ b/data/tilesets/primary/general/anim/4/2.png
Binary files differ
diff --git a/data/tilesets/primary/general/anim/4/3.png b/data/tilesets/primary/general/anim/4/3.png
new file mode 100644
index 000000000..ac8936cce
--- /dev/null
+++ b/data/tilesets/primary/general/anim/4/3.png
Binary files differ
diff --git a/data/tilesets/primary/general/tiles.png b/data/tilesets/primary/general/tiles.png
index 3d1e90510..121e835a2 100644
--- a/data/tilesets/primary/general/tiles.png
+++ b/data/tilesets/primary/general/tiles.png
Binary files differ
diff --git a/data/tilesets/primary/inside_building/tiles.png b/data/tilesets/primary/inside_building/tiles.png
index 7d267dfb7..506bb7400 100644
--- a/data/tilesets/primary/inside_building/tiles.png
+++ b/data/tilesets/primary/inside_building/tiles.png
Binary files differ
diff --git a/data/tilesets/primary/secret_base/tiles.png b/data/tilesets/primary/secret_base/tiles.png
index 9adc0e13f..9dee014ea 100644
--- a/data/tilesets/primary/secret_base/tiles.png
+++ b/data/tilesets/primary/secret_base/tiles.png
Binary files differ
diff --git a/data/tilesets/primary/secret_base/unknown_tiles.png b/data/tilesets/primary/secret_base/unknown_tiles.png
index dd5c4e16a..3ca4d9e87 100644
--- a/data/tilesets/primary/secret_base/unknown_tiles.png
+++ b/data/tilesets/primary/secret_base/unknown_tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_arena/tiles.png b/data/tilesets/secondary/battle_arena/tiles.png
index 43297aa7b..7414666df 100644
--- a/data/tilesets/secondary/battle_arena/tiles.png
+++ b/data/tilesets/secondary/battle_arena/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_dome/tiles.png b/data/tilesets/secondary/battle_dome/tiles.png
index e0fce3196..be3708bfd 100644
--- a/data/tilesets/secondary/battle_dome/tiles.png
+++ b/data/tilesets/secondary/battle_dome/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_factory/tiles.png b/data/tilesets/secondary/battle_factory/tiles.png
index 7857f0813..4d9463b20 100644
--- a/data/tilesets/secondary/battle_factory/tiles.png
+++ b/data/tilesets/secondary/battle_factory/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier/tiles.png b/data/tilesets/secondary/battle_frontier/tiles.png
index 70ec420e9..1b14ce555 100644
--- a/data/tilesets/secondary/battle_frontier/tiles.png
+++ b/data/tilesets/secondary/battle_frontier/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_east/anim/0.png b/data/tilesets/secondary/battle_frontier_outside_east/anim/0.png
new file mode 100644
index 000000000..8a9905198
--- /dev/null
+++ b/data/tilesets/secondary/battle_frontier_outside_east/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_east/anim/1.png b/data/tilesets/secondary/battle_frontier_outside_east/anim/1.png
new file mode 100644
index 000000000..836986b12
--- /dev/null
+++ b/data/tilesets/secondary/battle_frontier_outside_east/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_east/anim/2.png b/data/tilesets/secondary/battle_frontier_outside_east/anim/2.png
new file mode 100644
index 000000000..660d3080f
--- /dev/null
+++ b/data/tilesets/secondary/battle_frontier_outside_east/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_east/anim/3.png b/data/tilesets/secondary/battle_frontier_outside_east/anim/3.png
new file mode 100644
index 000000000..7fe571b4a
--- /dev/null
+++ b/data/tilesets/secondary/battle_frontier_outside_east/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_east/tiles.png b/data/tilesets/secondary/battle_frontier_outside_east/tiles.png
index 20cb7d67e..da34656d1 100644
--- a/data/tilesets/secondary/battle_frontier_outside_east/tiles.png
+++ b/data/tilesets/secondary/battle_frontier_outside_east/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_west/anim/0.png b/data/tilesets/secondary/battle_frontier_outside_west/anim/0.png
new file mode 100644
index 000000000..8a9905198
--- /dev/null
+++ b/data/tilesets/secondary/battle_frontier_outside_west/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_west/anim/1.png b/data/tilesets/secondary/battle_frontier_outside_west/anim/1.png
new file mode 100644
index 000000000..836986b12
--- /dev/null
+++ b/data/tilesets/secondary/battle_frontier_outside_west/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_west/anim/2.png b/data/tilesets/secondary/battle_frontier_outside_west/anim/2.png
new file mode 100644
index 000000000..660d3080f
--- /dev/null
+++ b/data/tilesets/secondary/battle_frontier_outside_west/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_west/anim/3.png b/data/tilesets/secondary/battle_frontier_outside_west/anim/3.png
new file mode 100644
index 000000000..7fe571b4a
--- /dev/null
+++ b/data/tilesets/secondary/battle_frontier_outside_west/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_outside_west/tiles.png b/data/tilesets/secondary/battle_frontier_outside_west/tiles.png
index 3d5ea94f9..03704bfd0 100644
--- a/data/tilesets/secondary/battle_frontier_outside_west/tiles.png
+++ b/data/tilesets/secondary/battle_frontier_outside_west/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_frontier_ranking_hall/tiles.png b/data/tilesets/secondary/battle_frontier_ranking_hall/tiles.png
index cf54e1d77..1c1f700c0 100644
--- a/data/tilesets/secondary/battle_frontier_ranking_hall/tiles.png
+++ b/data/tilesets/secondary/battle_frontier_ranking_hall/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_palace/tiles.png b/data/tilesets/secondary/battle_palace/tiles.png
index a848a9eef..4e11e3596 100644
--- a/data/tilesets/secondary/battle_palace/tiles.png
+++ b/data/tilesets/secondary/battle_palace/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pike/tiles.png b/data/tilesets/secondary/battle_pike/tiles.png
index cba2f5794..fc11f1d1a 100644
--- a/data/tilesets/secondary/battle_pike/tiles.png
+++ b/data/tilesets/secondary/battle_pike/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/0/0.png b/data/tilesets/secondary/battle_pyramid/anim/0/0.png
new file mode 100644
index 000000000..c0fb59c0e
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/0/0.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/0/1.png b/data/tilesets/secondary/battle_pyramid/anim/0/1.png
new file mode 100644
index 000000000..29c019209
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/0/1.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/0/2.png b/data/tilesets/secondary/battle_pyramid/anim/0/2.png
new file mode 100644
index 000000000..7c463d9c3
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/0/2.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/0.png b/data/tilesets/secondary/battle_pyramid/anim/1/0.png
new file mode 100644
index 000000000..2a0921dea
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/0.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/1.png b/data/tilesets/secondary/battle_pyramid/anim/1/1.png
new file mode 100644
index 000000000..3474d081f
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/1.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/2.png b/data/tilesets/secondary/battle_pyramid/anim/1/2.png
new file mode 100644
index 000000000..b9f1c4423
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/2.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/3.png b/data/tilesets/secondary/battle_pyramid/anim/1/3.png
new file mode 100644
index 000000000..8ad81b1e1
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/3.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/4.png b/data/tilesets/secondary/battle_pyramid/anim/1/4.png
new file mode 100644
index 000000000..bea921d90
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/4.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/5.png b/data/tilesets/secondary/battle_pyramid/anim/1/5.png
new file mode 100644
index 000000000..bea921d90
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/5.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/6.png b/data/tilesets/secondary/battle_pyramid/anim/1/6.png
new file mode 100644
index 000000000..16652df19
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/6.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/7.png b/data/tilesets/secondary/battle_pyramid/anim/1/7.png
new file mode 100644
index 000000000..8ea7a49e6
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/7.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/8.png b/data/tilesets/secondary/battle_pyramid/anim/1/8.png
new file mode 100644
index 000000000..2895d3319
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/8.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/anim/1/9.png b/data/tilesets/secondary/battle_pyramid/anim/1/9.png
new file mode 100644
index 000000000..63c22acf2
--- /dev/null
+++ b/data/tilesets/secondary/battle_pyramid/anim/1/9.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_pyramid/tiles.png b/data/tilesets/secondary/battle_pyramid/tiles.png
index cd45ea045..d9609f3dd 100644
--- a/data/tilesets/secondary/battle_pyramid/tiles.png
+++ b/data/tilesets/secondary/battle_pyramid/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/battle_tent/tiles.png b/data/tilesets/secondary/battle_tent/tiles.png
index 919e3878f..35e5c4b65 100644
--- a/data/tilesets/secondary/battle_tent/tiles.png
+++ b/data/tilesets/secondary/battle_tent/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/bike_shop/anim/0.png b/data/tilesets/secondary/bike_shop/anim/0.png
new file mode 100644
index 000000000..069509b27
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/bike_shop/anim/1.png b/data/tilesets/secondary/bike_shop/anim/1.png
new file mode 100644
index 000000000..4123bb0bf
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/bike_shop/anim/2.png b/data/tilesets/secondary/bike_shop/anim/2.png
new file mode 100644
index 000000000..7c463d9c3
--- /dev/null
+++ b/data/tilesets/secondary/bike_shop/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/bike_shop/tiles.png b/data/tilesets/secondary/bike_shop/tiles.png
index ec109c3be..e068538f5 100644
--- a/data/tilesets/secondary/bike_shop/tiles.png
+++ b/data/tilesets/secondary/bike_shop/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/brendans_mays_house/tiles.png b/data/tilesets/secondary/brendans_mays_house/tiles.png
index 10163e9f1..6d6a5f047 100644
--- a/data/tilesets/secondary/brendans_mays_house/tiles.png
+++ b/data/tilesets/secondary/brendans_mays_house/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/cable_club/tiles.png b/data/tilesets/secondary/cable_club/tiles.png
index 2b153c1f4..c5ad4cfac 100644
--- a/data/tilesets/secondary/cable_club/tiles.png
+++ b/data/tilesets/secondary/cable_club/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/cable_club/unknown_tiles.png b/data/tilesets/secondary/cable_club/unknown_tiles.png
index da68cdff2..84e79f720 100644
--- a/data/tilesets/secondary/cable_club/unknown_tiles.png
+++ b/data/tilesets/secondary/cable_club/unknown_tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/cave/anim/0.png b/data/tilesets/secondary/cave/anim/0.png
new file mode 100644
index 000000000..67f294ffe
--- /dev/null
+++ b/data/tilesets/secondary/cave/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/cave/anim/1.png b/data/tilesets/secondary/cave/anim/1.png
new file mode 100644
index 000000000..9c92be807
--- /dev/null
+++ b/data/tilesets/secondary/cave/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/cave/anim/2.png b/data/tilesets/secondary/cave/anim/2.png
new file mode 100644
index 000000000..78ea00e04
--- /dev/null
+++ b/data/tilesets/secondary/cave/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/cave/anim/3.png b/data/tilesets/secondary/cave/anim/3.png
new file mode 100644
index 000000000..7edd52eaa
--- /dev/null
+++ b/data/tilesets/secondary/cave/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/cave/anim/unused/0.png b/data/tilesets/secondary/cave/anim/unused/0.png
new file mode 100644
index 000000000..44564e67a
--- /dev/null
+++ b/data/tilesets/secondary/cave/anim/unused/0.png
Binary files differ
diff --git a/data/tilesets/secondary/cave/anim/unused/1.png b/data/tilesets/secondary/cave/anim/unused/1.png
new file mode 100644
index 000000000..47e7e17ee
--- /dev/null
+++ b/data/tilesets/secondary/cave/anim/unused/1.png
Binary files differ
diff --git a/data/tilesets/secondary/cave/anim/unused/2.png b/data/tilesets/secondary/cave/anim/unused/2.png
new file mode 100644
index 000000000..d1447cde2
--- /dev/null
+++ b/data/tilesets/secondary/cave/anim/unused/2.png
Binary files differ
diff --git a/data/tilesets/secondary/cave/anim/unused/3.png b/data/tilesets/secondary/cave/anim/unused/3.png
new file mode 100644
index 000000000..8ad81b1e1
--- /dev/null
+++ b/data/tilesets/secondary/cave/anim/unused/3.png
Binary files differ
diff --git a/data/tilesets/secondary/cave/tiles.png b/data/tilesets/secondary/cave/tiles.png
index f905c6b21..e8c98dd71 100644
--- a/data/tilesets/secondary/cave/tiles.png
+++ b/data/tilesets/secondary/cave/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/contest/tiles.png b/data/tilesets/secondary/contest/tiles.png
index 09ddee472..710654f5f 100644
--- a/data/tilesets/secondary/contest/tiles.png
+++ b/data/tilesets/secondary/contest/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/dewford/anim/0.png b/data/tilesets/secondary/dewford/anim/0.png
new file mode 100644
index 000000000..adf42975f
--- /dev/null
+++ b/data/tilesets/secondary/dewford/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/dewford/anim/1.png b/data/tilesets/secondary/dewford/anim/1.png
new file mode 100644
index 000000000..6e7c23a18
--- /dev/null
+++ b/data/tilesets/secondary/dewford/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/dewford/anim/2.png b/data/tilesets/secondary/dewford/anim/2.png
new file mode 100644
index 000000000..86075ffb0
--- /dev/null
+++ b/data/tilesets/secondary/dewford/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/dewford/anim/3.png b/data/tilesets/secondary/dewford/anim/3.png
new file mode 100644
index 000000000..6e3c57621
--- /dev/null
+++ b/data/tilesets/secondary/dewford/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/dewford/tiles.png b/data/tilesets/secondary/dewford/tiles.png
index f79972197..1cf4c165c 100644
--- a/data/tilesets/secondary/dewford/tiles.png
+++ b/data/tilesets/secondary/dewford/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/dewford_gym/tiles.png b/data/tilesets/secondary/dewford_gym/tiles.png
index 1dad6f205..7d923b505 100644
--- a/data/tilesets/secondary/dewford_gym/tiles.png
+++ b/data/tilesets/secondary/dewford_gym/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/0/0.png b/data/tilesets/secondary/elite_four/anim/0/0.png
new file mode 100644
index 000000000..806d26e57
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/0/0.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/0/1.png b/data/tilesets/secondary/elite_four/anim/0/1.png
new file mode 100644
index 000000000..2a8e6a31c
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/0/1.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/0/2.png b/data/tilesets/secondary/elite_four/anim/0/2.png
new file mode 100644
index 000000000..c4e6161a6
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/0/2.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/0/3.png b/data/tilesets/secondary/elite_four/anim/0/3.png
new file mode 100644
index 000000000..2a8e6a31c
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/0/3.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/1/0.png b/data/tilesets/secondary/elite_four/anim/1/0.png
new file mode 100644
index 000000000..7822d1896
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/1/0.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/1/1.png b/data/tilesets/secondary/elite_four/anim/1/1.png
new file mode 100644
index 000000000..66d60e90b
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/1/1.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/1/2.png b/data/tilesets/secondary/elite_four/anim/1/2.png
new file mode 100644
index 000000000..09fb59fbf
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/1/2.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/1/3.png b/data/tilesets/secondary/elite_four/anim/1/3.png
new file mode 100644
index 000000000..0c7c05034
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/1/3.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/1/4.png b/data/tilesets/secondary/elite_four/anim/1/4.png
new file mode 100644
index 000000000..317db1714
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/1/4.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/1/5.png b/data/tilesets/secondary/elite_four/anim/1/5.png
new file mode 100644
index 000000000..d0cbfeb57
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/1/5.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/1/6.png b/data/tilesets/secondary/elite_four/anim/1/6.png
new file mode 100644
index 000000000..4b35ededd
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/1/6.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/anim/1/7.png b/data/tilesets/secondary/elite_four/anim/1/7.png
new file mode 100644
index 000000000..dfe698edb
--- /dev/null
+++ b/data/tilesets/secondary/elite_four/anim/1/7.png
Binary files differ
diff --git a/data/tilesets/secondary/elite_four/tiles.png b/data/tilesets/secondary/elite_four/tiles.png
index 834be3701..d16b2db03 100644
--- a/data/tilesets/secondary/elite_four/tiles.png
+++ b/data/tilesets/secondary/elite_four/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/ever_grande/anim/0.png b/data/tilesets/secondary/ever_grande/anim/0.png
new file mode 100644
index 000000000..7536d08ad
--- /dev/null
+++ b/data/tilesets/secondary/ever_grande/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/ever_grande/anim/1.png b/data/tilesets/secondary/ever_grande/anim/1.png
new file mode 100644
index 000000000..7536d08ad
--- /dev/null
+++ b/data/tilesets/secondary/ever_grande/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/ever_grande/anim/2.png b/data/tilesets/secondary/ever_grande/anim/2.png
new file mode 100644
index 000000000..f0835aa3b
--- /dev/null
+++ b/data/tilesets/secondary/ever_grande/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/ever_grande/anim/3.png b/data/tilesets/secondary/ever_grande/anim/3.png
new file mode 100644
index 000000000..c07cbbd17
--- /dev/null
+++ b/data/tilesets/secondary/ever_grande/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/ever_grande/anim/4.png b/data/tilesets/secondary/ever_grande/anim/4.png
new file mode 100644
index 000000000..7536d08ad
--- /dev/null
+++ b/data/tilesets/secondary/ever_grande/anim/4.png
Binary files differ
diff --git a/data/tilesets/secondary/ever_grande/anim/5.png b/data/tilesets/secondary/ever_grande/anim/5.png
new file mode 100644
index 000000000..7536d08ad
--- /dev/null
+++ b/data/tilesets/secondary/ever_grande/anim/5.png
Binary files differ
diff --git a/data/tilesets/secondary/ever_grande/anim/6.png b/data/tilesets/secondary/ever_grande/anim/6.png
new file mode 100644
index 000000000..9b5030306
--- /dev/null
+++ b/data/tilesets/secondary/ever_grande/anim/6.png
Binary files differ
diff --git a/data/tilesets/secondary/ever_grande/anim/7.png b/data/tilesets/secondary/ever_grande/anim/7.png
new file mode 100644
index 000000000..9b5030306
--- /dev/null
+++ b/data/tilesets/secondary/ever_grande/anim/7.png
Binary files differ
diff --git a/data/tilesets/secondary/ever_grande/tiles.png b/data/tilesets/secondary/ever_grande/tiles.png
index 0f3689c24..943a3f8f4 100644
--- a/data/tilesets/secondary/ever_grande/tiles.png
+++ b/data/tilesets/secondary/ever_grande/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/facility/tiles.png b/data/tilesets/secondary/facility/tiles.png
index 5585dee3b..f99c24150 100644
--- a/data/tilesets/secondary/facility/tiles.png
+++ b/data/tilesets/secondary/facility/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/fallarbor/tiles.png b/data/tilesets/secondary/fallarbor/tiles.png
index 4c5d72277..21ab321ef 100644
--- a/data/tilesets/secondary/fallarbor/tiles.png
+++ b/data/tilesets/secondary/fallarbor/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/fortree/tiles.png b/data/tilesets/secondary/fortree/tiles.png
index 0875d1d47..78cb1c1ae 100644
--- a/data/tilesets/secondary/fortree/tiles.png
+++ b/data/tilesets/secondary/fortree/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/fortree_gym/tiles.png b/data/tilesets/secondary/fortree_gym/tiles.png
index bb16dd0ca..932b5c06a 100644
--- a/data/tilesets/secondary/fortree_gym/tiles.png
+++ b/data/tilesets/secondary/fortree_gym/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/generic_building/tiles.png b/data/tilesets/secondary/generic_building/tiles.png
index d94085b06..6f681f837 100644
--- a/data/tilesets/secondary/generic_building/tiles.png
+++ b/data/tilesets/secondary/generic_building/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/inside_of_truck/tiles.png b/data/tilesets/secondary/inside_of_truck/tiles.png
index 44f923a5a..65a82e888 100644
--- a/data/tilesets/secondary/inside_of_truck/tiles.png
+++ b/data/tilesets/secondary/inside_of_truck/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/inside_ship/tiles.png b/data/tilesets/secondary/inside_ship/tiles.png
index d4b0471b2..77142a755 100644
--- a/data/tilesets/secondary/inside_ship/tiles.png
+++ b/data/tilesets/secondary/inside_ship/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/island_harbor/tiles.png b/data/tilesets/secondary/island_harbor/tiles.png
index e70a72977..82e419e72 100644
--- a/data/tilesets/secondary/island_harbor/tiles.png
+++ b/data/tilesets/secondary/island_harbor/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/lab/tiles.png b/data/tilesets/secondary/lab/tiles.png
index c2a86a73d..6a213d960 100644
--- a/data/tilesets/secondary/lab/tiles.png
+++ b/data/tilesets/secondary/lab/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/lavaridge/anim/0.png b/data/tilesets/secondary/lavaridge/anim/0.png
new file mode 100644
index 000000000..303855f71
--- /dev/null
+++ b/data/tilesets/secondary/lavaridge/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/lavaridge/anim/1.png b/data/tilesets/secondary/lavaridge/anim/1.png
new file mode 100644
index 000000000..7cdee79e2
--- /dev/null
+++ b/data/tilesets/secondary/lavaridge/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/lavaridge/anim/2.png b/data/tilesets/secondary/lavaridge/anim/2.png
new file mode 100644
index 000000000..b5810b806
--- /dev/null
+++ b/data/tilesets/secondary/lavaridge/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/lavaridge/anim/3.png b/data/tilesets/secondary/lavaridge/anim/3.png
new file mode 100644
index 000000000..caf7b5698
--- /dev/null
+++ b/data/tilesets/secondary/lavaridge/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/lavaridge/tiles.png b/data/tilesets/secondary/lavaridge/tiles.png
index 4886aa28e..896c43194 100644
--- a/data/tilesets/secondary/lavaridge/tiles.png
+++ b/data/tilesets/secondary/lavaridge/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/lavaridge_gym/tiles.png b/data/tilesets/secondary/lavaridge_gym/tiles.png
index 0865ea207..8734cc3bf 100644
--- a/data/tilesets/secondary/lavaridge_gym/tiles.png
+++ b/data/tilesets/secondary/lavaridge_gym/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/lilycove/tiles.png b/data/tilesets/secondary/lilycove/tiles.png
index 88c5c7a28..b77f3d379 100644
--- a/data/tilesets/secondary/lilycove/tiles.png
+++ b/data/tilesets/secondary/lilycove/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/lilycove_museum/tiles.png b/data/tilesets/secondary/lilycove_museum/tiles.png
index 495187301..5bcc0ecfe 100644
--- a/data/tilesets/secondary/lilycove_museum/tiles.png
+++ b/data/tilesets/secondary/lilycove_museum/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/0.png b/data/tilesets/secondary/mauville/anim/0/a/0.png
new file mode 100644
index 000000000..88b028b52
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/0.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/1.png b/data/tilesets/secondary/mauville/anim/0/a/1.png
new file mode 100644
index 000000000..ce4010db2
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/1.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/2.png b/data/tilesets/secondary/mauville/anim/0/a/2.png
new file mode 100644
index 000000000..5ea20f6db
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/2.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/3.png b/data/tilesets/secondary/mauville/anim/0/a/3.png
new file mode 100644
index 000000000..fdf4d30bf
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/3.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/4.png b/data/tilesets/secondary/mauville/anim/0/a/4.png
new file mode 100644
index 000000000..c8097808c
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/4.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/5.png b/data/tilesets/secondary/mauville/anim/0/a/5.png
new file mode 100644
index 000000000..88b028b52
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/5.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/6.png b/data/tilesets/secondary/mauville/anim/0/a/6.png
new file mode 100644
index 000000000..ce4010db2
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/6.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/7.png b/data/tilesets/secondary/mauville/anim/0/a/7.png
new file mode 100644
index 000000000..5ea20f6db
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/7.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/8.png b/data/tilesets/secondary/mauville/anim/0/a/8.png
new file mode 100644
index 000000000..fdf4d30bf
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/8.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/a/9.png b/data/tilesets/secondary/mauville/anim/0/a/9.png
new file mode 100644
index 000000000..c8097808c
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/a/9.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/b/0.png b/data/tilesets/secondary/mauville/anim/0/b/0.png
new file mode 100644
index 000000000..88b028b52
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/b/0.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/b/1.png b/data/tilesets/secondary/mauville/anim/0/b/1.png
new file mode 100644
index 000000000..ce4010db2
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/b/1.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/b/2.png b/data/tilesets/secondary/mauville/anim/0/b/2.png
new file mode 100644
index 000000000..5ea20f6db
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/b/2.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/b/3.png b/data/tilesets/secondary/mauville/anim/0/b/3.png
new file mode 100644
index 000000000..fdf4d30bf
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/b/3.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/b/4.png b/data/tilesets/secondary/mauville/anim/0/b/4.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/b/4.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/b/5.png b/data/tilesets/secondary/mauville/anim/0/b/5.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/b/5.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/b/6.png b/data/tilesets/secondary/mauville/anim/0/b/6.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/b/6.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/0/b/7.png b/data/tilesets/secondary/mauville/anim/0/b/7.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/0/b/7.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/a/0.png b/data/tilesets/secondary/mauville/anim/1/a/0.png
new file mode 100644
index 000000000..88b028b52
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/a/0.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/a/1.png b/data/tilesets/secondary/mauville/anim/1/a/1.png
new file mode 100644
index 000000000..c8097808c
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/a/1.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/a/2.png b/data/tilesets/secondary/mauville/anim/1/a/2.png
new file mode 100644
index 000000000..5ea20f6db
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/a/2.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/a/3.png b/data/tilesets/secondary/mauville/anim/1/a/3.png
new file mode 100644
index 000000000..fdf4d30bf
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/a/3.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/b/0.png b/data/tilesets/secondary/mauville/anim/1/b/0.png
new file mode 100644
index 000000000..88b028b52
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/b/0.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/b/1.png b/data/tilesets/secondary/mauville/anim/1/b/1.png
new file mode 100644
index 000000000..c8097808c
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/b/1.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/b/2.png b/data/tilesets/secondary/mauville/anim/1/b/2.png
new file mode 100644
index 000000000..5ea20f6db
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/b/2.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/b/3.png b/data/tilesets/secondary/mauville/anim/1/b/3.png
new file mode 100644
index 000000000..fdf4d30bf
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/b/3.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/b/4.png b/data/tilesets/secondary/mauville/anim/1/b/4.png
new file mode 100644
index 000000000..44564e67a
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/b/4.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/b/5.png b/data/tilesets/secondary/mauville/anim/1/b/5.png
new file mode 100644
index 000000000..47e7e17ee
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/b/5.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/b/6.png b/data/tilesets/secondary/mauville/anim/1/b/6.png
new file mode 100644
index 000000000..d1447cde2
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/b/6.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/anim/1/b/7.png b/data/tilesets/secondary/mauville/anim/1/b/7.png
new file mode 100644
index 000000000..8ad81b1e1
--- /dev/null
+++ b/data/tilesets/secondary/mauville/anim/1/b/7.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville/tiles.png b/data/tilesets/secondary/mauville/tiles.png
index a015fe5b4..e4ce0d4f8 100644
--- a/data/tilesets/secondary/mauville/tiles.png
+++ b/data/tilesets/secondary/mauville/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville_game_corner/tiles.png b/data/tilesets/secondary/mauville_game_corner/tiles.png
index c8f0dd1ee..3f7f565c9 100644
--- a/data/tilesets/secondary/mauville_game_corner/tiles.png
+++ b/data/tilesets/secondary/mauville_game_corner/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville_gym/anim/0.png b/data/tilesets/secondary/mauville_gym/anim/0.png
new file mode 100644
index 000000000..090fe6a1a
--- /dev/null
+++ b/data/tilesets/secondary/mauville_gym/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville_gym/anim/1.png b/data/tilesets/secondary/mauville_gym/anim/1.png
new file mode 100644
index 000000000..48f325890
--- /dev/null
+++ b/data/tilesets/secondary/mauville_gym/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville_gym/anim/2.png b/data/tilesets/secondary/mauville_gym/anim/2.png
new file mode 100644
index 000000000..16652df19
--- /dev/null
+++ b/data/tilesets/secondary/mauville_gym/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville_gym/anim/3.png b/data/tilesets/secondary/mauville_gym/anim/3.png
new file mode 100644
index 000000000..8ea7a49e6
--- /dev/null
+++ b/data/tilesets/secondary/mauville_gym/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/mauville_gym/tiles.png b/data/tilesets/secondary/mauville_gym/tiles.png
index d710d2e40..5606bb101 100644
--- a/data/tilesets/secondary/mauville_gym/tiles.png
+++ b/data/tilesets/secondary/mauville_gym/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/meteor_falls/tiles.png b/data/tilesets/secondary/meteor_falls/tiles.png
index 5b0342f9b..9c7532805 100644
--- a/data/tilesets/secondary/meteor_falls/tiles.png
+++ b/data/tilesets/secondary/meteor_falls/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/mirage_tower/tiles.png b/data/tilesets/secondary/mirage_tower/tiles.png
index 8eab57f93..fd2904ca1 100644
--- a/data/tilesets/secondary/mirage_tower/tiles.png
+++ b/data/tilesets/secondary/mirage_tower/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/mossdeep/tiles.png b/data/tilesets/secondary/mossdeep/tiles.png
index 1933b8983..818406b23 100644
--- a/data/tilesets/secondary/mossdeep/tiles.png
+++ b/data/tilesets/secondary/mossdeep/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/mossdeep_game_corner/tiles.png b/data/tilesets/secondary/mossdeep_game_corner/tiles.png
index 379c4f42f..f09edf436 100644
--- a/data/tilesets/secondary/mossdeep_game_corner/tiles.png
+++ b/data/tilesets/secondary/mossdeep_game_corner/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/mossdeep_gym/tiles.png b/data/tilesets/secondary/mossdeep_gym/tiles.png
index 919d0334e..36a0873a4 100644
--- a/data/tilesets/secondary/mossdeep_gym/tiles.png
+++ b/data/tilesets/secondary/mossdeep_gym/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/mystery_events_house/tiles.png b/data/tilesets/secondary/mystery_events_house/tiles.png
index 1f5f8639b..5afa07fcf 100644
--- a/data/tilesets/secondary/mystery_events_house/tiles.png
+++ b/data/tilesets/secondary/mystery_events_house/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/navel_rock/tiles.png b/data/tilesets/secondary/navel_rock/tiles.png
index 06d8065f1..ffbc04584 100644
--- a/data/tilesets/secondary/navel_rock/tiles.png
+++ b/data/tilesets/secondary/navel_rock/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/oceanic_museum/tiles.png b/data/tilesets/secondary/oceanic_museum/tiles.png
index 25a20d586..a074d4a05 100644
--- a/data/tilesets/secondary/oceanic_museum/tiles.png
+++ b/data/tilesets/secondary/oceanic_museum/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/0/0.png b/data/tilesets/secondary/pacifidlog/anim/0/0.png
new file mode 100644
index 000000000..e7bcfd743
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/0/0.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/0/1.png b/data/tilesets/secondary/pacifidlog/anim/0/1.png
new file mode 100644
index 000000000..dde024f6e
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/0/1.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/0/2.png b/data/tilesets/secondary/pacifidlog/anim/0/2.png
new file mode 100644
index 000000000..1a4cea24d
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/0/2.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/1/0.png b/data/tilesets/secondary/pacifidlog/anim/1/0.png
new file mode 100644
index 000000000..beb8ee82d
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/1/0.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/1/1.png b/data/tilesets/secondary/pacifidlog/anim/1/1.png
new file mode 100644
index 000000000..594655120
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/1/1.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/1/2.png b/data/tilesets/secondary/pacifidlog/anim/1/2.png
new file mode 100644
index 000000000..747306d5c
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/1/2.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/1/3.png b/data/tilesets/secondary/pacifidlog/anim/1/3.png
new file mode 100644
index 000000000..20e0a7cdd
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/1/3.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/1/4.png b/data/tilesets/secondary/pacifidlog/anim/1/4.png
new file mode 100644
index 000000000..7b74ee349
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/1/4.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/1/5.png b/data/tilesets/secondary/pacifidlog/anim/1/5.png
new file mode 100644
index 000000000..b135bdfbe
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/1/5.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/1/6.png b/data/tilesets/secondary/pacifidlog/anim/1/6.png
new file mode 100644
index 000000000..4eae151e6
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/1/6.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/anim/1/7.png b/data/tilesets/secondary/pacifidlog/anim/1/7.png
new file mode 100644
index 000000000..f1863fdd5
--- /dev/null
+++ b/data/tilesets/secondary/pacifidlog/anim/1/7.png
Binary files differ
diff --git a/data/tilesets/secondary/pacifidlog/tiles.png b/data/tilesets/secondary/pacifidlog/tiles.png
index 496232735..94fe6d96b 100644
--- a/data/tilesets/secondary/pacifidlog/tiles.png
+++ b/data/tilesets/secondary/pacifidlog/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/petalburg/tiles.png b/data/tilesets/secondary/petalburg/tiles.png
index 97e8bf187..dd0e23ca4 100644
--- a/data/tilesets/secondary/petalburg/tiles.png
+++ b/data/tilesets/secondary/petalburg/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/petalburg_gym/tiles.png b/data/tilesets/secondary/petalburg_gym/tiles.png
index 8c996f701..cb7c40e5a 100644
--- a/data/tilesets/secondary/petalburg_gym/tiles.png
+++ b/data/tilesets/secondary/petalburg_gym/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/pokemon_center/tiles.png b/data/tilesets/secondary/pokemon_center/tiles.png
index 826da07bf..673746c5a 100644
--- a/data/tilesets/secondary/pokemon_center/tiles.png
+++ b/data/tilesets/secondary/pokemon_center/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/pokemon_day_care/tiles.png b/data/tilesets/secondary/pokemon_day_care/tiles.png
index eab49af32..76cd9ab96 100644
--- a/data/tilesets/secondary/pokemon_day_care/tiles.png
+++ b/data/tilesets/secondary/pokemon_day_care/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/pokemon_fan_club/tiles.png b/data/tilesets/secondary/pokemon_fan_club/tiles.png
index 2714292f0..62dd0f03f 100644
--- a/data/tilesets/secondary/pokemon_fan_club/tiles.png
+++ b/data/tilesets/secondary/pokemon_fan_club/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/pokemon_school/tiles.png b/data/tilesets/secondary/pokemon_school/tiles.png
index 3c8c4dffe..20e3f32c8 100644
--- a/data/tilesets/secondary/pokemon_school/tiles.png
+++ b/data/tilesets/secondary/pokemon_school/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/pretty_petal_flower_shop/tiles.png b/data/tilesets/secondary/pretty_petal_flower_shop/tiles.png
index 7a9e44935..f10306e7a 100644
--- a/data/tilesets/secondary/pretty_petal_flower_shop/tiles.png
+++ b/data/tilesets/secondary/pretty_petal_flower_shop/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/0/0.png b/data/tilesets/secondary/rustboro/anim/0/0.png
new file mode 100644
index 000000000..358745e4b
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/0/0.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/0/1.png b/data/tilesets/secondary/rustboro/anim/0/1.png
new file mode 100644
index 000000000..f5a095b15
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/0/1.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/0/2.png b/data/tilesets/secondary/rustboro/anim/0/2.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/0/2.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/0/3.png b/data/tilesets/secondary/rustboro/anim/0/3.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/0/3.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/0/4.png b/data/tilesets/secondary/rustboro/anim/0/4.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/0/4.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/0/5.png b/data/tilesets/secondary/rustboro/anim/0/5.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/0/5.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/0/6.png b/data/tilesets/secondary/rustboro/anim/0/6.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/0/6.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/0/7.png b/data/tilesets/secondary/rustboro/anim/0/7.png
new file mode 100644
index 000000000..91f368cf8
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/0/7.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/1/0.png b/data/tilesets/secondary/rustboro/anim/1/0.png
new file mode 100644
index 000000000..75bd2f8a4
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/1/0.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/1/1.png b/data/tilesets/secondary/rustboro/anim/1/1.png
new file mode 100644
index 000000000..9f8b3a02f
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/1/1.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/1/2.png b/data/tilesets/secondary/rustboro/anim/1/2.png
new file mode 100644
index 000000000..86075ffb0
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/1/2.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/anim/1/3.png b/data/tilesets/secondary/rustboro/anim/1/3.png
new file mode 100644
index 000000000..6e3c57621
--- /dev/null
+++ b/data/tilesets/secondary/rustboro/anim/1/3.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro/tiles.png b/data/tilesets/secondary/rustboro/tiles.png
index 8cea2a4d9..fbfc72d46 100644
--- a/data/tilesets/secondary/rustboro/tiles.png
+++ b/data/tilesets/secondary/rustboro/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/rustboro_gym/tiles.png b/data/tilesets/secondary/rustboro_gym/tiles.png
index bfdc07c07..d4ebc14a1 100644
--- a/data/tilesets/secondary/rustboro_gym/tiles.png
+++ b/data/tilesets/secondary/rustboro_gym/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/rusturf_tunnel/tiles.png b/data/tilesets/secondary/rusturf_tunnel/tiles.png
index dc947bcc5..913935f77 100644
--- a/data/tilesets/secondary/rusturf_tunnel/tiles.png
+++ b/data/tilesets/secondary/rusturf_tunnel/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/seashore_house/tiles.png b/data/tilesets/secondary/seashore_house/tiles.png
index 695f83037..ea48f5006 100644
--- a/data/tilesets/secondary/seashore_house/tiles.png
+++ b/data/tilesets/secondary/seashore_house/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/blue_cave/tiles.png b/data/tilesets/secondary/secret_base/blue_cave/tiles.png
index 207e8d845..9d820463b 100644
--- a/data/tilesets/secondary/secret_base/blue_cave/tiles.png
+++ b/data/tilesets/secondary/secret_base/blue_cave/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/blue_cave/unused_tiles.png b/data/tilesets/secondary/secret_base/blue_cave/unused_tiles.png
new file mode 100644
index 000000000..1e42fed54
--- /dev/null
+++ b/data/tilesets/secondary/secret_base/blue_cave/unused_tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/brown_cave/tiles.png b/data/tilesets/secondary/secret_base/brown_cave/tiles.png
index 7888f8cc2..a1c8bfe72 100644
--- a/data/tilesets/secondary/secret_base/brown_cave/tiles.png
+++ b/data/tilesets/secondary/secret_base/brown_cave/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/brown_cave/unused_tiles.png b/data/tilesets/secondary/secret_base/brown_cave/unused_tiles.png
new file mode 100644
index 000000000..dfd187d51
--- /dev/null
+++ b/data/tilesets/secondary/secret_base/brown_cave/unused_tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/red_cave/tiles.png b/data/tilesets/secondary/secret_base/red_cave/tiles.png
index 5c21865e2..2652f6bbf 100644
--- a/data/tilesets/secondary/secret_base/red_cave/tiles.png
+++ b/data/tilesets/secondary/secret_base/red_cave/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/red_cave/unused_tiles.png b/data/tilesets/secondary/secret_base/red_cave/unused_tiles.png
new file mode 100644
index 000000000..5cfebd309
--- /dev/null
+++ b/data/tilesets/secondary/secret_base/red_cave/unused_tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/shrub/tiles.png b/data/tilesets/secondary/secret_base/shrub/tiles.png
index 2e0a6d028..692141b04 100644
--- a/data/tilesets/secondary/secret_base/shrub/tiles.png
+++ b/data/tilesets/secondary/secret_base/shrub/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/shrub/unused_tiles.png b/data/tilesets/secondary/secret_base/shrub/unused_tiles.png
new file mode 100644
index 000000000..461d620ae
--- /dev/null
+++ b/data/tilesets/secondary/secret_base/shrub/unused_tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/tree/tiles.png b/data/tilesets/secondary/secret_base/tree/tiles.png
index 83ddd6144..94887cc1f 100644
--- a/data/tilesets/secondary/secret_base/tree/tiles.png
+++ b/data/tilesets/secondary/secret_base/tree/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/tree/unused_tiles.png b/data/tilesets/secondary/secret_base/tree/unused_tiles.png
new file mode 100644
index 000000000..567cf7800
--- /dev/null
+++ b/data/tilesets/secondary/secret_base/tree/unused_tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/yellow_cave/tiles.png b/data/tilesets/secondary/secret_base/yellow_cave/tiles.png
index e8386a804..b171b5ec6 100644
--- a/data/tilesets/secondary/secret_base/yellow_cave/tiles.png
+++ b/data/tilesets/secondary/secret_base/yellow_cave/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/secret_base/yellow_cave/unused_tiles.png b/data/tilesets/secondary/secret_base/yellow_cave/unused_tiles.png
new file mode 100644
index 000000000..f825201cc
--- /dev/null
+++ b/data/tilesets/secondary/secret_base/yellow_cave/unused_tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/shop/tiles.png b/data/tilesets/secondary/shop/tiles.png
index 31e3c5319..f253a2e53 100644
--- a/data/tilesets/secondary/shop/tiles.png
+++ b/data/tilesets/secondary/shop/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/slateport/anim/0.png b/data/tilesets/secondary/slateport/anim/0.png
new file mode 100644
index 000000000..ef62c4143
--- /dev/null
+++ b/data/tilesets/secondary/slateport/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/slateport/anim/1.png b/data/tilesets/secondary/slateport/anim/1.png
new file mode 100644
index 000000000..9b926bdfc
--- /dev/null
+++ b/data/tilesets/secondary/slateport/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/slateport/anim/2.png b/data/tilesets/secondary/slateport/anim/2.png
new file mode 100644
index 000000000..c5974f105
--- /dev/null
+++ b/data/tilesets/secondary/slateport/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/slateport/anim/3.png b/data/tilesets/secondary/slateport/anim/3.png
new file mode 100644
index 000000000..9b926bdfc
--- /dev/null
+++ b/data/tilesets/secondary/slateport/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/slateport/tiles.png b/data/tilesets/secondary/slateport/tiles.png
index f89ca2b0c..d8661b99a 100644
--- a/data/tilesets/secondary/slateport/tiles.png
+++ b/data/tilesets/secondary/slateport/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis/anim/0.png b/data/tilesets/secondary/sootopolis/anim/0.png
new file mode 100644
index 000000000..63f97ad47
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis/anim/1.png b/data/tilesets/secondary/sootopolis/anim/1.png
new file mode 100644
index 000000000..aa14ec04a
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis/anim/2.png b/data/tilesets/secondary/sootopolis/anim/2.png
new file mode 100644
index 000000000..09fb59fbf
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis/anim/3.png b/data/tilesets/secondary/sootopolis/anim/3.png
new file mode 100644
index 000000000..0c7c05034
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis/anim/4.png b/data/tilesets/secondary/sootopolis/anim/4.png
new file mode 100644
index 000000000..317db1714
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis/anim/4.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis/anim/5.png b/data/tilesets/secondary/sootopolis/anim/5.png
new file mode 100644
index 000000000..d0cbfeb57
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis/anim/5.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis/anim/6.png b/data/tilesets/secondary/sootopolis/anim/6.png
new file mode 100644
index 000000000..4b35ededd
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis/anim/6.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis/anim/7.png b/data/tilesets/secondary/sootopolis/anim/7.png
new file mode 100644
index 000000000..dfe698edb
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis/anim/7.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis/tiles.png b/data/tilesets/secondary/sootopolis/tiles.png
index 5e9866821..92df774ae 100644
--- a/data/tilesets/secondary/sootopolis/tiles.png
+++ b/data/tilesets/secondary/sootopolis/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis_gym/anim/0/0.png b/data/tilesets/secondary/sootopolis_gym/anim/0/0.png
new file mode 100644
index 000000000..f0ec1ac00
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis_gym/anim/0/0.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis_gym/anim/0/1.png b/data/tilesets/secondary/sootopolis_gym/anim/0/1.png
new file mode 100644
index 000000000..4fefe4598
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis_gym/anim/0/1.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis_gym/anim/0/2.png b/data/tilesets/secondary/sootopolis_gym/anim/0/2.png
new file mode 100644
index 000000000..f603b3046
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis_gym/anim/0/2.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis_gym/anim/0/3.png b/data/tilesets/secondary/sootopolis_gym/anim/0/3.png
new file mode 100644
index 000000000..2a8e6a31c
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis_gym/anim/0/3.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis_gym/anim/1/0.png b/data/tilesets/secondary/sootopolis_gym/anim/1/0.png
new file mode 100644
index 000000000..e0f807ef4
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis_gym/anim/1/0.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis_gym/anim/1/1.png b/data/tilesets/secondary/sootopolis_gym/anim/1/1.png
new file mode 100644
index 000000000..08413b63c
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis_gym/anim/1/1.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis_gym/anim/1/2.png b/data/tilesets/secondary/sootopolis_gym/anim/1/2.png
new file mode 100644
index 000000000..6681b5e96
--- /dev/null
+++ b/data/tilesets/secondary/sootopolis_gym/anim/1/2.png
Binary files differ
diff --git a/data/tilesets/secondary/sootopolis_gym/tiles.png b/data/tilesets/secondary/sootopolis_gym/tiles.png
index b2533b243..4f6b25769 100644
--- a/data/tilesets/secondary/sootopolis_gym/tiles.png
+++ b/data/tilesets/secondary/sootopolis_gym/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/trainer_hill/tiles.png b/data/tilesets/secondary/trainer_hill/tiles.png
index f5330af84..78d292513 100644
--- a/data/tilesets/secondary/trainer_hill/tiles.png
+++ b/data/tilesets/secondary/trainer_hill/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/trick_house_puzzle/tiles.png b/data/tilesets/secondary/trick_house_puzzle/tiles.png
index eb81554cc..5ef1bf9ca 100644
--- a/data/tilesets/secondary/trick_house_puzzle/tiles.png
+++ b/data/tilesets/secondary/trick_house_puzzle/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/underwater/anim/0.png b/data/tilesets/secondary/underwater/anim/0.png
new file mode 100644
index 000000000..7609cc82a
--- /dev/null
+++ b/data/tilesets/secondary/underwater/anim/0.png
Binary files differ
diff --git a/data/tilesets/secondary/underwater/anim/1.png b/data/tilesets/secondary/underwater/anim/1.png
new file mode 100644
index 000000000..64cddd371
--- /dev/null
+++ b/data/tilesets/secondary/underwater/anim/1.png
Binary files differ
diff --git a/data/tilesets/secondary/underwater/anim/2.png b/data/tilesets/secondary/underwater/anim/2.png
new file mode 100644
index 000000000..ff6ff8437
--- /dev/null
+++ b/data/tilesets/secondary/underwater/anim/2.png
Binary files differ
diff --git a/data/tilesets/secondary/underwater/anim/3.png b/data/tilesets/secondary/underwater/anim/3.png
new file mode 100644
index 000000000..2863c2261
--- /dev/null
+++ b/data/tilesets/secondary/underwater/anim/3.png
Binary files differ
diff --git a/data/tilesets/secondary/underwater/tiles.png b/data/tilesets/secondary/underwater/tiles.png
index e0569d970..5af21f353 100644
--- a/data/tilesets/secondary/underwater/tiles.png
+++ b/data/tilesets/secondary/underwater/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/union_room/tiles.png b/data/tilesets/secondary/union_room/tiles.png
index 50d44bf93..b38ffe9e5 100644
--- a/data/tilesets/secondary/union_room/tiles.png
+++ b/data/tilesets/secondary/union_room/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_1/0.png b/data/tilesets/secondary/unused_1/0.png
new file mode 100644
index 000000000..bea921d90
--- /dev/null
+++ b/data/tilesets/secondary/unused_1/0.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_1/1.png b/data/tilesets/secondary/unused_1/1.png
new file mode 100644
index 000000000..bea921d90
--- /dev/null
+++ b/data/tilesets/secondary/unused_1/1.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_1/2.png b/data/tilesets/secondary/unused_1/2.png
new file mode 100644
index 000000000..16652df19
--- /dev/null
+++ b/data/tilesets/secondary/unused_1/2.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_1/3.png b/data/tilesets/secondary/unused_1/3.png
new file mode 100644
index 000000000..8ea7a49e6
--- /dev/null
+++ b/data/tilesets/secondary/unused_1/3.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_1/tiles.png b/data/tilesets/secondary/unused_1/tiles.png
index 0a35187c8..3ae8bce42 100644
--- a/data/tilesets/secondary/unused_1/tiles.png
+++ b/data/tilesets/secondary/unused_1/tiles.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_2/0.png b/data/tilesets/secondary/unused_2/0.png
new file mode 100644
index 000000000..2895d3319
--- /dev/null
+++ b/data/tilesets/secondary/unused_2/0.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_2/1.png b/data/tilesets/secondary/unused_2/1.png
new file mode 100644
index 000000000..63c22acf2
--- /dev/null
+++ b/data/tilesets/secondary/unused_2/1.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_2/2.png b/data/tilesets/secondary/unused_2/2.png
new file mode 100644
index 000000000..d1447cde2
--- /dev/null
+++ b/data/tilesets/secondary/unused_2/2.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_2/3.png b/data/tilesets/secondary/unused_2/3.png
new file mode 100644
index 000000000..8ad81b1e1
--- /dev/null
+++ b/data/tilesets/secondary/unused_2/3.png
Binary files differ
diff --git a/data/tilesets/secondary/unused_2/tiles.png b/data/tilesets/secondary/unused_2/tiles.png
index b9c594303..2ab3b63d6 100644
--- a/data/tilesets/secondary/unused_2/tiles.png
+++ b/data/tilesets/secondary/unused_2/tiles.png
Binary files differ
diff --git a/data/title_screen.s b/data/title_screen.s
index 281afe51f..b07464ce9 100644
--- a/data/title_screen.s
+++ b/data/title_screen.s
@@ -1,46 +1,163 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
- .section .rodata
- .align 2, 0
+ .section .rodata
+ .align 2, 0
-gTitleScreenRayquazaTiles:: @ 853F058
+ .incbin "graphics/title_screen/unk_853EF78.gbapal"
+
+ .align 2
+gTitleScreenRayquazaGfx:: @ 853F058
.incbin "graphics/title_screen/rayquaza.4bpp.lz"
.align 2
-gUnknown_0853F83C:: @ 853F83C
- .incbin "baserom.gba", 0x53f83c, 0x450
+gTitleScreenRayquazaTilemap:: @ 853F83C
+ .incbin "graphics/title_screen/rayquaza.bin.lz"
+
+ .align 2
+gTitleScreenLogoShineGfx:: @ 853FB3C
+ .incbin "graphics/title_screen/logo_shine.4bpp.lz"
-gTitleScreenCloudsTiles:: @ 853FC8C
+ .align 2
+gTitleScreenCloudsGfx:: @ 853FC8C
.incbin "graphics/title_screen/clouds.4bpp.lz"
.align 2
gUnknown_0853FF70:: @ 853FF70
- .incbin "baserom.gba", 0x53ff70, 0xa8
+ .2byte 0x0010, 0x0110, 0x0210, 0x0310, 0x0410, 0x0510, 0x0610, 0x0710
+ .2byte 0x0810, 0x0910, 0x0a10, 0x0b10, 0x0c10, 0x0d10, 0x0e10, 0x0f10
+ .2byte 0x100f, 0x100e, 0x100d, 0x100c, 0x100b, 0x100a, 0x1009, 0x1008
+ .2byte 0x1007, 0x1006, 0x1005, 0x1004, 0x1003, 0x1002, 0x1001, 0x1000
+ .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000
+ .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000
+ .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000
+ .2byte 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000, 0x1000
+
+ .align 2
+gUnknown_0853FFF0:: @ 853FFF0
+ .byte 0xa0, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_0853FFF8:: @ 853FFF8
+ .byte 0xa0, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_08540000:: @ 8540000
+ .2byte 0x0000, 0x001e, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08540008:: @ 8540008
+ .2byte 0x0040, 0x001e, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08540010:: @ 8540010
+ .4byte gUnknown_08540000
+
+ .align 2
+gUnknown_08540014:: @ 8540014
+ .4byte gUnknown_08540008
+ .align 2
gUnknown_08540018:: @ 8540018
- .incbin "baserom.gba", 0x540018, 0x18
+ spr_template 0x03e8, 0x03e8, gUnknown_0853FFF0, gUnknown_08540010, NULL, gDummySpriteAffineAnimTable, sub_80AA40C
+ .align 2
gUnknown_08540030:: @ 8540030
- .incbin "baserom.gba", 0x540030, 0x18
+ spr_template 0x03e8, 0x03e8, gUnknown_0853FFF8, gUnknown_08540014, NULL, gDummySpriteAffineAnimTable, sub_80AA474
+ .align 2
gUnknown_08540048:: @ 8540048
- .incbin "baserom.gba", 0x540048, 0x90
+ obj_tiles gTitleScreenEmeraldVersionGfx, 0x1000, 0x03e8
+ null_obj_tiles
+
+ .align 2
+gUnknown_08540058:: @ 8540058
+ .byte 0xa0, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_08540060:: @ 8540060
+ .2byte 0x0001, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08540068:: @ 8540068
+ .2byte 0x0005, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08540070:: @ 8540070
+ .2byte 0x0009, 0x0004, 0xffff, 0x0000
+ .align 2
+gUnknown_08540078:: @ 8540078
+ .2byte 0x000d, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08540080:: @ 8540080
+ .2byte 0x0011, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08540088:: @ 8540088
+ .2byte 0x0015, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08540090:: @ 8540090
+ .2byte 0x0019, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08540098:: @ 8540098
+ .2byte 0x001d, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085400A0:: @ 85400A0
+ .2byte 0x0021, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085400A8:: @ 85400A8
+ .2byte 0x0025, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_085400B0:: @ 85400B0
+ .4byte gUnknown_08540060
+ .4byte gUnknown_08540068
+ .4byte gUnknown_08540070
+ .4byte gUnknown_08540078
+ .4byte gUnknown_08540080
+ .4byte gUnknown_08540088
+ .4byte gUnknown_08540090
+ .4byte gUnknown_08540098
+ .4byte gUnknown_085400A0
+ .4byte gUnknown_085400A8
+
+ .align 2
gUnknown_085400D8:: @ 85400D8
- .incbin "baserom.gba", 0x5400d8, 0x18
+ spr_template 0x03e9, 0x03e9, gUnknown_08540058, gUnknown_085400B0, NULL, gDummySpriteAffineAnimTable, sub_80AA4B4
+ .align 2
gUnknown_085400F0:: @ 85400F0
- .incbin "baserom.gba", 0x5400f0, 0x10
+ obj_tiles gTitleScreenPressStartGfx, 0x0520, 0x03e9
+ null_obj_tiles
+ .align 2
gUnknown_08540100:: @ 8540100
- .incbin "baserom.gba", 0x540100, 0x24
+ obj_pal gTitleScreenPressStartPal, 0x03e9
+ null_obj_pal
+
+ .align 2
+gUnknown_08540110:: @ 8540110
+ .byte 0xa0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+ .align 2
+gUnknown_08540118:: @ 8540118
+ .2byte 0x0000, 0x0004, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08540120:: @ 8540120
+ .4byte gUnknown_08540118
+
+ .align 2
gUnknown_08540124:: @ 8540124
- .incbin "baserom.gba", 0x540124, 0x18
+ spr_template 0x03ea, 0x03e9, gUnknown_08540110, gUnknown_08540120, NULL, gDummySpriteAffineAnimTable, title_screen_logo_shine_obj_callback_type1
+ .align 2
gUnknown_0854013C:: @ 854013C
- .incbin "baserom.gba", 0x54013c, 0x10
-
-gUnknown_0854014C:: @ 854014C
- .incbin "baserom.gba", 0x54014c, 0xc000
+ obj_tiles gTitleScreenLogoShineGfx, 0x0800, 0x03ea
+ null_obj_tiles
diff --git a/data/trainer_money.inc b/data/trainer_money.inc
new file mode 100644
index 000000000..1e06668bd
--- /dev/null
+++ b/data/trainer_money.inc
@@ -0,0 +1,59 @@
+@ This is a factor in how much money you get for beating a trainer.
+ .align 2
+gTrainerMoneyTable:: @ 831AEB8
+ .byte TRAINER_CLASS_NAME_TEAM_AQUA, 5, 0, 0
+ .byte TRAINER_CLASS_NAME_AQUA_ADMIN, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_AQUA_LEADER, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_AROMA_LADY, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_RUIN_MANIAC, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_INTERVIEWER, 12, 0, 0
+ .byte TRAINER_CLASS_NAME_TUBER_1, 1, 0, 0
+ .byte TRAINER_CLASS_NAME_TUBER_2, 1, 0, 0
+ .byte TRAINER_CLASS_NAME_SIS_AND_BRO, 3, 0, 0
+ .byte TRAINER_CLASS_NAME_COOLTRAINER_1, 12, 0, 0
+ .byte TRAINER_CLASS_NAME_HEX_MANIAC, 6, 0, 0
+ .byte TRAINER_CLASS_NAME_LADY, 50, 0, 0
+ .byte TRAINER_CLASS_NAME_BEAUTY, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_RICH_BOY, 50, 0, 0
+ .byte TRAINER_CLASS_NAME_POKEMANIAC, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_SWIMMER_M, 2, 0, 0
+ .byte TRAINER_CLASS_NAME_BLACK_BELT, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_GUITARIST, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_KINDLER, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_CAMPER, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_OLD_COUPLE, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_BUG_MANIAC, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_PSYCHIC, 6, 0, 0
+ .byte TRAINER_CLASS_NAME_GENTLEMAN, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_ELITE_FOUR, 25, 0, 0
+ .byte TRAINER_CLASS_NAME_LEADER, 25, 0, 0
+ .byte TRAINER_CLASS_NAME_SCHOOL_KID, 5, 0, 0
+ .byte TRAINER_CLASS_NAME_SR_AND_JR, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_POKEFAN, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_EXPERT, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_YOUNGSTER, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_CHAMPION, 50, 0, 0
+ .byte TRAINER_CLASS_NAME_FISHERMAN, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_TRIATHLETE, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_DRAGON_TAMER, 12, 0, 0
+ .byte TRAINER_CLASS_NAME_BIRD_KEEPER, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_NINJA_BOY, 3, 0, 0
+ .byte TRAINER_CLASS_NAME_BATTLE_GIRL, 6, 0, 0
+ .byte TRAINER_CLASS_NAME_PARASOL_LADY, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_SWIMMER_F, 2, 0, 0
+ .byte TRAINER_CLASS_NAME_PICNICKER, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_TWINS, 3, 0, 0
+ .byte TRAINER_CLASS_NAME_SAILOR, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_COLLECTOR, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_PKMN_BREEDER, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_PKMN_RANGER, 12, 0, 0
+ .byte TRAINER_CLASS_NAME_TEAM_MAGMA, 5, 0, 0
+ .byte TRAINER_CLASS_NAME_MAGMA_ADMIN, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_MAGMA_LEADER, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_LASS, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_BUG_CATCHER, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_HIKER, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_YOUNG_COUPLE, 8, 0, 0
+ .byte TRAINER_CLASS_LEADER_1, 10, 0, 0
+ .byte -1, 5, 0, 0
diff --git a/data/trainer_see.s b/data/trainer_see.s
index 7480cb290..bff3004a7 100644
--- a/data/trainer_see.s
+++ b/data/trainer_see.s
@@ -2,13 +2,82 @@
.include "constants/constants.inc"
.section .rodata
- .align 2, 0
-gUnknown_0855072C:: @ 855072C
- .incbin "baserom.gba", 0x55072c, 0x10
+ .align 2
+gEmotion_ExclamationMarkGfx:: @ 85505AC
+ .incbin "graphics/misc/emotion_exclamation.4bpp"
-gUnknown_0855073C:: @ 855073C
- .incbin "baserom.gba", 0x55073c, 0x30
+ .align 2
+gEmotion_QuestionMarkGfx:: @ 855062C
+ .incbin "graphics/misc/emotion_question.4bpp"
-gUnknown_0855076C:: @ 855076C
- .incbin "baserom.gba", 0x55076c, 0x48
+ .align 2
+gEmotion_HeartGfx:: @ 85506AC
+ .incbin "graphics/misc/emotion_heart.4bpp"
+
+ .align 2
+gIsTrainerInRange:: @ 855072C
+ .4byte IsTrainerInRangeSouth
+ .4byte IsTrainerInRangeNorth
+ .4byte IsTrainerInRangeWest
+ .4byte IsTrainerInRangeEast
+
+ .align 2
+gTrainerSeeFuncList:: @ 855073C
+ .4byte sub_80B4178
+ .4byte sub_80B417C
+ .4byte sub_80B41C0
+ .4byte sub_80B4200
+ .4byte sub_80B425C
+ .4byte sub_80B4318
+ .4byte sub_80B435C
+ .4byte sub_80B4390
+ .4byte sub_80B43AC
+ .4byte sub_80B43E0
+ .4byte sub_80B4438
+ .4byte sub_80B44AC
+
+ .align 2
+gTrainerSeeFuncList2:: @ 855076C
+ .4byte sub_80B43AC
+ .4byte sub_80B43E0
+ .4byte sub_80B4438
+ .4byte sub_80B44AC
+
+ .align 2
+gOamData_855077C:: @ 855077C
+ .2byte 0x0000
+ .2byte 0x4000
+ .2byte 0x0400
+
+ .align 2
+gSpriteImageTable_8550784:: @ 8550784
+ obj_frame_tiles gEmotion_ExclamationMarkGfx, 0x0080
+ obj_frame_tiles gEmotion_QuestionMarkGfx, 0x0080
+
+ .align 2
+gSpriteImageTable_8550794:: @ 8550794
+ obj_frame_tiles gEmotion_HeartGfx, 0x0080
+
+ .align 2
+gSpriteAnim_855079C:: @ 855079C
+ obj_image_anim_frame 0, 60
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnim_85507A4:: @ 85507A4
+ obj_image_anim_frame 1, 60
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnimTable_85507AC:: @ 85507AC
+ .4byte gSpriteAnim_855079C
+ .4byte gSpriteAnim_85507A4
+
+ .align 2
+gSpriteTemplate_85507B4:: @ 85507B4
+ spr_template 0xffff, 0xffff, gOamData_855077C, gSpriteAnimTable_85507AC, gSpriteImageTable_8550784, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
+
+ .align 2
+gSpriteTemplate_85507CC:: @ 85507CC
+ spr_template 0xffff, 0x1004, gOamData_855077C, gSpriteAnimTable_85507AC, gSpriteImageTable_8550794, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
diff --git a/data/tv.s b/data/tv.s
deleted file mode 100644
index 4d2a608c4..000000000
--- a/data/tv.s
+++ /dev/null
@@ -1,128 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0858D094:: @ 858D094
- .incbin "baserom.gba", 0x58d094, 0x3c
-
-gUnknown_0858D0D0:: @ 858D0D0
- .incbin "baserom.gba", 0x58d0d0, 0xe
-
-gUnknown_0858D0DE:: @ 858D0DE
- .incbin "baserom.gba", 0x58d0de, 0xe
-
-gUnknown_0858D0EC:: @ 858D0EC
- .incbin "baserom.gba", 0x58d0ec, 0x1c
-
-gUnknown_0858D108:: @ 858D108
- .incbin "baserom.gba", 0x58d108, 0x14
-
-gUnknown_0858D11C:: @ 858D11C
- .incbin "baserom.gba", 0x58d11c, 0x14
-
-gUnknown_0858D130:: @ 858D130
- .incbin "baserom.gba", 0x58d130, 0x14
-
-gUnknown_0858D144:: @ 858D144
- .incbin "baserom.gba", 0x58d144, 0xc
-
-gUnknown_0858D150:: @ 858D150
- .incbin "baserom.gba", 0x58d150, 0x20
-
-gUnknown_0858D170:: @ 858D170
- .incbin "baserom.gba", 0x58d170, 0x18
-
-gUnknown_0858D188:: @ 858D188
- .incbin "baserom.gba", 0x58d188, 0x14
-
-gUnknown_0858D19C:: @ 858D19C
- .incbin "baserom.gba", 0x58d19c, 0x4
-
-gUnknown_0858D1A0:: @ 858D1A0
- .incbin "baserom.gba", 0x58d1a0, 0x30
-
-gUnknown_0858D1D0:: @ 858D1D0
- .incbin "baserom.gba", 0x58d1d0, 0x34
-
-gUnknown_0858D204:: @ 858D204
- .incbin "baserom.gba", 0x58d204, 0x24
-
-gUnknown_0858D228:: @ 858D228
- .incbin "baserom.gba", 0x58d228, 0x18
-
-gUnknown_0858D240:: @ 858D240
- .incbin "baserom.gba", 0x58d240, 0x3c
-
-gUnknown_0858D27C:: @ 858D27C
- .incbin "baserom.gba", 0x58d27c, 0x84
-
-gUnknown_0858D300:: @ 858D300
- .incbin "baserom.gba", 0x58d300, 0x20
-
-gUnknown_0858D320:: @ 858D320
- .incbin "baserom.gba", 0x58d320, 0x18
-
-gUnknown_0858D338:: @ 858D338
- .incbin "baserom.gba", 0x58d338, 0x4c
-
-gUnknown_0858D384:: @ 858D384
- .incbin "baserom.gba", 0x58d384, 0x10
-
-gUnknown_0858D394:: @ 858D394
- .incbin "baserom.gba", 0x58d394, 0x1c
-
-gUnknown_0858D3B0:: @ 858D3B0
- .incbin "baserom.gba", 0x58d3b0, 0x8
-
-gUnknown_0858D3B8:: @ 858D3B8
- .incbin "baserom.gba", 0x58d3b8, 0xc
-
-gUnknown_0858D3C4:: @ 858D3C4
- .incbin "baserom.gba", 0x58d3c4, 0x2c
-
-gUnknown_0858D3F0:: @ 858D3F0
- .incbin "baserom.gba", 0x58d3f0, 0x1c
-
-gUnknown_0858D40C:: @ 858D40C
- .incbin "baserom.gba", 0x58d40c, 0xc
-
-gUnknown_0858D418:: @ 858D418
- .incbin "baserom.gba", 0x58d418, 0x10
-
-gUnknown_0858D428:: @ 858D428
- .incbin "baserom.gba", 0x58d428, 0x34
-
-gUnknown_0858D45C:: @ 858D45C
- .incbin "baserom.gba", 0x58d45c, 0x38
-
-gUnknown_0858D494:: @ 858D494
- .incbin "baserom.gba", 0x58d494, 0x4
-
-gUnknown_0858D498:: @ 858D498
- .incbin "baserom.gba", 0x58d498, 0x1c
-
-gUnknown_0858D4B4:: @ 858D4B4
- .incbin "baserom.gba", 0x58d4b4, 0x30
-
-gUnknown_0858D4E4:: @ 858D4E4
- .incbin "baserom.gba", 0x58d4e4, 0x40
-
-gUnknown_0858D524:: @ 858D524
- .incbin "baserom.gba", 0x58d524, 0x4c
-
-gUnknown_0858D570:: @ 858D570
- .incbin "baserom.gba", 0x58d570, 0x24
-
-gUnknown_0858D594:: @ 858D594
- .incbin "baserom.gba", 0x58d594, 0xac
-
-gUnknown_0858D640:: @ 858D640
- .incbin "baserom.gba", 0x58d640, 0x2c
-
-gUnknown_0858D66C:: @ 858D66C
- .incbin "baserom.gba", 0x58d66c, 0x24
-
-gUnknown_0858D690:: @ 858D690
- .incbin "baserom.gba", 0x58d690, 0x20
diff --git a/data/type_effectiveness.inc b/data/type_effectiveness.inc
new file mode 100644
index 000000000..a24615592
--- /dev/null
+++ b/data/type_effectiveness.inc
@@ -0,0 +1,119 @@
+@ format: attacking type, defending type, damage multiplier
+@ the multiplier is a (decimal) fixed-point number:
+@ 20 is ×2.0
+@ 05 is ×0.5
+@ 00 is ×0
+
+gTypeEffectiveness:: @ 831ACE8
+ .byte TYPE_NORMAL, TYPE_ROCK, 5
+ .byte TYPE_NORMAL, TYPE_STEEL, 5
+ .byte TYPE_FIRE, TYPE_FIRE, 5
+ .byte TYPE_FIRE, TYPE_WATER, 5
+ .byte TYPE_FIRE, TYPE_GRASS, 20
+ .byte TYPE_FIRE, TYPE_ICE, 20
+ .byte TYPE_FIRE, TYPE_BUG, 20
+ .byte TYPE_FIRE, TYPE_ROCK, 5
+ .byte TYPE_FIRE, TYPE_DRAGON, 5
+ .byte TYPE_FIRE, TYPE_STEEL, 20
+ .byte TYPE_WATER, TYPE_FIRE, 20
+ .byte TYPE_WATER, TYPE_WATER, 5
+ .byte TYPE_WATER, TYPE_GRASS, 5
+ .byte TYPE_WATER, TYPE_GROUND, 20
+ .byte TYPE_WATER, TYPE_ROCK, 20
+ .byte TYPE_WATER, TYPE_DRAGON, 5
+ .byte TYPE_ELECTRIC, TYPE_WATER, 20
+ .byte TYPE_ELECTRIC, TYPE_ELECTRIC, 5
+ .byte TYPE_ELECTRIC, TYPE_GRASS, 5
+ .byte TYPE_ELECTRIC, TYPE_GROUND, 0
+ .byte TYPE_ELECTRIC, TYPE_FLYING, 20
+ .byte TYPE_ELECTRIC, TYPE_DRAGON, 5
+ .byte TYPE_GRASS, TYPE_FIRE, 5
+ .byte TYPE_GRASS, TYPE_WATER, 20
+ .byte TYPE_GRASS, TYPE_GRASS, 5
+ .byte TYPE_GRASS, TYPE_POISON, 5
+ .byte TYPE_GRASS, TYPE_GROUND, 20
+ .byte TYPE_GRASS, TYPE_FLYING, 5
+ .byte TYPE_GRASS, TYPE_BUG, 5
+ .byte TYPE_GRASS, TYPE_ROCK, 20
+ .byte TYPE_GRASS, TYPE_DRAGON, 5
+ .byte TYPE_GRASS, TYPE_STEEL, 5
+ .byte TYPE_ICE, TYPE_WATER, 5
+ .byte TYPE_ICE, TYPE_GRASS, 20
+ .byte TYPE_ICE, TYPE_ICE, 5
+ .byte TYPE_ICE, TYPE_GROUND, 20
+ .byte TYPE_ICE, TYPE_FLYING, 20
+ .byte TYPE_ICE, TYPE_DRAGON, 20
+ .byte TYPE_ICE, TYPE_STEEL, 5
+ .byte TYPE_ICE, TYPE_FIRE, 5
+ .byte TYPE_FIGHTING, TYPE_NORMAL, 20
+ .byte TYPE_FIGHTING, TYPE_ICE, 20
+ .byte TYPE_FIGHTING, TYPE_POISON, 5
+ .byte TYPE_FIGHTING, TYPE_FLYING, 5
+ .byte TYPE_FIGHTING, TYPE_PSYCHIC, 5
+ .byte TYPE_FIGHTING, TYPE_BUG, 5
+ .byte TYPE_FIGHTING, TYPE_ROCK, 20
+ .byte TYPE_FIGHTING, TYPE_DARK, 20
+ .byte TYPE_FIGHTING, TYPE_STEEL, 20
+ .byte TYPE_POISON, TYPE_GRASS, 20
+ .byte TYPE_POISON, TYPE_POISON, 5
+ .byte TYPE_POISON, TYPE_GROUND, 5
+ .byte TYPE_POISON, TYPE_ROCK, 5
+ .byte TYPE_POISON, TYPE_GHOST, 5
+ .byte TYPE_POISON, TYPE_STEEL, 0
+ .byte TYPE_GROUND, TYPE_FIRE, 20
+ .byte TYPE_GROUND, TYPE_ELECTRIC, 20
+ .byte TYPE_GROUND, TYPE_GRASS, 5
+ .byte TYPE_GROUND, TYPE_POISON, 20
+ .byte TYPE_GROUND, TYPE_FLYING, 0
+ .byte TYPE_GROUND, TYPE_BUG, 5
+ .byte TYPE_GROUND, TYPE_ROCK, 20
+ .byte TYPE_GROUND, TYPE_STEEL, 20
+ .byte TYPE_FLYING, TYPE_ELECTRIC, 5
+ .byte TYPE_FLYING, TYPE_GRASS, 20
+ .byte TYPE_FLYING, TYPE_FIGHTING, 20
+ .byte TYPE_FLYING, TYPE_BUG, 20
+ .byte TYPE_FLYING, TYPE_ROCK, 5
+ .byte TYPE_FLYING, TYPE_STEEL, 5
+ .byte TYPE_PSYCHIC, TYPE_FIGHTING, 20
+ .byte TYPE_PSYCHIC, TYPE_POISON, 20
+ .byte TYPE_PSYCHIC, TYPE_PSYCHIC, 5
+ .byte TYPE_PSYCHIC, TYPE_DARK, 0
+ .byte TYPE_PSYCHIC, TYPE_STEEL, 5
+ .byte TYPE_BUG, TYPE_FIRE, 5
+ .byte TYPE_BUG, TYPE_GRASS, 20
+ .byte TYPE_BUG, TYPE_FIGHTING, 5
+ .byte TYPE_BUG, TYPE_POISON, 5
+ .byte TYPE_BUG, TYPE_FLYING, 5
+ .byte TYPE_BUG, TYPE_PSYCHIC, 20
+ .byte TYPE_BUG, TYPE_GHOST, 5
+ .byte TYPE_BUG, TYPE_DARK, 20
+ .byte TYPE_BUG, TYPE_STEEL, 5
+ .byte TYPE_ROCK, TYPE_FIRE, 20
+ .byte TYPE_ROCK, TYPE_ICE, 20
+ .byte TYPE_ROCK, TYPE_FIGHTING, 5
+ .byte TYPE_ROCK, TYPE_GROUND, 5
+ .byte TYPE_ROCK, TYPE_FLYING, 20
+ .byte TYPE_ROCK, TYPE_BUG, 20
+ .byte TYPE_ROCK, TYPE_STEEL, 5
+ .byte TYPE_GHOST, TYPE_NORMAL, 0
+ .byte TYPE_GHOST, TYPE_PSYCHIC, 20
+ .byte TYPE_GHOST, TYPE_DARK, 5
+ .byte TYPE_GHOST, TYPE_STEEL, 5
+ .byte TYPE_GHOST, TYPE_GHOST, 20
+ .byte TYPE_DRAGON, TYPE_DRAGON, 20
+ .byte TYPE_DRAGON, TYPE_STEEL, 5
+ .byte TYPE_DARK, TYPE_FIGHTING, 5
+ .byte TYPE_DARK, TYPE_PSYCHIC, 20
+ .byte TYPE_DARK, TYPE_GHOST, 20
+ .byte TYPE_DARK, TYPE_DARK, 5
+ .byte TYPE_DARK, TYPE_STEEL, 5
+ .byte TYPE_STEEL, TYPE_FIRE, 5
+ .byte TYPE_STEEL, TYPE_WATER, 5
+ .byte TYPE_STEEL, TYPE_ELECTRIC, 5
+ .byte TYPE_STEEL, TYPE_ICE, 20
+ .byte TYPE_STEEL, TYPE_ROCK, 20
+ .byte TYPE_STEEL, TYPE_STEEL, 5
+ .byte 0xFE, 0xFE, 0
+ .byte TYPE_NORMAL, TYPE_GHOST, 0
+ .byte TYPE_FIGHTING, TYPE_GHOST, 0
+ .byte 0xFF, 0xFF, 0
diff --git a/data/unk_text_util_2.s b/data/unk_text_util_2.s
deleted file mode 100644
index 69f227ea2..000000000
--- a/data/unk_text_util_2.s
+++ /dev/null
@@ -1,11 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_08616124:: @ 8616124
- .incbin "baserom.gba", 0x616124, 0x4
-
- .align 2
-gFont6BrailleGlyphs:: @ 8616128
- .incbin "data/graphics/fonts/font6.fwjpnfont"
diff --git a/data/use_pokeblock.s b/data/use_pokeblock.s
new file mode 100644
index 000000000..9b557a0dd
--- /dev/null
+++ b/data/use_pokeblock.s
@@ -0,0 +1,55 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+gUnknown_085DFA60:: @ 85DFA60
+ .incbin "baserom.gba", 0x5dfa60, 0x20
+
+gUnknown_085DFA80:: @ 85DFA80
+ .incbin "baserom.gba", 0x5dfa80, 0xe0
+
+gUnknown_085DFB60:: @ 85DFB60
+ .incbin "baserom.gba", 0x5dfb60, 0xac
+
+gUnknown_085DFC0C:: @ 85DFC0C
+ .incbin "baserom.gba", 0x5dfc0c, 0xa4
+
+gUnknown_085DFCB0:: @ 85DFCB0
+ .incbin "baserom.gba", 0x5dfcb0, 0x14
+
+gUnknown_085DFCC4:: @ 85DFCC4
+ .incbin "baserom.gba", 0x5dfcc4, 0x5
+
+gUnknown_085DFCC9:: @ 85DFCC9
+ .incbin "baserom.gba", 0x5dfcc9, 0x3
+
+gUnknown_085DFCCC:: @ 85DFCCC
+ .incbin "baserom.gba", 0x5dfccc, 0x10
+
+gUnknown_085DFCDC:: @ 85DFCDC
+ .incbin "baserom.gba", 0x5dfcdc, 0x20
+
+gUnknown_085DFCFC:: @ 85DFCFC
+ .incbin "baserom.gba", 0x5dfcfc, 0x8
+
+gUnknown_085DFD04:: @ 85DFD04
+ .incbin "baserom.gba", 0x5dfd04, 0x14
+
+gUnknown_085DFD18:: @ 85DFD18
+ .incbin "baserom.gba", 0x5dfd18, 0x8
+
+gUnknown_085DFD20:: @ 85DFD20
+ .incbin "baserom.gba", 0x5dfd20, 0x8
+
+gUnknown_085DFD28:: @ 85DFD28
+ .incbin "baserom.gba", 0x5dfd28, 0x34
+
+gUnknown_085DFD5C:: @ 85DFD5C
+ .incbin "baserom.gba", 0x5dfd5c, 0x44
+
+gUnknown_085DFDA0:: @ 85DFDA0
+ .incbin "baserom.gba", 0x5dfda0, 0x18
+
+gUnknown_085DFDB8:: @ 85DFDB8
+ .incbin "baserom.gba", 0x5dfdb8, 0x8
diff --git a/data/walda_phrase.s b/data/walda_phrase.s
deleted file mode 100644
index c168353b4..000000000
--- a/data/walda_phrase.s
+++ /dev/null
@@ -1,7 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_0862AD14:: @ 862AD14
- .incbin "baserom.gba", 0x62ad14, 0x20
diff --git a/graphics/battle_interface/ball_display.pal b/graphics/battle_interface/ball_display.pal
new file mode 100644
index 000000000..ea646bb82
--- /dev/null
+++ b/graphics/battle_interface/ball_display.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+57 57 57
+255 255 255
+213 205 189
+131 131 139
+74 65 90
+82 106 90
+255 180 123
+246 148 115
+222 106 90
+115 255 172
+90 213 131
+255 230 57
+205 172 8
+255 90 57
+172 65 74
diff --git a/graphics/battle_interface/ball_display.png b/graphics/battle_interface/ball_display.png
new file mode 100644
index 000000000..0c49d7ac4
--- /dev/null
+++ b/graphics/battle_interface/ball_display.png
Binary files differ
diff --git a/graphics/battle_interface/ball_status_bar.pal b/graphics/battle_interface/ball_status_bar.pal
new file mode 100644
index 000000000..bc8e8f2bc
--- /dev/null
+++ b/graphics/battle_interface/ball_status_bar.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+65 65 65
+255 255 222
+222 213 180
+197 189 115
+123 148 131
+82 106 98
+32 57 0
+57 82 65
+255 230 0
+255 156 148
+65 205 255
+0 0 255
+0 255 0
+255 0 0
+106 148 255
diff --git a/graphics/battle_interface/ball_status_bar.png b/graphics/battle_interface/ball_status_bar.png
new file mode 100644
index 000000000..b947a7803
--- /dev/null
+++ b/graphics/battle_interface/ball_status_bar.png
Binary files differ
diff --git a/graphics/battle_interface/unknown_32C2D4.png b/graphics/battle_interface/unknown_32C2D4.png
new file mode 100644
index 000000000..8672ac614
--- /dev/null
+++ b/graphics/battle_interface/unknown_32C2D4.png
Binary files differ
diff --git a/graphics/birch_speech/bg0.pal b/graphics/birch_speech/bg0.pal
new file mode 100644
index 000000000..31b66d4b3
--- /dev/null
+++ b/graphics/birch_speech/bg0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 164
+255 255 106
+222 222 90
+189 189 74
+156 156 57
+123 123 49
+90 90 32
+57 57 16
+197 255 205
+123 255 131
+115 222 106
+106 189 90
+98 156 65
+90 123 49
+0 0 0
diff --git a/graphics/birch_speech/bg1.pal b/graphics/birch_speech/bg1.pal
new file mode 100644
index 000000000..31b66d4b3
--- /dev/null
+++ b/graphics/birch_speech/bg1.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 164
+255 255 106
+222 222 90
+189 189 74
+156 156 57
+123 123 49
+90 90 32
+57 57 16
+197 255 205
+123 255 131
+115 222 106
+106 189 90
+98 156 65
+90 123 49
+0 0 0
diff --git a/graphics/birch_speech/bg2.pal b/graphics/birch_speech/bg2.pal
new file mode 100644
index 000000000..3457f9b45
--- /dev/null
+++ b/graphics/birch_speech/bg2.pal
@@ -0,0 +1,11 @@
+JASC-PAL
+0100
+8
+255 255 164
+255 255 106
+222 222 90
+189 189 74
+156 156 57
+123 123 49
+90 90 32
+57 57 16
diff --git a/graphics/birch_speech/map.bin b/graphics/birch_speech/map.bin
new file mode 100644
index 000000000..ad5540b7c
--- /dev/null
+++ b/graphics/birch_speech/map.bin
Binary files differ
diff --git a/graphics/birch_speech/shadow.png b/graphics/birch_speech/shadow.png
new file mode 100644
index 000000000..4487ea9ea
--- /dev/null
+++ b/graphics/birch_speech/shadow.png
Binary files differ
diff --git a/graphics/decorations/decor_attract_mat.pal b/graphics/decorations/decor_attract_mat.pal
new file mode 100644
index 000000000..6f188b725
--- /dev/null
+++ b/graphics/decorations/decor_attract_mat.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+255 230 222
+255 197 197
+246 156 156
+213 115 172
+197 189 131
+246 148 205
+123 82 74
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+246 246 246
+0 0 0
diff --git a/graphics/decorations/decor_attract_mat.png b/graphics/decorations/decor_attract_mat.png
new file mode 100644
index 000000000..16528d9f3
--- /dev/null
+++ b/graphics/decorations/decor_attract_mat.png
Binary files differ
diff --git a/graphics/decorations/decor_big_plant.pal b/graphics/decorations/decor_big_plant.pal
new file mode 100644
index 000000000..6e5a869f3
--- /dev/null
+++ b/graphics/decorations/decor_big_plant.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+189 230 106
+123 172 74
+90 139 65
+57 98 41
+213 180 106
+180 139 82
+139 98 49
+82 57 32
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_big_plant.png b/graphics/decorations/decor_big_plant.png
new file mode 100644
index 000000000..e5eedd859
--- /dev/null
+++ b/graphics/decorations/decor_big_plant.png
Binary files differ
diff --git a/graphics/decorations/decor_blastoise_doll.pal b/graphics/decorations/decor_blastoise_doll.pal
new file mode 100644
index 000000000..a4ad56936
--- /dev/null
+++ b/graphics/decorations/decor_blastoise_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+197 222 255
+131 189 255
+90 139 213
+57 90 131
+213 156 90
+230 189 131
+156 131 90
+98 82 41
+139 90 74
+0 0 0
+0 0 0
+0 0 0
+246 246 246
+0 0 0
diff --git a/graphics/decorations/decor_blastoise_doll.png b/graphics/decorations/decor_blastoise_doll.png
new file mode 100644
index 000000000..00c55f229
--- /dev/null
+++ b/graphics/decorations/decor_blastoise_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_blue_brick.pal b/graphics/decorations/decor_blue_brick.pal
new file mode 100644
index 000000000..e8720d82f
--- /dev/null
+++ b/graphics/decorations/decor_blue_brick.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+156 180 246
+82 131 230
+57 98 189
+24 65 131
+106 106 106
+74 74 74
+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/graphics/decorations/decor_blue_brick.png b/graphics/decorations/decor_blue_brick.png
new file mode 100644
index 000000000..88e058712
--- /dev/null
+++ b/graphics/decorations/decor_blue_brick.png
Binary files differ
diff --git a/graphics/decorations/decor_blue_tent.pal b/graphics/decorations/decor_blue_tent.pal
new file mode 100644
index 000000000..e38cb56af
--- /dev/null
+++ b/graphics/decorations/decor_blue_tent.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+148 172 255
+115 139 238
+65 90 189
+49 57 123
+0 0 0
+197 205 230
+164 164 164
+131 131 131
+90 82 74
+0 0 0
+0 0 0
+0 0 0
+246 246 246
+0 0 0
diff --git a/graphics/decorations/decor_blue_tent.png b/graphics/decorations/decor_blue_tent.png
new file mode 100644
index 000000000..575b35241
--- /dev/null
+++ b/graphics/decorations/decor_blue_tent.png
Binary files differ
diff --git a/graphics/decorations/decor_breakable_door.pal b/graphics/decorations/decor_breakable_door.pal
new file mode 100644
index 000000000..85ece26dc
--- /dev/null
+++ b/graphics/decorations/decor_breakable_door.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+139 189 255
+106 156 213
+213 189 115
+156 131 41
+123 98 8
+90 74 57
+189 164 74
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+246 246 246
+197 197 197
diff --git a/graphics/decorations/decor_breakable_door.png b/graphics/decorations/decor_breakable_door.png
new file mode 100644
index 000000000..01ba82d28
--- /dev/null
+++ b/graphics/decorations/decor_breakable_door.png
Binary files differ
diff --git a/graphics/decorations/decor_brick_desk.pal b/graphics/decorations/decor_brick_desk.pal
new file mode 100644
index 000000000..16b581470
--- /dev/null
+++ b/graphics/decorations/decor_brick_desk.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+255 180 82
+230 139 49
+189 90 16
+0 0 0
+0 0 0
+0 0 0
+197 197 197
+148 148 156
+106 106 98
+74 74 74
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_brick_desk.png b/graphics/decorations/decor_brick_desk.png
new file mode 100644
index 000000000..829e45349
--- /dev/null
+++ b/graphics/decorations/decor_brick_desk.png
Binary files differ
diff --git a/graphics/decorations/decor_camp_desk.pal b/graphics/decorations/decor_camp_desk.pal
new file mode 100644
index 000000000..0ac362c8a
--- /dev/null
+++ b/graphics/decorations/decor_camp_desk.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+205 189 123
+172 156 90
+148 131 65
+123 98 32
+82 57 41
+0 0 0
+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/graphics/decorations/decor_camp_desk.png b/graphics/decorations/decor_camp_desk.png
new file mode 100644
index 000000000..b40429229
--- /dev/null
+++ b/graphics/decorations/decor_camp_desk.png
Binary files differ
diff --git a/graphics/decorations/decor_charizard_doll.pal b/graphics/decorations/decor_charizard_doll.pal
new file mode 100644
index 000000000..3e3e6bb79
--- /dev/null
+++ b/graphics/decorations/decor_charizard_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+238 172 98
+255 205 74
+222 156 41
+115 74 24
+164 98 24
+0 0 0
+230 82 65
+180 49 32
+0 0 0
+0 0 0
+0 0 0
+246 246 246
+255 238 197
diff --git a/graphics/decorations/decor_charizard_doll.png b/graphics/decorations/decor_charizard_doll.png
new file mode 100644
index 000000000..ffc3dfcef
--- /dev/null
+++ b/graphics/decorations/decor_charizard_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_colorful_plant.pal b/graphics/decorations/decor_colorful_plant.pal
new file mode 100644
index 000000000..996b183d2
--- /dev/null
+++ b/graphics/decorations/decor_colorful_plant.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+205 180 115
+180 139 98
+131 90 57
+156 222 90
+139 189 139
+98 148 98
+41 90 57
+106 189 255
+255 123 172
+255 213 74
+0 0 0
+238 238 238
+0 0 0
diff --git a/graphics/decorations/decor_colorful_plant.png b/graphics/decorations/decor_colorful_plant.png
new file mode 100644
index 000000000..cc0efecc7
--- /dev/null
+++ b/graphics/decorations/decor_colorful_plant.png
Binary files differ
diff --git a/graphics/decorations/decor_comfort_desk.pal b/graphics/decorations/decor_comfort_desk.pal
new file mode 100644
index 000000000..f686f4b5c
--- /dev/null
+++ b/graphics/decorations/decor_comfort_desk.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+180 222 139
+139 189 139
+90 139 90
+41 90 41
+115 164 115
+0 0 0
+164 131 65
+115 82 57
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_comfort_desk.png b/graphics/decorations/decor_comfort_desk.png
new file mode 100644
index 000000000..e7a72ff08
--- /dev/null
+++ b/graphics/decorations/decor_comfort_desk.png
Binary files differ
diff --git a/graphics/decorations/decor_fire_blast_mat.pal b/graphics/decorations/decor_fire_blast_mat.pal
new file mode 100644
index 000000000..ea2301df2
--- /dev/null
+++ b/graphics/decorations/decor_fire_blast_mat.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+255 180 82
+238 148 41
+213 98 24
+139 65 41
+0 0 0
+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/graphics/decorations/decor_fire_blast_mat.png b/graphics/decorations/decor_fire_blast_mat.png
new file mode 100644
index 000000000..510675ee6
--- /dev/null
+++ b/graphics/decorations/decor_fire_blast_mat.png
Binary files differ
diff --git a/graphics/decorations/decor_fissure_mat.pal b/graphics/decorations/decor_fissure_mat.pal
new file mode 100644
index 000000000..d2a4efb6d
--- /dev/null
+++ b/graphics/decorations/decor_fissure_mat.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+205 189 131
+189 172 106
+156 139 74
+123 106 41
+98 74 32
+0 0 0
+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/graphics/decorations/decor_fissure_mat.png b/graphics/decorations/decor_fissure_mat.png
new file mode 100644
index 000000000..6de66ef9d
--- /dev/null
+++ b/graphics/decorations/decor_fissure_mat.png
Binary files differ
diff --git a/graphics/decorations/decor_glass_ornament.pal b/graphics/decorations/decor_glass_ornament.pal
new file mode 100644
index 000000000..1027a9501
--- /dev/null
+++ b/graphics/decorations/decor_glass_ornament.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+0 0 0
+189 230 255
+156 197 255
+115 164 238
+82 139 189
+57 98 131
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+238 246 246
+0 0 0
diff --git a/graphics/decorations/decor_glass_ornament.png b/graphics/decorations/decor_glass_ornament.png
new file mode 100644
index 000000000..fcc895eb9
--- /dev/null
+++ b/graphics/decorations/decor_glass_ornament.png
Binary files differ
diff --git a/graphics/decorations/decor_gorgeous_plant.pal b/graphics/decorations/decor_gorgeous_plant.pal
new file mode 100644
index 000000000..782b82eef
--- /dev/null
+++ b/graphics/decorations/decor_gorgeous_plant.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+180 222 139
+139 180 139
+90 139 106
+49 82 41
+0 0 0
+148 115 82
+115 82 24
+0 0 0
+230 230 230
+164 164 164
+106 106 106
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_gorgeous_plant.png b/graphics/decorations/decor_gorgeous_plant.png
new file mode 100644
index 000000000..dc8639c65
--- /dev/null
+++ b/graphics/decorations/decor_gorgeous_plant.png
Binary files differ
diff --git a/graphics/decorations/decor_hard_desk.pal b/graphics/decorations/decor_hard_desk.pal
new file mode 100644
index 000000000..7aa8154ab
--- /dev/null
+++ b/graphics/decorations/decor_hard_desk.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+197 197 197
+156 156 156
+115 115 115
+98 98 98
+74 74 74
+139 139 139
+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/graphics/decorations/decor_hard_desk.png b/graphics/decorations/decor_hard_desk.png
new file mode 100644
index 000000000..aa0c7feea
--- /dev/null
+++ b/graphics/decorations/decor_hard_desk.png
Binary files differ
diff --git a/graphics/decorations/decor_heavy_desk.pal b/graphics/decorations/decor_heavy_desk.pal
new file mode 100644
index 000000000..c0ec71f09
--- /dev/null
+++ b/graphics/decorations/decor_heavy_desk.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+180 180 197
+148 148 156
+90 90 90
+255 180 82
+230 139 49
+197 90 8
+90 41 8
+0 0 0
+123 123 123
+65 65 65
+106 106 115
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_heavy_desk.png b/graphics/decorations/decor_heavy_desk.png
new file mode 100644
index 000000000..141bcd831
--- /dev/null
+++ b/graphics/decorations/decor_heavy_desk.png
Binary files differ
diff --git a/graphics/decorations/decor_lapras_doll.pal b/graphics/decorations/decor_lapras_doll.pal
new file mode 100644
index 000000000..c7d2fe61a
--- /dev/null
+++ b/graphics/decorations/decor_lapras_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+189 230 255
+115 180 246
+74 139 189
+32 90 139
+0 0 0
+0 0 0
+246 197 131
+222 156 98
+197 156 123
+106 74 41
+0 0 0
+246 246 246
+0 0 0
diff --git a/graphics/decorations/decor_lapras_doll.png b/graphics/decorations/decor_lapras_doll.png
new file mode 100644
index 000000000..517553a4a
--- /dev/null
+++ b/graphics/decorations/decor_lapras_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_powder_snow_mat.pal b/graphics/decorations/decor_powder_snow_mat.pal
new file mode 100644
index 000000000..9f365a3da
--- /dev/null
+++ b/graphics/decorations/decor_powder_snow_mat.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+238 238 246
+180 205 255
+131 164 205
+197 222 255
+213 238 255
+98 131 172
+148 180 222
+49 82 123
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_powder_snow_mat.png b/graphics/decorations/decor_powder_snow_mat.png
new file mode 100644
index 000000000..82dbbfa66
--- /dev/null
+++ b/graphics/decorations/decor_powder_snow_mat.png
Binary files differ
diff --git a/graphics/decorations/decor_pretty_desk.pal b/graphics/decorations/decor_pretty_desk.pal
new file mode 100644
index 000000000..7681a17cc
--- /dev/null
+++ b/graphics/decorations/decor_pretty_desk.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+189 222 255
+156 197 255
+0 0 0
+131 164 246
+49 82 123
+0 0 0
+0 0 0
+0 0 0
+180 180 180
+131 131 131
+90 90 90
+246 246 246
+0 0 0
diff --git a/graphics/decorations/decor_pretty_desk.png b/graphics/decorations/decor_pretty_desk.png
new file mode 100644
index 000000000..5be05ebcb
--- /dev/null
+++ b/graphics/decorations/decor_pretty_desk.png
Binary files differ
diff --git a/graphics/decorations/decor_pretty_flowers.pal b/graphics/decorations/decor_pretty_flowers.pal
new file mode 100644
index 000000000..c3b0ffce9
--- /dev/null
+++ b/graphics/decorations/decor_pretty_flowers.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+0 0 0
+205 180 74
+156 139 32
+90 74 49
+123 106 41
+115 180 98
+74 123 57
+41 82 32
+255 205 180
+123 74 49
+238 156 139
+246 246 246
+222 197 197
diff --git a/graphics/decorations/decor_pretty_flowers.png b/graphics/decorations/decor_pretty_flowers.png
new file mode 100644
index 000000000..b9fc0f5de
--- /dev/null
+++ b/graphics/decorations/decor_pretty_flowers.png
Binary files differ
diff --git a/graphics/decorations/decor_ragged_desk.pal b/graphics/decorations/decor_ragged_desk.pal
new file mode 100644
index 000000000..bac2a7372
--- /dev/null
+++ b/graphics/decorations/decor_ragged_desk.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 205 98
+49 49 49
+238 222 172
+213 197 139
+180 164 106
+148 131 74
+123 98 49
+82 65 32
+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/graphics/decorations/decor_ragged_desk.png b/graphics/decorations/decor_ragged_desk.png
new file mode 100644
index 000000000..953c1862f
--- /dev/null
+++ b/graphics/decorations/decor_ragged_desk.png
Binary files differ
diff --git a/graphics/decorations/decor_red_brick.pal b/graphics/decorations/decor_red_brick.pal
new file mode 100644
index 000000000..f9d647dda
--- /dev/null
+++ b/graphics/decorations/decor_red_brick.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+238 123 123
+189 74 65
+148 32 32
+123 16 16
+106 106 106
+74 74 74
+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/graphics/decorations/decor_red_brick.png b/graphics/decorations/decor_red_brick.png
new file mode 100644
index 000000000..3481044dd
--- /dev/null
+++ b/graphics/decorations/decor_red_brick.png
Binary files differ
diff --git a/graphics/decorations/decor_red_plant.pal b/graphics/decorations/decor_red_plant.pal
new file mode 100644
index 000000000..c3021eee5
--- /dev/null
+++ b/graphics/decorations/decor_red_plant.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+222 115 123
+189 74 82
+139 32 32
+82 32 16
+0 0 0
+115 164 106
+65 123 57
+24 82 41
+0 0 0
+205 172 98
+156 123 82
+106 82 57
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_red_plant.png b/graphics/decorations/decor_red_plant.png
new file mode 100644
index 000000000..c12e656f7
--- /dev/null
+++ b/graphics/decorations/decor_red_plant.png
Binary files differ
diff --git a/graphics/decorations/decor_red_tent.pal b/graphics/decorations/decor_red_tent.pal
new file mode 100644
index 000000000..61951623b
--- /dev/null
+++ b/graphics/decorations/decor_red_tent.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+246 123 123
+222 90 90
+180 49 49
+115 49 57
+0 0 0
+197 205 230
+164 164 164
+131 131 131
+90 82 74
+0 0 0
+0 0 0
+0 0 0
+246 246 246
+0 0 0
diff --git a/graphics/decorations/decor_red_tent.png b/graphics/decorations/decor_red_tent.png
new file mode 100644
index 000000000..22e435691
--- /dev/null
+++ b/graphics/decorations/decor_red_tent.png
Binary files differ
diff --git a/graphics/decorations/decor_regice_doll.pal b/graphics/decorations/decor_regice_doll.pal
new file mode 100644
index 000000000..39404f681
--- /dev/null
+++ b/graphics/decorations/decor_regice_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+238 238 255
+180 189 205
+139 148 172
+82 98 115
+115 123 139
+0 0 0
+0 0 0
+246 180 65
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_regice_doll.png b/graphics/decorations/decor_regice_doll.png
new file mode 100644
index 000000000..88a28df6d
--- /dev/null
+++ b/graphics/decorations/decor_regice_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_regirock_doll.pal b/graphics/decorations/decor_regirock_doll.pal
new file mode 100644
index 000000000..5c39edb2f
--- /dev/null
+++ b/graphics/decorations/decor_regirock_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+0 0 0
+180 164 98
+123 115 49
+82 74 49
+0 0 0
+205 115 82
+148 65 82
+0 0 0
+189 74 24
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_regirock_doll.png b/graphics/decorations/decor_regirock_doll.png
new file mode 100644
index 000000000..16372281c
--- /dev/null
+++ b/graphics/decorations/decor_regirock_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_registeel_doll.pal b/graphics/decorations/decor_registeel_doll.pal
new file mode 100644
index 000000000..328f35a4f
--- /dev/null
+++ b/graphics/decorations/decor_registeel_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+238 238 238
+197 197 197
+164 164 164
+123 123 131
+82 82 90
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+172 82 65
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_registeel_doll.png b/graphics/decorations/decor_registeel_doll.png
new file mode 100644
index 000000000..f06de37ab
--- /dev/null
+++ b/graphics/decorations/decor_registeel_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_rhydon_doll.pal b/graphics/decorations/decor_rhydon_doll.pal
new file mode 100644
index 000000000..432dae5a9
--- /dev/null
+++ b/graphics/decorations/decor_rhydon_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+222 222 222
+164 164 164
+189 189 189
+139 139 139
+106 106 106
+82 82 82
+230 197 115
+189 148 74
+131 98 74
+0 0 0
+0 0 0
+0 0 0
+246 246 246
+0 0 0
diff --git a/graphics/decorations/decor_rhydon_doll.png b/graphics/decorations/decor_rhydon_doll.png
new file mode 100644
index 000000000..ac4714c35
--- /dev/null
+++ b/graphics/decorations/decor_rhydon_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_sand_ornament.pal b/graphics/decorations/decor_sand_ornament.pal
new file mode 100644
index 000000000..e2fca6e31
--- /dev/null
+++ b/graphics/decorations/decor_sand_ornament.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+213 197 156
+189 164 90
+148 123 49
+90 74 24
+131 106 32
+172 148 74
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_sand_ornament.png b/graphics/decorations/decor_sand_ornament.png
new file mode 100644
index 000000000..9eafc8644
--- /dev/null
+++ b/graphics/decorations/decor_sand_ornament.png
Binary files differ
diff --git a/graphics/decorations/decor_slide.pal b/graphics/decorations/decor_slide.pal
new file mode 100644
index 000000000..395694fa3
--- /dev/null
+++ b/graphics/decorations/decor_slide.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+148 189 238
+106 148 205
+65 115 172
+180 222 255
+0 0 0
+0 0 0
+0 0 0
+213 213 213
+189 189 189
+156 156 156
+106 106 106
+0 0 0
+246 246 246
+0 0 0
diff --git a/graphics/decorations/decor_slide.png b/graphics/decorations/decor_slide.png
new file mode 100644
index 000000000..8a5dbada5
--- /dev/null
+++ b/graphics/decorations/decor_slide.png
Binary files differ
diff --git a/graphics/decorations/decor_snorlax_doll.pal b/graphics/decorations/decor_snorlax_doll.pal
new file mode 100644
index 000000000..21026b10d
--- /dev/null
+++ b/graphics/decorations/decor_snorlax_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+0 0 0
+131 139 164
+82 90 115
+0 0 0
+255 238 222
+255 197 148
+222 156 90
+139 90 49
+172 106 49
+230 172 123
+0 0 0
+238 238 238
+189 189 197
diff --git a/graphics/decorations/decor_snorlax_doll.png b/graphics/decorations/decor_snorlax_doll.png
new file mode 100644
index 000000000..6ff891c13
--- /dev/null
+++ b/graphics/decorations/decor_snorlax_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_solid_board.pal b/graphics/decorations/decor_solid_board.pal
new file mode 100644
index 000000000..9995483b4
--- /dev/null
+++ b/graphics/decorations/decor_solid_board.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+189 164 98
+156 131 65
+123 90 41
+106 90 74
+0 0 0
+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/graphics/decorations/decor_solid_board.png b/graphics/decorations/decor_solid_board.png
new file mode 100644
index 000000000..d0251d847
--- /dev/null
+++ b/graphics/decorations/decor_solid_board.png
Binary files differ
diff --git a/graphics/decorations/decor_spikes_mat.pal b/graphics/decorations/decor_spikes_mat.pal
new file mode 100644
index 000000000..ec37e1fe0
--- /dev/null
+++ b/graphics/decorations/decor_spikes_mat.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 213 98
+49 49 49
+0 0 0
+148 197 148
+106 172 115
+82 148 90
+139 156 98
+222 205 139
+180 164 98
+205 189 131
+49 98 57
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_spikes_mat.png b/graphics/decorations/decor_spikes_mat.png
new file mode 100644
index 000000000..67f023a0a
--- /dev/null
+++ b/graphics/decorations/decor_spikes_mat.png
Binary files differ
diff --git a/graphics/decorations/decor_stand.pal b/graphics/decorations/decor_stand.pal
new file mode 100644
index 000000000..a85f0b7b2
--- /dev/null
+++ b/graphics/decorations/decor_stand.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+255 180 156
+238 115 106
+197 65 65
+0 0 0
+0 0 0
+0 0 0
+197 197 197
+172 172 172
+131 131 131
+106 106 106
+0 0 0
+0 0 0
+246 246 246
+0 0 0
diff --git a/graphics/decorations/decor_stand.png b/graphics/decorations/decor_stand.png
new file mode 100644
index 000000000..86b1e4d1f
--- /dev/null
+++ b/graphics/decorations/decor_stand.png
Binary files differ
diff --git a/graphics/decorations/decor_surf_mat.pal b/graphics/decorations/decor_surf_mat.pal
new file mode 100644
index 000000000..17be591b7
--- /dev/null
+++ b/graphics/decorations/decor_surf_mat.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+205 238 255
+164 205 255
+148 180 255
+115 148 222
+57 90 156
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+246 246 255
+0 0 0
diff --git a/graphics/decorations/decor_surf_mat.png b/graphics/decorations/decor_surf_mat.png
new file mode 100644
index 000000000..d74cb97bb
--- /dev/null
+++ b/graphics/decorations/decor_surf_mat.png
Binary files differ
diff --git a/graphics/decorations/decor_thunder_mat.pal b/graphics/decorations/decor_thunder_mat.pal
new file mode 100644
index 000000000..fbe488860
--- /dev/null
+++ b/graphics/decorations/decor_thunder_mat.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+0 0 0
+189 222 255
+172 205 238
+139 172 205
+139 156 164
+255 230 123
+90 106 115
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+238 246 255
+0 0 0
diff --git a/graphics/decorations/decor_thunder_mat.png b/graphics/decorations/decor_thunder_mat.png
new file mode 100644
index 000000000..1c5c56e33
--- /dev/null
+++ b/graphics/decorations/decor_thunder_mat.png
Binary files differ
diff --git a/graphics/decorations/decor_tire.pal b/graphics/decorations/decor_tire.pal
new file mode 100644
index 000000000..18a3279fc
--- /dev/null
+++ b/graphics/decorations/decor_tire.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+0 0 0
+238 238 238
+189 189 189
+164 164 164
+131 131 131
+98 98 98
+74 74 74
+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/graphics/decorations/decor_tire.png b/graphics/decorations/decor_tire.png
new file mode 100644
index 000000000..e394ebbd4
--- /dev/null
+++ b/graphics/decorations/decor_tire.png
Binary files differ
diff --git a/graphics/decorations/decor_tropical_plant.pal b/graphics/decorations/decor_tropical_plant.pal
new file mode 100644
index 000000000..4057e7cb2
--- /dev/null
+++ b/graphics/decorations/decor_tropical_plant.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+197 172 82
+164 139 49
+131 106 16
+82 65 16
+0 0 0
+0 0 0
+148 222 90
+106 180 49
+74 131 24
+32 90 24
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/decorations/decor_tropical_plant.png b/graphics/decorations/decor_tropical_plant.png
new file mode 100644
index 000000000..12e43df47
--- /dev/null
+++ b/graphics/decorations/decor_tropical_plant.png
Binary files differ
diff --git a/graphics/decorations/decor_venusaur_doll.pal b/graphics/decorations/decor_venusaur_doll.pal
new file mode 100644
index 000000000..dcd11bea2
--- /dev/null
+++ b/graphics/decorations/decor_venusaur_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+197 255 222
+123 189 57
+82 148 24
+74 115 24
+41 82 32
+238 156 139
+213 98 90
+164 74 74
+115 57 65
+230 189 65
+131 98 24
+82 32 41
+246 246 246
diff --git a/graphics/decorations/decor_venusaur_doll.png b/graphics/decorations/decor_venusaur_doll.png
new file mode 100644
index 000000000..57fbdd93a
--- /dev/null
+++ b/graphics/decorations/decor_venusaur_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_wailmer_doll.pal b/graphics/decorations/decor_wailmer_doll.pal
new file mode 100644
index 000000000..99347748e
--- /dev/null
+++ b/graphics/decorations/decor_wailmer_doll.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+0 0 0
+0 0 0
+106 148 172
+74 115 148
+57 98 123
+57 65 106
+230 180 106
+205 148 82
+180 139 57
+115 74 41
+0 0 0
+213 213 213
+246 246 246
+164 164 164
diff --git a/graphics/decorations/decor_wailmer_doll.png b/graphics/decorations/decor_wailmer_doll.png
new file mode 100644
index 000000000..ceedfa6fb
--- /dev/null
+++ b/graphics/decorations/decor_wailmer_doll.png
Binary files differ
diff --git a/graphics/decorations/decor_yellow_brick.pal b/graphics/decorations/decor_yellow_brick.pal
new file mode 100644
index 000000000..cfdd874ad
--- /dev/null
+++ b/graphics/decorations/decor_yellow_brick.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 197 98
+49 49 49
+255 230 106
+222 197 49
+180 156 8
+148 123 0
+106 106 106
+74 74 74
+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/graphics/decorations/decor_yellow_brick.png b/graphics/decorations/decor_yellow_brick.png
new file mode 100644
index 000000000..cb865760c
--- /dev/null
+++ b/graphics/decorations/decor_yellow_brick.png
Binary files differ
diff --git a/graphics/decorations/unk_85a6bb0.pal b/graphics/decorations/unk_85a6bb0.pal
new file mode 100644
index 000000000..4239a1f5e
--- /dev/null
+++ b/graphics/decorations/unk_85a6bb0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 205 164
+255 255 255
+98 98 98
+213 213 205
+230 230 230
+197 197 197
+0 0 0
+238 238 238
+197 197 197
+148 148 148
+255 0 0
+180 0 0
+255 197 197
+82 82 255
+49 49 180
+197 197 255
diff --git a/graphics/decorations/unk_85a7308.pal b/graphics/decorations/unk_85a7308.pal
new file mode 100644
index 000000000..e7717d74e
--- /dev/null
+++ b/graphics/decorations/unk_85a7308.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 213 180
+255 197 148
+222 148 115
+123 65 65
+57 74 123
+41 57 98
+24 41 82
+16 32 57
+222 230 238
+255 197 90
+189 156 90
+255 98 90
+197 65 65
+255 255 255
+0 0 0
diff --git a/graphics/decorations/unk_85a7328.pal b/graphics/decorations/unk_85a7328.pal
new file mode 100644
index 000000000..e106ce693
--- /dev/null
+++ b/graphics/decorations/unk_85a7328.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 222 205
+222 164 148
+205 131 115
+123 90 82
+98 98 115
+41 57 65
+164 106 82
+74 49 57
+205 205 222
+255 197 90
+189 156 90
+255 98 90
+197 65 65
+255 255 255
+0 0 0
diff --git a/graphics/intro/85F0CFC.pal b/graphics/intro/85F0CFC.pal
new file mode 100644
index 000000000..09a1ee728
--- /dev/null
+++ b/graphics/intro/85F0CFC.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+0 0 0
+74 82 82
+90 123 123
+205 205 197
+255 255 255
+82 131 246
+115 164 246
+139 197 246
+180 222 230
+197 246 230
+164 230 246
+131 164 255
+189 197 255
+156 197 255
+180 230 255
+189 197 255
+0 0 0
+255 255 255
+230 246 255
+205 238 255
+180 230 255
+164 222 255
+139 213 255
+115 205 255
+98 197 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 255 255
+230 246 255
+205 238 255
+180 230 255
+164 222 255
+139 213 255
+115 205 255
+98 197 255
+230 230 255
+246 255 255
+213 222 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/85F0D5C.pal b/graphics/intro/85F0D5C.pal
new file mode 100644
index 000000000..4ff388f48
--- /dev/null
+++ b/graphics/intro/85F0D5C.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+0 0 0
+74 82 82
+90 123 123
+205 205 197
+255 255 255
+255 98 82
+255 123 106
+255 148 139
+255 172 172
+255 197 205
+255 222 238
+156 180 172
+197 197 156
+172 189 164
+255 222 156
+222 172 106
+0 0 0
+255 255 255
+255 238 205
+255 222 156
+255 222 156
+255 213 131
+255 197 106
+255 172 98
+255 156 90
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 255 255
+255 238 205
+255 222 156
+255 222 156
+255 213 131
+255 197 106
+255 172 98
+255 156 90
+255 238 205
+246 255 255
+255 222 156
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/85F231C.pal b/graphics/intro/85F231C.pal
new file mode 100644
index 000000000..82855d938
--- /dev/null
+++ b/graphics/intro/85F231C.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+49 115 246
+57 74 123
+57 74 123
+57 74 123
+49 57 98
+49 49 82
+49 32 57
+49 24 41
+0 0 0
+0 0 0
+0 0 0
+57 74 123
+57 74 123
+246 246 123
+41 65 90
+0 0 0
+0 0 0
+0 0 0
+82 90 148
+148 131 164
+57 74 123
+131 106 156
+98 90 123
+156 164 197
+139 148 172
+90 131 139
+189 197 213
+90 115 164
+230 230 82
+131 131 164
+246 246 123
diff --git a/graphics/intro/intro.png b/graphics/intro/intro.png
new file mode 100644
index 000000000..e0f28c841
--- /dev/null
+++ b/graphics/intro/intro.png
Binary files differ
diff --git a/graphics/intro/intro1_bg0_map.bin b/graphics/intro/intro1_bg0_map.bin
new file mode 100644
index 000000000..8307cf656
--- /dev/null
+++ b/graphics/intro/intro1_bg0_map.bin
Binary files differ
diff --git a/graphics/intro/intro1_bg1_map.bin b/graphics/intro/intro1_bg1_map.bin
new file mode 100644
index 000000000..7d34e5bba
--- /dev/null
+++ b/graphics/intro/intro1_bg1_map.bin
Binary files differ
diff --git a/graphics/intro/intro1_bg2_map.bin b/graphics/intro/intro1_bg2_map.bin
new file mode 100644
index 000000000..7781e8b08
--- /dev/null
+++ b/graphics/intro/intro1_bg2_map.bin
Binary files differ
diff --git a/graphics/intro/intro1_bg3_map.bin b/graphics/intro/intro1_bg3_map.bin
new file mode 100644
index 000000000..1af02a025
--- /dev/null
+++ b/graphics/intro/intro1_bg3_map.bin
Binary files differ
diff --git a/graphics/intro/intro1_bgpal.pal b/graphics/intro/intro1_bgpal.pal
new file mode 100644
index 000000000..95145b854
--- /dev/null
+++ b/graphics/intro/intro1_bgpal.pal
@@ -0,0 +1,259 @@
+JASC-PAL
+0100
+256
+0 0 0
+24 90 0
+49 115 0
+65 139 0
+90 172 0
+164 172 255
+164 197 255
+139 213 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+148 205 98
+180 255 131
+164 238 98
+0 0 0
+24 90 0
+49 115 0
+65 139 0
+90 172 0
+164 172 255
+164 197 255
+139 213 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+148 205 98
+180 255 131
+164 238 98
+0 0 0
+24 82 0
+32 90 0
+41 98 0
+49 115 0
+57 123 0
+65 139 0
+74 148 0
+82 156 0
+90 172 0
+0 16 0
+8 41 0
+16 57 0
+123 197 16
+180 255 131
+164 238 98
+0 0 0
+24 82 0
+32 90 0
+41 98 0
+49 115 0
+57 123 0
+65 139 0
+74 148 0
+82 156 0
+90 172 0
+8 24 8
+8 41 0
+16 57 0
+148 205 98
+98 172 74
+238 255 238
+0 0 0
+24 90 0
+49 115 0
+65 139 0
+90 172 0
+164 172 255
+164 197 255
+139 213 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+148 205 98
+180 255 131
+164 238 98
+0 0 0
+255 255 255
+246 246 238
+238 246 230
+230 246 222
+205 238 222
+180 230 230
+172 213 238
+131 205 238
+180 180 156
+213 213 230
+205 197 213
+189 230 115
+156 213 98
+222 230 222
+115 172 98
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+156 246 0
+65 90 156
+49 115 255
+82 82 82
+98 98 98
+115 115 115
+131 131 131
+148 148 148
+164 164 164
+180 180 180
+197 197 197
+213 213 213
+230 230 230
+255 255 255
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+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/graphics/intro/intro1_drops.pal b/graphics/intro/intro1_drops.pal
new file mode 100644
index 000000000..1b8ce3d6e
--- /dev/null
+++ b/graphics/intro/intro1_drops.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+8 57 8
+32 74 32
+57 98 57
+90 123 90
+115 139 115
+139 164 139
+172 189 172
+197 205 197
+222 230 222
+255 255 255
diff --git a/graphics/intro/intro1_eon.png b/graphics/intro/intro1_eon.png
new file mode 100644
index 000000000..cf8eedc08
--- /dev/null
+++ b/graphics/intro/intro1_eon.png
Binary files differ
diff --git a/graphics/intro/intro1_flygon.pal b/graphics/intro/intro1_flygon.pal
new file mode 100644
index 000000000..dcfc242a5
--- /dev/null
+++ b/graphics/intro/intro1_flygon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+74 74 82
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+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/graphics/intro/intro1_flygon.png b/graphics/intro/intro1_flygon.png
new file mode 100644
index 000000000..080ab1a65
--- /dev/null
+++ b/graphics/intro/intro1_flygon.png
Binary files differ
diff --git a/graphics/intro/intro1_gflogo.pal b/graphics/intro/intro1_gflogo.pal
new file mode 100644
index 000000000..aef9152e4
--- /dev/null
+++ b/graphics/intro/intro1_gflogo.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+156 246 0
+65 90 156
+49 115 255
+82 82 82
+98 98 98
+115 115 115
+131 131 131
+148 148 148
+164 164 164
+180 180 180
+197 197 197
+213 213 213
+230 230 230
+255 255 255
+255 255 255
diff --git a/graphics/intro/intro1_sparkle.png b/graphics/intro/intro1_sparkle.png
new file mode 100644
index 000000000..f8db885ec
--- /dev/null
+++ b/graphics/intro/intro1_sparkle.png
Binary files differ
diff --git a/graphics/intro/intro2_bgclouds.pal b/graphics/intro/intro2_bgclouds.pal
new file mode 100644
index 000000000..6b312a16c
--- /dev/null
+++ b/graphics/intro/intro2_bgclouds.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+230 246 255
+205 238 255
+180 230 255
+164 222 255
+139 213 255
+115 205 255
+98 197 255
+230 230 255
+246 255 255
+213 222 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_bgclouds.png b/graphics/intro/intro2_bgclouds.png
new file mode 100644
index 000000000..7ba3d78f4
--- /dev/null
+++ b/graphics/intro/intro2_bgclouds.png
Binary files differ
diff --git a/graphics/intro/intro2_bgclouds2.png b/graphics/intro/intro2_bgclouds2.png
new file mode 100644
index 000000000..933332fdd
--- /dev/null
+++ b/graphics/intro/intro2_bgclouds2.png
Binary files differ
diff --git a/graphics/intro/intro2_bgclouds_afternoon.pal b/graphics/intro/intro2_bgclouds_afternoon.pal
new file mode 100644
index 000000000..6d5d9dbcd
--- /dev/null
+++ b/graphics/intro/intro2_bgclouds_afternoon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+255 238 205
+255 222 156
+255 222 156
+255 213 131
+255 197 106
+255 172 98
+255 156 90
+255 238 205
+246 255 255
+255 222 156
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_bgclouds_map.bin b/graphics/intro/intro2_bgclouds_map.bin
new file mode 100644
index 000000000..25b65f766
--- /dev/null
+++ b/graphics/intro/intro2_bgclouds_map.bin
Binary files differ
diff --git a/graphics/intro/intro2_bgnight.pal b/graphics/intro/intro2_bgnight.pal
new file mode 100644
index 000000000..765aad45a
--- /dev/null
+++ b/graphics/intro/intro2_bgnight.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+82 90 148
+148 131 164
+57 74 123
+131 106 156
+98 90 123
+156 164 197
+139 148 172
+90 131 139
+189 197 213
+90 115 164
+230 230 82
+131 131 164
+246 246 123
diff --git a/graphics/intro/intro2_bgnight.png b/graphics/intro/intro2_bgnight.png
new file mode 100644
index 000000000..cb95bb04f
--- /dev/null
+++ b/graphics/intro/intro2_bgnight.png
Binary files differ
diff --git a/graphics/intro/intro2_bgnight_map.bin b/graphics/intro/intro2_bgnight_map.bin
new file mode 100644
index 000000000..ef7c889ba
--- /dev/null
+++ b/graphics/intro/intro2_bgnight_map.bin
Binary files differ
diff --git a/graphics/intro/intro2_bgtrees.pal b/graphics/intro/intro2_bgtrees.pal
new file mode 100644
index 000000000..5c506481a
--- /dev/null
+++ b/graphics/intro/intro2_bgtrees.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+156 189 246
+172 205 246
+197 230 255
+213 246 255
+238 255 255
+156 180 172
+197 197 156
+172 189 164
+98 139 98
+98 156 57
+123 164 131
+156 213 82
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_bgtrees.png b/graphics/intro/intro2_bgtrees.png
new file mode 100644
index 000000000..e6d163579
--- /dev/null
+++ b/graphics/intro/intro2_bgtrees.png
Binary files differ
diff --git a/graphics/intro/intro2_bgtrees2.pal b/graphics/intro/intro2_bgtrees2.pal
new file mode 100644
index 000000000..5c506481a
--- /dev/null
+++ b/graphics/intro/intro2_bgtrees2.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+156 189 246
+172 205 246
+197 230 255
+213 246 255
+238 255 255
+156 180 172
+197 197 156
+172 189 164
+98 139 98
+98 156 57
+123 164 131
+156 213 82
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_bgtrees2_afternoon.pal b/graphics/intro/intro2_bgtrees2_afternoon.pal
new file mode 100644
index 000000000..9736a6e95
--- /dev/null
+++ b/graphics/intro/intro2_bgtrees2_afternoon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 106 57
+255 131 82
+255 197 106
+255 213 131
+255 222 156
+156 180 172
+197 197 156
+172 189 164
+115 139 57
+98 156 57
+131 172 57
+189 197 49
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_bgtrees_map.bin b/graphics/intro/intro2_bgtrees_map.bin
new file mode 100644
index 000000000..d1c23cc36
--- /dev/null
+++ b/graphics/intro/intro2_bgtrees_map.bin
Binary files differ
diff --git a/graphics/intro/intro2_bgtreessmall.png b/graphics/intro/intro2_bgtreessmall.png
new file mode 100644
index 000000000..33a7213b8
--- /dev/null
+++ b/graphics/intro/intro2_bgtreessmall.png
Binary files differ
diff --git a/graphics/intro/intro2_bicycle.png b/graphics/intro/intro2_bicycle.png
new file mode 100644
index 000000000..ff63f93a4
--- /dev/null
+++ b/graphics/intro/intro2_bicycle.png
Binary files differ
diff --git a/graphics/intro/intro2_brendan.pal b/graphics/intro/intro2_brendan.pal
new file mode 100644
index 000000000..a948fb920
--- /dev/null
+++ b/graphics/intro/intro2_brendan.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 189 172
+82 74 74
+139 139 123
+197 189 222
+255 255 255
+230 49 0
+246 148 0
+0 0 0
+255 213 148
+222 164 139
+0 0 0
+246 57 131
+189 57 115
+131 255 131
+82 197 90
+131 164 65
diff --git a/graphics/intro/intro2_brendan.png b/graphics/intro/intro2_brendan.png
new file mode 100644
index 000000000..045953002
--- /dev/null
+++ b/graphics/intro/intro2_brendan.png
Binary files differ
diff --git a/graphics/intro/intro2_brendan_noturn.pal b/graphics/intro/intro2_brendan_noturn.pal
new file mode 100644
index 000000000..49a329307
--- /dev/null
+++ b/graphics/intro/intro2_brendan_noturn.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 189 172
+82 74 74
+139 139 123
+197 189 222
+255 255 255
+230 49 0
+246 148 0
+98 98 131
+255 213 148
+222 164 139
+180 172 115
+246 90 90
+189 57 115
+131 255 65
+82 197 90
+131 164 65
diff --git a/graphics/intro/intro2_brendan_noturn.png b/graphics/intro/intro2_brendan_noturn.png
new file mode 100644
index 000000000..7c7a9e494
--- /dev/null
+++ b/graphics/intro/intro2_brendan_noturn.png
Binary files differ
diff --git a/graphics/intro/intro2_bubbles.pal b/graphics/intro/intro2_bubbles.pal
new file mode 100644
index 000000000..85c483666
--- /dev/null
+++ b/graphics/intro/intro2_bubbles.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 148 98
+0 41 82
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+139 172 255
+106 148 222
+82 123 189
+49 98 156
+24 74 123
+0 49 98
+180 0 0
diff --git a/graphics/intro/intro2_bubbles.png b/graphics/intro/intro2_bubbles.png
new file mode 100644
index 000000000..d1f18701c
--- /dev/null
+++ b/graphics/intro/intro2_bubbles.png
Binary files differ
diff --git a/graphics/intro/intro2_flygon.pal b/graphics/intro/intro2_flygon.pal
new file mode 100644
index 000000000..09607ac17
--- /dev/null
+++ b/graphics/intro/intro2_flygon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 189 172
+82 74 74
+139 139 123
+197 189 222
+255 255 255
+164 98 106
+238 57 115
+255 106 139
+255 197 180
+246 255 139
+213 238 106
+172 213 65
+164 222 139
+123 197 115
+90 148 82
+0 0 0
diff --git a/graphics/intro/intro2_flygon.png b/graphics/intro/intro2_flygon.png
new file mode 100644
index 000000000..ab0b8d728
--- /dev/null
+++ b/graphics/intro/intro2_flygon.png
Binary files differ
diff --git a/graphics/intro/intro2_grass.pal b/graphics/intro/intro2_grass.pal
new file mode 100644
index 000000000..389977abf
--- /dev/null
+++ b/graphics/intro/intro2_grass.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+74 82 82
+90 123 123
+205 205 197
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+106 164 98
+115 197 98
+164 230 90
diff --git a/graphics/intro/intro2_grass.png b/graphics/intro/intro2_grass.png
new file mode 100644
index 000000000..e573ca45e
--- /dev/null
+++ b/graphics/intro/intro2_grass.png
Binary files differ
diff --git a/graphics/intro/intro2_grass_afternoon.pal b/graphics/intro/intro2_grass_afternoon.pal
new file mode 100644
index 000000000..20b1e45f5
--- /dev/null
+++ b/graphics/intro/intro2_grass_afternoon.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+74 82 82
+90 123 123
+205 205 197
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+106 164 98
+106 197 98
+164 197 131
diff --git a/graphics/intro/intro2_grass_map.bin b/graphics/intro/intro2_grass_map.bin
new file mode 100644
index 000000000..2a6f1a72b
--- /dev/null
+++ b/graphics/intro/intro2_grass_map.bin
Binary files differ
diff --git a/graphics/intro/intro2_grass_night.pal b/graphics/intro/intro2_grass_night.pal
new file mode 100644
index 000000000..e44980f78
--- /dev/null
+++ b/graphics/intro/intro2_grass_night.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+74 82 82
+90 123 123
+205 205 197
+255 255 255
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+106 164 98
+106 197 98
+131 197 164
diff --git a/graphics/intro/intro2_latias.pal b/graphics/intro/intro2_latias.pal
new file mode 100644
index 000000000..0af96be29
--- /dev/null
+++ b/graphics/intro/intro2_latias.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+123 106 106
+115 131 164
+222 213 238
+255 255 255
+213 65 57
+238 106 32
+172 74 65
+255 90 65
+180 172 197
+189 139 57
+189 98 41
+90 115 180
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_latias.png b/graphics/intro/intro2_latias.png
new file mode 100644
index 000000000..5623895ce
--- /dev/null
+++ b/graphics/intro/intro2_latias.png
Binary files differ
diff --git a/graphics/intro/intro2_latios.pal b/graphics/intro/intro2_latios.pal
new file mode 100644
index 000000000..bb51c0a7d
--- /dev/null
+++ b/graphics/intro/intro2_latios.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+123 106 106
+115 131 164
+222 213 238
+255 255 255
+106 131 230
+139 197 255
+90 115 180
+139 156 230
+180 172 197
+238 82 32
+238 41 24
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro2_latios.png b/graphics/intro/intro2_latios.png
new file mode 100644
index 000000000..439e26fe6
--- /dev/null
+++ b/graphics/intro/intro2_latios.png
Binary files differ
diff --git a/graphics/intro/intro2_manectric.pal b/graphics/intro/intro2_manectric.pal
new file mode 100644
index 000000000..c6bf97aa3
--- /dev/null
+++ b/graphics/intro/intro2_manectric.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 189 172
+82 74 74
+139 139 123
+197 189 222
+255 255 255
+230 49 0
+246 148 0
+0 0 0
+255 255 180
+246 246 90
+205 213 49
+148 123 8
+131 164 255
+106 106 255
+41 74 213
+0 0 0
diff --git a/graphics/intro/intro2_manectric.png b/graphics/intro/intro2_manectric.png
new file mode 100644
index 000000000..bcb054d7b
--- /dev/null
+++ b/graphics/intro/intro2_manectric.png
Binary files differ
diff --git a/graphics/intro/intro2_may.pal b/graphics/intro/intro2_may.pal
new file mode 100644
index 000000000..1ff2ecd1d
--- /dev/null
+++ b/graphics/intro/intro2_may.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 189 172
+82 74 74
+139 139 123
+197 189 222
+255 255 255
+82 197 0
+148 246 98
+98 98 131
+255 213 148
+222 164 139
+180 172 115
+246 90 90
+189 57 115
+131 255 65
+82 197 90
+131 164 65
diff --git a/graphics/intro/intro2_may.png b/graphics/intro/intro2_may.png
new file mode 100644
index 000000000..238924d88
--- /dev/null
+++ b/graphics/intro/intro2_may.png
Binary files differ
diff --git a/graphics/intro/intro2_may_noturn.png b/graphics/intro/intro2_may_noturn.png
new file mode 100644
index 000000000..e88300610
--- /dev/null
+++ b/graphics/intro/intro2_may_noturn.png
Binary files differ
diff --git a/graphics/intro/intro2_night.png b/graphics/intro/intro2_night.png
new file mode 100644
index 000000000..9a10567bb
--- /dev/null
+++ b/graphics/intro/intro2_night.png
Binary files differ
diff --git a/graphics/intro/intro2_torchic.pal b/graphics/intro/intro2_torchic.pal
new file mode 100644
index 000000000..860b76b60
--- /dev/null
+++ b/graphics/intro/intro2_torchic.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 189 172
+82 74 74
+139 139 123
+197 189 222
+255 255 255
+131 98 41
+230 98 32
+238 148 74
+246 197 115
+255 255 148
+255 213 0
+205 189 49
+255 246 205
+255 213 148
+222 180 115
+0 0 0
diff --git a/graphics/intro/intro2_torchic.png b/graphics/intro/intro2_torchic.png
new file mode 100644
index 000000000..1bd1b1184
--- /dev/null
+++ b/graphics/intro/intro2_torchic.png
Binary files differ
diff --git a/graphics/intro/intro2_volbeat.pal b/graphics/intro/intro2_volbeat.pal
new file mode 100644
index 000000000..8d2464800
--- /dev/null
+++ b/graphics/intro/intro2_volbeat.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 189 172
+82 74 74
+139 139 123
+197 189 222
+255 255 255
+131 98 41
+230 98 32
+238 148 74
+246 197 115
+255 255 148
+255 213 0
+205 189 49
+238 156 255
+197 115 230
+156 82 213
+0 0 0
diff --git a/graphics/intro/intro2_volbeat.png b/graphics/intro/intro2_volbeat.png
new file mode 100644
index 000000000..8b6c61eb0
--- /dev/null
+++ b/graphics/intro/intro2_volbeat.png
Binary files differ
diff --git a/graphics/intro/intro3_lightning.pal b/graphics/intro/intro3_lightning.pal
new file mode 100644
index 000000000..16aae4be3
--- /dev/null
+++ b/graphics/intro/intro3_lightning.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+74 189 172
+255 255 148
+255 213 0
+205 189 49
+255 255 255
+82 74 74
+115 106 82
+148 139 98
+180 180 115
+213 213 131
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/intro/intro3_lightning.png b/graphics/intro/intro3_lightning.png
new file mode 100644
index 000000000..e858926ec
--- /dev/null
+++ b/graphics/intro/intro3_lightning.png
Binary files differ
diff --git a/graphics/intro/intro3_misc.png b/graphics/intro/intro3_misc.png
new file mode 100644
index 000000000..26be33c01
--- /dev/null
+++ b/graphics/intro/intro3_misc.png
Binary files differ
diff --git a/graphics/intro/intro3_misc1.pal b/graphics/intro/intro3_misc1.pal
new file mode 100644
index 000000000..a34bebc24
--- /dev/null
+++ b/graphics/intro/intro3_misc1.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 255
+0 0 0
+255 255 0
+255 213 0
+255 180 0
+255 148 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 222 131
+255 230 172
+255 238 213
+255 255 255
diff --git a/graphics/intro/intro3_misc2.pal b/graphics/intro/intro3_misc2.pal
new file mode 100644
index 000000000..3c985dc07
--- /dev/null
+++ b/graphics/intro/intro3_misc2.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 255
+0 0 0
+98 49 90
+115 106 164
+139 164 238
+106 172 255
+131 197 255
+156 222 255
+255 222 57
+255 172 57
+230 106 57
+49 49 49
+98 98 98
+148 148 148
+197 197 197
+255 255 255
diff --git a/graphics/intro/intro3_pokeball.pal b/graphics/intro/intro3_pokeball.pal
new file mode 100644
index 000000000..d520a5e82
--- /dev/null
+++ b/graphics/intro/intro3_pokeball.pal
@@ -0,0 +1,259 @@
+JASC-PAL
+0100
+256
+255 255 255
+0 0 0
+49 41 24
+106 90 57
+164 139 90
+222 98 57
+131 131 189
+255 255 255
+74 32 16
+148 65 32
+41 41 57
+82 82 123
+82 82 82
+164 164 164
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+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/graphics/intro/intro3_pokeball.png b/graphics/intro/intro3_pokeball.png
new file mode 100644
index 000000000..4af0187f8
--- /dev/null
+++ b/graphics/intro/intro3_pokeball.png
Binary files differ
diff --git a/graphics/intro/intro3_pokeball_map.bin b/graphics/intro/intro3_pokeball_map.bin
new file mode 100644
index 000000000..2f968aa20
--- /dev/null
+++ b/graphics/intro/intro3_pokeball_map.bin
Binary files differ
diff --git a/graphics/intro/intro3_streaks.pal b/graphics/intro/intro3_streaks.pal
new file mode 100644
index 000000000..21ae1e434
--- /dev/null
+++ b/graphics/intro/intro3_streaks.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 255
+0 0 0
+255 230 74
+255 230 98
+255 238 123
+255 238 148
+255 246 172
+255 255 197
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+255 255 255
diff --git a/graphics/intro/intro3_streaks.png b/graphics/intro/intro3_streaks.png
new file mode 100644
index 000000000..a19fa39c4
--- /dev/null
+++ b/graphics/intro/intro3_streaks.png
Binary files differ
diff --git a/graphics/intro/intro3_streaks_map.bin b/graphics/intro/intro3_streaks_map.bin
new file mode 100644
index 000000000..2d1b69924
--- /dev/null
+++ b/graphics/intro/intro3_streaks_map.bin
Binary files differ
diff --git a/graphics/intro/introgfx.png b/graphics/intro/introgfx.png
new file mode 100644
index 000000000..041901463
--- /dev/null
+++ b/graphics/intro/introgfx.png
Binary files differ
diff --git a/graphics/link/minigame_digits.pal b/graphics/link/minigame_digits.pal
new file mode 100644
index 000000000..e27640830
--- /dev/null
+++ b/graphics/link/minigame_digits.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+205 205 205
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+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/graphics/link/minigame_digits.png b/graphics/link/minigame_digits.png
new file mode 100644
index 000000000..172994249
--- /dev/null
+++ b/graphics/link/minigame_digits.png
Binary files differ
diff --git a/graphics/link/minigame_digits2.png b/graphics/link/minigame_digits2.png
new file mode 100644
index 000000000..285aa4aed
--- /dev/null
+++ b/graphics/link/minigame_digits2.png
Binary files differ
diff --git a/graphics/misc/clock_small.pal b/graphics/misc/clock_small.pal
new file mode 100755
index 000000000..3398fcbe3
--- /dev/null
+++ b/graphics/misc/clock_small.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+98 139 90
+0 0 0
+57 57 57
+123 123 123
+189 189 189
+255 255 255
+255 65 41
+0 0 0
+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/graphics/misc/clock_small.png b/graphics/misc/clock_small.png
new file mode 100755
index 000000000..6b9f6c1f7
--- /dev/null
+++ b/graphics/misc/clock_small.png
Binary files differ
diff --git a/graphics/misc/decoration_unk_85a7358.png b/graphics/misc/decoration_unk_85a7358.png
new file mode 100644
index 000000000..2dc8ed604
--- /dev/null
+++ b/graphics/misc/decoration_unk_85a7358.png
Binary files differ
diff --git a/graphics/misc/diploma.png b/graphics/misc/diploma.png
new file mode 100755
index 000000000..d9607dce6
--- /dev/null
+++ b/graphics/misc/diploma.png
Binary files differ
diff --git a/graphics/misc/diploma_hoenn.pal b/graphics/misc/diploma_hoenn.pal
new file mode 100755
index 000000000..2890eb24a
--- /dev/null
+++ b/graphics/misc/diploma_hoenn.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+24 41 82
+255 255 222
+246 238 230
+205 230 139
+172 222 49
+238 238 222
+222 230 230
+255 222 197
+222 222 189
+246 246 180
+238 230 180
+213 213 156
+230 230 139
+255 255 123
+238 238 106
+255 205 172
diff --git a/graphics/misc/diploma_map.bin b/graphics/misc/diploma_map.bin
new file mode 100755
index 000000000..e9a47fa44
--- /dev/null
+++ b/graphics/misc/diploma_map.bin
Binary files differ
diff --git a/graphics/misc/diploma_national.pal b/graphics/misc/diploma_national.pal
new file mode 100755
index 000000000..03c37bf22
--- /dev/null
+++ b/graphics/misc/diploma_national.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+24 41 82
+255 255 222
+255 255 189
+230 238 90
+213 222 0
+238 238 222
+222 230 230
+255 222 197
+222 222 189
+246 246 180
+238 230 180
+213 213 156
+230 230 139
+255 255 123
+238 238 106
+255 205 172
diff --git a/graphics/misc/emotion_exclamation.png b/graphics/misc/emotion_exclamation.png
new file mode 100644
index 000000000..595566d2f
--- /dev/null
+++ b/graphics/misc/emotion_exclamation.png
Binary files differ
diff --git a/graphics/misc/emotion_heart.png b/graphics/misc/emotion_heart.png
new file mode 100644
index 000000000..9995984b4
--- /dev/null
+++ b/graphics/misc/emotion_heart.png
Binary files differ
diff --git a/graphics/misc/emotion_question.png b/graphics/misc/emotion_question.png
new file mode 100644
index 000000000..7376fd058
--- /dev/null
+++ b/graphics/misc/emotion_question.png
Binary files differ
diff --git a/graphics/misc/main_menu_bg.pal b/graphics/misc/main_menu_bg.pal
new file mode 100644
index 000000000..7aca54c52
--- /dev/null
+++ b/graphics/misc/main_menu_bg.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+139 148 255
+255 255 255
+49 57 82
+90 98 115
+8 8 16
+148 156 172
+205 222 238
+180 180 189
+189 205 222
+32 32 49
+123 131 139
+49 82 123
+41 123 197
+57 139 213
+90 164 230
+139 197 246
diff --git a/graphics/misc/main_menu_text.pal b/graphics/misc/main_menu_text.pal
new file mode 100644
index 000000000..25a3ac1d2
--- /dev/null
+++ b/graphics/misc/main_menu_text.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 255
+255 255 255
+98 98 98
+213 213 205
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/misc/reset_rtc_screen_arrow.pal b/graphics/misc/reset_rtc_screen_arrow.pal
new file mode 100644
index 000000000..b2e8a5f5f
--- /dev/null
+++ b/graphics/misc/reset_rtc_screen_arrow.pal
@@ -0,0 +1,7 @@
+JASC-PAL
+0100
+4
+0 0 0
+255 0 0
+74 74 74
+0 0 0
diff --git a/graphics/misc/reset_rtc_screen_downarrow.png b/graphics/misc/reset_rtc_screen_downarrow.png
new file mode 100644
index 000000000..8f7b3480d
--- /dev/null
+++ b/graphics/misc/reset_rtc_screen_downarrow.png
Binary files differ
diff --git a/graphics/misc/reset_rtc_screen_rightarrow.png b/graphics/misc/reset_rtc_screen_rightarrow.png
new file mode 100644
index 000000000..785b3c1db
--- /dev/null
+++ b/graphics/misc/reset_rtc_screen_rightarrow.png
Binary files differ
diff --git a/graphics/title_screen/emerald_version.pal b/graphics/title_screen/emerald_version.pal
new file mode 100644
index 000000000..c5ed9a582
--- /dev/null
+++ b/graphics/title_screen/emerald_version.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 74 238
+156 156 156
+90 90 90
+222 222 222
+24 16 24
+74 74 74
+238 238 238
+41 41 41
+172 172 172
+106 106 106
+189 189 189
+139 139 139
+205 205 205
+123 123 123
+65 57 57
+255 255 255
diff --git a/graphics/title_screen/emerald_version.png b/graphics/title_screen/emerald_version.png
new file mode 100644
index 000000000..2e8b32da9
--- /dev/null
+++ b/graphics/title_screen/emerald_version.png
Binary files differ
diff --git a/graphics/title_screen/logo_shine.png b/graphics/title_screen/logo_shine.png
new file mode 100644
index 000000000..4e17d2877
--- /dev/null
+++ b/graphics/title_screen/logo_shine.png
Binary files differ
diff --git a/graphics/title_screen/press_start.pal b/graphics/title_screen/press_start.pal
new file mode 100644
index 000000000..561ab8f8f
--- /dev/null
+++ b/graphics/title_screen/press_start.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 156 98
+0 0 0
+148 156 164
+180 189 189
+222 222 238
+255 255 255
+255 0 0
+255 0 0
+255 0 0
+255 0 0
+255 0 0
+255 0 0
+255 0 0
+255 0 0
+255 0 0
+255 0 0
diff --git a/graphics/title_screen/press_start.png b/graphics/title_screen/press_start.png
new file mode 100644
index 000000000..63a5c23d0
--- /dev/null
+++ b/graphics/title_screen/press_start.png
Binary files differ
diff --git a/graphics/title_screen/rayquaza.bin b/graphics/title_screen/rayquaza.bin
new file mode 100644
index 000000000..b112237a3
--- /dev/null
+++ b/graphics/title_screen/rayquaza.bin
Binary files differ
diff --git a/graphics/title_screen/unk_853EF78.pal b/graphics/title_screen/unk_853EF78.pal
new file mode 100644
index 000000000..0cc3bebc1
--- /dev/null
+++ b/graphics/title_screen/unk_853EF78.pal
@@ -0,0 +1,115 @@
+JASC-PAL
+0100
+112
+0 0 0
+0 0 0
+16 16 16
+32 32 32
+49 49 49
+65 65 65
+90 90 90
+106 106 106
+123 123 123
+139 139 139
+156 156 156
+180 180 180
+197 197 197
+213 213 213
+255 255 255
+255 0 0
+0 0 0
+98 148 16
+98 156 16
+106 164 24
+115 172 32
+123 180 41
+131 197 49
+139 205 57
+148 213 65
+156 222 74
+180 106 172
+0 0 0
+0 0 0
+148 115 115
+123 131 65
+197 197 197
+123 131 65
+255 255 255
+255 255 255
+255 255 255
+0 32 0
+8 41 8
+24 57 16
+41 74 32
+49 90 41
+65 106 49
+82 123 65
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+189 106 8
+0 139 74
+255 255 255
+8 106 49
+8 115 57
+16 123 65
+16 131 74
+24 148 82
+24 156 90
+32 164 98
+41 180 115
+8 65 57
+205 255 197
+255 255 255
+255 0 0
+0 0 0
+123 131 65
+255 255 255
+255 255 255
+255 255 255
+0 0 0
+8 8 8
+24 24 24
+41 41 41
+49 49 49
+65 65 65
+82 82 82
+0 123 230
+255 255 255
+255 255 255
+255 0 0
+255 189 0
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+0 0 0
+41 74 32
+65 106 49
+90 139 74
+115 180 98
+139 213 123
+172 255 148
+0 123 230
+255 255 255
+255 255 255
+255 0 0
+255 189 0
+189 106 8
+0 139 74
+255 255 255
+8 106 49
+8 115 57
+16 123 65
+16 131 74
+24 148 82
+24 156 90
+32 164 98
+41 180 115
+8 65 57
+180 230 172
+255 255 255
+255 0 0
+255 189 0
diff --git a/graphics/unknown/unknown_593C80.png b/graphics/unknown/unknown_593C80.png
new file mode 100644
index 000000000..c4a27b929
--- /dev/null
+++ b/graphics/unknown/unknown_593C80.png
Binary files differ
diff --git a/graphics/unknown/unknown_593FFC.bin b/graphics/unknown/unknown_593FFC.bin
new file mode 100644
index 000000000..dc2990b0a
--- /dev/null
+++ b/graphics/unknown/unknown_593FFC.bin
Binary files differ
diff --git a/include/battle.h b/include/battle.h
index 4093f55d1..3328c691f 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -1,8 +1,36 @@
#ifndef GUARD_BATTLE_H
#define GUARD_BATTLE_H
+// should they be included here or included individually by every file?
+#include "battle_util.h"
+#include "battle_script_commands.h"
+#include "battle_2.h"
+#include "battle_ai_switch_items.h"
+
+/*
+ Banks are a name given to what could be called a 'battlerId' or 'monControllerId'.
+ Each bank has a value consisting of two bits.
+ 0x1 bit is responsible for the side, 0 = player's side, 1 = opponent's side.
+ 0x2 bit is responsible for the id of sent out pokemon. 0 means it's the first sent out pokemon, 1 it's the second one. (Triple battle didn't exist at the time yet.)
+*/
+
#define BATTLE_BANKS_COUNT 4
+#define IDENTITY_PLAYER_MON1 0
+#define IDENTITY_OPPONENT_MON1 1
+#define IDENTITY_PLAYER_MON2 2
+#define IDENTITY_OPPONENT_MON2 3
+
+#define SIDE_PLAYER 0x0
+#define SIDE_OPPONENT 0x1
+
+#define BIT_SIDE 0x1
+#define BIT_MON 0x2
+
+#define GET_BANK_IDENTITY(bank)((gBanksByIdentity[bank]))
+#define GET_BANK_SIDE(bank)((GetBankIdentity(bank) & BIT_SIDE))
+#define GET_BANK_SIDE2(bank)((GET_BANK_IDENTITY(bank) & BIT_SIDE))
+
#define BATTLE_TYPE_DOUBLE 0x0001
#define BATTLE_TYPE_LINK 0x0002
#define BATTLE_TYPE_WILD 0x0004
@@ -34,14 +62,16 @@
#define BATTLE_TYPE_GROUDON 0x10000000
#define BATTLE_TYPE_KYORGE 0x20000000
#define BATTLE_TYPE_RAYQUAZA 0x40000000
+#define BATTLE_TYPE_x80000000 0x80000000
+#define TRAINER_OPPONENT_3FE 0x3FE
+#define TRAINER_OPPONENT_C00 0xC00
+#define TRAINER_OPPONENT_800 0x800
#define STEVEN_PARTNER_ID 0xC03
#define SECRET_BASE_OPPONENT 0x400
-#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
-
-#define SIDE_PLAYER 0x0
-#define SIDE_OPPONENT 0x1
+#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
+#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000)
#define BATTLE_WON 0x1
#define BATTLE_LOST 0x2
@@ -50,8 +80,12 @@
#define BATTLE_PLAYER_TELEPORTED 0x5
#define BATTLE_POKE_FLED 0x6
#define BATTLE_CAUGHT 0x7
+#define BATTLE_SAFARI_OUT_OF_BALLS 0x8
+#define BATTLE_FORFEITED 0x9
#define BATTLE_OPPONENT_TELEPORTED 0xA
+#define BATTLE_OUTCOME_BIT_x80 0x80
+
#define STATUS_SLEEP 0x7
#define STATUS_POISON 0x8
#define STATUS_BURN 0x10
@@ -66,11 +100,12 @@
#define STATUS2_CONFUSION 0x00000007
#define STATUS2_FLINCHED 0x00000008
#define STATUS2_UPROAR 0x00000070
-#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200
+#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_INFATUATION 0x000F0000 // 4 bits, one for every bank
+#define STATUS2_INFATUATED_WITH(bank)((gBitTable[bank] << 16))
#define STATUS2_FOCUS_ENERGY 0x00100000
#define STATUS2_TRANSFORMED 0x00200000
#define STATUS2_RECHARGE 0x00400000
@@ -86,15 +121,15 @@
#define STATUS3_LEECHSEED_BANK 0x3
#define STATUS3_LEECHSEED 0x4
-#define STATUS3_ALWAYS_HITS 0x18 //two bits
+#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_ROOTED 0x400
#define STATUS3_CHARGED_UP 0x200
-#define STATUS3_YAWN 0x1800 //two bits
-#define STATUS3_IMPRISIONED 0x2000
+#define STATUS3_YAWN 0x1800 // two bits
+#define STATUS3_IMPRISONED_OTHERS 0x2000
#define STATUS3_GRUDGE 0x4000
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
#define STATUS3_MUDSPORT 0x10000
@@ -105,6 +140,7 @@
#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER))
+#define HITMARKER_x10 0x00000010
#define HITMARKER_x20 0x00000020
#define HITMARKER_DESTINYBOND 0x00000040
#define HITMARKER_NO_ANIMATIONS 0x00000080
@@ -115,6 +151,7 @@
#define HITMARKER_PURSUIT_TRAP 0x00001000
#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
+#define HITMARKER_RUN 0x00008000
#define HITMARKER_IGNORE_ON_AIR 0x00010000
#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
#define HITMARKER_IGNORE_UNDERWATER 0x00040000
@@ -125,6 +162,7 @@
#define HITMARKER_x800000 0x00800000
#define HITMARKER_GRUDGE 0x01000000
#define HITMARKER_OBEYS 0x02000000
+#define HITMARKER_x4000000 0x04000000
#define HITMARKER_x8000000 0x08000000
#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
#define HITMARKER_UNK(bank) ((0x10000000 << bank))
@@ -138,28 +176,21 @@
#define SIDE_STATUS_MIST (1 << 8)
#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
-#define ABILITYEFFECT_ON_SWITCHIN 0x0
-#define ABILITYEFFECT_ENDTURN 0x1
-#define ABILITYEFFECT_MOVES_BLOCK 0x2
-#define ABILITYEFFECT_ABSORBING 0x3
-#define ABILITYEFFECT_CONTACT 0x4
-#define ABILITYEFFECT_IMMUNITY 0x5
-#define ABILITYEFFECT_FORECAST 0x6
-#define ABILITYEFFECT_SYNCHRONIZE 0x7
-#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
-#define ABILITYEFFECT_INTIMIDATE1 0x9
-#define ABILITYEFFECT_INTIMIDATE2 0xA
-#define ABILITYEFFECT_TRACE 0xB
-#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
-#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD
-#define ABILITYEFFECT_FIELD_SPORT 0xE
-#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF
-#define ABILITYEFFECT_COUNT_OTHER_SIZE 0x10
-#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11
-#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
-#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
-
-#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
+#define ACTION_USE_MOVE 0
+#define ACTION_USE_ITEM 1
+#define ACTION_SWITCH 2
+#define ACTION_RUN 3
+#define ACTION_WATCHES_CAREFULLY 4
+#define ACTION_SAFARI_ZONE_BALL 5
+#define ACTION_POKEBLOCK_CASE 6
+#define ACTION_GO_NEAR 7
+#define ACTION_SAFARI_ZONE_RUN 8
+#define ACTION_9 9
+#define ACTION_RUN_BATTLESCRIPT 10 // when executing an action
+#define ACTION_CANCEL_PARTNER 12 // when choosing an action
+#define ACTION_FINISHED 12 // when executing an action
+#define ACTION_NOTHING_FAINTED 13 // when choosing an action
+#define ACTION_INIT_VALUE 0xFF
#define MOVESTATUS_MISSED (1 << 0)
#define MOVESTATUS_SUPEREFFECTIVE (1 << 1)
@@ -187,27 +218,105 @@
#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))
#define WEATHER_HAIL (1 << 7)
#define WEATHER_HAIL_ANY ((WEATHER_HAIL))
-
-#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
+#define WEATHER_ANY ((WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY))
+
+#define BATTLE_TERRAIN_GRASS 0
+#define BATTLE_TERRAIN_LONG_GRASS 1
+#define BATTLE_TERRAIN_SAND 2
+#define BATTLE_TERRAIN_UNDERWATER 3
+#define BATTLE_TERRAIN_WATER 4
+#define BATTLE_TERRAIN_POND 5
+#define BATTLE_TERRAIN_ROCK 6
+#define BATTLE_TERRAIN_CAVE 7
+#define BATTLE_TERRAIN_INSIDE 8
// array entries for battle communication
-#define MOVE_EFFECT_BYTE 0x3
-#define MULTISTRING_CHOOSER 0x5
-#define MSG_DISPLAY 0x7
+#define MULTIUSE_STATE 0x0
+#define CURSOR_POSITION 0x1
+#define TASK_ID 0x1 // task Id and cursor position share the same field
+#define SPRITES_INIT_STATE1 0x1 // shares the Id as well
+#define SPRITES_INIT_STATE2 0x2
+#define MOVE_EFFECT_BYTE 0x3
+#define ACTIONS_CONFIRMED_COUNT 0x4
+#define MULTISTRING_CHOOSER 0x5
+#define MSG_DISPLAY 0x7
+#define BATTLE_COMMUNICATION_ENTRIES_COUNT 0x8
+
+#define MOVE_TARGET_SELECTED 0x0
+#define MOVE_TARGET_DEPENDS 0x1
+#define MOVE_TARGET_USER 0x2
+#define MOVE_TARGET_RANDOM 0x4
+#define MOVE_TARGET_x10 0x10
+#define MOVE_TARGET_BOTH 0x8
+#define MOVE_TARGET_FOES_AND_ALLY 0x20
+#define MOVE_TARGET_OPPONENTS_FIELD 0x40
+
+#define TYPE_MUL_NO_EFFECT 0
+#define TYPE_MUL_NOT_EFFECTIVE 5
+#define TYPE_MUL_NORMAL 10
+#define TYPE_MUL_SUPER_EFFECTIVE 20
+
+#define BS_GET_TARGET 0
+#define BS_GET_ATTACKER 1
+#define BS_GET_EFFECT_BANK 2
+#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
+#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
+#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
+#define BS_GET_SCRIPTING_BANK 10
+#define BS_GET_OPPONENT1 12
+#define BS_GET_PLAYER2 13
+#define BS_GET_OPPONENT2 14
+
+// for battle script commands
+#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
+
+struct TrainerMonNoItemDefaultMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+};
-// functions
+u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg);
+u8 GetBankSide(u8 bank);
+
+struct TrainerMonItemDefaultMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+ u16 heldItem;
+};
+
+struct TrainerMonNoItemCustomMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+ u16 moves[4];
+};
-extern u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg);
-extern u8 GetBankSide(u8 bank);
+struct TrainerMonItemCustomMoves
+{
+ u16 iv;
+ u8 lvl;
+ u16 species;
+ u16 heldItem;
+ u16 moves[4];
+};
+
+union TrainerMonPtr
+{
+ struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves;
+ struct TrainerMonNoItemCustomMoves* NoItemCustomMoves;
+ struct TrainerMonItemDefaultMoves* ItemDefaultMoves;
+ struct TrainerMonItemCustomMoves* ItemCustomMoves;
+};
struct Trainer
{
@@ -220,9 +329,12 @@ struct Trainer
/*0x18*/ bool8 doubleBattle;
/*0x1C*/ u32 aiFlags;
/*0x20*/ u8 partySize;
- /*0x24*/ void *party;
+ /*0x24*/ union TrainerMonPtr party;
};
+#define PARTY_FLAG_CUSTOM_MOVES 0x1
+#define PARTY_FLAG_HAS_ITEM 0x2
+
extern const struct Trainer gTrainers[];
#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
@@ -251,8 +363,8 @@ struct DisableStruct
/*0x0F*/ u8 perishSong1 : 4;
/*0x0F*/ u8 perishSong2 : 4;
/*0x10*/ u8 furyCutterCounter;
- /*0x11*/ u8 rolloutTimer1 : 4;
- /*0x11*/ u8 rolloutTimer2 : 4;
+ /*0x11*/ u8 rolloutCounter1 : 4;
+ /*0x11*/ u8 rolloutCounter2 : 4;
/*0x12*/ u8 chargeTimer1 : 4;
/*0x12*/ u8 chargeTimer2 : 4;
/*0x13*/ u8 tauntTimer1:4;
@@ -262,7 +374,8 @@ struct DisableStruct
/*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
/*0x18*/ u8 truantCounter : 1;
- /*0x18*/ u8 unk18_a : 3;
+ /*0x18*/ u8 truantUnknownBit : 1;
+ /*0x18*/ u8 unk18_a_2 : 2;
/*0x18*/ u8 unk18_b : 4;
/*0x19*/ u8 rechargeCounter;
/*0x1A*/ u8 unk1A[2];
@@ -283,7 +396,7 @@ struct ProtectStruct
u32 prlzImmobility:1;
/* field_1 */
u32 confusionSelfDmg:1;
- u32 notEffective:1;
+ u32 targetNotAffected:1;
u32 chargingTurn:1;
u32 fleeFlag:2; // for RunAway and Smoke Ball
u32 usedImprisionedMove:1;
@@ -312,11 +425,11 @@ extern struct ProtectStruct gProtectStructs[BATTLE_BANKS_COUNT];
struct SpecialStatus
{
- u8 statLowered : 1;
- u8 lightningRodRedirected : 1;
- u8 restoredBankSprite: 1;
- u8 intimidatedPoke : 1;
- u8 traced : 1;
+ u8 statLowered : 1; // 0x1
+ u8 lightningRodRedirected : 1; // 0x2
+ u8 restoredBankSprite: 1; // 0x4
+ u8 intimidatedPoke : 1; // 0x8
+ u8 traced : 1; // 0x10
u8 flag20 : 1;
u8 flag40 : 1;
u8 focusBanded : 1;
@@ -359,7 +472,7 @@ struct WishFutureKnock
u8 wishCounter[BATTLE_BANKS_COUNT];
u8 wishUserID[BATTLE_BANKS_COUNT];
u8 weatherDuration;
- u16 knockedOffPokes;
+ u8 knockedOffPokes[2];
};
extern struct WishFutureKnock gWishFutureKnock;
@@ -389,7 +502,7 @@ struct BattleHistory
struct UsedMoves usedMoves[BATTLE_BANKS_COUNT];
u8 abilities[BATTLE_BANKS_COUNT];
u8 itemEffects[BATTLE_BANKS_COUNT];
- u16 TrainerItems[BATTLE_BANKS_COUNT];
+ u16 trainerItems[BATTLE_BANKS_COUNT];
u8 itemsNo;
};
@@ -405,13 +518,23 @@ struct BattleCallbacksStack
u8 size;
};
+struct StatsArray
+{
+ u16 hp;
+ u16 atk;
+ u16 def;
+ u16 spd;
+ u16 spAtk;
+ u16 spDef;
+};
+
struct BattleResources
{
struct SecretBaseRecord* secretBase;
struct UnknownFlags *flags;
struct BattleScriptsStack* battleScriptsStack;
struct BattleCallbacksStack* battleCallbackStack;
- void* statsBeforeLvlUp;
+ struct StatsArray* statsBeforeLvlUp;
struct AI_ThinkingStruct *ai;
struct BattleHistory *battleHistory;
struct BattleScriptsStack *AI_ScriptsStack;
@@ -421,31 +544,33 @@ extern struct BattleResources* gBattleResources;
#define BATTLESCRIPTS_STACK (gBattleResources->battleScriptsStack)
#define BATTLE_CALLBACKS_STACK (gBattleResources->battleCallbackStack)
+#define BATTLE_LVLUP_STATS (gBattleResources->statsBeforeLvlUp)
struct BattleResults
{
u8 playerFaintCounter; // 0x0
u8 opponentFaintCounter; // 0x1
- u8 unk2; // 0x2
+ u8 playerSwitchesCounter; // 0x2
u8 unk3; // 0x3
u8 unk4; // 0x4
u8 unk5_0:1; // 0x5
- u8 unk5_1:1; // 0x5
- u16 poke1Species; // 0x6
- u8 pokeString1[10]; // 0x8
- u8 unk12;
+ u8 usedMasterBall:1; // 0x5
+ u8 caughtMonBall:4; // 0x5
+ u8 unk5_6:1; // 0x5
+ u8 unk5_7:1; // 0x5
+ u16 playerMon1Species; // 0x6
+ u8 playerMon1Name[11]; // 0x8
u8 battleTurnCounter; // 0x13
- u8 pokeString2[10]; // 0x14
- u8 field_1E; // 0x1E
+ u8 playerMon2Name[11]; // 0x14
u8 field_1F; // 0x1F
u16 lastOpponentSpecies; // 0x20
- u16 lastUsedMove; // 0x22
- u16 opponentMove; // 0x24
- u16 opponentSpecies; // 0x26
- u16 caughtPoke; // 0x28
- u8 caughtNick[10]; // 0x2A
+ u16 lastUsedMovePlayer; // 0x22
+ u16 lastUsedMoveOpponent; // 0x24
+ u16 playerMon2Species; // 0x26
+ u16 caughtMonSpecies; // 0x28
+ u8 caughtMonNick[10]; // 0x2A
u8 filler34[2];
- u8 unk36[10]; // usedBalls?
+ u8 catchAttempts[11]; // 0x36
};
extern struct BattleResults gBattleResults;
@@ -463,46 +588,7 @@ struct BattleStruct
u8 wildVictorySong;
u8 dynamicMoveType;
u8 wrappedBy[4];
- u8 field_18;
- u8 field_19;
- u8 field_1A;
- u8 field_1B;
- u8 field_1C;
- u8 field_1D;
- u8 field_1E;
- u8 field_1F;
- u8 field_20;
- u8 field_21;
- u8 field_22;
- u8 field_23;
- u8 field_24;
- u8 field_25;
- u8 field_26;
- u8 field_27;
- u8 field_28;
- u8 field_29;
- u8 field_2A;
- u8 field_2B;
- u8 field_2C;
- u8 field_2D;
- u8 field_2E;
- u8 field_2F;
- u8 field_30;
- u8 field_31;
- u8 field_32;
- u8 field_33;
- u8 field_34;
- u8 field_35;
- u8 field_36;
- u8 field_37;
- u8 field_38;
- u8 field_39;
- u8 field_3A;
- u8 field_3B;
- u8 field_3C;
- u8 field_3D;
- u8 field_3E;
- u8 field_3F;
+ u16 assistPossibleMoves[5 * 4]; // 5 mons, each of them knowing 4 moves
u8 field_40;
u8 field_41;
u8 field_42;
@@ -511,51 +597,23 @@ struct BattleStruct
u8 field_45;
u8 field_46;
u8 field_47;
- u8 field_48;
+ u8 focusPunchBank;
u8 field_49;
u8 moneyMultiplier;
u8 field_4B;
- u8 field_4C;
+ u8 switchInAbilitiesCounter;
u8 field_4D;
u8 field_4E;
u8 field_4F;
- u8 field_50;
- u8 field_51;
+ u16 expValue;
u8 field_52;
- u8 field_53;
- u8 field_54;
- u8 field_55;
- u8 field_56;
- u8 field_57;
- u8 field_58;
- u8 field_59;
- u8 field_5A;
- u8 field_5B;
+ u8 sentInPokes;
+ bool8 selectionScriptFinished[BATTLE_BANKS_COUNT];
+ u8 field_58[4];
u8 field_5C[4];
- u8 field_60;
- u8 field_61;
- u8 field_62;
- u8 field_63;
- u8 field_64;
- u8 field_65;
- u8 field_66;
- u8 field_67;
- u8 field_68;
- u8 field_69;
- u8 field_6A;
- u8 field_6B;
- u8 field_6C;
- u8 field_6D;
- u8 field_6E;
- u8 field_6F;
- u8 field_70;
- u8 field_71;
- u8 field_72;
- u8 field_73;
- u8 field_74;
- u8 field_75;
- u8 field_76;
- u8 field_77;
+ u8 field_60[4][3];
+ u8 runTries;
+ u8 caughtMonNick[11];
u8 field_78;
u8 field_79;
u8 field_7A;
@@ -564,18 +622,15 @@ struct BattleStruct
u8 field_7D;
u8 field_7E;
u8 formToChangeInto;
- u8 chosenMovesIds[4];
- u8 field_84;
- u8 field_85;
- u8 field_86;
- u8 field_87;
+ u8 chosenMovePositions[BATTLE_BANKS_COUNT];
+ u8 stateIdAfterSelScript[BATTLE_BANKS_COUNT];
u8 field_88;
u8 field_89;
u8 field_8A;
u8 field_8B;
u8 field_8C;
u8 field_8D;
- u8 field_8E;
+ u8 stringMoveType;
u8 expGetterBank;
u8 field_90;
u8 field_91;
@@ -585,14 +640,7 @@ struct BattleStruct
u8 field_95;
u8 field_96;
u8 field_97;
- u8 field_98;
- u8 field_99;
- u8 field_9A;
- u8 field_9B;
- u8 field_9C;
- u8 field_9D;
- u8 field_9E;
- u8 field_9F;
+ u8 mirrorMoves[8]; // ask gamefreak why they declared it that way
u8 field_A0;
u8 field_A1;
u8 field_A2;
@@ -601,30 +649,44 @@ struct BattleStruct
u8 field_A5;
u8 field_A6;
u8 field_A7;
- u16 hpOnSwitchout[4];
+ u16 hpOnSwitchout[2];
+ u32 savedBattleTypeFlags;
u8 field_B0;
u8 hpScale;
u8 synchronizeMoveEffect;
u8 field_B3;
- u8 field_B4;
- u8 field_B5;
- u8 field_B6;
- u8 field_B7;
- u16 usedHeldItems[4];
- u8 field_C0[8];
- u16 choicedMove[4];
- u8 field_D0[8];
+ void (*savedCallback)(void);
+ u16 usedHeldItems[BATTLE_BANKS_COUNT];
+ u8 field_C0[4];
+ u8 AI_itemType[2];
+ u8 AI_itemFlags[2];
+ u16 choicedMove[BATTLE_BANKS_COUNT];
+ u16 changedItems[BATTLE_BANKS_COUNT];
u8 intimidateBank;
- u8 fillerD9[0xDA-0xD9];
+ u8 switchInItemsCounter;
u8 field_DA;
u8 turnSideTracker;
u8 fillerDC[0xDF-0xDC];
u8 field_DF;
- u8 fillerE0[0x1A0-0xE0];
+ u8 mirrorMoveArrays[32];
+ u16 castformPalette[4][16];
+ u8 field_180;
+ u8 field_181;
+ u8 field_182;
+ u8 field_183;
+ struct BattleEnigmaBerry battleEnigmaBerry;
u8 field_1A0;
u8 field_1A1;
- u8 filler1A2;
+ bool8 overworldWeatherDone;
u8 atkCancellerTracker;
+ u8 field_1A4[96];
+ u8 field_204[104];
+ u8 field_26C[40];
+ u8 field_294[4];
+ u8 field_298[8];
+ u8 field_2A0;
+ u8 field_2A1;
+ u8 field_2A2;
};
extern struct BattleStruct* gBattleStruct;
@@ -636,19 +698,125 @@ extern struct BattleStruct* gBattleStruct;
var2[offsetof(struct structName, offsetField)] = value; \
}
+#define GET_MOVE_TYPE(move, typeArg) \
+{ \
+ if (gBattleStruct->dynamicMoveType) \
+ typeArg = gBattleStruct->dynamicMoveType & 0x3F; \
+ else \
+ typeArg = gBattleMoves[move].type; \
+}
+
+#define MOVE_EFFECT_SLEEP 0x1
+#define MOVE_EFFECT_POISON 0x2
+#define MOVE_EFFECT_BURN 0x3
+#define MOVE_EFFECT_FREEZE 0x4
+#define MOVE_EFFECT_PARALYSIS 0x5
+#define MOVE_EFFECT_TOXIC 0x6
+#define MOVE_EFFECT_CONFUSION 0x7
+#define MOVE_EFFECT_FLINCH 0x8
+#define MOVE_EFFECT_TRI_ATTACK 0x9
+#define MOVE_EFFECT_UPROAR 0xA
+#define MOVE_EFFECT_PAYDAY 0xB
+#define MOVE_EFFECT_CHARGING 0xC
+#define MOVE_EFFECT_WRAP 0xD
+#define MOVE_EFFECT_RECOIL_25 0xE
+#define MOVE_EFFECT_ATK_PLUS_1 0xF
+#define MOVE_EFFECT_DEF_PLUS_1 0x10
+#define MOVE_EFFECT_SPD_PLUS_1 0x11
+#define MOVE_EFFECT_SP_ATK_PLUS_1 0x12
+#define MOVE_EFFECT_SP_DEF_PLUS_1 0x13
+#define MOVE_EFFECT_ACC_PLUS_1 0x14
+#define MOVE_EFFECT_EVS_PLUS_1 0x15
+#define MOVE_EFFECT_ATK_MINUS_1 0x16
+#define MOVE_EFFECT_DEF_MINUS_1 0x17
+#define MOVE_EFFECT_SPD_MINUS_1 0x18
+#define MOVE_EFFECT_SP_ATK_MINUS_1 0x19
+#define MOVE_EFFECT_SP_DEF_MINUS_1 0x1A
+#define MOVE_EFFECT_ACC_MINUS_1 0x1B
+#define MOVE_EFFECT_EVS_MINUS_1 0x1C
+#define MOVE_EFFECT_RECHARGE 0x1D
+#define MOVE_EFFECT_RAGE 0x1E
+#define MOVE_EFFECT_STEAL_ITEM 0x1F
+#define MOVE_EFFECT_PREVENT_ESCAPE 0x20
+#define MOVE_EFFECT_NIGHTMARE 0x21
+#define MOVE_EFFECT_ALL_STATS_UP 0x22
+#define MOVE_EFFECT_RAPIDSPIN 0x23
+#define MOVE_EFFECT_REMOVE_PARALYSIS 0x24
+#define MOVE_EFFECT_ATK_DEF_DOWN 0x25
+#define MOVE_EFFECT_RECOIL_33_PARALYSIS 0x26
+#define MOVE_EFFECT_ATK_PLUS_2 0x27
+#define MOVE_EFFECT_DEF_PLUS_2 0x28
+#define MOVE_EFFECT_SPD_PLUS_2 0x29
+#define MOVE_EFFECT_SP_ATK_PLUS_2 0x2A
+#define MOVE_EFFECT_SP_DEF_PLUS_2 0x2B
+#define MOVE_EFFECT_ACC_PLUS_2 0x2C
+#define MOVE_EFFECT_EVS_PLUS_2 0x2D
+#define MOVE_EFFECT_ATK_MINUS_2 0x2E
+#define MOVE_EFFECT_DEF_MINUS_2 0x2F
+#define MOVE_EFFECT_SPD_MINUS_2 0x30
+#define MOVE_EFFECT_SP_ATK_MINUS_2 0x31
+#define MOVE_EFFECT_SP_DEF_MINUS_2 0x32
+#define MOVE_EFFECT_ACC_MINUS_2 0x33
+#define MOVE_EFFECT_EVS_MINUS_2 0x34
+#define MOVE_EFFECT_THRASH 0x35
+#define MOVE_EFFECT_KNOCK_OFF 0x36
+#define MOVE_EFFECT_NOTHING_37 0x37
+#define MOVE_EFFECT_NOTHING_38 0x38
+#define MOVE_EFFECT_NOTHING_39 0x39
+#define MOVE_EFFECT_NOTHING_3A 0x3A
+#define MOVE_EFFECT_SP_ATK_TWO_DOWN 0x3B
+#define MOVE_EFFECT_NOTHING_3C 0x3C
+#define MOVE_EFFECT_NOTHING_3D 0x3D
+#define MOVE_EFFECT_NOTHING_3E 0x3E
+#define MOVE_EFFECT_NOTHING_3F 0x3F
+#define MOVE_EFFECT_AFFECTS_USER 0x40
+#define MOVE_EFFECT_CERTAIN 0x80
+
+// battle animations ids
+
+#define B_ANIM_CASTFORM_CHANGE 0x0
+#define B_ANIM_STATS_CHANGE 0x1
+#define B_ANIM_SUBSTITUTE_FADE 0x2
+#define B_ANIM_SUBSTITUTE_APPEAR 0x3
+#define B_ANIM_x4 0x4
+#define B_ANIM_ITEM_KNOCKOFF 0x5
+#define B_ANIM_TURN_TRAP 0x6
+#define B_ANIM_ITEM_EFFECT 0x7
+#define B_ANIM_SMOKEBALL_ESCAPE 0x8
+#define B_ANIM_HANGED_ON 0x9
+#define B_ANIM_RAIN_CONTINUES 0xA
+#define B_ANIM_SUN_CONTINUES 0xB
+#define B_ANIM_SANDSTORM_CONTINUES 0xC
+#define B_ANIM_HAIL_CONTINUES 0xD
+#define B_ANIM_LEECH_SEED_DRAIN 0xE
+#define B_ANIM_MON_HIT 0xF
+#define B_ANIM_ITEM_STEAL 0x10
+#define B_ANIM_SNATCH_MOVE 0x11
+#define B_ANIM_FUTURE_SIGHT_HIT 0x12
+#define B_ANIM_x13 0x13
+#define B_ANIM_x14 0x14
+#define B_ANIM_INGRAIN_HEAL 0x15
+#define B_ANIM_WISH_HEAL 0x16
+#define B_ANIM_x17 0x17
+#define B_ANIM_x18 0x18
+#define B_ANIM_x19 0x19
+#define B_ANIM_x1A 0x1A
+#define B_ANIM_x1B 0x1B
+#define B_ANIM_x1C 0x1C
+#define B_ANIM_x1D 0x1D
+
+#define GET_STAT_BUFF_ID(n)((n & 0xF)) // first four bits 0x1, 0x2, 0x4, 0x8
+#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
+#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
+
+#define SET_STAT_BUFF_ID(n)((n & 0xF))
+#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0))
+
struct BattleScripting
{
- u8 field_0;
- u8 field_1;
- u8 field_2;
- u8 field_3;
- u32 bideDmg;
- u8 field_8;
- u8 field_9;
- u8 field_A;
- u8 field_B;
- u8 field_C;
- u8 field_D;
+ s32 painSplitHp;
+ s32 bideDmg;
+ u8 multihitString[6];
u8 dmgMultiplier;
u8 field_F;
u8 animArg1;
@@ -659,22 +827,165 @@ struct BattleScripting
u8 field_15;
u8 field_16;
u8 bank;
- u8 field_18;
- u8 field_19;
+ u8 animTurn;
+ u8 animTargetsHit;
u8 statChanger;
+ u8 field_1B;
+ u8 atk23_state;
+ u8 battleStyle;
+ u8 atk6C_state;
+ u8 learnMoveState;
+ u8 field_20;
+ u8 reshowMainState;
+ u8 reshowHelperState;
+ u8 field_23;
+ u8 field_24;
+ u8 multiplayerId;
};
extern struct BattleScripting gBattleScripting;
+// functions
+
+// battle_1
+void LoadBattleTextboxAndBackground(void);
+void LoadBattleEntryBackground(void);
+void ApplyPlayerChosenFrameToBattleMenu(void);
+bool8 LoadChosenBattleElement(u8 caseId);
+void DrawMainBattleBackground(void);
+void task00_0800F6FC(u8 taskId);
+
+// battle_5
+void AllocateBattleResrouces(void);
+void FreeBattleResources(void);
+void AdjustFriendshipOnBattleFaint(u8 bank);
+void sub_80571DC(u8 bank, u8 arg1);
+u32 sub_805725C(u8 bank);
+
+// battle 7
+void AllocateBattleSpritesData(void);
+void FreeBattleSpritesData(void);
+void AllocateMonSpritesGfx(void);
+void FreeMonSpritesGfx(void);
+void BattleMusicStop(void);
+void sub_805E990(struct Pokemon *mon, u8 bank);
+void sub_805EF14(void);
+bool8 BattleInitAllSprites(u8 *state1, u8 *state2);
+void sub_805E350(void);
+bool8 BattleLoadAllHealthBoxesGfx(u8 state);
+void LoadAndCreateEnemyShadowSprites(void);
+void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species);
+void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank);
+void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank);
+void BattleLoadSubstituteSpriteGfx(u8 bank, bool8 arg1);
+
+enum
+{
+ BACK_PIC_BRENDAN,
+ BACK_PIC_MAY,
+ BACK_PIC_RED,
+ BACK_PIC_LEAF,
+ BACK_PIC_RS_BRENDAN,
+ BACK_PIC_RS_MAY,
+ BACK_PIC_WALLY,
+ BACK_PIC_STEVEN
+};
+void LoadBackTrainerBankSpriteGfx(u8 backPicId, u8 bank);
+
+// rom_80A5C6C
+u8 GetBankSide(u8 bank);
+u8 GetBankIdentity(u8 bank);
+u8 GetBankByIdentity(u8 bank);
+
+struct BattleSpriteInfo
+{
+ u16 invisible : 1; // 0x1
+ u16 flag_x2 : 1; // 0x2
+ u16 behindSubstitute : 1; // 0x4
+ u16 flag_x8 : 1; // 0x8
+ u16 hpNumbersNoBars : 1; // 0x10
+ u16 transformSpecies;
+};
+
+struct BattleAnimationInfo
+{
+ u16 field; // to fill up later
+ u8 field_2;
+ u8 field_3;
+ u8 field_4;
+ u8 field_5;
+ u8 field_6;
+ u8 field_7;
+ u8 field_8;
+ u8 field_9_x1 : 1;
+ u8 field_9_x2 : 1;
+ u8 field_9_x1C : 3;
+ u8 field_9_x20 : 1;
+ u8 field_9_x40 : 1;
+ u8 field_9_x80 : 1;
+};
+
+struct BattleHealthboxInfo
+{
+ u8 flag_x1 : 1;
+ u8 flag_x2 : 1;
+ u8 flag_x4 : 1;
+ u8 flag_x8 : 1;
+ u8 flag_x10 : 1;
+ u8 field_1;
+ u8 field_2;
+ u8 field_3;
+ u8 field_4;
+ u8 field_5;
+ u8 field_6;
+ u8 field_7;
+ u8 field_8;
+ u8 field_9;
+ u8 field_A;
+ u8 field_B;
+};
+
+struct BattleBarInfo
+{
+ u8 healthboxSpriteId;
+ s32 maxValue;
+ s32 currentValue;
+ s32 field_C;
+ s32 field_10;
+};
+
+struct BattleSpriteData
+{
+ struct BattleSpriteInfo *bankData;
+ struct BattleHealthboxInfo *healthBoxesData;
+ struct BattleAnimationInfo *animationData;
+ struct BattleBarInfo *battleBars;
+};
+
+extern struct BattleSpriteData *gBattleSpritesDataPtr;
+
+#define BATTLE_BUFFER_LINK_SIZE 0x1000
+
+extern u8 *gLinkBattleSendBuffer;
+extern u8 *gLinkBattleRecvBuffer;
+
+// Move this somewhere else
+
#include "sprite.h"
-struct BattleSpritesGfx
+struct MonSpritesGfx
{
void* firstDecompressed; // ptr to the decompressed sprite of the first pokemon
void* sprites[4];
struct SpriteTemplate templates[4];
+ u8 field_74[0x100];
+ u8 *fontPixels;
};
-extern struct BattleSpritesGfx* gBattleSpritesGfx;
+extern struct BattleSpritesGfx* gMonSpritesGfx;
+extern u8 gBattleOutcome;
+extern u16 gLastUsedItem;
+extern u32 gBattleTypeFlags;
+extern struct MonSpritesGfx* gMonSpritesGfxPtr;
#endif // GUARD_BATTLE_H
diff --git a/include/battle_2.h b/include/battle_2.h
new file mode 100644
index 000000000..ceec2aa00
--- /dev/null
+++ b/include/battle_2.h
@@ -0,0 +1,33 @@
+#ifndef GUARD_BATTLE_2_H
+#define GUARD_BATTLE_2_H
+
+void CB2_InitBattle(void);
+void CB2_QuitRecordedBattle(void);
+void FaintClearSetData(void);
+void SwitchInClearSetData(void);
+void sub_803BDA0(u8 bank);
+void BattleMainCB2(void);
+void VBlankCB_Battle(void);
+bool8 TryRunFromBattle(u8 bank);
+u8 IsRunningFromBattleImpossible(void);
+u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves);
+void SwapTurnOrder(u8 id1, u8 id2);
+void BattleTurnPassed(void);
+void RunBattleScriptCommands_PopCallbacksStack(void);
+void RunBattleScriptCommands(void);
+u32 sub_80397C4(u32 setId, u32 tableId);
+void sub_8039E9C(struct Sprite *sprite);
+void nullsub_20(void);
+void BeginBattleIntro(void);
+
+extern const u8 gStatusConditionString_PoisonJpn[8];
+extern const u8 gStatusConditionString_SleepJpn[8];
+extern const u8 gStatusConditionString_ParalysisJpn[8];
+extern const u8 gStatusConditionString_BurnJpn[8];
+extern const u8 gStatusConditionString_IceJpn[8];
+extern const u8 gStatusConditionString_ConfusionJpn[8];
+extern const u8 gStatusConditionString_LoveJpn[8];
+
+extern const u8 * const gStatusConditionStringsTable[7][2];
+
+#endif // GUARD_BATTLE_2_H
diff --git a/include/battle_ai.h b/include/battle_ai_script_commands.h
index 2a315059b..5fb422b41 100644
--- a/include/battle_ai.h
+++ b/include/battle_ai_script_commands.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_BATTLE_AI_H
-#define GUARD_BATTLE_AI_H
+#ifndef GUARD_BATTLE_AI_SCRIPT_COMMANDS_H
+#define GUARD_BATTLE_AI_SCRIPT_COMMANDS_H
void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves);
void BattleAI_SetupAIData(u8 defaultScoreMoves);
@@ -10,4 +10,4 @@ void ClearBankAbilityHistory(u8 bank);
void RecordItemEffectBattle(u8 bank, u8 itemEffect);
void ClearBankItemEffectHistory(u8 bank);
-#endif // GUARD_BATTLE_AI_H
+#endif // GUARD_BATTLE_AI_SCRIPT_COMMANDS_H
diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h
new file mode 100644
index 000000000..0a230e7f6
--- /dev/null
+++ b/include/battle_ai_switch_items.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_BATTLE_AI_SWITCH_ITEMS_H
+#define GUARD_BATTLE_AI_SWITCH_ITEMS_H
+
+enum
+{
+ AI_ITEM_FULL_RESTORE = 1,
+ AI_ITEM_HEAL_HP,
+ AI_ITEM_CURE_CONDITION,
+ AI_ITEM_X_STAT,
+ AI_ITEM_GUARD_SPECS,
+ AI_ITEM_NOT_RECOGNIZABLE
+};
+
+void AI_TrySwitchOrUseItem(void);
+u8 GetMostSuitableMonToSwitchInto(void);
+
+#endif // GUARD_BATTLE_AI_SWITCH_ITEMS_H
diff --git a/include/battle_anim.h b/include/battle_anim.h
new file mode 100644
index 000000000..5282916c0
--- /dev/null
+++ b/include/battle_anim.h
@@ -0,0 +1,79 @@
+#ifndef GUARD_BATTLE_ANIM_H
+#define GUARD_BATTLE_ANIM_H
+
+enum
+{
+ ANIM_BANK_ATTACKER,
+ ANIM_BANK_TARGET,
+ ANIM_BANK_ATK_PARTNER,
+ ANIM_BANK_DEF_PARTNER,
+};
+
+enum
+{
+ BG_ANIM_SCREEN_SIZE,
+ BG_ANIM_AREA_OVERFLOW_MODE,
+ BG_ANIM2,
+ BG_ANIM3,
+ BG_ANIM_PRIORITY,
+ BG_ANIM_5,
+ BG_ANIM_6
+};
+
+struct UnknownAnimStruct2
+{
+ void *unk0;
+ u16 *unk4;
+ u8 unk8;
+ u8 unk9;
+ u16 unkA;
+ u16 unkC;
+};
+
+struct BattleAnimBackground
+{
+ void *image;
+ void *palette;
+ void *tilemap;
+};
+
+#define ANIM_ARGS_COUNT 8
+
+#define PAN_SIDE_PLAYER -64
+#define PAN_SIDE_OPPONENT 63
+
+extern void (*gAnimScriptCallback)(void);
+extern bool8 gAnimScriptActive;
+extern u8 gAnimVisualTaskCount;
+extern u8 gAnimSoundTaskCount;
+extern struct DisableStruct *gAnimDisableStructPtr;
+extern u32 gAnimMoveDmg;
+extern u16 gAnimMovePower;
+extern u8 gAnimFriendship;
+extern u16 gWeatherMoveAnim;
+extern s16 gBattleAnimArgs[ANIM_ARGS_COUNT];
+extern u8 gAnimMoveTurn;
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT];
+extern u8 gUnknown_02038440;
+
+void ClearBattleAnimationVars(void);
+void DoMoveAnim(u16 move);
+void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim);
+void DestroyAnimSprite(struct Sprite *sprite);
+void DestroyAnimVisualTask(u8 taskId);
+void DestroyAnimSoundTask(u8 taskId);
+bool8 IsAnimBankSpriteVisible(u8 bank);
+void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible);
+bool8 IsContest(void);
+s8 BattleAnimAdjustPanning(s8 pan);
+s8 BattleAnimAdjustPanning2(s8 pan);
+s16 sub_80A52EC(s16 a);
+s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
+
+// battle_anim_80FE840.s
+void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
+void sub_8118FBC(u8 arg0, u8 arg1, u8 arg2, u8 bankIdentity, u8 arg4, void *arg5, u16 *arg6, u16 arg7);
+
+#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
new file mode 100644
index 000000000..4bc6b7b84
--- /dev/null
+++ b/include/battle_controllers.h
@@ -0,0 +1,207 @@
+#ifndef GUARD_BATTLE_CONTROLLERS_H
+#define GUARD_BATTLE_CONTROLLERS_H
+
+#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
+
+#define RESET_ACTION_MOVE_SELECTION 0
+#define RESET_ACTION_SELECTION 1
+#define RESET_MOVE_SELECTION 2
+
+#define BALL_NO_SHAKES 0
+#define BALL_1_SHAKE 1
+#define BALL_2_SHAKES 2
+#define BALL_3_SHAKES_FAIL 3
+#define BALL_3_SHAKES_SUCCESS 4
+#define BALL_TRAINER_BLOCK 5
+
+struct HpAndStatus
+{
+ u16 hp;
+ u32 status;
+};
+
+struct MovePpInfo
+{
+ u16 move[4];
+ u8 pp[4];
+ u8 ppBonuses;
+};
+
+struct ChooseMoveStruct
+{
+ u16 moves[4];
+ u8 currentPp[4];
+ u8 maxPp[4];
+ u16 species;
+ u8 monType1;
+ u8 monType2;
+};
+
+enum
+{
+ CONTROLLER_GETMONDATA,
+ CONTROLLER_GETRAWMONDATA,
+ CONTROLLER_SETMONDATA,
+ CONTROLLER_SETRAWMONDATA,
+ CONTROLLER_LOADMONSPRITE,
+ CONTROLLER_SWITCHINANIM,
+ CONTROLLER_RETURNMONTOBALL,
+ CONTROLLER_DRAWTRAINERPIC,
+ CONTROLLER_TRAINERSLIDE,
+ CONTROLLER_TRAINERSLIDEBACK,
+ CONTROLLER_FAINTANIMATION,
+ CONTROLLER_11,
+ CONTROLLER_12,
+ CONTROLLER_BALLTHROW,
+ CONTROLLER_PAUSE,
+ CONTROLLER_MOVEANIMATION,
+ CONTROLLER_PRINTSTRING,
+ CONTROLLER_PRINTSTRINGPLAYERONLY,
+ CONTROLLER_CHOOSEACTION,
+ CONTROLLER_19,
+ CONTROLLER_CHOOSEMOVE,
+ CONTROLLER_OPENBAG,
+ CONTROLLER_CHOOSEPOKEMON,
+ CONTROLLER_23,
+ CONTROLLER_HEALTHBARUPDATE,
+ CONTROLLER_EXPUPDATE,
+ CONTROLLER_STATUSICONUPDATE,
+ CONTROLLER_STATUSANIMATION,
+ CONTROLLER_STATUSXOR,
+ CONTROLLER_DATATRANSFER,
+ CONTROLLER_DMA3TRANSFER,
+ CONTROLLER_31,
+ CONTROLLER_32,
+ CONTROLLER_33,
+ CONTROLLER_34,
+ CONTROLLER_35,
+ CONTROLLER_36,
+ CONTROLLER_37,
+ CONTROLLER_38,
+ CONTROLLER_39,
+ CONTROLLER_40,
+ CONTROLLER_HITANIMATION,
+ CONTROLLER_42,
+ CONTROLLER_EFFECTIVENESSSOUND,
+ CONTROLLER_PLAYFANFAREORBGM,
+ CONTROLLER_FAINTINGCRY,
+ CONTROLLER_INTROSLIDE,
+ CONTROLLER_INTROTRAINERBALLTHROW,
+ CONTROLLER_DRAWPARTYSTATUSSUMMARY,
+ CONTROLLER_49,
+ CONTROLLER_50,
+ CONTROLLER_SPRITEINVISIBILITY,
+ CONTROLLER_BATTLEANIMATION,
+ CONTROLLER_LINKSTANDBYMSG,
+ CONTROLLER_RESETACTIONMOVESELECTION,
+ CONTROLLER_55,
+ CONTROLLER_56
+};
+
+#define LAST_CONTROLLER_CMD_ID CONTROLLER_56 + 1
+
+// general functions
+void HandleLinkBattleSetup(void);
+void SetUpBattleVarsAndBirchZigzagoon(void);
+void sub_8032768(void);
+void sub_8033648(void);
+void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data);
+
+// emitters
+void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2);
+void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes); // unused
+void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data);
+void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
+void EmitLoadMonSprite(u8 bufferId);
+void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
+void EmitReturnMonToBall(u8 bufferId, u8 arg1);
+void EmitDrawTrainerPic(u8 bufferId);
+void EmitTrainerSlide(u8 bufferId);
+void EmitTrainerSlideBack(u8 bufferId);
+void EmitFaintAnimation(u8 bufferId);
+void EmitCmd11(u8 bufferId); // unused
+void EmitCmd12(u8 bufferId); // unused
+void EmitBallThrow(u8 bufferId, u8 caseId);
+void EmitPause(u8 bufferId, u8 toWait, void *data); // unused
+void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
+void EmitPrintString(u8 bufferId, u16 stringId);
+void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId);
+void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
+void EmitCmd19(u8 bufferId);
+void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
+void EmitOpenBag(u8 bufferId, u8* arg1);
+void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
+void EmitCmd23(u8 bufferId); // unused
+void EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
+void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
+void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2);
+void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
+void EmitStatusXor(u8 bufferId, u8 b); // unused
+void EmitDataTransfer(u8 bufferId, u16 size, void *data);
+void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
+void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused
+void EmitCmd32(u8 bufferId, u16 size, void *c); // unused
+void EmitCmd33(u8 bufferId, u8 arg1, u16 arg2);
+void EmitCmd34(u8 bufferId, u8 b, u8 *c);
+void EmitCmd35(u8 bufferId, u16 b);
+void EmitCmd36(u8 bufferId, u16 b);
+void EmitCmd37(u8 bufferId);
+void EmitCmd38(u8 bufferId, u8 b);
+void EmitCmd39(u8 bufferId);
+void EmitCmd40(u8 bufferId);
+void EmitHitAnimation(u8 bufferId);
+void EmitCmd42(u8 bufferId);
+void EmitEffectivenessSound(u8 bufferId, u16 songId);
+void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
+void EmitFaintingCry(u8 bufferId);
+void EmitIntroSlide(u8 bufferId, u8 terrainId);
+void EmitIntroTrainerBallThrow(u8 bufferId);
+void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
+void EmitCmd49(u8 bufferId);
+void EmitCmd50(u8 bufferId);
+void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
+void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument);
+void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2);
+void EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
+void EmitCmd55(u8 bufferId, u8 arg1);
+
+// player controller
+void SetBankFuncToPlayerBufferRunCommand(void);
+void nullsub_21(void);
+void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
+void ActionSelectionDestroyCursorAt(u8 cursorPos);
+
+// recorded player controller
+void SetBankFuncToRecordedPlayerBufferRunCommand(void);
+
+// opponent controller
+void SetBankFuncToOpponentBufferRunCommand(void);
+
+// player partner controller
+void SetBankFuncToPlayerPartnerBufferRunCommand(void);
+
+// safari controller
+void SetBankFuncToSafariBufferRunCommand(void);
+
+// wally controller
+void SetBankFuncToWallyBufferRunCommand(void);
+
+// recorded opponent controller
+void SetBankFuncToRecordedOpponentBufferRunCommand(void);
+
+// link opponent
+void SetBankFuncToLinkOpponentBufferRunCommand(void);
+
+// link partner
+void SetBankFuncToLinkPartnerBufferRunCommand(void);
+
+#endif // GUARD_BATTLE_CONTROLLERS_H
diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h
new file mode 100644
index 000000000..4f37248cc
--- /dev/null
+++ b/include/battle_frontier_2.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_BATTLE_FRONTIER_2_H
+#define GUARD_BATTLE_FRONTIER_2_H
+
+void sub_81A8934(u8);
+void sub_81A895C(void);
+u16 sub_81A89A0(u8);
+void sub_81A8AF8(void);
+
+#endif // GUARD_BATTLE_FRONTIER_2_H
diff --git a/include/battle_interface.h b/include/battle_interface.h
new file mode 100644
index 000000000..05ea1c021
--- /dev/null
+++ b/include/battle_interface.h
@@ -0,0 +1,54 @@
+#ifndef GUARD_BATTLE_INTERFACE_H
+#define GUARD_BATTLE_INTERFACE_H
+
+#include "battle_controllers.h"
+
+#define TAG_HEALTHBOX_PLAYER1_TILE 0xD6FF
+#define TAG_HEALTHBOX_PLAYER2_TILE 0xD700
+#define TAG_HEALTHBOX_OPPONENT1_TILE 0xD701
+#define TAG_HEALTHBOX_OPPONENT2_TILE 0xD702
+
+#define TAG_HEALTHBOX_SAFARI_TILE 0xD70B
+
+#define TAG_STATUS_SUMMARY_BAR_TILE 0xD70C
+#define TAG_STATUS_SUMMARY_BALLS_TILE 0xD714
+
+#define TAG_HEALTHBOX_PAL 0xD6FF
+#define TAG_STATUS_SUMMARY_BAR_PAL 0xD710
+#define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712
+
+enum
+{
+ HEALTHBOX_ALL,
+ HEALTHBOX_CURRENT_HP,
+ HEALTHBOX_MAX_HP,
+ HEALTHBOX_LEVEL,
+ HEALTHBOX_NICK,
+ HEALTHBOX_HEALTH_BAR,
+ HEALTHBOX_EXP_BAR,
+ HEALTHBOX_UNUSED_7,
+ HEALTHBOX_UNUSED_8,
+ HEALTHBOX_STATUS_ICON,
+ HEALTHBOX_SAFARI_ALL_TEXT,
+ HEALTHBOX_SAFARI_BALLS_TEXT
+};
+
+u8 CreateBankHealthboxSprites(u8 bank);
+u8 CreateSafariPlayerHealthboxSprites(void);
+void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 field_C);
+void SetHealthboxSpriteInvisible(u8 healthboxSpriteId);
+void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
+void DestoryHealthboxSprite(u8 healthboxSpriteId);
+void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly);
+void UpdateOamPriorityInAllHealthboxes(u8 priority);
+void SetBankHealthboxSpritePos(u8 bank);
+void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
+void SwapHpBarsWithHpText(void);
+u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart);
+void sub_8073C30(u8 taskId);
+void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId);
+s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3);
+u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
+u8 GetHPBarLevel(s16 hp, s16 maxhp);
+
+#endif // GUARD_BATTLE_INTERFACE_H
diff --git a/include/battle_message.h b/include/battle_message.h
index ca310ae6f..3b154c5a6 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -1,6 +1,191 @@
#ifndef GUARD_BATTLE_MESSAGE_H
#define GUARD_BATTLE_MESSAGE_H
+// for 0xFD
+
+#define B_TXT_BUFF1 0x0
+#define B_TXT_BUFF2 0x1
+#define B_TXT_COPY_VAR_1 0x2
+#define B_TXT_COPY_VAR_2 0x3
+#define B_TXT_COPY_VAR_3 0x4
+#define B_TXT_PLAYER_MON1_NAME 0x5
+#define B_TXT_OPPONENT_MON1_NAME 0x6
+#define B_TXT_PLAYER_MON2_NAME 0x7
+#define B_TXT_OPPONENT_MON2_NAME 0x8
+#define B_TXT_LINK_PLAYER_MON1_NAME 0x9
+#define B_TXT_LINK_OPPONENT_MON1_NAME 0xA
+#define B_TXT_LINK_PLAYER_MON2_NAME 0xB
+#define B_TXT_LINK_OPPONENT_MON2_NAME 0xC
+#define B_TXT_ATK_NAME_WITH_PREFIX_MON1 0xD
+#define B_TXT_ATK_PARTNER_NAME 0xE
+#define B_TXT_ATK_NAME_WITH_PREFIX 0xF
+#define B_TXT_DEF_NAME_WITH_PREFIX 0x10
+#define B_TXT_EFF_NAME_WITH_PREFIX 0x11 // EFF = short for gEffectBank
+#define B_TXT_ACTIVE_NAME_WITH_PREFIX 0x12
+#define B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX 0x13
+#define B_TXT_CURRENT_MOVE 0x14
+#define B_TXT_LAST_MOVE 0x15
+#define B_TXT_LAST_ITEM 0x16
+#define B_TXT_LAST_ABILITY 0x17
+#define B_TXT_ATK_ABILITY 0x18
+#define B_TXT_DEF_ABILITY 0x19
+#define B_TXT_SCR_ACTIVE_ABILITY 0x1A
+#define B_TXT_EFF_ABILITY 0x1B
+#define B_TXT_TRAINER1_CLASS 0x1C
+#define B_TXT_TRAINER1_NAME 0x1D
+#define B_TXT_1E 0x1E // trainer name for a link player
+#define B_TXT_1F 0x1F // trainer name for a link player
+#define B_TXT_20 0x20 // trainer name for a link player
+#define B_TXT_21 0x21 // trainer name for a link player
+#define B_TXT_22 0x22 // trainer name for a link player
+#define B_TXT_PLAYER_NAME 0x23
+#define B_TXT_TRAINER1_LOSE_TEXT 0x24
+#define B_TXT_TRAINER1_WIN_TEXT 0x25
+#define B_TXT_26 0x26
+#define B_TXT_PC_CREATOR_NAME 0x27
+#define B_TXT_ATK_PREFIX1 0x28
+#define B_TXT_DEF_PREFIX1 0x29
+#define B_TXT_ATK_PREFIX2 0x2A
+#define B_TXT_DEF_PREFIX2 0x2B
+#define B_TXT_ATK_PREFIX3 0x2C
+#define B_TXT_DEF_PREFIX3 0x2D
+#define B_TXT_TRAINER2_CLASS 0x2E
+#define B_TXT_TRAINER2_NAME 0x2F
+#define B_TXT_TRAINER2_LOSE_TEXT 0x30
+#define B_TXT_TRAINER2_WIN_TEXT 0x31
+#define B_TXT_PARTNER_CLASS 0x32
+#define B_TXT_PARTNER_NAME 0x33
+#define B_TXT_BUFF3 0x34
+
+// for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3
+
+#define B_BUFF_STRING 0
+#define B_BUFF_NUMBER 1
+#define B_BUFF_MOVE 2
+#define B_BUFF_TYPE 3
+#define B_BUFF_MON_NICK_WITH_PREFIX 4
+#define B_BUFF_STAT 5
+#define B_BUFF_SPECIES 6
+#define B_BUFF_MON_NICK 7
+#define B_BUFF_NEGATIVE_FLAVOUR 8
+#define B_BUFF_ABILITY 9
+#define B_BUFF_ITEM 10
+
+#define B_BUFF_PLACEHOLDER_BEGIN 0xFD
+#define B_BUFF_EOS 0xFF
+
+#define PREPARE_STAT_BUFFER(textVar, statId) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_STAT; \
+ textVar[2] = statId; \
+ textVar[3] = B_BUFF_EOS; \
+}
+
+#define PREPARE_ABILITY_BUFFER(textVar, abilityId) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_ABILITY; \
+ textVar[2] = abilityId; \
+ textVar[3] = B_BUFF_EOS; \
+}
+
+#define PREPARE_TYPE_BUFFER(textVar, typeId) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_TYPE; \
+ textVar[2] = typeId; \
+ textVar[3] = B_BUFF_EOS; \
+}
+
+#define PREPARE_BYTE_NUMBER_BUFFER(textVar, maxDigits, number) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_NUMBER; \
+ textVar[2] = 1; \
+ textVar[3] = maxDigits; \
+ textVar[4] = (number); \
+ textVar[5] = B_BUFF_EOS; \
+}
+
+#define PREPARE_HWORD_NUMBER_BUFFER(textVar, maxDigits, number) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_NUMBER; \
+ textVar[2] = 2; \
+ textVar[3] = maxDigits; \
+ textVar[4] = (number); \
+ textVar[5] = (number & 0x0000FF00) >> 8; \
+ textVar[6] = B_BUFF_EOS; \
+}
+
+#define PREPARE_WORD_NUMBER_BUFFER(textVar, maxDigits, number) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_NUMBER; \
+ textVar[2] = 4; \
+ textVar[3] = maxDigits; \
+ textVar[4] = (number); \
+ textVar[5] = (number & 0x0000FF00) >> 8; \
+ textVar[6] = (number & 0x00FF0000) >> 16; \
+ textVar[7] = (number & 0xFF000000) >> 24; \
+ textVar[8] = B_BUFF_EOS; \
+}
+
+#define PREPARE_STRING_BUFFER(textVar, stringId) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_STRING; \
+ textVar[2] = stringId; \
+ textVar[3] = (stringId & 0xFF00) >> 8; \
+ textVar[4] = B_BUFF_EOS; \
+}
+
+#define PREPARE_MOVE_BUFFER(textVar, move) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_MOVE; \
+ textVar[2] = move; \
+ textVar[3] = (move & 0xFF00) >> 8; \
+ textVar[4] = B_BUFF_EOS; \
+}
+
+#define PREPARE_ITEM_BUFFER(textVar, item) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_ITEM; \
+ textVar[2] = item; \
+ textVar[3] = (item & 0xFF00) >> 8; \
+ textVar[4] = B_BUFF_EOS; \
+}
+
+#define PREPARE_SPECIES_BUFFER(textVar, species) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_SPECIES; \
+ textVar[2] = species; \
+ textVar[3] = (species & 0xFF00) >> 8; \
+ textVar[4] = B_BUFF_EOS; \
+}
+
+#define PREPARE_MON_NICK_WITH_PREFIX_BUFFER(textVar, bank, partyId) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_MON_NICK_WITH_PREFIX; \
+ textVar[2] = bank; \
+ textVar[3] = partyId; \
+ textVar[4] = B_BUFF_EOS; \
+}
+
+#define PREPARE_MON_NICK_BUFFER(textVar, bank, partyId) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_MON_NICK; \
+ textVar[2] = bank; \
+ textVar[3] = partyId; \
+ textVar[4] = B_BUFF_EOS; \
+}
+
struct StringInfoBattle
{
u16 currentMove;
@@ -17,12 +202,25 @@ struct StringInfoBattle
};
void BufferStringBattle(u16 stringID);
-u32 StrCpyDecodeToDisplayedStringBattle(const u8* src);
-u32 StrCpyDecodeBattle(const u8* src, u8* dst);
+u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src);
+u32 BattleStringExpandPlaceholders(const u8* src, u8* dst);
+void sub_814F9EC(const u8* text, u8 arg1);
+void SetPpNumbersPaletteInMoveSelection(void);
+u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp);
+
+#define TEXT_BUFF_ARRAY_COUNT 16
+
+extern u8 gDisplayedStringBattle[300];
+extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT];
+extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT];
+extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT];
+
+extern const u8* const gStatNamesTable[];
+extern const u8* const gPokeblockWasTooXStringTable[];
+extern const u8* const gRefereeStringsTable[];
+extern const u8* const gStatNamesTable2[];
-extern u8 gBattleTextBuff1[];
-extern u8 gBattleTextBuff2[];
-extern u8 gBattleTextBuff3[];
-extern u8 gDisplayedStringBattle[];
+extern const u16 gMissStringIds[];
+extern const u16 gTrappingMoves[];
#endif // GUARD_BATTLE_MESSAGE_H
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
new file mode 100644
index 000000000..590944f02
--- /dev/null
+++ b/include/battle_script_commands.h
@@ -0,0 +1,58 @@
+#ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H
+#define GUARD_BATTLE_SCRIPT_COMMANDS_H
+
+#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 BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
+#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
+#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
+
+#define ATK48_STAT_NEGATIVE 0x1
+#define ATK48_STAT_BY_TWO 0x2
+#define ATK48_BIT_x4 0x4
+#define ATK48_LOWER_FAIL_CHECK 0x8
+
+#define ATK4F_DONT_CHECK_STATUSES 0x80
+
+#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
+#define VARIOUS_SET_MAGIC_COAT_TARGET 1
+#define VARIOUS_CAN_RUN_FROM_BATTLE 2
+#define VARIOUS_GET_MOVE_TARGET 3
+#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
+#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
+#define VARIOUS_WAIT_CRY 18
+#define VARIOUS_RETURN_OPPONENT_MON1 19
+#define VARIOUS_RETURN_OPPONENT_MON2 20
+#define VARIOUS_SET_TELEPORT_OUTCOME 25
+#define VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC 26
+
+#define ATK80_DMG_CHANGE_SIGN 0
+#define ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP 1
+#define ATK80_DMG_DOUBLED 2
+
+#define STAT_CHANGE_BS_PTR 0x1
+#define STAT_CHANGE_NOT_PROTECT_AFFECTED 0x20
+
+#define STAT_CHANGE_WORKED 0
+#define STAT_CHANGE_DIDNT_WORK 1
+
+void AI_CalcDmg(u8 bankAtk, u8 bankDef);
+u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
+u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
+u8 BankGetTurnOrder(u8 bank);
+void SetMoveEffect(bool8 primary, u8 certain);
+void BattleDestroyCursorAt(u8 cursorPosition);
+void BattleCreateCursorAt(u8 cursorPosition);
+void BufferMoveToLearnIntoBattleTextBuff2(void);
+void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
+bool8 UproarWakeUpCheck(u8 bank);
+
+extern void (* const gBattleScriptingCommandsTable[])(void);
+extern const u8 gUnknown_0831C494[];
+
+#endif // GUARD_BATTLE_SCRIPT_COMMANDS_H
diff --git a/include/battle_setup.h b/include/battle_setup.h
new file mode 100644
index 000000000..e4acd8601
--- /dev/null
+++ b/include/battle_setup.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_BATTLE_SETUP_H
+#define GUARD_BATTLE_SETUP_H
+
+void BattleSetup_StartScriptedWildBattle(void);
+u8 BattleSetup_GetTerrainId(void);
+u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
+
+u8 HasTrainerAlreadyBeenFought(u16);
+void trainer_flag_set(u16);
+void trainer_flag_clear(u16);
+void BattleSetup_StartTrainerBattle(void);
+u8 *BattleSetup_GetScriptAddrAfterBattle(void);
+u8 *BattleSetup_GetTrainerPostBattleScript(void);
+
+#endif // GUARD_BATTLE_SETUP_H
diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h
new file mode 100644
index 000000000..f242284b0
--- /dev/null
+++ b/include/battle_string_ids.h
@@ -0,0 +1,387 @@
+#ifndef GUARD_BATTLE_STRING_IDS_H
+#define GUARD_BATTLE_STRING_IDS_H
+
+#define BATTLESTRINGS_COUNT 369
+
+#define BATTLESTRINGS_ID_ADDER 12 // all battlestrings have its ID + 12, because first 5 are reserved
+
+#define STRINGID_INTROMSG 0
+#define STRINGID_INTROSENDOUT 1
+#define STRINGID_RETURNMON 2
+#define STRINGID_SWITCHINMON 3
+#define STRINGID_USEDMOVE 4
+#define STRINGID_BATTLEEND 5
+
+
+// todo: make some of those names less vague: attacker/target vs pkmn, etc.
+#define STRINGID_TRAINER1LOSETEXT 12
+#define STRINGID_PKMNGAINEDEXP 13
+#define STRINGID_PKMNGREWTOLV 14
+#define STRINGID_PKMNLEARNEDMOVE 15
+#define STRINGID_TRYTOLEARNMOVE1 16
+#define STRINGID_TRYTOLEARNMOVE2 17
+#define STRINGID_TRYTOLEARNMOVE3 18
+#define STRINGID_PKMNFORGOTMOVE 19
+#define STRINGID_STOPLEARNINGMOVE 20
+#define STRINGID_DIDNOTLEARNMOVE 21
+#define STRINGID_PKMNLEARNEDMOVE2 22
+#define STRINGID_ATTACKMISSED 23
+#define STRINGID_PKMNPROTECTEDITSELF 24
+#define STRINGID_STATSWONTINCREASE2 25
+#define STRINGID_AVOIDEDDAMAGE 26
+#define STRINGID_ITDOESNTAFFECT 27
+#define STRINGID_ATTACKERFAINTED 28
+#define STRINGID_TARGETFAINTED 29
+#define STRINGID_PLAYERGOTMONEY 30
+#define STRINGID_PLAYERWHITEOUT 31
+#define STRINGID_PLAYERWHITEOUT2 32
+#define STRINGID_PREVENTSESCAPE 33
+#define STRINGID_HITXTIMES 34
+#define STRINGID_PKMNFELLASLEEP 35
+#define STRINGID_PKMNMADESLEEP 36
+#define STRINGID_PKMNALREADYASLEEP 37
+#define STRINGID_PKMNALREADYASLEEP2 38
+#define STRINGID_PKMNWASNTAFFECTED 39
+#define STRINGID_PKMNWASPOISONED 40
+#define STRINGID_PKMNPOISONEDBY 41
+#define STRINGID_PKMNHURTBYPOISON 42
+#define STRINGID_PKMNALREADYPOISONED 43
+#define STRINGID_PKMNBADLYPOISONED 44
+#define STRINGID_PKMNENERGYDRAINED 45
+#define STRINGID_PKMNWASBURNED 46
+#define STRINGID_PKMNBURNEDBY 47
+#define STRINGID_PKMNHURTBYBURN 48
+#define STRINGID_PKMNWASFROZEN 49
+#define STRINGID_PKMNFROZENBY 50
+#define STRINGID_PKMNISFROZEN 51
+#define STRINGID_PKMNWASDEFROSTED 52
+#define STRINGID_PKMNWASDEFROSTED2 53
+#define STRINGID_PKMNWASDEFROSTEDBY 54
+#define STRINGID_PKMNWASPARALYZED 55
+#define STRINGID_PKMNWASPARALYZEDBY 56
+#define STRINGID_PKMNISPARALYZED 57
+#define STRINGID_PKMNISALREADYPARALYZED 58
+#define STRINGID_PKMNHEALEDPARALYSIS 59
+#define STRINGID_PKMNDREAMEATEN 60
+#define STRINGID_STATSWONTINCREASE 61
+#define STRINGID_STATSWONTDECREASE 62
+#define STRINGID_TEAMSTOPPEDWORKING 63
+#define STRINGID_FOESTOPPEDWORKING 64
+#define STRINGID_PKMNISCONFUSED 65
+#define STRINGID_PKMNHEALEDCONFUSION 66
+#define STRINGID_PKMNWASCONFUSED 67
+#define STRINGID_PKMNALREADYCONFUSED 68
+#define STRINGID_PKMNFELLINLOVE 69
+#define STRINGID_PKMNINLOVE 70
+#define STRINGID_PKMNIMMOBILIZEDBYLOVE 71
+#define STRINGID_PKMNBLOWNAWAY 72
+#define STRINGID_PKMNCHANGEDTYPE 73
+#define STRINGID_PKMNFLINCHED 74
+#define STRINGID_PKMNREGAINEDHEALTH 75
+#define STRINGID_PKMNHPFULL 76
+#define STRINGID_PKMNRAISEDSPDEF 77
+#define STRINGID_PKMNRAISEDDEF 78
+#define STRINGID_PKMNCOVEREDBYVEIL 79
+#define STRINGID_PKMNUSEDSAFEGUARD 80
+#define STRINGID_PKMNSAFEGUARDEXPIRED 81
+#define STRINGID_PKMNWENTTOSLEEP 82
+#define STRINGID_PKMNSLEPTHEALTHY 83
+#define STRINGID_PKMNWHIPPEDWHIRLWIND 84
+#define STRINGID_PKMNTOOKSUNLIGHT 85
+#define STRINGID_PKMNLOWEREDHEAD 86
+#define STRINGID_PKMNISGLOWING 87
+#define STRINGID_PKMNFLEWHIGH 88
+#define STRINGID_PKMNDUGHOLE 89
+#define STRINGID_PKMNSQUEEZEDBYBIND 90
+#define STRINGID_PKMNTRAPPEDINVORTEX 91
+#define STRINGID_PKMNWRAPPEDBY 92
+#define STRINGID_PKMNCLAMPED 93
+#define STRINGID_PKMNHURTBY 94
+#define STRINGID_PKMNFREEDFROM 95
+#define STRINGID_PKMNCRASHED 96
+#define STRINGID_PKMNSHROUDEDINMIST 97
+#define STRINGID_PKMNPROTECTEDBYMIST 98
+#define STRINGID_PKMNGETTINGPUMPED 99
+#define STRINGID_PKMNHITWITHRECOIL 100
+#define STRINGID_PKMNPROTECTEDITSELF2 101
+#define STRINGID_PKMNBUFFETEDBYSANDSTORM 102
+#define STRINGID_PKMNPELTEDBYHAIL 103
+#define STRINGID_PKMNSEEDED 104
+#define STRINGID_PKMNEVADEDATTACK 105
+#define STRINGID_PKMNSAPPEDBYLEECHSEED 106
+#define STRINGID_PKMNFASTASLEEP 107
+#define STRINGID_PKMNWOKEUP 108
+#define STRINGID_PKMNUPROARKEPTAWAKE 109
+#define STRINGID_PKMNWOKEUPINUPROAR 110
+#define STRINGID_PKMNCAUSEDUPROAR 111
+#define STRINGID_PKMNMAKINGUPROAR 112
+#define STRINGID_PKMNCALMEDDOWN 113
+#define STRINGID_PKMNCANTSLEEPINUPROAR 114
+#define STRINGID_PKMNSTOCKPILED 115
+#define STRINGID_PKMNCANTSTOCKPILE 116
+#define STRINGID_PKMNCANTSLEEPINUPROAR2 117
+#define STRINGID_UPROARKEPTPKMNAWAKE 118
+#define STRINGID_PKMNSTAYEDAWAKEUSING 119
+#define STRINGID_PKMNSTORINGENERGY 120
+#define STRINGID_PKMNUNLEASHEDENERGY 121
+#define STRINGID_PKMNFATIGUECONFUSION 122
+#define STRINGID_PKMNPICKEDUPITEM 123
+#define STRINGID_PKMNUNAFFECTED 124
+#define STRINGID_PKMNTRANSFORMEDINTO 125
+#define STRINGID_PKMNMADESUBSTITUTE 126
+#define STRINGID_PKMNHASSUBSTITUTE 127
+#define STRINGID_SUBSTITUTEDAMAGED 128
+#define STRINGID_PKMNSUBSTITUTEFADED 129
+#define STRINGID_PKMNMUSTRECHARGE 130
+#define STRINGID_PKMNRAGEBUILDING 131
+#define STRINGID_PKMNMOVEWASDISABLED 132
+#define STRINGID_PKMNMOVEISDISABLED 133
+#define STRINGID_PKMNMOVEDISABLEDNOMORE 134
+#define STRINGID_PKMNGOTENCORE 135
+#define STRINGID_PKMNENCOREENDED 136
+#define STRINGID_PKMNTOOKAIM 137
+#define STRINGID_PKMNSKETCHEDMOVE 138
+#define STRINGID_PKMNTRYINGTOTAKEFOE 139
+#define STRINGID_PKMNTOOKFOE 140
+#define STRINGID_PKMNREDUCEDPP 141
+#define STRINGID_PKMNSTOLEITEM 142
+#define STRINGID_TARGETCANTESCAPENOW 143
+#define STRINGID_PKMNFELLINTONIGHTMARE 144
+#define STRINGID_PKMNLOCKEDINNIGHTMARE 145
+#define STRINGID_PKMNLAIDCURSE 146
+#define STRINGID_PKMNAFFLICTEDBYCURSE 147
+#define STRINGID_SPIKESSCATTERED 148
+#define STRINGID_PKMNHURTBYSPIKES 149
+#define STRINGID_PKMNIDENTIFIED 150
+#define STRINGID_PKMNPERISHCOUNTFELL 151
+#define STRINGID_PKMNBRACEDITSELF 152
+#define STRINGID_PKMNENDUREDHIT 153
+#define STRINGID_MAGNITUDESTRENGTH 154
+#define STRINGID_PKMNCUTHPMAXEDATTACK 155
+#define STRINGID_PKMNCOPIEDSTATCHANGES 156
+#define STRINGID_PKMNGOTFREE 157
+#define STRINGID_PKMNSHEDLEECHSEED 158
+#define STRINGID_PKMNBLEWAWAYSPIKES 159
+#define STRINGID_PKMNFLEDFROMBATTLE 160
+#define STRINGID_PKMNFORESAWATTACK 161
+#define STRINGID_PKMNTOOKATTACK 162
+#define STRINGID_PKMNATTACK 163
+#define STRINGID_PKMNCENTERATTENTION 164
+#define STRINGID_PKMNCHARGINGPOWER 165
+#define STRINGID_NATUREPOWERTURNEDINTO 166
+#define STRINGID_PKMNSTATUSNORMAL 167
+#define STRINGID_PKMNHASNOMOVESLEFT 168
+#define STRINGID_PKMNSUBJECTEDTOTORMENT 169
+#define STRINGID_PKMNCANTUSEMOVETORMENT 170
+#define STRINGID_PKMNTIGHTENINGFOCUS 171
+#define STRINGID_PKMNFELLFORTAUNT 172
+#define STRINGID_PKMNCANTUSEMOVETAUNT 173
+#define STRINGID_PKMNREADYTOHELP 174
+#define STRINGID_PKMNSWITCHEDITEMS 175
+#define STRINGID_PKMNCOPIEDFOE 176
+#define STRINGID_PKMNMADEWISH 177
+#define STRINGID_PKMNWISHCAMETRUE 178
+#define STRINGID_PKMNPLANTEDROOTS 179
+#define STRINGID_PKMNABSORBEDNUTRIENTS 180
+#define STRINGID_PKMNANCHOREDITSELF 181
+#define STRINGID_PKMNWASMADEDROWSY 182
+#define STRINGID_PKMNKNOCKEDOFF 183
+#define STRINGID_PKMNSWAPPEDABILITIES 184
+#define STRINGID_PKMNSEALEDOPPONENTMOVE 185
+#define STRINGID_PKMNCANTUSEMOVESEALED 186
+#define STRINGID_PKMNWANTSGRUDGE 187
+#define STRINGID_PKMNLOSTPPGRUDGE 188
+#define STRINGID_PKMNSHROUDEDITSELF 189
+#define STRINGID_PKMNMOVEBOUNCED 190
+#define STRINGID_PKMNWAITSFORTARGET 191
+#define STRINGID_PKMNSNATCHEDMOVE 192
+#define STRINGID_PKMNMADEITRAIN 193
+#define STRINGID_PKMNRAISEDSPEED 194
+#define STRINGID_PKMNPROTECTEDBY 195
+#define STRINGID_PKMNPREVENTSUSAGE 196
+#define STRINGID_PKMNRESTOREDHPUSING 197
+#define STRINGID_PKMNCHANGEDTYPEWITH 198
+#define STRINGID_PKMNPREVENTSPARALYSISWITH 199
+#define STRINGID_PKMNPREVENTSROMANCEWITH 200
+#define STRINGID_PKMNPREVENTSPOISONINGWITH 201
+#define STRINGID_PKMNPREVENTSCONFUSIONWITH 202
+#define STRINGID_PKMNRAISEDFIREPOWERWITH 203
+#define STRINGID_PKMNANCHORSITSELFWITH 204
+#define STRINGID_PKMNCUTSATTACKWITH 205
+#define STRINGID_PKMNPREVENTSSTATLOSSWITH 206
+#define STRINGID_PKMNHURTSWITH 207
+#define STRINGID_PKMNTRACED 208
+#define STRINGID_STATSHARPLY 209
+#define STRINGID_STATROSE 210
+#define STRINGID_STATHARSHLY 211
+#define STRINGID_STATFELL 212
+#define STRINGID_PKMNSSTATCHANGED 213
+#define STRINGID_PKMNSSTATCHANGED2 214
+#define STRINGID_PKMNSSTATCHANGED3 215
+#define STRINGID_PKMNSSTATCHANGED4 216
+#define STRINGID_CRITICALHIT 217
+#define STRINGID_ONEHITKO 218
+#define STRINGID_123POOF 219
+#define STRINGID_ANDELLIPSIS 220
+#define STRINGID_NOTVERYEFFECTIVE 221
+#define STRINGID_SUPEREFFECTIVE 222
+#define STRINGID_GOTAWAYSAFELY 223
+#define STRINGID_WILDPKMNFLED 224
+#define STRINGID_NORUNNINGFROMTRAINERS 225
+#define STRINGID_CANTESCAPE 226
+#define STRINGID_DONTLEAVEBIRCH 227
+#define STRINGID_BUTNOTHINGHAPPENED 228
+#define STRINGID_BUTITFAILED 229
+#define STRINGID_ITHURTCONFUSION 230
+#define STRINGID_MIRRORMOVEFAILED 231
+#define STRINGID_STARTEDTORAIN 232
+#define STRINGID_DOWNPOURSTARTED 233
+#define STRINGID_RAINCONTINUES 234
+#define STRINGID_DOWNPOURCONTINUES 235
+#define STRINGID_RAINSTOPPED 236
+#define STRINGID_SANDSTORMBREWED 237
+#define STRINGID_SANDSTORMRAGES 238
+#define STRINGID_SANDSTORMSUBSIDED 239
+#define STRINGID_SUNLIGHTGOTBRIGHT 240
+#define STRINGID_SUNLIGHTSTRONG 241
+#define STRINGID_SUNLIGHTFADED 242
+#define STRINGID_STARTEDHAIL 243
+#define STRINGID_HAILCONTINUES 244
+#define STRINGID_HAILSTOPPED 245
+#define STRINGID_FAILEDTOSPITUP 246
+#define STRINGID_FAILEDTOSWALLOW 247
+#define STRINGID_WINDBECAMEHEATWAVE 248
+#define STRINGID_STATCHANGESGONE 249
+#define STRINGID_COINSSCATTERED 250
+#define STRINGID_TOOWEAKFORSUBSTITUTE 251
+#define STRINGID_SHAREDPAIN 252
+#define STRINGID_BELLCHIMED 253
+#define STRINGID_FAINTINTHREE 254
+#define STRINGID_NOPPLEFT 255
+#define STRINGID_BUTNOPPLEFT 256
+#define STRINGID_PLAYERUSEDITEM 257
+#define STRINGID_WALLYUSEDITEM 258
+#define STRINGID_TRAINERBLOCKEDBALL 259
+#define STRINGID_DONTBEATHIEF 260
+#define STRINGID_ITDODGEDBALL 261
+#define STRINGID_YOUMISSEDPKMN 262
+#define STRINGID_PKMNBROKEFREE 263
+#define STRINGID_ITAPPEAREDCAUGHT 264
+#define STRINGID_AARGHALMOSTHADIT 265
+#define STRINGID_SHOOTSOCLOSE 266
+#define STRINGID_GOTCHAPKMNCAUGHT 267
+#define STRINGID_GOTCHAPKMNCAUGHT2 268
+#define STRINGID_GIVENICKNAMECAPTURED 269
+#define STRINGID_PKMNSENTTOPC 270
+#define STRINGID_PKMNDATAADDEDTODEX 271
+#define STRINGID_ITISRAINING 272
+#define STRINGID_SANDSTORMISRAGING 273
+#define STRINGID_CANTESCAPE2 274
+#define STRINGID_PKMNIGNORESASLEEP 275
+#define STRINGID_PKMNIGNOREDORDERS 276
+#define STRINGID_PKMNBEGANTONAP 277
+#define STRINGID_PKMNLOAFING 278
+#define STRINGID_PKMNWONTOBEY 279
+#define STRINGID_PKMNTURNEDAWAY 280
+#define STRINGID_PKMNPRETENDNOTNOTICE 281
+#define STRINGID_ENEMYABOUTTOSWITCHPKMN 282
+#define STRINGID_CREPTCLOSER 283
+#define STRINGID_CANTGETCLOSER 284
+#define STRINGID_PKMNWATCHINGCAREFULLY 285
+#define STRINGID_PKMNCURIOUSABOUTX 286
+#define STRINGID_PKMNENTHRALLEDBYX 287
+#define STRINGID_PKMNIGNOREDX 288
+#define STRINGID_THREWPOKEBLOCKATPKMN 289
+#define STRINGID_OUTOFSAFARIBALLS 290
+#define STRINGID_PKMNSITEMCUREDPARALYSIS 291
+#define STRINGID_PKMNSITEMCUREDPOISON 292
+#define STRINGID_PKMNSITEMHEALEDBURN 293
+#define STRINGID_PKMNSITEMDEFROSTEDIT 294
+#define STRINGID_PKMNSITEMWOKEIT 295
+#define STRINGID_PKMNSITEMSNAPPEDOUT 296
+#define STRINGID_PKMNSITEMCUREDPROBLEM 297
+#define STRINGID_PKMNSITEMRESTOREDHEALTH 298
+#define STRINGID_PKMNSITEMRESTOREDPP 299
+#define STRINGID_PKMNSITEMRESTOREDSTATUS 300
+#define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301
+#define STRINGID_ITEMALLOWSONLYYMOVE 302
+#define STRINGID_PKMNHUNGONWITHX 303
+#define STRINGID_EMPTYSTRING3 304
+#define STRINGID_PKMNSXPREVENTSBURNS 305
+#define STRINGID_PKMNSXBLOCKSY 306
+#define STRINGID_PKMNSXRESTOREDHPALITTLE2 307
+#define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308
+#define STRINGID_PKMNSXPREVENTSYLOSS 309
+#define STRINGID_PKMNSXINFATUATEDY 310
+#define STRINGID_PKMNSXMADEYINEFFECTIVE 311
+#define STRINGID_PKMNSXCUREDYPROBLEM 312
+#define STRINGID_ITSUCKEDLIQUIDOOZE 313
+#define STRINGID_PKMNTRANSFORMED 314
+#define STRINGID_ELECTRICITYWEAKENED 315
+#define STRINGID_FIREWEAKENED 316
+#define STRINGID_PKMNHIDUNDERWATER 317
+#define STRINGID_PKMNSPRANGUP 318
+#define STRINGID_HMMOVESCANTBEFORGOTTEN 319
+#define STRINGID_XFOUNDONEY 320
+#define STRINGID_PLAYERDEFEATEDTRAINER1 321
+#define STRINGID_SOOTHINGAROMA 322
+#define STRINGID_ITEMSCANTBEUSEDNOW 323
+#define STRINGID_FORXCOMMAYZ 324
+#define STRINGID_USINGXTHEYOFZN 325
+#define STRINGID_PKMNUSEDXTOGETPUMPED 326
+#define STRINGID_PKMNSXMADEYUSELESS 327
+#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328
+#define STRINGID_EMPTYSTRING4 329
+#define STRINGID_ABOOSTED 330
+#define STRINGID_PKMNSXINTENSIFIEDSUN 331
+#define STRINGID_PKMNMAKESGROUNDMISS 332
+#define STRINGID_YOUTHROWABALLNOWRIGHT 333
+#define STRINGID_PKMNSXTOOKATTACK 334
+#define STRINGID_PKMNCHOSEXASDESTINY 335
+#define STRINGID_PKMNLOSTFOCUS 336
+#define STRINGID_USENEXTPKMN 337
+#define STRINGID_PKMNFLEDUSINGITS 338
+#define STRINGID_PKMNFLEDUSING 339
+#define STRINGID_PKMNWASDRAGGEDOUT 340
+#define STRINGID_PREVENTEDFROMWORKING 341
+#define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342
+#define STRINGID_TRAINER1USEDITEM 343
+#define STRINGID_BOXISFULL 344
+#define STRINGID_PKMNAVOIDEDATTACK 345
+#define STRINGID_PKMNSXMADEITINEFFECTIVE 346
+#define STRINGID_PKMNSXPREVENTSFLINCHING 347
+#define STRINGID_PKMNALREADYHASBURN 348
+#define STRINGID_STATSWONTDECREASE2 349
+#define STRINGID_PKMNSXBLOCKSY2 350
+#define STRINGID_PKMNSXWOREOFF 351
+#define STRINGID_PKMNRAISEDDEFALITTLE 352
+#define STRINGID_PKMNRAISEDSPDEFALITTLE 353
+#define STRINGID_THEWALLSHATTERED 354
+#define STRINGID_PKMNSXPREVENTSYSZ 355
+#define STRINGID_PKMNSXCUREDITSYPROBLEM 356
+#define STRINGID_ATTACKERCANTESCAPE 357
+#define STRINGID_PKMNOBTAINEDX 358
+#define STRINGID_PKMNOBTAINEDX2 359
+#define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360
+#define STRINGID_BUTNOEFFECT 361
+#define STRINGID_PKMNSXHADNOEFFECTONY 362
+#define STRINGID_TWOENEMIESDEFEATED 363
+#define STRINGID_TRAINER2LOSETEXT 364
+#define STRINGID_PKMNINCAPABLEOFPOWER 365
+#define STRINGID_GLINTAPPEARSINEYE 366
+#define STRINGID_PKMNGETTINGINTOPOSITION 367
+#define STRINGID_PKMNBEGANGROWLINGDEEPLY 368
+#define STRINGID_PKMNEAGERFORMORE 369
+#define STRINGID_DEFEATEDOPPONENTBYREFEREE 370
+#define STRINGID_LOSTTOOPPONENTBYREFEREE 371
+#define STRINGID_TIEDOPPONENTBYREFEREE 372
+#define STRINGID_QUESTIONFORFEITMATCH 373
+#define STRINGID_FORFEITEDMATCH 374
+#define STRINGID_PKMNTRANSFERREDSOMEONESPC 375
+#define STRINGID_PKMNTRANSFERREDLANETTESPC 376
+#define STRINGID_PKMNBOXSOMEONESPCFULL 377
+#define STRINGID_PKMNBOXLANETTESPCFULL 378
+#define STRINGID_TRAINER1WINTEXT 379
+#define STRINGID_TRAINER2WINTEXT 380
+
+#endif // GUARD_BATTLE_STRING_IDS_H
diff --git a/include/battle_tower.h b/include/battle_tower.h
new file mode 100644
index 000000000..25b439c1b
--- /dev/null
+++ b/include/battle_tower.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BATTLE_TOWER_H
+#define GUARD_BATTLE_TOWER_H
+
+u16 sub_8164FCC(u8, u8);
+
+#endif //GUARD_BATTLE_TOWER_H
diff --git a/include/battle_transition.h b/include/battle_transition.h
new file mode 100644
index 000000000..1603f5c93
--- /dev/null
+++ b/include/battle_transition.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BATTLE_TRANSITION_H
+#define GUARD_BATTLE_TRANSITION_H
+
+void sub_8149DFC(u8 a1);
+
+#endif // GUARD_BATTLE_TRANSITION_H
diff --git a/include/battle_util.h b/include/battle_util.h
new file mode 100644
index 000000000..b21b250c4
--- /dev/null
+++ b/include/battle_util.h
@@ -0,0 +1,84 @@
+#ifndef GUARD_BATTLE_UTIL_H
+#define GUARD_BATTLE_UTIL_H
+
+#define MOVE_LIMITATION_ZEROMOVE (1 << 0)
+#define MOVE_LIMITATION_PP (1 << 1)
+#define MOVE_LIMITATION_DISABLED (1 << 2)
+#define MOVE_LIMITATION_TORMENTED (1 << 3)
+#define MOVE_LIMITATION_TAUNT (1 << 4)
+#define MOVE_LIMITATION_IMPRISION (1 << 5)
+
+#define ABILITYEFFECT_ON_SWITCHIN 0x0
+#define ABILITYEFFECT_ENDTURN 0x1
+#define ABILITYEFFECT_MOVES_BLOCK 0x2
+#define ABILITYEFFECT_ABSORBING 0x3
+#define ABILITYEFFECT_CONTACT 0x4
+#define ABILITYEFFECT_IMMUNITY 0x5
+#define ABILITYEFFECT_FORECAST 0x6
+#define ABILITYEFFECT_SYNCHRONIZE 0x7
+#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
+#define ABILITYEFFECT_INTIMIDATE1 0x9
+#define ABILITYEFFECT_INTIMIDATE2 0xA
+#define ABILITYEFFECT_TRACE 0xB
+#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
+#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD
+#define ABILITYEFFECT_FIELD_SPORT 0xE
+#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF
+#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10
+#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11
+#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
+#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
+#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF
+
+#define ITEMEFFECT_ON_SWITCH_IN 0x0
+
+#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 WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0)))
+
+#define BS_GET_TARGET 0
+#define BS_GET_ATTACKER 1
+#define BS_GET_EFFECT_BANK 2
+#define BS_GET_SCRIPTING_BANK 10
+#define BS_GET_PLAYER1 11
+#define BS_GET_OPPONENT1 12
+#define BS_GET_PLAYER2 13
+#define BS_GET_OPPONENT2 14
+
+u8 GetBattleBank(u8 caseId);
+void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move);
+void PressurePPLoseOnUsingPerishSong(u8 bankAtk);
+void PressurePPLoseOnUsingImprision(u8 bankAtk);
+void MarkAllBufferBanksForExecution(void); // unused
+void MarkBufferBankForExecution(u8 bank);
+void sub_803F850(u8 arg0);
+void CancelMultiTurnMoves(u8 bank);
+bool8 WasUnableToUseMove(u8 bank);
+void PrepareStringBattle(u16 stringId, u8 bank);
+void ResetSentPokesToOpponentValue(void);
+void sub_803F9EC(u8 bank);
+void sub_803FA70(u8 bank);
+void BattleScriptPush(const u8* bsPtr);
+void BattleScriptPushCursor(void);
+void BattleScriptPop(void);
+u8 TrySetCantSelectMoveBattleScript(void);
+u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check);
+bool8 AreAllMovesUnusable(void);
+u8 GetImprisonedMovesCount(u8 bank, u16 move);
+u8 UpdateTurnCounters(void);
+u8 TurnBasedEffects(void);
+bool8 sub_8041364(void);
+bool8 sub_8041728(void);
+void TryClearRageStatuses(void);
+u8 AtkCanceller_UnableToUseMove(void);
+bool8 sub_80423F4(u8 bank, u8 r1, u8 r2);
+u8 CastformDataTypeChange(u8 bank);
+u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg);
+void BattleScriptExecute(const u8* BS_ptr);
+void BattleScriptPushCursorAndCallback(const u8* BS_ptr);
+u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn);
+void ClearFuryCutterDestinyBondGrudge(u8 bank);
+void HandleAction_RunBattleScript(void);
+u8 GetMoveTarget(u16 move, u8 useMoveTarget);
+u8 IsPokeDisobedient(void);
+
+#endif // GUARD_BATTLE_UTIL_H
diff --git a/include/bg.h b/include/bg.h
index 0dcb84a34..0c6b4ac26 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -1,6 +1,16 @@
#ifndef GUARD_BG_H
#define GUARD_BG_H
+struct BGCntrlBitfield // for the I/O registers
+{
+ volatile u16 priority:2;
+ volatile u16 charBaseBlock:2;
+ volatile u16 field_0_2:4;
+ volatile u16 field_1_0:5;
+ volatile u16 areaOverflowMode:1;
+ volatile u16 screenSize:2;
+};
+
enum
{
BG_CTRL_ATTR_VISIBLE = 1,
diff --git a/include/blend_palette.h b/include/blend_palette.h
new file mode 100644
index 000000000..1db3f4eb0
--- /dev/null
+++ b/include/blend_palette.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_BLEND_PALETTE_H
+#define GUARD_BLEND_PALETTE_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void BlendPalette(u16, u16, u8, u16);
+
+#endif //GUARD_BLEND_PALETTE_H
diff --git a/include/calculate_base_damage.h b/include/calculate_base_damage.h
new file mode 100644
index 000000000..e9146c188
--- /dev/null
+++ b/include/calculate_base_damage.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_CALCULATE_BASE_DAMAGE_H
+#define GUARD_CALCULATE_BASE_DAMAGE_H
+
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
+
+#endif // GUARD_CALCULATE_BASE_DAMAGE_H
diff --git a/include/clock.h b/include/clock.h
new file mode 100644
index 000000000..4e6560c91
--- /dev/null
+++ b/include/clock.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_CLOCK_H
+#define GUARD_CLOCK_H
+
+// TODO: time of day and seconds in a day defines
+
+void DoTimeBasedEvents(void);
+
+#endif
diff --git a/include/coins.h b/include/coins.h
index 43434b227..996519605 100644
--- a/include/coins.h
+++ b/include/coins.h
@@ -6,7 +6,7 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y);
void HideCoinsWindow(void);
u16 GetCoins(void);
void SetCoins(u16 coinAmount);
-bool8 AddCoins(u16 toAdd);
-bool8 SubtractCoins(u16 toSub);
+bool8 GiveCoins(u16 toAdd);
+bool8 TakeCoins(u16 toSub);
#endif // GUARD_COINS_H
diff --git a/include/contest.h b/include/contest.h
new file mode 100644
index 000000000..7dcde7da2
--- /dev/null
+++ b/include/contest.h
@@ -0,0 +1,41 @@
+#ifndef GUARD_CONTEST_H
+#define GUARD_CONTEST_H
+
+struct ContestStruct_02039E00
+{
+ u16 unk_00;
+ u8 unk_02[11];
+ u8 unk_0d[8];
+ u8 filler_15[9];
+ u8 filler_1E[34];
+};
+
+extern struct ContestStruct_02039E00 gUnknown_02039E00[4];
+extern u8 gUnknown_02039F24;
+extern u16 gScriptContestCategory;
+extern u8 gUnknown_02039F2E;
+extern u8 gUnknown_02039F30;
+
+struct ContestStruct_field_18
+{
+ // unknown size
+ u16 field_0;
+};
+
+struct ContestResources
+{
+ void *field_0;
+ void *field_4;
+ void *field_8;
+ void *field_C;
+ void *field_10;
+ void *field_14;
+ struct ContestStruct_field_18 *field_18;
+};
+
+extern struct ContestResources *gContestResources;
+
+bool8 IsSpeciesNotUnown(u16 species);
+void LoadContestBgAfterMoveAnim(void);
+
+#endif //GUARD_CONTEST_H
diff --git a/include/contest_link_80F57C4.h b/include/contest_link_80F57C4.h
new file mode 100644
index 000000000..98523c175
--- /dev/null
+++ b/include/contest_link_80F57C4.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_CONTEST_LINK_80F57C4_H
+#define GUARD_CONTEST_LINK_80F57C4_H
+
+void sub_80F840C(void);
+void sub_80F8484(void);
+void sub_80F84C4(u8);
+
+#endif // GUARD_CONTEST_LINK_80F57C4_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
new file mode 100644
index 000000000..f8366a997
--- /dev/null
+++ b/include/contest_painting.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_CONTESTPAINTING_H
+#define GUARD_CONTESTPAINTING_H
+
+void sub_812FDA8(u32);
+
+#endif
diff --git a/include/data/decoration/description.h b/include/data/decoration/description.h
new file mode 100644
index 000000000..ba4c3dd54
--- /dev/null
+++ b/include/data/decoration/description.h
@@ -0,0 +1,581 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_DATA_DECORATION_DESCRIPTION_H
+#define GUARD_DATA_DECORATION_DESCRIPTION_H
+
+const u8 DecorDesc_SMALL_DESK[] = _(
+ "A small desk built\n"
+ "for one.");
+
+const u8 DecorDesc_POKEMON_DESK[] = _(
+ "A small desk built in\n"
+ "the shape of a POKé\n"
+ "BALL.");
+
+const u8 DecorDesc_HEAVY_DESK[] = _(
+ "A large desk made\n"
+ "of steel. Put some\n"
+ "decorations on it.");
+
+const u8 DecorDesc_RAGGED_DESK[] = _(
+ "A large desk made\n"
+ "of wood. Put some\n"
+ "decorations on it.");
+
+const u8 DecorDesc_COMFORT_DESK[] = _(
+ "A large desk made\n"
+ "of leaves. Put some\n"
+ "decorations on it.");
+
+const u8 DecorDesc_PRETTY_DESK[] = _(
+ "A huge desk made\n"
+ "of glass. Holds lots\n"
+ "of decorations.");
+
+const u8 DecorDesc_BRICK_DESK[] = _(
+ "A huge desk made\n"
+ "of brick. Holds lots\n"
+ "of decorations.");
+
+const u8 DecorDesc_CAMP_DESK[] = _(
+ "A huge desk made\n"
+ "of logs. Put lots of\n"
+ "decorations on it.");
+
+const u8 DecorDesc_HARD_DESK[] = _(
+ "A huge desk made\n"
+ "of rocks. Holds\n"
+ "many decorations.");
+
+const u8 DecorDesc_SMALL_CHAIR[] = _(
+ "A small chair made\n"
+ "for one.");
+
+const u8 DecorDesc_POKEMON_CHAIR[] = _(
+ "A small chair built\n"
+ "in the shape of a\n"
+ "POKé BALL.");
+
+const u8 DecorDesc_HEAVY_CHAIR[] = _(
+ "A small chair made\n"
+ "of steel.");
+
+const u8 DecorDesc_PRETTY_CHAIR[] = _(
+ "A small chair made\n"
+ "of glass.");
+
+const u8 DecorDesc_COMFORT_CHAIR[] = _(
+ "A small chair made\n"
+ "of leaves.");
+
+const u8 DecorDesc_RAGGED_CHAIR[] = _(
+ "A small chair made\n"
+ "of wood.");
+
+const u8 DecorDesc_BRICK_CHAIR[] = _(
+ "A small chair made\n"
+ "of brick.");
+
+const u8 DecorDesc_CAMP_CHAIR[] = _(
+ "A small chair made\n"
+ "of logs.");
+
+const u8 DecorDesc_HARD_CHAIR[] = _(
+ "A small chair made\n"
+ "of rock.");
+
+const u8 DecorDesc_RED_PLANT[] = _(
+ "A vivid red potted\n"
+ "plant.");
+
+const u8 DecorDesc_TROPICAL_PLANT[] = _(
+ "A flowering tropical\n"
+ "plant in a pot.");
+
+const u8 DecorDesc_PRETTY_FLOWERS[] = _(
+ "A pot of cute\n"
+ "flowers.");
+
+const u8 DecorDesc_COLORFUL_PLANT[] = _(
+ "A large pot with\n"
+ "many colorful\n"
+ "flowers.");
+
+const u8 DecorDesc_BIG_PLANT[] = _(
+ "A large, umbrella-\n"
+ "shaped plant in a\n"
+ "big pot.");
+
+const u8 DecorDesc_GORGEOUS_PLANT[] = _(
+ "A large, impressive\n"
+ "plant in a big pot.");
+
+const u8 DecorDesc_RED_BRICK[] = _(
+ "A red-colored brick.\n"
+ "Decorations can be\n"
+ "placed on top.");
+
+const u8 DecorDesc_YELLOW_BRICK[] = _(
+ "A yellow-colored\n"
+ "brick. Put some\n"
+ "decorations on top.");
+
+const u8 DecorDesc_BLUE_BRICK[] = _(
+ "A blue-colored\n"
+ "brick. Put some\n"
+ "decorations on top.");
+
+const u8 DecorDesc_RED_BALLOON[] = _(
+ "A red balloon filled\n"
+ "with water. Bursts\n"
+ "if stepped on.");
+
+const u8 DecorDesc_BLUE_BALLOON[] = _(
+ "A blue balloon filled\n"
+ "with water. Bursts\n"
+ "if stepped on.");
+
+const u8 DecorDesc_YELLOW_BALLOON[] = _(
+ "A yellow balloon\n"
+ "filled with water.\n"
+ "Pops if stepped on.");
+
+const u8 DecorDesc_RED_TENT[] = _(
+ "A large red tent.\n"
+ "You can hide inside\n"
+ "it.");
+
+const u8 DecorDesc_BLUE_TENT[] = _(
+ "A large blue tent.\n"
+ "You can hide inside\n"
+ "it.");
+
+const u8 DecorDesc_SOLID_BOARD[] = _(
+ "Place over a hole to\n"
+ "cross to the other\n"
+ "side.");
+
+const u8 DecorDesc_SLIDE[] = _(
+ "Use to slide down\n"
+ "from the platform.");
+
+const u8 DecorDesc_FENCE_LENGTH[] = _(
+ "A small fence that\n"
+ "blocks passage.");
+
+const u8 DecorDesc_FENCE_WIDTH[] = _(
+ "A small fence that\n"
+ "blocks passage.");
+
+const u8 DecorDesc_TIRE[] = _(
+ "An old large tire.\n"
+ "Decorations can be\n"
+ "placed on top.");
+
+const u8 DecorDesc_STAND[] = _(
+ "A large pedestal\n"
+ "with steps.");
+
+const u8 DecorDesc_MUD_BALL[] = _(
+ "A large ball of mud.\n"
+ "Crumbles if stepped\n"
+ "on.");
+
+const u8 DecorDesc_BREAKABLE_DOOR[] = _(
+ "A weird door that\n"
+ "people can walk\n"
+ "right through.");
+
+const u8 DecorDesc_SAND_ORNAMENT[] = _(
+ "An ornament made\n"
+ "of sand. Crumbles if\n"
+ "touched.");
+
+const u8 DecorDesc_SILVER_SHIELD[] = _(
+ "Awarded for 50\n"
+ "straight wins at\n"
+ "the BATTLE TOWER.");
+
+const u8 DecorDesc_GOLD_SHIELD[] = _(
+ "Awarded for 100\n"
+ "straight wins at\n"
+ "the BATTLE TOWER.");
+
+const u8 DecorDesc_GLASS_ORNAMENT[] = _(
+ "A glass replica of\n"
+ "a famous sculpture\n"
+ "at the ART MUSEUM.");
+
+const u8 DecorDesc_TV[] = _(
+ "A small, gray-\n"
+ "colored toy TV.");
+
+const u8 DecorDesc_ROUND_TV[] = _(
+ "A toy TV modeled\n"
+ "in the image of a\n"
+ "SEEDOT.");
+
+const u8 DecorDesc_CUTE_TV[] = _(
+ "A toy TV modeled\n"
+ "in the image of a\n"
+ "SKITTY.");
+
+const u8 DecorDesc_GLITTER_MAT[] = _(
+ "An odd mat that\n"
+ "glitters if stepped\n"
+ "on.");
+
+const u8 DecorDesc_JUMP_MAT[] = _(
+ "A trick mat that\n"
+ "jumps when it is\n"
+ "stepped on.");
+
+const u8 DecorDesc_SPIN_MAT[] = _(
+ "A trick mat that\n"
+ "spins around when\n"
+ "stepped on.");
+
+const u8 DecorDesc_C_LOW_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a low C note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_D_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a D note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_E_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "an E note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_F_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "an F note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_G_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a G note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_A_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "an A note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_B_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a B note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_C_HIGH_NOTE_MAT[] = _(
+ "A mat that plays\n"
+ "a high C note when\n"
+ "stepped on.");
+
+const u8 DecorDesc_SURF_MAT[] = _(
+ "A mat designed with\n"
+ "a SURF image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_THUNDER_MAT[] = _(
+ "A mat designed with\n"
+ "a THUNDER image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_FIRE_BLAST_MAT[] = _(
+ "A mat designed with\n"
+ "a FIRE BLAST image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_POWDER_SNOW_MAT[] = _(
+ "A mat with a POWDER\n"
+ "SNOW image design.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_ATTRACT_MAT[] = _(
+ "A mat designed with\n"
+ "an ATTRACT image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_FISSURE_MAT[] = _(
+ "A mat designed with\n"
+ "a FISSURE image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_SPIKES_MAT[] = _(
+ "A mat designed with\n"
+ "a SPIKES image.\n"
+ "Put items on top.");
+
+const u8 DecorDesc_BALL_POSTER[] = _(
+ "A small poster\n"
+ "printed with POKé\n"
+ "BALLS.");
+
+const u8 DecorDesc_GREEN_POSTER[] = _(
+ "A small poster with\n"
+ "a TREECKO print.");
+
+const u8 DecorDesc_RED_POSTER[] = _(
+ "A small poster with\n"
+ "a TORCHIC print.");
+
+const u8 DecorDesc_BLUE_POSTER[] = _(
+ "A small poster with\n"
+ "a MUDKIP print.");
+
+const u8 DecorDesc_CUTE_POSTER[] = _(
+ "A small poster with\n"
+ "an AZURILL print.");
+
+const u8 DecorDesc_PIKA_POSTER[] = _(
+ "A large poster with\n"
+ "a PIKACHU and\n"
+ "PICHU print.");
+
+const u8 DecorDesc_LONG_POSTER[] = _(
+ "A large poster with\n"
+ "a SEVIPER print.");
+
+const u8 DecorDesc_SEA_POSTER[] = _(
+ "A large poster with\n"
+ "a RELICANTH print.");
+
+const u8 DecorDesc_SKY_POSTER[] = _(
+ "A large poster with\n"
+ "a WINGULL print.");
+
+const u8 DecorDesc_KISS_POSTER[] = _(
+ "A large poster with\n"
+ "a SMOOCHUM print.");
+
+const u8 DecorDesc_PICHU_DOLL[] = _(
+ "A PICHU doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_PIKACHU_DOLL[] = _(
+ "A PIKACHU doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_MARILL_DOLL[] = _(
+ "A MARILL doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_TOGEPI_DOLL[] = _(
+ "A TOGEPI doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_CYNDAQUIL_DOLL[] = _(
+ "A CYNDAQUIL doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_CHIKORITA_DOLL[] = _(
+ "A CHIKORITA doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_TOTODILE_DOLL[] = _(
+ "A TOTODILE doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_JIGGLYPUFF_DOLL[] = _(
+ "A JIGGLYPUFF doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_MEOWTH_DOLL[] = _(
+ "A MEOWTH doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_CLEFAIRY_DOLL[] = _(
+ "A CLEFAIRY doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_DITTO_DOLL[] = _(
+ "A DITTO doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_SMOOCHUM_DOLL[] = _(
+ "A SMOOCHUM doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_TREECKO_DOLL[] = _(
+ "A TREECKO doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_TORCHIC_DOLL[] = _(
+ "A TORCHIC doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_MUDKIP_DOLL[] = _(
+ "A MUDKIP doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_DUSKULL_DOLL[] = _(
+ "A DUSKULL doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_WYNAUT_DOLL[] = _(
+ "A WYNAUT doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_BALTOY_DOLL[] = _(
+ "A BALTOY doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_KECLEON_DOLL[] = _(
+ "A KECLEON doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_AZURILL_DOLL[] = _(
+ "An AZURILL doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_SKITTY_DOLL[] = _(
+ "A SKITTY doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_SWABLU_DOLL[] = _(
+ "A SWABLU doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_GULPIN_DOLL[] = _(
+ "A GULPIN doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_LOTAD_DOLL[] = _(
+ "A LOTAD doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_SEEDOT_DOLL[] = _(
+ "A SEEDOT doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_PIKA_CUSHION[] = _(
+ "A PIKACHU cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_ROUND_CUSHION[] = _(
+ "A MARILL cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_KISS_CUSHION[] = _(
+ "A SMOOCHUM\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_ZIGZAG_CUSHION[] = _(
+ "A ZIGZAGOON\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_SPIN_CUSHION[] = _(
+ "A SPINDA cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_DIAMOND_CUSHION[] = _(
+ "A SABLEYE cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_BALL_CUSHION[] = _(
+ "A BALL cushion.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_GRASS_CUSHION[] = _(
+ "A grass-mark\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_FIRE_CUSHION[] = _(
+ "A fire-mark\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_WATER_CUSHION[] = _(
+ "A water-mark\n"
+ "cushion. Place it on\n"
+ "a mat or a desk.");
+
+const u8 DecorDesc_SNORLAX_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_RHYDON_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_LAPRAS_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_VENUSAUR_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_CHARIZARD_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_BLASTOISE_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_WAILMER_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_REGIROCK_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_REGICE_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+
+const u8 DecorDesc_REGISTEEL_DOLL[] = _(
+ "A large doll.\n"
+ "Place it on a mat\n"
+ "or a desk.");
+#endif //GUARD_DATA_DECORATION_DESCRIPTION_H
diff --git a/include/data/decoration/header.h b/include/data/decoration/header.h
new file mode 100644
index 000000000..64bed1c7e
--- /dev/null
+++ b/include/data/decoration/header.h
@@ -0,0 +1,1100 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_DATA_DECORATION_HEADER_H
+#define GUARD_DATA_DECORATION_HEADER_H
+
+const struct Decoration gDecorations[] = {
+ {
+ DECOR_NONE,
+ _("SMALL DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_DESK,
+ 0,
+ DecorDesc_SMALL_DESK,
+ DecorGfx_SMALL_DESK
+ }, {
+ DECOR_SMALL_DESK,
+ _("SMALL DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_DESK,
+ 3000,
+ DecorDesc_SMALL_DESK,
+ DecorGfx_SMALL_DESK
+ }, {
+ DECOR_POKEMON_DESK,
+ _("POKéMON DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_DESK,
+ 3000,
+ DecorDesc_POKEMON_DESK,
+ DecorGfx_POKEMON_DESK
+ }, {
+ DECOR_HEAVY_DESK,
+ _("HEAVY DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x2,
+ DECORCAT_DESK,
+ 6000,
+ DecorDesc_HEAVY_DESK,
+ DecorGfx_HEAVY_DESK
+ }, {
+ DECOR_RAGGED_DESK,
+ _("RAGGED DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x2,
+ DECORCAT_DESK,
+ 6000,
+ DecorDesc_RAGGED_DESK,
+ DecorGfx_RAGGED_DESK
+ }, {
+ DECOR_COMFORT_DESK,
+ _("COMFORT DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x2,
+ DECORCAT_DESK,
+ 6000,
+ DecorDesc_COMFORT_DESK,
+ DecorGfx_COMFORT_DESK
+ }, {
+ DECOR_PRETTY_DESK,
+ _("PRETTY DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_DESK,
+ 9000,
+ DecorDesc_PRETTY_DESK,
+ DecorGfx_PRETTY_DESK
+ }, {
+ DECOR_BRICK_DESK,
+ _("BRICK DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_DESK,
+ 9000,
+ DecorDesc_BRICK_DESK,
+ DecorGfx_BRICK_DESK
+ }, {
+ DECOR_CAMP_DESK,
+ _("CAMP DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_DESK,
+ 9000,
+ DecorDesc_CAMP_DESK,
+ DecorGfx_CAMP_DESK
+ }, {
+ DECOR_HARD_DESK,
+ _("HARD DESK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_DESK,
+ 9000,
+ DecorDesc_HARD_DESK,
+ DecorGfx_HARD_DESK
+ }, {
+ DECOR_SMALL_CHAIR,
+ _("SMALL CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_SMALL_CHAIR,
+ DecorGfx_SMALL_CHAIR
+ }, {
+ DECOR_POKEMON_CHAIR,
+ _("POKéMON CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_POKEMON_CHAIR,
+ DecorGfx_POKEMON_CHAIR
+ }, {
+ DECOR_HEAVY_CHAIR,
+ _("HEAVY CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_HEAVY_CHAIR,
+ DecorGfx_HEAVY_CHAIR
+ }, {
+ DECOR_PRETTY_CHAIR,
+ _("PRETTY CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_PRETTY_CHAIR,
+ DecorGfx_PRETTY_CHAIR
+ }, {
+ DECOR_COMFORT_CHAIR,
+ _("COMFORT CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_COMFORT_CHAIR,
+ DecorGfx_COMFORT_CHAIR
+ }, {
+ DECOR_RAGGED_CHAIR,
+ _("RAGGED CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_RAGGED_CHAIR,
+ DecorGfx_RAGGED_CHAIR
+ }, {
+ DECOR_BRICK_CHAIR,
+ _("BRICK CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_BRICK_CHAIR,
+ DecorGfx_BRICK_CHAIR
+ }, {
+ DECOR_CAMP_CHAIR,
+ _("CAMP CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_CAMP_CHAIR,
+ DecorGfx_CAMP_CHAIR
+ }, {
+ DECOR_HARD_CHAIR,
+ _("HARD CHAIR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_CHAIR,
+ 2000,
+ DecorDesc_HARD_CHAIR,
+ DecorGfx_HARD_CHAIR
+ }, {
+ DECOR_RED_PLANT,
+ _("RED PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_PLANT,
+ 3000,
+ DecorDesc_RED_PLANT,
+ DecorGfx_RED_PLANT
+ }, {
+ DECOR_TROPICAL_PLANT,
+ _("TROPICAL PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_PLANT,
+ 3000,
+ DecorDesc_TROPICAL_PLANT,
+ DecorGfx_TROPICAL_PLANT
+ }, {
+ DECOR_PRETTY_FLOWERS,
+ _("PRETTY FLOWERS"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_PLANT,
+ 3000,
+ DecorDesc_PRETTY_FLOWERS,
+ DecorGfx_PRETTY_FLOWERS
+ }, {
+ DECOR_COLORFUL_PLANT,
+ _("COLORFUL PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_2x2,
+ DECORCAT_PLANT,
+ 5000,
+ DecorDesc_COLORFUL_PLANT,
+ DecorGfx_COLORFUL_PLANT
+ }, {
+ DECOR_BIG_PLANT,
+ _("BIG PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_2x2,
+ DECORCAT_PLANT,
+ 5000,
+ DecorDesc_BIG_PLANT,
+ DecorGfx_BIG_PLANT
+ }, {
+ DECOR_GORGEOUS_PLANT,
+ _("GORGEOUS PLANT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_2x2,
+ DECORCAT_PLANT,
+ 5000,
+ DecorDesc_GORGEOUS_PLANT,
+ DecorGfx_GORGEOUS_PLANT
+ }, {
+ DECOR_RED_BRICK,
+ _("RED BRICK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_RED_BRICK,
+ DecorGfx_RED_BRICK
+ }, {
+ DECOR_YELLOW_BRICK,
+ _("YELLOW BRICK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_YELLOW_BRICK,
+ DecorGfx_YELLOW_BRICK
+ }, {
+ DECOR_BLUE_BRICK,
+ _("BLUE BRICK"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_BLUE_BRICK,
+ DecorGfx_BLUE_BRICK
+ }, {
+ DECOR_RED_BALLOON,
+ _("RED BALLOON"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_RED_BALLOON,
+ DecorGfx_RED_BALLOON
+ }, {
+ DECOR_BLUE_BALLOON,
+ _("BLUE BALLOON"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_BLUE_BALLOON,
+ DecorGfx_BLUE_BALLOON
+ }, {
+ DECOR_YELLOW_BALLOON,
+ _("YELLOW BALLOON"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_YELLOW_BALLOON,
+ DecorGfx_YELLOW_BALLOON
+ }, {
+ DECOR_RED_TENT,
+ _("RED TENT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_ORNAMENT,
+ 10000,
+ DecorDesc_RED_TENT,
+ DecorGfx_RED_TENT
+ }, {
+ DECOR_BLUE_TENT,
+ _("BLUE TENT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_ORNAMENT,
+ 10000,
+ DecorDesc_BLUE_TENT,
+ DecorGfx_BLUE_TENT
+ }, {
+ DECOR_SOLID_BOARD,
+ _("SOLID BOARD"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 3000,
+ DecorDesc_SOLID_BOARD,
+ DecorGfx_SOLID_BOARD
+ }, {
+ DECOR_SLIDE,
+ _("SLIDE"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_2x4,
+ DECORCAT_ORNAMENT,
+ 8000,
+ DecorDesc_SLIDE,
+ DecorGfx_SLIDE
+ }, {
+ DECOR_FENCE_LENGTH,
+ _("FENCE LENGTH"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_FENCE_LENGTH,
+ DecorGfx_FENCE_LENGTH
+ }, {
+ DECOR_FENCE_WIDTH,
+ _("FENCE WIDTH"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 500,
+ DecorDesc_FENCE_WIDTH,
+ DecorGfx_FENCE_WIDTH
+ }, {
+ DECOR_TIRE,
+ _("TIRE"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_2x2,
+ DECORCAT_ORNAMENT,
+ 800,
+ DecorDesc_TIRE,
+ DecorGfx_TIRE
+ }, {
+ DECOR_STAND,
+ _("STAND"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_4x2,
+ DECORCAT_ORNAMENT,
+ 7000,
+ DecorDesc_STAND,
+ DecorGfx_STAND
+ }, {
+ DECOR_MUD_BALL,
+ _("MUD BALL"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 200,
+ DecorDesc_MUD_BALL,
+ DecorGfx_MUD_BALL
+ }, {
+ DECOR_BREAKABLE_DOOR,
+ _("BREAKABLE DOOR"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 3000,
+ DecorDesc_BREAKABLE_DOOR,
+ DecorGfx_BREAKABLE_DOOR
+ }, {
+ DECOR_SAND_ORNAMENT,
+ _("SAND ORNAMENT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 3000,
+ DecorDesc_SAND_ORNAMENT,
+ DecorGfx_SAND_ORNAMENT
+ }, {
+ DECOR_SILVER_SHIELD,
+ _("SILVER SHIELD"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 0,
+ DecorDesc_SILVER_SHIELD,
+ DecorGfx_SILVER_SHIELD
+ }, {
+ DECOR_GOLD_SHIELD,
+ _("GOLD SHIELD"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 0,
+ DecorDesc_GOLD_SHIELD,
+ DecorGfx_GOLD_SHIELD
+ }, {
+ DECOR_GLASS_ORNAMENT,
+ _("GLASS ORNAMENT"),
+ DECORPERM_BEHIND_FLOOR,
+ DECORSHAPE_1x2,
+ DECORCAT_ORNAMENT,
+ 0,
+ DecorDesc_GLASS_ORNAMENT,
+ DecorGfx_GLASS_ORNAMENT
+ }, {
+ DECOR_TV,
+ _("TV"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 3000,
+ DecorDesc_TV,
+ DecorGfx_TV
+ }, {
+ DECOR_ROUND_TV,
+ _("ROUND TV"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 4000,
+ DecorDesc_ROUND_TV,
+ DecorGfx_ROUND_TV
+ }, {
+ DECOR_CUTE_TV,
+ _("CUTE TV"),
+ DECORPERM_SOLID_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_ORNAMENT,
+ 4000,
+ DecorDesc_CUTE_TV,
+ DecorGfx_CUTE_TV
+ }, {
+ DECOR_GLITTER_MAT,
+ _("GLITTER MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 2000,
+ DecorDesc_GLITTER_MAT,
+ DecorGfx_GLITTER_MAT
+ }, {
+ DECOR_JUMP_MAT,
+ _("JUMP MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 2000,
+ DecorDesc_JUMP_MAT,
+ DecorGfx_JUMP_MAT
+ }, {
+ DECOR_SPIN_MAT,
+ _("SPIN MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 2000,
+ DecorDesc_SPIN_MAT,
+ DecorGfx_SPIN_MAT
+ }, {
+ DECOR_C_LOW_NOTE_MAT,
+ _("C Low NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_C_LOW_NOTE_MAT,
+ DecorGfx_C_LOW_NOTE_MAT
+ }, {
+ DECOR_D_NOTE_MAT,
+ _("D NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_D_NOTE_MAT,
+ DecorGfx_D_NOTE_MAT
+ }, {
+ DECOR_E_NOTE_MAT,
+ _("E NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_E_NOTE_MAT,
+ DecorGfx_E_NOTE_MAT
+ }, {
+ DECOR_F_NOTE_MAT,
+ _("F NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_F_NOTE_MAT,
+ DecorGfx_F_NOTE_MAT
+ }, {
+ DECOR_G_NOTE_MAT,
+ _("G NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_G_NOTE_MAT,
+ DecorGfx_G_NOTE_MAT
+ }, {
+ DECOR_A_NOTE_MAT,
+ _("A NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_A_NOTE_MAT,
+ DecorGfx_A_NOTE_MAT
+ }, {
+ DECOR_B_NOTE_MAT,
+ _("B NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_B_NOTE_MAT,
+ DecorGfx_B_NOTE_MAT
+ }, {
+ DECOR_C_HIGH_NOTE_MAT,
+ _("C High NOTE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_1x1,
+ DECORCAT_MAT,
+ 500,
+ DecorDesc_C_HIGH_NOTE_MAT,
+ DecorGfx_C_HIGH_NOTE_MAT
+ }, {
+ DECOR_SURF_MAT,
+ _("SURF MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_SURF_MAT,
+ DecorGfx_SURF_MAT
+ }, {
+ DECOR_THUNDER_MAT,
+ _("THUNDER MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_THUNDER_MAT,
+ DecorGfx_THUNDER_MAT
+ }, {
+ DECOR_FIRE_BLAST_MAT,
+ _("FIRE BLAST MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_FIRE_BLAST_MAT,
+ DecorGfx_FIRE_BLAST_MAT
+ }, {
+ DECOR_POWDER_SNOW_MAT,
+ _("POWDER SNOW MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_POWDER_SNOW_MAT,
+ DecorGfx_POWDER_SNOW_MAT
+ }, {
+ DECOR_ATTRACT_MAT,
+ _("ATTRACT MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_ATTRACT_MAT,
+ DecorGfx_ATTRACT_MAT
+ }, {
+ DECOR_FISSURE_MAT,
+ _("FISSURE MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_FISSURE_MAT,
+ DecorGfx_FISSURE_MAT
+ }, {
+ DECOR_SPIKES_MAT,
+ _("SPIKES MAT"),
+ DECORPERM_PASS_FLOOR,
+ DECORSHAPE_3x3,
+ DECORCAT_MAT,
+ 4000,
+ DecorDesc_SPIKES_MAT,
+ DecorGfx_SPIKES_MAT
+ }, {
+ DECOR_BALL_POSTER,
+ _("BALL POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_BALL_POSTER,
+ DecorGfx_BALL_POSTER
+ }, {
+ DECOR_GREEN_POSTER,
+ _("GREEN POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_GREEN_POSTER,
+ DecorGfx_GREEN_POSTER
+ }, {
+ DECOR_RED_POSTER,
+ _("RED POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_RED_POSTER,
+ DecorGfx_RED_POSTER
+ }, {
+ DECOR_BLUE_POSTER,
+ _("BLUE POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_BLUE_POSTER,
+ DecorGfx_BLUE_POSTER
+ }, {
+ DECOR_CUTE_POSTER,
+ _("CUTE POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_1x1,
+ DECORCAT_POSTER,
+ 1000,
+ DecorDesc_CUTE_POSTER,
+ DecorGfx_CUTE_POSTER
+ }, {
+ DECOR_PIKA_POSTER,
+ _("PIKA POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_PIKA_POSTER,
+ DecorGfx_PIKA_POSTER
+ }, {
+ DECOR_LONG_POSTER,
+ _("LONG POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_LONG_POSTER,
+ DecorGfx_LONG_POSTER
+ }, {
+ DECOR_SEA_POSTER,
+ _("SEA POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_SEA_POSTER,
+ DecorGfx_SEA_POSTER
+ }, {
+ DECOR_SKY_POSTER,
+ _("SKY POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_SKY_POSTER,
+ DecorGfx_SKY_POSTER
+ }, {
+ DECOR_KISS_POSTER,
+ _("KISS POSTER"),
+ DECORPERM_NA_WALL,
+ DECORSHAPE_2x1,
+ DECORCAT_POSTER,
+ 1500,
+ DecorDesc_KISS_POSTER,
+ DecorGfx_KISS_POSTER
+ }, {
+ DECOR_PICHU_DOLL,
+ _("PICHU DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_PICHU_DOLL,
+ DecorGfx_PICHU_DOLL
+ }, {
+ DECOR_PIKACHU_DOLL,
+ _("PIKACHU DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_PIKACHU_DOLL,
+ DecorGfx_PIKACHU_DOLL
+ }, {
+ DECOR_MARILL_DOLL,
+ _("MARILL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_MARILL_DOLL,
+ DecorGfx_MARILL_DOLL
+ }, {
+ DECOR_TOGEPI_DOLL,
+ _("TOGEPI DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_TOGEPI_DOLL,
+ DecorGfx_TOGEPI_DOLL
+ }, {
+ DECOR_CYNDAQUIL_DOLL,
+ _("CYNDAQUIL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_CYNDAQUIL_DOLL,
+ DecorGfx_CYNDAQUIL_DOLL
+ }, {
+ DECOR_CHIKORITA_DOLL,
+ _("CHIKORITA DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_CHIKORITA_DOLL,
+ DecorGfx_CHIKORITA_DOLL
+ }, {
+ DECOR_TOTODILE_DOLL,
+ _("TOTODILE DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_TOTODILE_DOLL,
+ DecorGfx_TOTODILE_DOLL
+ }, {
+ DECOR_JIGGLYPUFF_DOLL,
+ _("JIGGLYPUFF DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_JIGGLYPUFF_DOLL,
+ DecorGfx_JIGGLYPUFF_DOLL
+ }, {
+ DECOR_MEOWTH_DOLL,
+ _("MEOWTH DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_MEOWTH_DOLL,
+ DecorGfx_MEOWTH_DOLL
+ }, {
+ DECOR_CLEFAIRY_DOLL,
+ _("CLEFAIRY DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_CLEFAIRY_DOLL,
+ DecorGfx_CLEFAIRY_DOLL
+ }, {
+ DECOR_DITTO_DOLL,
+ _("DITTO DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_DITTO_DOLL,
+ DecorGfx_DITTO_DOLL
+ }, {
+ DECOR_SMOOCHUM_DOLL,
+ _("SMOOCHUM DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_SMOOCHUM_DOLL,
+ DecorGfx_SMOOCHUM_DOLL
+ }, {
+ DECOR_TREECKO_DOLL,
+ _("TREECKO DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_TREECKO_DOLL,
+ DecorGfx_TREECKO_DOLL
+ }, {
+ DECOR_TORCHIC_DOLL,
+ _("TORCHIC DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_TORCHIC_DOLL,
+ DecorGfx_TORCHIC_DOLL
+ }, {
+ DECOR_MUDKIP_DOLL,
+ _("MUDKIP DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_MUDKIP_DOLL,
+ DecorGfx_MUDKIP_DOLL
+ }, {
+ DECOR_DUSKULL_DOLL,
+ _("DUSKULL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_DUSKULL_DOLL,
+ DecorGfx_DUSKULL_DOLL
+ }, {
+ DECOR_WYNAUT_DOLL,
+ _("WYNAUT DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_WYNAUT_DOLL,
+ DecorGfx_WYNAUT_DOLL
+ }, {
+ DECOR_BALTOY_DOLL,
+ _("BALTOY DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_BALTOY_DOLL,
+ DecorGfx_BALTOY_DOLL
+ }, {
+ DECOR_KECLEON_DOLL,
+ _("KECLEON DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_KECLEON_DOLL,
+ DecorGfx_KECLEON_DOLL
+ }, {
+ DECOR_AZURILL_DOLL,
+ _("AZURILL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_AZURILL_DOLL,
+ DecorGfx_AZURILL_DOLL
+ }, {
+ DECOR_SKITTY_DOLL,
+ _("SKITTY DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_SKITTY_DOLL,
+ DecorGfx_SKITTY_DOLL
+ }, {
+ DECOR_SWABLU_DOLL,
+ _("SWABLU DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_SWABLU_DOLL,
+ DecorGfx_SWABLU_DOLL
+ }, {
+ DECOR_GULPIN_DOLL,
+ _("GULPIN DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_GULPIN_DOLL,
+ DecorGfx_GULPIN_DOLL
+ }, {
+ DECOR_LOTAD_DOLL,
+ _("LOTAD DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_LOTAD_DOLL,
+ DecorGfx_LOTAD_DOLL
+ }, {
+ DECOR_SEEDOT_DOLL,
+ _("SEEDOT DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_DOLL,
+ 3000,
+ DecorDesc_SEEDOT_DOLL,
+ DecorGfx_SEEDOT_DOLL
+ }, {
+ DECOR_PIKA_CUSHION,
+ _("PIKA CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_PIKA_CUSHION,
+ DecorGfx_PIKA_CUSHION
+ }, {
+ DECOR_ROUND_CUSHION,
+ _("ROUND CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_ROUND_CUSHION,
+ DecorGfx_ROUND_CUSHION
+ }, {
+ DECOR_KISS_CUSHION,
+ _("KISS CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_KISS_CUSHION,
+ DecorGfx_KISS_CUSHION
+ }, {
+ DECOR_ZIGZAG_CUSHION,
+ _("ZIGZAG CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_ZIGZAG_CUSHION,
+ DecorGfx_ZIGZAG_CUSHION
+ }, {
+ DECOR_SPIN_CUSHION,
+ _("SPIN CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_SPIN_CUSHION,
+ DecorGfx_SPIN_CUSHION
+ }, {
+ DECOR_DIAMOND_CUSHION,
+ _("DIAMOND CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_DIAMOND_CUSHION,
+ DecorGfx_DIAMOND_CUSHION
+ }, {
+ DECOR_BALL_CUSHION,
+ _("BALL CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_BALL_CUSHION,
+ DecorGfx_BALL_CUSHION
+ }, {
+ DECOR_GRASS_CUSHION,
+ _("GRASS CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_GRASS_CUSHION,
+ DecorGfx_GRASS_CUSHION
+ }, {
+ DECOR_FIRE_CUSHION,
+ _("FIRE CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_FIRE_CUSHION,
+ DecorGfx_FIRE_CUSHION
+ }, {
+ DECOR_WATER_CUSHION,
+ _("WATER CUSHION"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x1,
+ DECORCAT_CUSHION,
+ 2000,
+ DecorDesc_WATER_CUSHION,
+ DecorGfx_WATER_CUSHION
+ }, {
+ DECOR_SNORLAX_DOLL,
+ _("SNORLAX DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_SNORLAX_DOLL,
+ DecorGfx_SNORLAX_DOLL
+ }, {
+ DECOR_RHYDON_DOLL,
+ _("RHYDON DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_RHYDON_DOLL,
+ DecorGfx_RHYDON_DOLL
+ }, {
+ DECOR_LAPRAS_DOLL,
+ _("LAPRAS DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_LAPRAS_DOLL,
+ DecorGfx_LAPRAS_DOLL
+ }, {
+ DECOR_VENUSAUR_DOLL,
+ _("VENUSAUR DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_VENUSAUR_DOLL,
+ DecorGfx_VENUSAUR_DOLL
+ }, {
+ DECOR_CHARIZARD_DOLL,
+ _("CHARIZARD DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_CHARIZARD_DOLL,
+ DecorGfx_CHARIZARD_DOLL
+ }, {
+ DECOR_BLASTOISE_DOLL,
+ _("BLASTOISE DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_BLASTOISE_DOLL,
+ DecorGfx_BLASTOISE_DOLL
+ }, {
+ DECOR_WAILMER_DOLL,
+ _("WAILMER DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_WAILMER_DOLL,
+ DecorGfx_WAILMER_DOLL
+ }, {
+ DECOR_REGIROCK_DOLL,
+ _("REGIROCK DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_REGIROCK_DOLL,
+ DecorGfx_REGIROCK_DOLL
+ }, {
+ DECOR_REGICE_DOLL,
+ _("REGICE DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_REGICE_DOLL,
+ DecorGfx_REGICE_DOLL
+ }, {
+ DECOR_REGISTEEL_DOLL,
+ _("REGISTEEL DOLL"),
+ DECORPERM_SOLID_MAT,
+ DECORSHAPE_1x2,
+ DECORCAT_DOLL,
+ 10000,
+ DecorDesc_REGISTEEL_DOLL,
+ DecorGfx_REGISTEEL_DOLL}
+};
+
+#endif //GUARD_DATA_DECORATION_HEADER_H
diff --git a/include/data/decoration/icon.h b/include/data/decoration/icon.h
new file mode 100644
index 000000000..1f11bc19f
--- /dev/null
+++ b/include/data/decoration/icon.h
@@ -0,0 +1,132 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_ICON_H
+#define GUARD_ICON_H
+
+const u8 *const gUnknown_085A6BE8[][2] = {
+ {gItemIcon_QuestionMark, gItemIconPalette_QuestionMark},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB7AA0, gUnknown_08DB7B34},
+ {gUnknown_08DB7B5C, gUnknown_08DB7BEC},
+ {gUnknown_08DB7C08, gUnknown_08DB7CE8},
+ {gUnknown_08DB7D08, gUnknown_08DB7DCC},
+ {gUnknown_08DB7DF4, gUnknown_08DB7EA0},
+ {gUnknown_08DB7EC4, gUnknown_08DB7F60},
+ {gUnknown_08DB7F7C, gUnknown_08DB8070},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB808C, gUnknown_08DB8138},
+ {gUnknown_08DB8160, gUnknown_08DB8218},
+ {gUnknown_08DB823C, gUnknown_08DB8300},
+ {gUnknown_08DB8328, gUnknown_08DB8430},
+ {gUnknown_08DB8458, gUnknown_08DB8528},
+ {gUnknown_08DB854C, gUnknown_08DB862C},
+ {gUnknown_08DB8654, gUnknown_08DB86C4},
+ {gUnknown_08DB86E0, gUnknown_08DB8750},
+ {gUnknown_08DB876C, gUnknown_08DB87DC},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB87F8, gUnknown_08DB88D8},
+ {gUnknown_08DB8900, gUnknown_08DB89E0},
+ {gUnknown_08DB8A08, gUnknown_08DB8A68},
+ {gUnknown_08DB8A84, gUnknown_08DB8B40},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB8B68, gUnknown_08DB8C40},
+ {gUnknown_08DB8C5C, gUnknown_08DB8CF4},
+ {NULL, NULL},
+ {gUnknown_08DB8D18, gUnknown_08DB8DB0},
+ {gUnknown_08DB8DD4, gUnknown_08DB8E80},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB8EA0, gUnknown_08DB8F58},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB8F7C, gUnknown_08DB9038},
+ {gUnknown_08DB9058, gUnknown_08DB9130},
+ {gUnknown_08DB9154, gUnknown_08DB9218},
+ {gUnknown_08DB9234, gUnknown_08DB92FC},
+ {gUnknown_08DB931C, gUnknown_08DB93E8},
+ {gUnknown_08DB940C, gUnknown_08DB94CC},
+ {gUnknown_08DB94E8, gUnknown_08DB95AC},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {NULL, NULL},
+ {gUnknown_08DB95D0, gUnknown_08DB96C4},
+ {gUnknown_08DB96EC, gUnknown_08DB97F4},
+ {gUnknown_08DB981C, gUnknown_08DB9908},
+ {gUnknown_08DB9930, gUnknown_08DB9A54},
+ {gUnknown_08DB9A7C, gUnknown_08DB9B7C},
+ {gUnknown_08DB9BA4, gUnknown_08DB9CB0},
+ {gUnknown_08DB9CD8, gUnknown_08DB9DAC},
+ {gUnknown_08DB9F08, gUnknown_08DB9FFC},
+ {gUnknown_08DB9DD4, gUnknown_08DB9EE4},
+ {gUnknown_08DBA020, gUnknown_08DBA12C}
+};
+
+#endif //GUARD_ICON_H
diff --git a/include/data/decoration/tilemaps.h b/include/data/decoration/tilemaps.h
new file mode 100644
index 000000000..1cca7ae0b
--- /dev/null
+++ b/include/data/decoration/tilemaps.h
@@ -0,0 +1,239 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_TILEMAPS_H
+#define GUARD_TILEMAPS_H
+
+const u8 Unknown_085A6FB0[] = {
+ 0x00, 0x01, 0x02, 0x03
+};
+
+const u8 Unknown_085A6FB4[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d
+};
+
+const u8 Unknown_085A6FC0[] = {
+ 0x00, 0x01, 0x02, 0x03,
+ 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b,
+ 0x0c, 0x0d, 0x0e, 0x0f
+};
+
+const u8 Unknown_085A6FD0[] = {
+ 0x00, 0x01, 0x04, 0x05,
+ 0x08, 0x09, 0x0c, 0x0d,
+ 0x10, 0x11, 0x14, 0x15
+};
+
+const u8 Unknown_085A6FDC[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
+};
+
+const u8 Unknown_085A6FE4[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
+};
+
+const u8 Unknown_085A7004[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d
+};
+
+const u8 Unknown_085A7028[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
+ 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,
+ 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d
+};
+
+const u8 Unknown_085A7040[] = {
+ 0x00, 0x00, 0x00, 0x00
+};
+
+const u8 Unknown_085A7044[] = {
+ 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x01, 0x01
+};
+
+const u8 Unknown_085A704C[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02
+};
+
+const u8 Unknown_085A7058[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03,
+ 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07,
+ 0x04, 0x04, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07
+};
+
+const u8 Unknown_085A7078[] = {
+ 0x00, 0x00, 0x01, 0x01,
+ 0x00, 0x00, 0x01, 0x01,
+ 0x02, 0x02, 0x03, 0x03,
+ 0x02, 0x02, 0x03, 0x03
+};
+
+const u8 Unknown_085A7088[] = {
+ 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01
+};
+
+const u8 Unknown_085A7090[] = {
+ 0x00, 0x00, 0x00, 0x00,
+ 0x01, 0x01, 0x01, 0x01,
+ 0x02, 0x02, 0x02, 0x02
+};
+
+const u8 Unknown_085A709C[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01,
+ 0x02, 0x02, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03,
+ 0x04, 0x04, 0x05, 0x05, 0x04, 0x04, 0x05, 0x05,
+ 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x07, 0x07
+};
+
+const u8 Unknown_085A70BC[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05,
+ 0x06, 0x06, 0x07, 0x07, 0x08, 0x08,
+ 0x06, 0x06, 0x07, 0x07, 0x08, 0x08
+};
+
+const u8 Unknown_085A70E0[] = {
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x00, 0x00, 0x01, 0x01, 0x02, 0x02,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05,
+ 0x03, 0x03, 0x04, 0x04, 0x05, 0x05
+};
+
+const u8 Unknown_085A70F8[] = {
+ 0x04, 0x05, 0x06, 0x07
+};
+
+const u8 Unknown_085A70FC[] = {
+ 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7104[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7110[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7130[] = {
+ 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7140[] = {
+ 0x04, 0x05, 0x06, 0x07,
+ 0x04, 0x05, 0x06, 0x07
+};
+
+const u8 Unknown_085A7148[] = {
+ 0x04, 0x05, 0x06, 0x07,
+ 0x04, 0x05, 0x06, 0x07,
+ 0x04, 0x05, 0x06, 0x07
+};
+
+const u8 Unknown_085A7154[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7174[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07
+};
+
+const u8 Unknown_085A7198[] = {
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07,
+ 0x04, 0x05, 0x04, 0x05, 0x04, 0x05,
+ 0x06, 0x07, 0x06, 0x07, 0x06, 0x07
+};
+
+const struct {
+ const u8 *tiles;
+ const u8 *y;
+ const u8 *x;
+ u8 size;
+} gUnknown_085A71B0[] = {
+ {
+ Unknown_085A6FB0,
+ Unknown_085A7040,
+ Unknown_085A70F8,
+ 0x04
+ }, {
+ Unknown_085A6FDC,
+ Unknown_085A7044,
+ Unknown_085A70FC,
+ 0x08
+ }, {
+ Unknown_085A6FB4,
+ Unknown_085A704C,
+ Unknown_085A7104,
+ 0x0c
+ }, {
+ Unknown_085A6FE4,
+ Unknown_085A7058,
+ Unknown_085A7110,
+ 0x20
+ }, {
+ Unknown_085A6FC0,
+ Unknown_085A7078,
+ Unknown_085A7130,
+ 0x10
+ }, {
+ Unknown_085A6FDC,
+ Unknown_085A7088,
+ Unknown_085A7140,
+ 0x08
+ }, {
+ Unknown_085A6FD0,
+ Unknown_085A7090,
+ Unknown_085A7148,
+ 0x0c
+ }, {
+ Unknown_085A6FE4,
+ Unknown_085A709C,
+ Unknown_085A7154,
+ 0x20
+ }, {
+ Unknown_085A7004,
+ Unknown_085A70BC,
+ Unknown_085A7174,
+ 0x24
+ }, {
+ Unknown_085A7028,
+ Unknown_085A70E0,
+ Unknown_085A7198,
+ 0x18
+ }};
+
+#endif //GUARD_TILEMAPS_H
diff --git a/include/data/decoration/tiles.h b/include/data/decoration/tiles.h
new file mode 100644
index 000000000..9a3f8a222
--- /dev/null
+++ b/include/data/decoration/tiles.h
@@ -0,0 +1,646 @@
+#ifndef GUARD_DATA_DECORATION_TILES
+#define GUARD_DATA_DECORATION_TILES
+
+const u16 DecorGfx_SMALL_DESK[] = {
+ 0x87
+};
+
+const u16 DecorGfx_POKEMON_DESK[] = {
+ 0x8F
+};
+
+const u16 DecorGfx_HEAVY_DESK[] = {
+ 0x90,
+ 0x91,
+ 0x92,
+ 0x98,
+ 0x99,
+ 0x9A
+};
+
+const u16 DecorGfx_RAGGED_DESK[] = {
+ 0x93,
+ 0x94,
+ 0x95,
+ 0x9B,
+ 0x9C,
+ 0x9D
+};
+
+const u16 DecorGfx_COMFORT_DESK[] = {
+ 0x96,
+ 0x97,
+ 0xA3,
+ 0x9E,
+ 0x9F,
+ 0xAB
+};
+
+const u16 DecorGfx_PRETTY_DESK[] = {
+ 0xBD,
+ 0xBE,
+ 0xBF,
+ 0xC5,
+ 0xC6,
+ 0xC7,
+ 0xCD,
+ 0xCE,
+ 0xCF
+};
+
+const u16 DecorGfx_BRICK_DESK[] = {
+ 0xA0,
+ 0xA1,
+ 0xA2,
+ 0xA8,
+ 0xA9,
+ 0xAA,
+ 0xB0,
+ 0xB1,
+ 0xB2
+};
+
+const u16 DecorGfx_CAMP_DESK[] = {
+ 0xA4,
+ 0xA5,
+ 0xA6,
+ 0xAC,
+ 0xAD,
+ 0xAE,
+ 0xB4,
+ 0xB5,
+ 0xB6
+};
+
+const u16 DecorGfx_HARD_DESK[] = {
+ 0xA7,
+ 0xBB,
+ 0xBC,
+ 0xAF,
+ 0xC3,
+ 0xC4,
+ 0xB7,
+ 0xCB,
+ 0xCC
+};
+
+const u16 DecorGfx_SMALL_CHAIR[] = {
+ 0xB8
+};
+
+const u16 DecorGfx_POKEMON_CHAIR[] = {
+ 0xB9
+};
+
+const u16 DecorGfx_HEAVY_CHAIR[] = {
+ 0xBA
+};
+
+const u16 DecorGfx_PRETTY_CHAIR[] = {
+ 0xC0
+};
+
+const u16 DecorGfx_COMFORT_CHAIR[] = {
+ 0xC1
+};
+
+const u16 DecorGfx_RAGGED_CHAIR[] = {
+ 0xC2
+};
+
+const u16 DecorGfx_BRICK_CHAIR[] = {
+ 0xC8
+};
+
+const u16 DecorGfx_CAMP_CHAIR[] = {
+ 0xC9
+};
+
+const u16 DecorGfx_HARD_CHAIR[] = {
+ 0xCA
+};
+
+const u16 DecorGfx_RED_PLANT[] = {
+ 0xD0,
+ 0xD8
+};
+
+const u16 DecorGfx_TROPICAL_PLANT[] = {
+ 0xD2,
+ 0xDA
+};
+
+const u16 DecorGfx_PRETTY_FLOWERS[] = {
+ 0xD4,
+ 0xDC
+};
+
+const u16 DecorGfx_COLORFUL_PLANT[] = {
+ 0xE0,
+ 0xE2,
+ 0xE8,
+ 0xE9
+};
+
+const u16 DecorGfx_BIG_PLANT[] = {
+ 0xE4,
+ 0xE6,
+ 0xEC,
+ 0xED
+};
+
+const u16 DecorGfx_GORGEOUS_PLANT[] = {
+ 0xF0,
+ 0xF2,
+ 0xF8,
+ 0xF9
+};
+
+const u16 DecorGfx_RED_BRICK[] = {
+ 0x25,
+ 0x2D
+};
+
+const u16 DecorGfx_YELLOW_BRICK[] = {
+ 0x26,
+ 0x2E
+};
+
+const u16 DecorGfx_BLUE_BRICK[] = {
+ 0x27,
+ 0x2F
+};
+
+const u16 DecorGfx_RED_BALLOON[] = {
+ 0x138
+};
+
+const u16 DecorGfx_BLUE_BALLOON[] = {
+ 0x13C
+};
+
+const u16 DecorGfx_YELLOW_BALLOON[] = {
+ 0x140
+};
+
+const u16 DecorGfx_RED_TENT[] = {
+ 0x30,
+ 0x31,
+ 0x32,
+ 0x38,
+ 0x39,
+ 0x3A,
+ 0x40,
+ 0x41,
+ 0x3B
+};
+
+const u16 DecorGfx_BLUE_TENT[] = {
+ 0x48,
+ 0x49,
+ 0x68,
+ 0x50,
+ 0x51,
+ 0x70,
+ 0x58,
+ 0x59,
+ 0x69
+};
+
+const u16 DecorGfx_SOLID_BOARD[] = {
+ 0x34,
+ 0x3C
+};
+
+const u16 DecorGfx_SLIDE[] = {
+ 0x35,
+ 0x36,
+ 0x3D,
+ 0x3E,
+ 0x63,
+ 0x64,
+ 0x6F,
+ 0x77
+};
+
+const u16 DecorGfx_FENCE_LENGTH[] = {
+ 0x33
+};
+
+const u16 DecorGfx_FENCE_WIDTH[] = {
+ 0x2C
+};
+
+const u16 DecorGfx_TIRE[] = {
+ 0x80,
+ 0x81,
+ 0x88,
+ 0x89
+};
+
+const u16 DecorGfx_STAND[] = {
+ 0x6A,
+ 0x6B,
+ 0x6C,
+ 0x6D,
+ 0x72,
+ 0x73,
+ 0x74,
+ 0x75
+};
+
+const u16 DecorGfx_MUD_BALL[] = {
+ 0x28
+};
+
+const u16 DecorGfx_BREAKABLE_DOOR[] = {
+ 0x37,
+ 0x3F
+};
+
+const u16 DecorGfx_SAND_ORNAMENT[] = {
+ 0x85,
+ 0x8D
+};
+
+const u16 DecorGfx_SILVER_SHIELD[] = {
+ 0xD6,
+ 0xDE
+};
+
+const u16 DecorGfx_GOLD_SHIELD[] = {
+ 0x12E,
+ 0x136
+};
+
+const u16 DecorGfx_GLASS_ORNAMENT[] = {
+ 0x82,
+ 0x8A
+};
+
+const u16 DecorGfx_TV[] = {
+ 0xF4
+};
+
+const u16 DecorGfx_ROUND_TV[] = {
+ 0xF5
+};
+
+const u16 DecorGfx_CUTE_TV[] = {
+ 0xF6
+};
+
+const u16 DecorGfx_GLITTER_MAT[] = {
+ 0x60
+};
+
+const u16 DecorGfx_JUMP_MAT[] = {
+ 0x61
+};
+
+const u16 DecorGfx_SPIN_MAT[] = {
+ 0x62
+};
+
+const u16 DecorGfx_C_LOW_NOTE_MAT[] = {
+ 0x78
+};
+
+const u16 DecorGfx_D_NOTE_MAT[] = {
+ 0x79
+};
+
+const u16 DecorGfx_E_NOTE_MAT[] = {
+ 0x7A
+};
+
+const u16 DecorGfx_F_NOTE_MAT[] = {
+ 0x7B
+};
+
+const u16 DecorGfx_G_NOTE_MAT[] = {
+ 0x7C
+};
+
+const u16 DecorGfx_A_NOTE_MAT[] = {
+ 0x7D
+};
+
+const u16 DecorGfx_B_NOTE_MAT[] = {
+ 0x7E
+};
+
+const u16 DecorGfx_C_HIGH_NOTE_MAT[] = {
+ 0xB3
+};
+
+const u16 DecorGfx_SURF_MAT[] = {
+ 0x42,
+ 0x43,
+ 0x44,
+ 0x4A,
+ 0x4B,
+ 0x4C,
+ 0x52,
+ 0x53,
+ 0x54
+};
+
+const u16 DecorGfx_THUNDER_MAT[] = {
+ 0x45,
+ 0x46,
+ 0x47,
+ 0x4D,
+ 0x4E,
+ 0x4F,
+ 0x55,
+ 0x56,
+ 0x57
+};
+
+const u16 DecorGfx_FIRE_BLAST_MAT[] = {
+ 0x5A,
+ 0x5B,
+ 0x5C,
+ 0x5D,
+ 0x5E,
+ 0x5F,
+ 0x65,
+ 0x66,
+ 0x67
+};
+
+const u16 DecorGfx_POWDER_SNOW_MAT[] = {
+ 0x100,
+ 0x101,
+ 0x102,
+ 0x108,
+ 0x109,
+ 0x10A,
+ 0x110,
+ 0x111,
+ 0x112
+};
+
+const u16 DecorGfx_ATTRACT_MAT[] = {
+ 0x103,
+ 0x104,
+ 0x105,
+ 0x10B,
+ 0x10C,
+ 0x10D,
+ 0x113,
+ 0x114,
+ 0x115
+};
+
+const u16 DecorGfx_FISSURE_MAT[] = {
+ 0x106,
+ 0x107,
+ 0x118,
+ 0x10E,
+ 0x10F,
+ 0x120,
+ 0x116,
+ 0x117,
+ 0x128
+};
+
+const u16 DecorGfx_SPIKES_MAT[] = {
+ 0x119,
+ 0x11A,
+ 0x11B,
+ 0x121,
+ 0x122,
+ 0x123,
+ 0x129,
+ 0x12A,
+ 0x12B
+};
+
+const u16 DecorGfx_BALL_POSTER[] = {
+ 0x130
+};
+
+const u16 DecorGfx_GREEN_POSTER[] = {
+ 0x131
+};
+
+const u16 DecorGfx_RED_POSTER[] = {
+ 0x132
+};
+
+const u16 DecorGfx_BLUE_POSTER[] = {
+ 0x133
+};
+
+const u16 DecorGfx_CUTE_POSTER[] = {
+ 0x134
+};
+
+const u16 DecorGfx_PIKA_POSTER[] = {
+ 0x11C,
+ 0x11D
+};
+
+const u16 DecorGfx_LONG_POSTER[] = {
+ 0x11E,
+ 0x11F
+};
+
+const u16 DecorGfx_SEA_POSTER[] = {
+ 0x124,
+ 0x125
+};
+
+const u16 DecorGfx_SKY_POSTER[] = {
+ 0x126,
+ 0x127
+};
+
+const u16 DecorGfx_KISS_POSTER[] = {
+ 0x12C,
+ 0x12D
+};
+
+const u16 DecorGfx_PICHU_DOLL[] = {
+ MAP_OBJ_GFX_PICHU_DOLL
+};
+
+const u16 DecorGfx_PIKACHU_DOLL[] = {
+ MAP_OBJ_GFX_PIKACHU_DOLL
+};
+
+const u16 DecorGfx_MARILL_DOLL[] = {
+ MAP_OBJ_GFX_MARILL_DOLL
+};
+
+const u16 DecorGfx_TOGEPI_DOLL[] = {
+ MAP_OBJ_GFX_TOGEPI_DOLL
+};
+
+const u16 DecorGfx_CYNDAQUIL_DOLL[] = {
+ MAP_OBJ_GFX_CYNDAQUIL_DOLL
+};
+
+const u16 DecorGfx_CHIKORITA_DOLL[] = {
+ MAP_OBJ_GFX_CHIKORITA_DOLL
+};
+
+const u16 DecorGfx_TOTODILE_DOLL[] = {
+ MAP_OBJ_GFX_TOTODILE_DOLL
+};
+
+const u16 DecorGfx_JIGGLYPUFF_DOLL[] = {
+ MAP_OBJ_GFX_JIGGLYPUFF_DOLL
+};
+
+const u16 DecorGfx_MEOWTH_DOLL[] = {
+ MAP_OBJ_GFX_MEOWTH_DOLL
+};
+
+const u16 DecorGfx_CLEFAIRY_DOLL[] = {
+ MAP_OBJ_GFX_CLEFAIRY_DOLL
+};
+
+const u16 DecorGfx_DITTO_DOLL[] = {
+ MAP_OBJ_GFX_DITTO_DOLL
+};
+
+const u16 DecorGfx_SMOOCHUM_DOLL[] = {
+ MAP_OBJ_GFX_SMOOCHUM_DOLL
+};
+
+const u16 DecorGfx_TREECKO_DOLL[] = {
+ MAP_OBJ_GFX_TREECKO_DOLL
+};
+
+const u16 DecorGfx_TORCHIC_DOLL[] = {
+ MAP_OBJ_GFX_TORCHIC_DOLL
+};
+
+const u16 DecorGfx_MUDKIP_DOLL[] = {
+ MAP_OBJ_GFX_MUDKIP_DOLL
+};
+
+const u16 DecorGfx_DUSKULL_DOLL[] = {
+ MAP_OBJ_GFX_DUSKULL_DOLL
+};
+
+const u16 DecorGfx_WYNAUT_DOLL[] = {
+ MAP_OBJ_GFX_WYNAUT_DOLL
+};
+
+const u16 DecorGfx_BALTOY_DOLL[] = {
+ MAP_OBJ_GFX_BALTOY_DOLL
+};
+
+const u16 DecorGfx_KECLEON_DOLL[] = {
+ MAP_OBJ_GFX_KECLEON_DOLL
+};
+
+const u16 DecorGfx_AZURILL_DOLL[] = {
+ MAP_OBJ_GFX_AZURILL_DOLL
+};
+
+const u16 DecorGfx_SKITTY_DOLL[] = {
+ MAP_OBJ_GFX_SKITTY_DOLL
+};
+
+const u16 DecorGfx_SWABLU_DOLL[] = {
+ MAP_OBJ_GFX_SWABLU_DOLL
+};
+
+const u16 DecorGfx_GULPIN_DOLL[] = {
+ MAP_OBJ_GFX_GULPIN_DOLL
+};
+
+const u16 DecorGfx_LOTAD_DOLL[] = {
+ MAP_OBJ_GFX_LOTAD_DOLL
+};
+
+const u16 DecorGfx_SEEDOT_DOLL[] = {
+ MAP_OBJ_GFX_SEEDOT_DOLL
+};
+
+const u16 DecorGfx_PIKA_CUSHION[] = {
+ MAP_OBJ_GFX_PIKA_CUSHION
+};
+
+const u16 DecorGfx_ROUND_CUSHION[] = {
+ MAP_OBJ_GFX_ROUND_CUSHION
+};
+
+const u16 DecorGfx_KISS_CUSHION[] = {
+ MAP_OBJ_GFX_KISS_CUSHION
+};
+
+const u16 DecorGfx_ZIGZAG_CUSHION[] = {
+ MAP_OBJ_GFX_ZIGZAG_CUSHION
+};
+
+const u16 DecorGfx_SPIN_CUSHION[] = {
+ MAP_OBJ_GFX_SPIN_CUSHION
+};
+
+const u16 DecorGfx_DIAMOND_CUSHION[] = {
+ MAP_OBJ_GFX_DIAMOND_CUSHION
+};
+
+const u16 DecorGfx_BALL_CUSHION[] = {
+ MAP_OBJ_GFX_BALL_CUSHION
+};
+
+const u16 DecorGfx_GRASS_CUSHION[] = {
+ MAP_OBJ_GFX_GRASS_CUSHION
+};
+
+const u16 DecorGfx_FIRE_CUSHION[] = {
+ MAP_OBJ_GFX_FIRE_CUSHION
+};
+
+const u16 DecorGfx_WATER_CUSHION[] = {
+ MAP_OBJ_GFX_WATER_CUSHION
+};
+
+const u16 DecorGfx_SNORLAX_DOLL[] = {
+ MAP_OBJ_GFX_BIG_SNORLAX_DOLL
+};
+
+const u16 DecorGfx_RHYDON_DOLL[] = {
+ MAP_OBJ_GFX_BIG_RHYDON_DOLL
+};
+
+const u16 DecorGfx_LAPRAS_DOLL[] = {
+ MAP_OBJ_GFX_BIG_LAPRAS_DOLL
+};
+
+const u16 DecorGfx_VENUSAUR_DOLL[] = {
+ MAP_OBJ_GFX_BIG_VENUSAUR_DOLL
+};
+
+const u16 DecorGfx_CHARIZARD_DOLL[] = {
+ MAP_OBJ_GFX_BIG_CHARIZARD_DOLL
+};
+
+const u16 DecorGfx_BLASTOISE_DOLL[] = {
+ MAP_OBJ_GFX_BIG_BLASTOISE_DOLL
+};
+
+const u16 DecorGfx_WAILMER_DOLL[] = {
+ MAP_OBJ_GFX_BIG_WAILMER_DOLL
+};
+
+const u16 DecorGfx_REGIROCK_DOLL[] = {
+ MAP_OBJ_GFX_BIG_REGIROCK_DOLL
+};
+
+const u16 DecorGfx_REGICE_DOLL[] = {
+ MAP_OBJ_GFX_BIG_REGICE_DOLL
+};
+
+const u16 DecorGfx_REGISTEEL_DOLL[] = {
+ MAP_OBJ_GFX_BIG_REGISTEEL_DOLL
+};
+
+#endif // GUARD_DATA_DECORATION_TILES
diff --git a/include/data2.h b/include/data2.h
new file mode 100644
index 000000000..db9532811
--- /dev/null
+++ b/include/data2.h
@@ -0,0 +1,19 @@
+#ifndef GUARD_DATA2_H
+#define GUARD_DATA2_H
+
+struct MonCoords
+{
+ // This would use a bitfield, but some function
+ // uses it as a u8 and casting won't match.
+ u8 coords; // u8 x:4, y:4;
+ u8 y_offset;
+};
+
+extern struct MonCoords gTrainerBackPicCoords[];
+
+extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
+extern const u8 gMoveNames[][13];
+extern const u8 gAbilityNames[][13];
+extern const u8 gTypeNames[][7];
+
+#endif // GUARD_DATA2_H
diff --git a/include/decompress.h b/include/decompress.h
index 6c925f730..c3a771893 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -8,7 +8,7 @@ void LZDecompressVram(const void *src, void *dest);
u16 LoadCompressedObjectPic(const struct CompressedSpriteSheet *src);
void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *src, void *buffer);
-bool8 LoadCompressedObjectPicUsingHeap(struct CompressedSpriteSheet* src);
+bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src);
void LoadCompressedObjectPalette(const struct CompressedSpritePalette *src);
void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
diff --git a/include/decoration.h b/include/decoration.h
new file mode 100644
index 000000000..adefb2fd1
--- /dev/null
+++ b/include/decoration.h
@@ -0,0 +1,195 @@
+#ifndef GUARD_DECORATION_H
+#define GUARD_DECORATION_H
+
+enum DecoId {
+ /*000*/ DECOR_NONE,
+ /*001*/ DECOR_SMALL_DESK,
+ /*002*/ DECOR_POKEMON_DESK,
+ /*003*/ DECOR_HEAVY_DESK,
+ /*004*/ DECOR_RAGGED_DESK,
+ /*005*/ DECOR_COMFORT_DESK,
+ /*006*/ DECOR_PRETTY_DESK,
+ /*007*/ DECOR_BRICK_DESK,
+ /*008*/ DECOR_CAMP_DESK,
+ /*009*/ DECOR_HARD_DESK,
+ /*010*/ DECOR_SMALL_CHAIR,
+ /*011*/ DECOR_POKEMON_CHAIR,
+ /*012*/ DECOR_HEAVY_CHAIR,
+ /*013*/ DECOR_PRETTY_CHAIR,
+ /*014*/ DECOR_COMFORT_CHAIR,
+ /*015*/ DECOR_RAGGED_CHAIR,
+ /*016*/ DECOR_BRICK_CHAIR,
+ /*017*/ DECOR_CAMP_CHAIR,
+ /*018*/ DECOR_HARD_CHAIR,
+ /*019*/ DECOR_RED_PLANT,
+ /*020*/ DECOR_TROPICAL_PLANT,
+ /*021*/ DECOR_PRETTY_FLOWERS,
+ /*022*/ DECOR_COLORFUL_PLANT,
+ /*023*/ DECOR_BIG_PLANT,
+ /*024*/ DECOR_GORGEOUS_PLANT,
+ /*025*/ DECOR_RED_BRICK,
+ /*026*/ DECOR_YELLOW_BRICK,
+ /*027*/ DECOR_BLUE_BRICK,
+ /*028*/ DECOR_RED_BALLOON,
+ /*029*/ DECOR_BLUE_BALLOON,
+ /*030*/ DECOR_YELLOW_BALLOON,
+ /*031*/ DECOR_RED_TENT,
+ /*032*/ DECOR_BLUE_TENT,
+ /*033*/ DECOR_SOLID_BOARD,
+ /*034*/ DECOR_SLIDE,
+ /*035*/ DECOR_FENCE_LENGTH,
+ /*036*/ DECOR_FENCE_WIDTH,
+ /*037*/ DECOR_TIRE,
+ /*038*/ DECOR_STAND,
+ /*039*/ DECOR_MUD_BALL,
+ /*040*/ DECOR_BREAKABLE_DOOR,
+ /*041*/ DECOR_SAND_ORNAMENT,
+ /*042*/ DECOR_SILVER_SHIELD,
+ /*043*/ DECOR_GOLD_SHIELD,
+ /*044*/ DECOR_GLASS_ORNAMENT,
+ /*045*/ DECOR_TV,
+ /*046*/ DECOR_ROUND_TV,
+ /*047*/ DECOR_CUTE_TV,
+ /*048*/ DECOR_GLITTER_MAT,
+ /*049*/ DECOR_JUMP_MAT,
+ /*050*/ DECOR_SPIN_MAT,
+ /*051*/ DECOR_C_LOW_NOTE_MAT,
+ /*052*/ DECOR_D_NOTE_MAT,
+ /*053*/ DECOR_E_NOTE_MAT,
+ /*054*/ DECOR_F_NOTE_MAT,
+ /*055*/ DECOR_G_NOTE_MAT,
+ /*056*/ DECOR_A_NOTE_MAT,
+ /*057*/ DECOR_B_NOTE_MAT,
+ /*058*/ DECOR_C_HIGH_NOTE_MAT,
+ /*059*/ DECOR_SURF_MAT,
+ /*060*/ DECOR_THUNDER_MAT,
+ /*061*/ DECOR_FIRE_BLAST_MAT,
+ /*062*/ DECOR_POWDER_SNOW_MAT,
+ /*063*/ DECOR_ATTRACT_MAT,
+ /*064*/ DECOR_FISSURE_MAT,
+ /*065*/ DECOR_SPIKES_MAT,
+ /*066*/ DECOR_BALL_POSTER,
+ /*067*/ DECOR_GREEN_POSTER,
+ /*068*/ DECOR_RED_POSTER,
+ /*069*/ DECOR_BLUE_POSTER,
+ /*070*/ DECOR_CUTE_POSTER,
+ /*071*/ DECOR_PIKA_POSTER,
+ /*072*/ DECOR_LONG_POSTER,
+ /*073*/ DECOR_SEA_POSTER,
+ /*074*/ DECOR_SKY_POSTER,
+ /*075*/ DECOR_KISS_POSTER,
+ /*076*/ DECOR_PICHU_DOLL,
+ /*077*/ DECOR_PIKACHU_DOLL,
+ /*078*/ DECOR_MARILL_DOLL,
+ /*079*/ DECOR_TOGEPI_DOLL,
+ /*080*/ DECOR_CYNDAQUIL_DOLL,
+ /*081*/ DECOR_CHIKORITA_DOLL,
+ /*082*/ DECOR_TOTODILE_DOLL,
+ /*083*/ DECOR_JIGGLYPUFF_DOLL,
+ /*084*/ DECOR_MEOWTH_DOLL,
+ /*085*/ DECOR_CLEFAIRY_DOLL,
+ /*086*/ DECOR_DITTO_DOLL,
+ /*087*/ DECOR_SMOOCHUM_DOLL,
+ /*088*/ DECOR_TREECKO_DOLL,
+ /*089*/ DECOR_TORCHIC_DOLL,
+ /*090*/ DECOR_MUDKIP_DOLL,
+ /*091*/ DECOR_DUSKULL_DOLL,
+ /*092*/ DECOR_WYNAUT_DOLL,
+ /*093*/ DECOR_BALTOY_DOLL,
+ /*094*/ DECOR_KECLEON_DOLL,
+ /*095*/ DECOR_AZURILL_DOLL,
+ /*096*/ DECOR_SKITTY_DOLL,
+ /*097*/ DECOR_SWABLU_DOLL,
+ /*098*/ DECOR_GULPIN_DOLL,
+ /*099*/ DECOR_LOTAD_DOLL,
+ /*100*/ DECOR_SEEDOT_DOLL,
+ /*101*/ DECOR_PIKA_CUSHION,
+ /*102*/ DECOR_ROUND_CUSHION,
+ /*103*/ DECOR_KISS_CUSHION,
+ /*104*/ DECOR_ZIGZAG_CUSHION,
+ /*105*/ DECOR_SPIN_CUSHION,
+ /*106*/ DECOR_DIAMOND_CUSHION,
+ /*107*/ DECOR_BALL_CUSHION,
+ /*108*/ DECOR_GRASS_CUSHION,
+ /*109*/ DECOR_FIRE_CUSHION,
+ /*110*/ DECOR_WATER_CUSHION,
+ /*111*/ DECOR_SNORLAX_DOLL,
+ /*112*/ DECOR_RHYDON_DOLL,
+ /*113*/ DECOR_LAPRAS_DOLL,
+ /*114*/ DECOR_VENUSAUR_DOLL,
+ /*115*/ DECOR_CHARIZARD_DOLL,
+ /*116*/ DECOR_BLASTOISE_DOLL,
+ /*117*/ DECOR_WAILMER_DOLL,
+ /*118*/ DECOR_REGIROCK_DOLL,
+ /*119*/ DECOR_REGICE_DOLL,
+ /*120*/ DECOR_REGISTEEL_DOLL
+};
+
+enum DecorPerm {
+ /*
+ * The nomenclature here describes collision and placement permissions, in that order.
+ */
+ DECORPERM_SOLID_FLOOR,
+ DECORPERM_PASS_FLOOR,
+ DECORPERM_BEHIND_FLOOR,
+ DECORPERM_NA_WALL,
+ DECORPERM_SOLID_MAT
+};
+
+enum DecorShape {
+ /*
+ * Width-x-height
+ */
+ DECORSHAPE_1x1,
+ DECORSHAPE_2x1,
+ DECORSHAPE_3x1, // unused
+ DECORSHAPE_4x2,
+ DECORSHAPE_2x2,
+ DECORSHAPE_1x2,
+ DECORSHAPE_1x3, // unused
+ DECORSHAPE_2x4,
+ DECORSHAPE_3x3,
+ DECORSHAPE_3x2
+};
+
+enum DecorCat {
+ /*
+ * In which category you can find the decoration in the PC.
+ */
+ /*0*/ DECORCAT_DESK,
+ /*1*/ DECORCAT_CHAIR,
+ /*2*/ DECORCAT_PLANT,
+ /*3*/ DECORCAT_ORNAMENT,
+ /*4*/ DECORCAT_MAT,
+ /*5*/ DECORCAT_POSTER,
+ /*6*/ DECORCAT_DOLL,
+ /*7*/ DECORCAT_CUSHION
+};
+
+struct Decoration
+{
+ /*0x00*/ u8 id;
+ /*0x01*/ u8 name[16];
+ /*0x11*/ u8 permission;
+ /*0x12*/ u8 shape;
+ /*0x13*/ u8 category;
+ /*0x14*/ u16 price;
+ /*0x18*/ const u8 *description;
+ /*0x1c*/ const u16 *tiles;
+};
+
+struct DecorPCPointers
+{
+ /* 0x00 */ u8 *items;
+ /* 0x04 */ u8 *pos;
+ /* 0x08 */ u8 size;
+ /* 0x09 */ u8 isPlayerRoom;
+};
+
+extern const struct Decoration gDecorations[];
+extern EWRAM_DATA u8 *gCurDecorInventoryItems;
+extern EWRAM_DATA u8 gCurDecorationIndex;
+
+void sub_8126968(void);
+
+#endif //GUARD_DECORATION_H
diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h
new file mode 100644
index 000000000..e1fec36ea
--- /dev/null
+++ b/include/decoration_inventory.h
@@ -0,0 +1,20 @@
+#ifndef GUARD_DECORATION_INVENTORY_H
+#define GUARD_DECORATION_INVENTORY_H
+struct DecorationInventory {
+ u8 *items;
+ u8 size;
+};
+
+extern struct DecorationInventory gDecorationInventories[];
+
+void ClearDecorationInventories(void);
+s8 GetFirstEmptyDecorSlot(u8 idx);
+u8 CheckHasDecoration(u8);
+u8 DecorationAdd(u8);
+u8 DecorationCheckSpace(u8);
+s8 DecorationRemove(u8);
+void CondenseDecorationCategoryN(u8);
+u8 CountDecorationCategoryN(u8 idx);
+u8 CountDecorations(void);
+
+#endif // GUARD_DECORATION_INVENTORY_H
diff --git a/include/diploma.h b/include/diploma.h
new file mode 100644
index 000000000..8d730fa05
--- /dev/null
+++ b/include/diploma.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_DIPLOMA_H
+#define GUARD_DIPLOMA_H
+
+void CB2_ShowDiploma(void);
+
+#endif // GUARD_DIPLOMA_H
diff --git a/include/dma3.h b/include/dma3.h
index db75ea9e3..265b47824 100644
--- a/include/dma3.h
+++ b/include/dma3.h
@@ -1,20 +1,6 @@
#ifndef GUARD_DMA3_H
#define GUARD_DMA3_H
-extern u8 gDma3ManagerLocked;
-extern u8 gDma3RequestCursor;
-
-struct DmaRequestsStruct
-{
- /* 0x00 */ const u8 *src;
- /* 0x04 */ u8 *dest;
- /* 0x08 */ u16 size;
- /* 0x0A */ u16 mode;
- /* 0x0C */ u32 value;
-};
-
-extern struct DmaRequestsStruct gDma3Requests[128];
-
void ClearDma3Requests(void);
void ProcessDma3Requests(void);
int RequestDma3Copy(const void *src, void *dest, u16 size, u8 mode);
diff --git a/include/easy_chat.h b/include/easy_chat.h
index fc44b6a8a..b0a217320 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -30,7 +30,9 @@ enum
void InitEasyChatPhrases(void);
void easy_chat_input_maybe(void);
-void CopyEasyChatWord(u8 *, u16);
-bool32 sub_811F8D8(u16);
+void CopyEasyChatWord(u8 *dest, u16 word);
+bool32 sub_811F8D8(u16 word);
+void InitializeEasyChatWordArray(u16 *words, u16 length);
+void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_data.h b/include/event_data.h
index a2a501283..0bd11fdcd 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -27,7 +27,7 @@ bool8 VarSet(u16 id, u16 value);
u8 VarGetFieldObjectGraphicsId(u8 id);
u8 *GetFlagPointer(u16 id);
u8 FlagSet(u16 id);
-u8 FlagReset(u16 id);
+u8 FlagClear(u16 id);
bool8 FlagGet(u16 id);
extern u16 gSpecialVar_0x8000;
diff --git a/include/event_scripts.h b/include/event_scripts.h
index f1abdd6f6..ff02a110a 100755
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -5,7 +5,360 @@
#ifndef GUARD_EVENT_SCRIPTS_H
#define GUARD_EVENT_SCRIPTS_H
+extern const u8 gUnknown_0823B4E8[];
+extern const u8 gUnknown_08275D0C[];
+extern const u8 gUnknown_08275D1F[];
+extern const u8 gUnknown_08275D2E[];
extern const u8 gUnknown_082766A2[];
extern const u8 gUnknown_082766A6[];
+extern const u8 gTVBravoTrainerText00[];
+extern const u8 gTVBravoTrainerText01[];
+extern const u8 gTVBravoTrainerText02[];
+extern const u8 gTVBravoTrainerText03[];
+extern const u8 gTVBravoTrainerText04[];
+extern const u8 gTVBravoTrainerText05[];
+extern const u8 gTVBravoTrainerText06[];
+extern const u8 gTVBravoTrainerText07[];
+extern const u8 gTVBravoTrainerText08[];
+extern const u8 gTVBravoTrainerBattleTowerText00[];
+extern const u8 gTVBravoTrainerBattleTowerText01[];
+extern const u8 gTVBravoTrainerBattleTowerText02[];
+extern const u8 gTVBravoTrainerBattleTowerText03[];
+extern const u8 gTVBravoTrainerBattleTowerText04[];
+extern const u8 gTVBravoTrainerBattleTowerText05[];
+extern const u8 gTVBravoTrainerBattleTowerText06[];
+extern const u8 gTVBravoTrainerBattleTowerText07[];
+extern const u8 gTVBravoTrainerBattleTowerText08[];
+extern const u8 gTVBravoTrainerBattleTowerText09[];
+extern const u8 gTVBravoTrainerBattleTowerText10[];
+extern const u8 gTVBravoTrainerBattleTowerText11[];
+extern const u8 gTVBravoTrainerBattleTowerText12[];
+extern const u8 gTVBravoTrainerBattleTowerText13[];
+extern const u8 gTVBravoTrainerBattleTowerText14[];
+extern const u8 gTVFanClubOpinionsText00[];
+extern const u8 gTVFanClubOpinionsText01[];
+extern const u8 gTVFanClubOpinionsText02[];
+extern const u8 gTVFanClubOpinionsText03[];
+extern const u8 gTVFanClubOpinionsText04[];
+extern const u8 gTVFanClubText00[];
+extern const u8 gTVFanClubText01[];
+extern const u8 gTVFanClubText02[];
+extern const u8 gTVFanClubText03[];
+extern const u8 gTVFanClubText04[];
+extern const u8 gTVFanClubText05[];
+extern const u8 gTVFanClubText06[];
+extern const u8 gTVFanClubText07[];
+extern const u8 gTVRecentHappeningsText00[];
+extern const u8 gTVRecentHappeningsText01[];
+extern const u8 gTVRecentHappeningsText02[];
+extern const u8 gTVRecentHappeningsText03[];
+extern const u8 gTVRecentHappeningsText04[];
+extern const u8 gTVRecentHappeningsText05[];
+extern const u8 gTVMassOutbreakText00[];
+extern const u8 gTV3CheersForPokeblocksText00[];
+extern const u8 gTV3CheersForPokeblocksText01[];
+extern const u8 gTV3CheersForPokeblocksText02[];
+extern const u8 gTV3CheersForPokeblocksText03[];
+extern const u8 gTV3CheersForPokeblocksText04[];
+extern const u8 gTV3CheersForPokeblocksText05[];
+extern const u8 gTVTrainerFanClubSpecialText00[];
+extern const u8 gTVTrainerFanClubSpecialText01[];
+extern const u8 gTVTrainerFanClubSpecialText02[];
+extern const u8 gTVTrainerFanClubSpecialText03[];
+extern const u8 gTVTrainerFanClubSpecialText04[];
+extern const u8 gTVTrainerFanClubSpecialText05[];
+extern const u8 gTVNameRaterText00[];
+extern const u8 gTVNameRaterText01[];
+extern const u8 gTVNameRaterText02[];
+extern const u8 gTVNameRaterText03[];
+extern const u8 gTVNameRaterText04[];
+extern const u8 gTVNameRaterText05[];
+extern const u8 gTVNameRaterText06[];
+extern const u8 gTVNameRaterText07[];
+extern const u8 gTVNameRaterText08[];
+extern const u8 gTVNameRaterText09[];
+extern const u8 gTVNameRaterText10[];
+extern const u8 gTVNameRaterText11[];
+extern const u8 gTVNameRaterText12[];
+extern const u8 gTVNameRaterText13[];
+extern const u8 gTVNameRaterText14[];
+extern const u8 gTVNameRaterText15[];
+extern const u8 gTVNameRaterText16[];
+extern const u8 gTVNameRaterText17[];
+extern const u8 gTVNameRaterText18[];
+extern const u8 gTVPokemonAnglerText00[];
+extern const u8 gTVPokemonAnglerText01[];
+extern const u8 gTVPokemonTodayFailedText00[];
+extern const u8 gTVPokemonTodayFailedText01[];
+extern const u8 gTVPokemonTodayFailedText02[];
+extern const u8 gTVPokemonTodayFailedText03[];
+extern const u8 gTVPokemonTodayFailedText04[];
+extern const u8 gTVPokemonTodayFailedText05[];
+extern const u8 gTVPokemonTodayFailedText06[];
+extern const u8 gTVPokemonTodaySuccessfulText00[];
+extern const u8 gTVPokemonTodaySuccessfulText01[];
+extern const u8 gTVPokemonTodaySuccessfulText02[];
+extern const u8 gTVPokemonTodaySuccessfulText03[];
+extern const u8 gTVPokemonTodaySuccessfulText04[];
+extern const u8 gTVPokemonTodaySuccessfulText05[];
+extern const u8 gTVPokemonTodaySuccessfulText06[];
+extern const u8 gTVPokemonTodaySuccessfulText07[];
+extern const u8 gTVPokemonTodaySuccessfulText08[];
+extern const u8 gTVPokemonTodaySuccessfulText09[];
+extern const u8 gTVPokemonTodaySuccessfulText10[];
+extern const u8 gTVPokemonTodaySuccessfulText11[];
+extern const u8 gTVTodaysSmartShopperText00[];
+extern const u8 gTVTodaysSmartShopperText01[];
+extern const u8 gTVTodaysSmartShopperText02[];
+extern const u8 gTVTodaysSmartShopperText03[];
+extern const u8 gTVTodaysSmartShopperText04[];
+extern const u8 gTVTodaysSmartShopperText05[];
+extern const u8 gTVTodaysSmartShopperText06[];
+extern const u8 gTVTodaysSmartShopperText07[];
+extern const u8 gTVTodaysSmartShopperText08[];
+extern const u8 gTVTodaysSmartShopperText09[];
+extern const u8 gTVTodaysSmartShopperText10[];
+extern const u8 gTVTodaysSmartShopperText11[];
+extern const u8 gTVTodaysSmartShopperText12[];
+extern const u8 gTVWorldOfMastersText00[];
+extern const u8 gTVWorldOfMastersText01[];
+extern const u8 gTVWorldOfMastersText02[];
+extern const u8 gTVTodaysRivalTrainerText00[];
+extern const u8 gTVTodaysRivalTrainerText07[];
+extern const u8 gTVTodaysRivalTrainerText08[];
+extern const u8 gTVTodaysRivalTrainerText09[];
+extern const u8 gTVTodaysRivalTrainerText10[];
+extern const u8 gTVTodaysRivalTrainerText01[];
+extern const u8 gTVTodaysRivalTrainerText02[];
+extern const u8 gTVTodaysRivalTrainerText03[];
+extern const u8 gTVTodaysRivalTrainerText04[];
+extern const u8 gTVTodaysRivalTrainerText05[];
+extern const u8 gTVTodaysRivalTrainerText06[];
+extern const u8 gTVDewfordTrendWatcherNetworkText00[];
+extern const u8 gTVDewfordTrendWatcherNetworkText01[];
+extern const u8 gTVDewfordTrendWatcherNetworkText02[];
+extern const u8 gTVDewfordTrendWatcherNetworkText03[];
+extern const u8 gTVDewfordTrendWatcherNetworkText04[];
+extern const u8 gTVDewfordTrendWatcherNetworkText05[];
+extern const u8 gTVDewfordTrendWatcherNetworkText06[];
+extern const u8 gTVHoennTreasureInvestigatorsText00[];
+extern const u8 gTVHoennTreasureInvestigatorsText01[];
+extern const u8 gTVHoennTreasureInvestigatorsText02[];
+extern const u8 gTVFindThatGamerText00[];
+extern const u8 gTVFindThatGamerText01[];
+extern const u8 gTVFindThatGamerText02[];
+extern const u8 gTVFindThatGamerText03[];
+extern const u8 gTVBreakingNewsText00[];
+extern const u8 gTVBreakingNewsText01[];
+extern const u8 gTVBreakingNewsText02[];
+extern const u8 gTVBreakingNewsText03[];
+extern const u8 gTVBreakingNewsText04[];
+extern const u8 gTVBreakingNewsText05[];
+extern const u8 gTVBreakingNewsText06[];
+extern const u8 gTVBreakingNewsText07[];
+extern const u8 gTVBreakingNewsText12[];
+extern const u8 gTVBreakingNewsText08[];
+extern const u8 gTVBreakingNewsText09[];
+extern const u8 gTVBreakingNewsText10[];
+extern const u8 gTVBreakingNewsText11[];
+extern const u8 gTVSecretBaseVisitText00[];
+extern const u8 gTVSecretBaseVisitText01[];
+extern const u8 gTVSecretBaseVisitText02[];
+extern const u8 gTVSecretBaseVisitText03[];
+extern const u8 gTVSecretBaseVisitText04[];
+extern const u8 gTVSecretBaseVisitText05[];
+extern const u8 gTVSecretBaseVisitText06[];
+extern const u8 gTVSecretBaseVisitText07[];
+extern const u8 gTVSecretBaseVisitText08[];
+extern const u8 gTVSecretBaseVisitText09[];
+extern const u8 gTVSecretBaseVisitText10[];
+extern const u8 gTVSecretBaseVisitText11[];
+extern const u8 gTVSecretBaseVisitText12[];
+extern const u8 gTVSecretBaseVisitText13[];
+extern const u8 gTVPokemonLotteryWinnerFlashReportText00[];
+extern const u8 gTVThePokemonBattleSeminarText00[];
+extern const u8 gTVThePokemonBattleSeminarText01[];
+extern const u8 gTVThePokemonBattleSeminarText02[];
+extern const u8 gTVThePokemonBattleSeminarText03[];
+extern const u8 gTVThePokemonBattleSeminarText04[];
+extern const u8 gTVThePokemonBattleSeminarText05[];
+extern const u8 gTVThePokemonBattleSeminarText06[];
+extern const u8 gTVTrainerFanClubText00[];
+extern const u8 gTVTrainerFanClubText01[];
+extern const u8 gTVTrainerFanClubText02[];
+extern const u8 gTVTrainerFanClubText03[];
+extern const u8 gTVTrainerFanClubText04[];
+extern const u8 gTVTrainerFanClubText05[];
+extern const u8 gTVTrainerFanClubText06[];
+extern const u8 gTVTrainerFanClubText07[];
+extern const u8 gTVTrainerFanClubText08[];
+extern const u8 gTVTrainerFanClubText09[];
+extern const u8 gTVTrainerFanClubText10[];
+extern const u8 gTVTrainerFanClubText11[];
+extern const u8 gTVCutiesText00[];
+extern const u8 gTVCutiesText01[];
+extern const u8 gTVCutiesText02[];
+extern const u8 gTVCutiesText03[];
+extern const u8 gTVCutiesText04[];
+extern const u8 gTVCutiesText05[];
+extern const u8 gTVCutiesText06[];
+extern const u8 gTVCutiesText07[];
+extern const u8 gTVCutiesText08[];
+extern const u8 gTVCutiesText09[];
+extern const u8 gTVCutiesText10[];
+extern const u8 gTVCutiesText11[];
+extern const u8 gTVCutiesText12[];
+extern const u8 gTVCutiesText13[];
+extern const u8 gTVCutiesText14[];
+extern const u8 gTVCutiesText15[];
+extern const u8 gTVPokemonNewsBattleFrontierText00[];
+extern const u8 gTVPokemonNewsBattleFrontierText01[];
+extern const u8 gTVPokemonNewsBattleFrontierText02[];
+extern const u8 gTVPokemonNewsBattleFrontierText03[];
+extern const u8 gTVPokemonNewsBattleFrontierText04[];
+extern const u8 gTVPokemonNewsBattleFrontierText05[];
+extern const u8 gTVPokemonNewsBattleFrontierText06[];
+extern const u8 gTVPokemonNewsBattleFrontierText07[];
+extern const u8 gTVPokemonNewsBattleFrontierText08[];
+extern const u8 gTVPokemonNewsBattleFrontierText09[];
+extern const u8 gTVPokemonNewsBattleFrontierText10[];
+extern const u8 gTVPokemonNewsBattleFrontierText11[];
+extern const u8 gTVPokemonNewsBattleFrontierText12[];
+extern const u8 gTVPokemonNewsBattleFrontierText13[];
+extern const u8 gTVPokemonNewsBattleFrontierText14[];
+extern const u8 gTVPokemonNewsBattleFrontierText15[];
+extern const u8 gTVPokemonNewsBattleFrontierText16[];
+extern const u8 gTVPokemonNewsBattleFrontierText17[];
+extern const u8 gTVPokemonNewsBattleFrontierText18[];
+extern const u8 gTVWhatsNo1InHoennTodayText00[];
+extern const u8 gTVWhatsNo1InHoennTodayText01[];
+extern const u8 gTVWhatsNo1InHoennTodayText02[];
+extern const u8 gTVWhatsNo1InHoennTodayText03[];
+extern const u8 gTVWhatsNo1InHoennTodayText04[];
+extern const u8 gTVWhatsNo1InHoennTodayText05[];
+extern const u8 gTVWhatsNo1InHoennTodayText06[];
+extern const u8 gTVWhatsNo1InHoennTodayText07[];
+extern const u8 gTVWhatsNo1InHoennTodayText08[];
+extern const u8 gTVSecretBaseSecretsText00[];
+extern const u8 gTVSecretBaseSecretsText01[];
+extern const u8 gTVSecretBaseSecretsText02[];
+extern const u8 gTVSecretBaseSecretsText03[];
+extern const u8 gTVSecretBaseSecretsText04[];
+extern const u8 gTVSecretBaseSecretsText05[];
+extern const u8 gTVSecretBaseSecretsText06[];
+extern const u8 gTVSecretBaseSecretsText07[];
+extern const u8 gTVSecretBaseSecretsText08[];
+extern const u8 gTVSecretBaseSecretsText09[];
+extern const u8 gTVSecretBaseSecretsText10[];
+extern const u8 gTVSecretBaseSecretsText11[];
+extern const u8 gTVSecretBaseSecretsText12[];
+extern const u8 gTVSecretBaseSecretsText13[];
+extern const u8 gTVSecretBaseSecretsText14[];
+extern const u8 gTVSecretBaseSecretsText15[];
+extern const u8 gTVSecretBaseSecretsText16[];
+extern const u8 gTVSecretBaseSecretsText17[];
+extern const u8 gTVSecretBaseSecretsText18[];
+extern const u8 gTVSecretBaseSecretsText19[];
+extern const u8 gTVSecretBaseSecretsText20[];
+extern const u8 gTVSecretBaseSecretsText21[];
+extern const u8 gTVSecretBaseSecretsText22[];
+extern const u8 gTVSecretBaseSecretsText23[];
+extern const u8 gTVSecretBaseSecretsText24[];
+extern const u8 gTVSecretBaseSecretsText25[];
+extern const u8 gTVSecretBaseSecretsText26[];
+extern const u8 gTVSecretBaseSecretsText27[];
+extern const u8 gTVSecretBaseSecretsText28[];
+extern const u8 gTVSecretBaseSecretsText29[];
+extern const u8 gTVSecretBaseSecretsText30[];
+extern const u8 gTVSecretBaseSecretsText31[];
+extern const u8 gTVSecretBaseSecretsText32[];
+extern const u8 gTVSecretBaseSecretsText33[];
+extern const u8 gTVSecretBaseSecretsText34[];
+extern const u8 gTVSecretBaseSecretsText35[];
+extern const u8 gTVSecretBaseSecretsText36[];
+extern const u8 gTVSecretBaseSecretsText37[];
+extern const u8 gTVSecretBaseSecretsText38[];
+extern const u8 gTVSecretBaseSecretsText39[];
+extern const u8 gTVSecretBaseSecretsText40[];
+extern const u8 gTVSecretBaseSecretsText41[];
+extern const u8 gTVSecretBaseSecretsText42[];
+extern const u8 gTVSafariFanClubText00[];
+extern const u8 gTVSafariFanClubText01[];
+extern const u8 gTVSafariFanClubText02[];
+extern const u8 gTVSafariFanClubText03[];
+extern const u8 gTVSafariFanClubText04[];
+extern const u8 gTVSafariFanClubText05[];
+extern const u8 gTVSafariFanClubText06[];
+extern const u8 gTVSafariFanClubText07[];
+extern const u8 gTVSafariFanClubText08[];
+extern const u8 gTVSafariFanClubText09[];
+extern const u8 gTVSafariFanClubText10[];
+extern const u8 gTVContestLiveUpdatesText00[];
+extern const u8 gTVContestLiveUpdatesText01[];
+extern const u8 gTVContestLiveUpdatesText02[];
+extern const u8 gTVContestLiveUpdatesText03[];
+extern const u8 gTVContestLiveUpdatesText04[];
+extern const u8 gTVContestLiveUpdatesText05[];
+extern const u8 gTVContestLiveUpdatesText06[];
+extern const u8 gTVContestLiveUpdatesText07[];
+extern const u8 gTVContestLiveUpdatesText08[];
+extern const u8 gTVContestLiveUpdatesText09[];
+extern const u8 gTVContestLiveUpdatesText10[];
+extern const u8 gTVContestLiveUpdatesText11[];
+extern const u8 gTVContestLiveUpdatesText12[];
+extern const u8 gTVContestLiveUpdatesText13[];
+extern const u8 gTVContestLiveUpdatesText14[];
+extern const u8 gTVContestLiveUpdatesText15[];
+extern const u8 gTVContestLiveUpdatesText16[];
+extern const u8 gTVContestLiveUpdatesText17[];
+extern const u8 gTVContestLiveUpdatesText18[];
+extern const u8 gTVContestLiveUpdatesText19[];
+extern const u8 gTVContestLiveUpdatesText20[];
+extern const u8 gTVContestLiveUpdatesText21[];
+extern const u8 gTVContestLiveUpdatesText22[];
+extern const u8 gTVContestLiveUpdatesText23[];
+extern const u8 gTVContestLiveUpdatesText24[];
+extern const u8 gTVContestLiveUpdatesText25[];
+extern const u8 gTVContestLiveUpdatesText26[];
+extern const u8 gTVContestLiveUpdatesText27[];
+extern const u8 gTVContestLiveUpdatesText28[];
+extern const u8 gTVContestLiveUpdatesText29[];
+extern const u8 gTVContestLiveUpdatesText30[];
+extern const u8 gTVContestLiveUpdatesText31[];
+extern const u8 gTVContestLiveUpdatesText32[];
+extern const u8 gTVPokemonBattleUpdateText00[];
+extern const u8 gTVPokemonBattleUpdateText01[];
+extern const u8 gTVPokemonBattleUpdateText02[];
+extern const u8 gTVPokemonBattleUpdateText03[];
+extern const u8 gTVPokemonBattleUpdateText04[];
+extern const u8 gTVPokemonBattleUpdateText05[];
+extern const u8 gTVPokemonBattleUpdateText06[];
+extern const u8 gTVPokemonBattleUpdateText07[];
+extern const u8 gTVInSearchOfTrainersText00[];
+extern const u8 gTVInSearchOfTrainersText01[];
+extern const u8 gTVInSearchOfTrainersText02[];
+extern const u8 gTVInSearchOfTrainersText03[];
+extern const u8 gTVInSearchOfTrainersText04[];
+extern const u8 gTVInSearchOfTrainersText05[];
+extern const u8 gTVInSearchOfTrainersText06[];
+extern const u8 gTVInSearchOfTrainersText07[];
+extern const u8 gTVInSearchOfTrainersText08[];
+extern const u8 gTVPokemonContestLiveUpdates2Text00[];
+extern const u8 gTVPokemonContestLiveUpdates2Text01[];
+extern const u8 gTVPokemonContestLiveUpdates2Text02[];
+extern const u8 gTVPokemonContestLiveUpdates2Text03[];
+extern const u8 gPokeNewsTextSlateport_Upcoming[];
+extern const u8 gPokeNewsTextSlateport_Ongoing[];
+extern const u8 gPokeNewsTextSlateport_Ending[];
+extern const u8 gPokeNewsTextGameCorner_Upcoming[];
+extern const u8 gPokeNewsTextGameCorner_Ongoing[];
+extern const u8 gPokeNewsTextGameCorner_Ending[];
+extern const u8 gPokeNewsTextLilycove_Upcoming[];
+extern const u8 gPokeNewsTextLilycove_Ongoing[];
+extern const u8 gPokeNewsTextLilycove_Ending[];
+extern const u8 gPokeNewsTextBlendMaster_Upcoming[];
+extern const u8 gPokeNewsTextBlendMaster_Ongoing[];
+extern const u8 gPokeNewsTextBlendMaster_Ending[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/evolution_scene.h b/include/evolution_scene.h
new file mode 100644
index 000000000..48bd6ebe1
--- /dev/null
+++ b/include/evolution_scene.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_EVOLUTION_SCENE_H
+#define GUARD_EVOLUTION_SCENE_H
+
+void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID);
+void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID);
+void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID);
+
+extern void (*gCB2_AfterEvolution)(void);
+
+#endif // GUARD_EVOLUTION_SCENE_H
diff --git a/include/field_camera.h b/include/field_camera.h
index 9fbaac6a2..f74fadd86 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -22,4 +22,6 @@ extern u16 gUnknown_03005DE8;
// Exported ROM declarations
+void DrawWholeMapView(void);
+
#endif //GUARD_FIELD_CAMERA_H
diff --git a/include/field_door.h b/include/field_door.h
new file mode 100644
index 000000000..f1dfc551d
--- /dev/null
+++ b/include/field_door.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_FIELDDOOR_H
+#define GUARD_FIELDDOOR_H
+
+void FieldSetDoorOpened(u32, u32);
+void FieldSetDoorClosed(u32, u32);
+s8 FieldAnimateDoorClose(u32, u32);
+s8 FieldAnimateDoorOpen(u32, u32);
+bool8 FieldIsDoorAnimationRunning(void);
+u32 GetDoorSoundEffect(u32 x, u32 y);
+
+#endif
diff --git a/include/field_effect.h b/include/field_effect.h
index 7ec26b3d7..aa3f7eba0 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -1,7 +1,3 @@
-//
-// Created by Scott Norton on 9/15/17.
-//
-
#ifndef GUARD_FIELD_EFFECTS_H
#define GUARD_FIELD_EFFECTS_H
@@ -73,8 +69,9 @@ enum FieldEffectScriptIdx
FLDEFF_USE_TELEPORT
};
-extern u32 gFieldEffectSpawnParams[8];
-
u8 FieldEffectStart(u8);
+bool8 FieldEffectActiveListContains(u8 id);
+
+extern u32 gFieldEffectArguments[8];
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
new file mode 100644
index 000000000..7c2d16a24
--- /dev/null
+++ b/include/field_fadetransition.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_FIELD_FADETRANSITION_H
+#define GUARD_FIELD_FADETRANSITION_H
+
+void sub_80AF734(void);
+void sp13E_warp_to_last_warp(void);
+void sub_80AF7D0(void);
+void sp13F_fall_to_last_warp(void);
+
+void sub_80AF848(void);
+void sub_80AF87C(void);
+
+#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 40cc64054..038233fe6 100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -33,6 +33,7 @@ u8 sub_808D4F4(void);
void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8);
void npc_load_two_palettes__no_record(u16, u8);
void npc_load_two_palettes__and_record(u16, u8);
+void sub_808EBA8(u8, u8, u8, s16, s16);
void pal_patch_for_npc(u16, u8);
void sub_808E16C(s16, s16);
void sub_8092FF0(s16, s16, s16 *, s16 *);
@@ -63,6 +64,7 @@ void npc_coords_shift(struct MapObject *, s16, s16);
void sub_808EB08(struct MapObject *, s16, s16);
void sub_808F254(u8, u8, u8);
void FieldObjectStep(struct MapObject *, struct Sprite *, bool8(struct MapObject *, struct Sprite *));
+u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8);
u8 GetOppositeDirection(u8);
u8 GetStepInPlaceDelay4AnimId(u32);
u8 GetStepInPlaceDelay8AnimId(u32);
@@ -71,6 +73,8 @@ u8 GetStepInPlaceDelay32AnimId(u32);
u8 npc_block_way(struct MapObject *, s16, s16, u32);
void MoveCoords(u8, s16 *, s16 *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
+u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
+u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z);
// Exported data declarations
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
new file mode 100644
index 000000000..ba797ec98
--- /dev/null
+++ b/include/field_map_obj_helpers.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_FIELDMAPOBJHELP_H
+#define GUARD_FIELDMAPOBJHELP_H
+
+void UnfreezeMapObjects(void);
+void sub_8097B78(u8, u8);
+
+#endif
diff --git a/include/field_message_box.h b/include/field_message_box.h
new file mode 100644
index 000000000..432c9078b
--- /dev/null
+++ b/include/field_message_box.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_FIELD_MESSAGE_BOX_H
+#define GUARD_FIELD_MESSAGE_BOX_H
+
+bool8 ShowFieldMessage(const u8 *message);
+bool8 sub_8098238(const u8 *message);
+bool8 ShowFieldAutoScrollMessage(const u8 *message);
+void HideFieldMessageBox(void);
+bool8 IsFieldMessageBoxHidden(void);
+
+#endif // GUARD_FIELD_MESSAGE_BOX_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index a787cf805..5c16e9414 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -1,7 +1,3 @@
-//
-// Created by Scott Norton on 9/6/17.
-//
-
#ifndef GUARD_FIELD_PLAYER_AVATAR_H
#define GUARD_FIELD_PLAYER_AVATAR_H
@@ -14,4 +10,6 @@ u8 player_get_direction_lower_nybble(void);
u8 player_get_direction_upper_nybble(void);
u8 player_get_x22(void);
+void sub_808D074(u8);
+
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_screen.h b/include/field_screen.h
new file mode 100644
index 000000000..b15fdba7d
--- /dev/null
+++ b/include/field_screen.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_FIELD_SCREEN_H
+#define GUARD_FIELD_SCREEN_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+void pal_fill_black(void);
+bool8 sub_80ABDFC(void);
+
+#endif //GUARD_FIELD_SCREEN_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
new file mode 100644
index 000000000..ef81c2f9e
--- /dev/null
+++ b/include/field_screen_effect.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_FIELD_SCREEN_EFFECT_H
+#define GUARD_FIELD_SCREEN_EFFECT_H
+
+void sub_80AF79C(void);
+void sub_80B009C(u8);
+void sub_80B0244(void);
+
+#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/field_specials.h b/include/field_specials.h
new file mode 100644
index 000000000..1f8fbf147
--- /dev/null
+++ b/include/field_specials.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_FIELD_SPECIALS_H
+#define GUARD_FIELD_SPECIALS_H
+
+u8 GetLeadMonIndex(void);
+
+#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/field_tasks.h b/include/field_tasks.h
new file mode 100644
index 000000000..2a2a772d8
--- /dev/null
+++ b/include/field_tasks.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_FIELD_TASKS_H
+#define GUARD_FIELD_TASKS_H
+
+void ActivatePerStepCallback(u8);
+
+#endif // GUARD_FIELD_TASKS_H
diff --git a/include/field_weather.h b/include/field_weather.h
new file mode 100644
index 000000000..e12107e70
--- /dev/null
+++ b/include/field_weather.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_WEATHER_H
+#define GUARD_WEATHER_H
+
+void fade_screen(u8, s8);
+
+void SetSav1Weather(u32);
+u8 GetSav1Weather(void);
+void sub_80AEDBC(void);
+
+void DoCurrentWeather(void);
+
+#endif // GUARD_WEATHER_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 7174d98cc..06cb7cc77 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -1,19 +1,19 @@
-//
-// Created by scott on 9/16/2017.
-//
-
#ifndef GUARD_FIELDMAP_H
#define GUARD_FIELDMAP_H
-// Exported type declarations
-
-// Exported RAM declarations
+extern struct MapCoords {
+ int width;
+ int height;
+} gUnknown_03005DC0;
-// Exported ROM declarations
-u8 MapGridGetMetatileBehaviorAt(s16, s16);
+u32 MapGridGetMetatileIdAt(int, int);
+u32 MapGridGetMetatileBehaviorAt(int, int);
+void MapGridSetMetatileIdAt(int, int, u16);
+void MapGridSetMetatileEntryAt(int, int, u16);
void GetCameraCoords(u16*, u16*);
bool8 MapGridIsImpassableAt(s16, s16);
s32 GetMapBorderIdAt(s16, s16);
bool32 CanCameraMoveInDirection(u8);
+u16 GetBehaviorByMetatileId(u16 metatileId);
#endif //GUARD_FIELDMAP_H
diff --git a/include/flags.h b/include/flags.h
index 19ec01b56..7d825feba 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -3,7 +3,7 @@
#define TRAINER_FLAG_START 0x500
#define TRAINERS_FLAG_NO 0x356
-#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA)
+#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
// SYSTEM FLAGS
@@ -84,6 +84,22 @@
#define SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61
#define SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62
+#define SYS_TOWER_SILVER CODE_FLAGS + 0x64
+#define SYS_TOWER_GOLD CODE_FLAGS + 0x65
+#define SYS_DOME_SILVER CODE_FLAGS + 0x66
+#define SYS_DOME_GOLD CODE_FLAGS + 0x67
+#define SYS_PALACE_SILVER CODE_FLAGS + 0x68
+#define SYS_PALACE_GOLD CODE_FLAGS + 0x69
+#define SYS_ARENA_SILVER CODE_FLAGS + 0x6A
+#define SYS_ARENA_GOLD CODE_FLAGS + 0x6B
+#define SYS_FACTORY_SILVER CODE_FLAGS + 0x6C
+#define SYS_FACTORY_GOLD CODE_FLAGS + 0x6D
+#define SYS_PIKE_SILVER CODE_FLAGS + 0x6E
+#define SYS_PIKE_GOLD CODE_FLAGS + 0x6F
+#define SYS_PYRAMID_SILVER CODE_FLAGS + 0x70
+#define SYS_PYRAMID_GOLD CODE_FLAGS + 0x71
+#define SYS_FRONTIER_PASS CODE_FLAGS + 0x72
+
#define SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77
#define SYS_MYSTERY_GIFT_ENABLE CODE_FLAGS + 0x7B
diff --git a/include/game_stat.h b/include/game_stat.h
index b8a5c3232..5979c531c 100644
--- a/include/game_stat.h
+++ b/include/game_stat.h
@@ -56,4 +56,7 @@
#define NUM_GAME_STATS 64
+void IncrementGameStat(u8);
+u32 GetGameStat(u8);
+
#endif // GUARD_GAME_STAT_H
diff --git a/include/gba/flash_internal.h b/include/gba/flash_internal.h
index 6156b6c14..ba84546aa 100644
--- a/include/gba/flash_internal.h
+++ b/include/gba/flash_internal.h
@@ -65,6 +65,7 @@ u16 ReadFlashId(void);
void StartFlashTimer(u8 phase);
void SetReadFlash1(u16 *dest);
void StopFlashTimer(void);
+void ReadFlash(u16 sectorNum, u32 offset, u8 *dest, u32 size);
u16 WaitForFlashWrite_Common(u8 phase, u8 *addr, u8 lastData);
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index 5234e5b6c..83a2a123b 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -137,6 +137,8 @@
#define REG_OFFSET_DMA3CNT_H 0xde
#define REG_OFFSET_TMCNT 0x100
+#define REG_OFFSET_TMCNT_L 0x100
+#define REG_OFFSET_TMCNT_H 0x102
#define REG_OFFSET_TM0CNT 0x100
#define REG_OFFSET_TM0CNT_L 0x100
#define REG_OFFSET_TM0CNT_H 0x102
@@ -298,6 +300,8 @@
#define REG_ADDR_DMA3CNT_H (REG_BASE + REG_OFFSET_DMA3CNT_H)
#define REG_ADDR_TMCNT (REG_BASE + REG_OFFSET_TMCNT)
+#define REG_ADDR_TMCNT_L (REG_BASE + REG_OFFSET_TMCNT_L)
+#define REG_ADDR_TMCNT_H (REG_BASE + REG_OFFSET_TMCNT_H)
#define REG_ADDR_TM0CNT (REG_BASE + REG_OFFSET_TM0CNT)
#define REG_ADDR_TM0CNT_L (REG_BASE + REG_OFFSET_TM0CNT_L)
#define REG_ADDR_TM0CNT_H (REG_BASE + REG_OFFSET_TM0CNT_H)
@@ -458,6 +462,8 @@
#define REG_DMA3CNT_H (*(vu16 *)REG_ADDR_DMA3CNT_H)
#define REG_TMCNT(n) (*(vu16 *)(REG_ADDR_TMCNT + ((n) * 4)))
+#define REG_TMCNT_L(n) (*(vu16 *)(REG_ADDR_TMCNT_L + ((n) * 4)))
+#define REG_TMCNT_H(n) (*(vu16 *)(REG_ADDR_TMCNT_H + ((n) * 4)))
#define REG_TM0CNT (*(vu32 *)REG_ADDR_TM0CNT)
#define REG_TM0CNT_L (*(vu16 *)REG_ADDR_TM0CNT_L)
#define REG_TM0CNT_H (*(vu16 *)REG_ADDR_TM0CNT_H)
@@ -521,6 +527,8 @@
#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled
#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled
+// BLDCNT
+
// SOUNDCNT_H
#define SOUND_CGB_MIX_QUARTER 0x0000
#define SOUND_CGB_MIX_HALF 0x0001
diff --git a/include/gba/macro.h b/include/gba/macro.h
index 0217898e8..7b6b98c06 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -86,4 +86,14 @@
dmaRegs[5]; \
}
+#define IntrEnable(flags) \
+{ \
+ u16 imeTemp; \
+ \
+ imeTemp = REG_IME; \
+ REG_IME = 0; \
+ REG_IE |= flags; \
+ REG_IME = imeTemp; \
+} \
+
#endif // GUARD_GBA_MACRO_H
diff --git a/include/gba/types.h b/include/gba/types.h
index fd8a20a4c..e9a380023 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -39,18 +39,18 @@ struct PlttData
struct OamData
{
/*0x00*/ u32 y:8;
- /*0x01*/ u32 affineMode:2;
- u32 objMode:2;
- u32 mosaic:1;
- u32 bpp:1;
- u32 shape:2;
+ /*0x01*/ u32 affineMode:2; // 0x1, 0x2 -> 0x4
+ u32 objMode:2; // 0x4, 0x8 -> 0xC
+ u32 mosaic:1; // 0x10
+ u32 bpp:1; // 0x20
+ u32 shape:2; // 0x40, 0x80 -> 0xC0
/*0x02*/ u32 x:9;
u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode
u32 size:2;
- /*0x04*/ u16 tileNum:10;
- u16 priority:2;
+ /*0x04*/ u16 tileNum:10; // 0x33F
+ u16 priority:2; // 0x400, 0x800 -> 0xC00
u16 paletteNum:4;
/*0x06*/ u16 affineParam;
};
diff --git a/include/global.berry.h b/include/global.berry.h
index a77da20ba..5c8a43a02 100644
--- a/include/global.berry.h
+++ b/include/global.berry.h
@@ -1,9 +1,12 @@
#ifndef GUARD_GLOBAL_BERRY_H
#define GUARD_GLOBAL_BERRY_H
+#define BERRY_NAME_COUNT 7
+#define BERRY_ITEM_EFFECT_COUNT 18
+
struct Berry
{
- const u8 name[7];
+ const u8 name[BERRY_NAME_COUNT];
u8 firmness;
u16 size;
u8 maxYield;
@@ -23,7 +26,7 @@ struct Berry
struct Berry2
{
- u8 name[7];
+ u8 name[BERRY_NAME_COUNT];
u8 firmness;
u16 size;
u8 maxYield;
@@ -42,7 +45,7 @@ struct Berry2
struct EnigmaBerry
{
struct Berry2 berry;
- u8 itemEffect[18];
+ u8 itemEffect[BERRY_ITEM_EFFECT_COUNT];
u8 holdEffect;
u8 holdEffectParam;
u32 checksum;
@@ -50,9 +53,9 @@ struct EnigmaBerry
struct BattleEnigmaBerry
{
- /*0x00*/ u8 name[7];
+ /*0x00*/ u8 name[BERRY_NAME_COUNT];
/*0x07*/ u8 holdEffect;
- /*0x08*/ u8 itemEffect[18];
+ /*0x08*/ u8 itemEffect[BERRY_ITEM_EFFECT_COUNT];
/*0x1A*/ u8 holdEffectParam;
};
diff --git a/include/global.h b/include/global.h
index 9793ddcf2..b1c4add75 100644
--- a/include/global.h
+++ b/include/global.h
@@ -12,8 +12,10 @@
#define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided")
#if defined (__APPLE__) || defined (__CYGWIN__)
-void memset(void *, int, size_t);
-void memcpy(void *, const void *, size_t);
+void *memset(void *, int, size_t);
+void *memcpy(void *, const void *, size_t);
+int strcmp(const char *s1, const char *s2);
+char* strcpy(char *dst0, const char *src0);
#endif // __APPLE__
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
@@ -197,10 +199,24 @@ struct SaveBlock2
// All below could be a one giant struct
- /*0x64C*/ u8 field_64C[1629];
- /*0xCA9*/ u8 frontierChosenLvl : 2;
- /*0xCA9*/ u8 field_CA9_a : 6;
- /*0xCAA*/ u8 field_CAA[368];
+ /*0x64C*/ u8 field_64C[0x588];
+ /*0xBD4*/ u16 field_BD4;
+ /*0xBD6*/ u16 field_BD6;
+ /*0xBD8*/ u8 field_BD8[11];
+ /*0xBE3*/ u8 filler_BE3[8];
+ /*0xBEB*/ u8 field_BEB;
+ /*0xBE3*/ u8 filler_BEC[189];
+ /*0xCA9*/ u8 frontierChosenLvl : 2; // 0x1, 0x2 -> 0x3
+ /*0xCA9*/ u8 field_CA9_a : 1; // 0x4
+ /*0xCA9*/ u8 field_CA9_b : 1; // 0x8
+ /*0xCA9*/ u8 field_CA9_c : 1; // 0x10
+ /*0xCA9*/ u8 field_CA9_d : 1; // 0x20
+ /*0xCA9*/ u8 field_CA9_e : 1; // 0x40
+ /*0xCA9*/ u8 field_CA9_f : 1; // 0x80
+ /*0xCAA*/ u16 field_CAA[0x2e];
+ /*0xD06*/ u8 field_D06;
+ /*0xD07*/ u8 field_D07;
+ /*0xd08*/ u8 filler_D08[0x112];
/*0xE1A*/ u16 battlePyramidFloor; // possibly?
/*0xE1C*/ u8 field_E1C[16];
/*0xE2C*/ struct PyramidBag pyramidBag;
@@ -220,29 +236,31 @@ extern struct SaveBlock2 *gSaveBlock2Ptr;
struct SecretBaseRecord
{
- /*ID?*/ /*0x1A08*/ u8 sbr_field_0;
- /*0x1A09*/ u8 sbr_field_1_0:4;
- /*0x1A09*/ u8 gender:1;
- /*0x1A09*/ u8 sbr_field_1_5:1;
- /*0x1A09*/ u8 sbr_field_1_6:2;
- /*0x1A0A*/ u8 sbr_field_2[7]; // 0xFF bytes?
- /*0x1A12*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
- /*0x1A16*/ u16 sbr_field_e;
- /*0x1A18*/ u8 sbr_field_10;
- /*0x1A19*/ u8 sbr_field_11;
- /*0x1A1A*/ u8 decorations[16];
- /*0x1A2A*/ u8 decorationPos[16];
- /*0x1A3A*/ u32 partyPersonality[6];
- /*0x1A54*/ u16 partyMoves[6 * 4];
- /*0x1A84*/ u16 partySpecies[6];
- /*0x1A90*/ u16 partyHeldItems[6];
- /*0x1A9C*/ u8 partyLevels[6];
- /*0x1AA2*/ u8 partyEVs[6];
+ /*ID?*/ /*0x1A9C*/ u8 sbr_field_0;
+ /*0x1A9D*/ u8 sbr_field_1_0:4;
+ /*0x1A9D*/ u8 gender:1;
+ /*0x1A9D*/ u8 sbr_field_1_5:1;
+ /*0x1A9D*/ u8 sbr_field_1_6:2;
+ /*0x1A9E*/ u8 trainerName[7]; // 0xFF bytes?
+ /*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
+ /*0x1AA9*/ u8 language;
+ /*0x1AAA*/ u16 sbr_field_e;
+ /*0x1AAC*/ u8 sbr_field_10;
+ /*0x1AAD*/ u8 sbr_field_11;
+ /*0x1AAE*/ u8 decorations[16];
+ /*0x1ABE*/ u8 decorationPos[16];
+ /*0x1ACE*/ u32 partyPersonality[6];
+ /*0x1AE6*/ u16 partyMoves[6 * 4];
+ /*0x1B16*/ u16 partySpecies[6];
+ /*0x1B22*/ u16 partyHeldItems[6];
+ /*0x1B2E*/ u8 partyLevels[6];
+ /*0x1B34*/ u8 partyEVs[6];
};
#include "game_stat.h"
#include "global.fieldmap.h"
#include "global.berry.h"
+#include "global.tv.h"
#include "pokemon.h"
struct WarpData
@@ -311,218 +329,6 @@ struct EasyChatPair
u16 words[2];
}; /*size = 0x8*/
-struct TVShowCommon
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 pad02[20];
- /*0x16*/ u16 var16[3];
- /*0x1C*/ u8 srcTrainerId3Lo;
- /*0x1D*/ u8 srcTrainerId3Hi;
- /*0x1E*/ u8 srcTrainerId2Lo;
- /*0x1F*/ u8 srcTrainerId2Hi;
- /*0x20*/ u8 srcTrainerIdLo;
- /*0x21*/ u8 srcTrainerIdHi;
- /*0x22*/ u8 trainerIdLo;
- /*0x23*/ u8 trainerIdHi;
-};
-
-struct TVShowFanClubLetter
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 species;
- /*0x04*/ u16 pad04[6];
- /*0x10*/ u8 playerName[8];
- /*0x18*/ u8 language;
-};
-
-struct TVShowRecentHappenings
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 var02;
- /*0x04*/ u16 var04[6];
- /*0x10*/ u8 playerName[8];
- /*0x18*/ u8 language;
- /*0x19*/ u8 pad19[10];
-};
-
-struct TVShowFanclubOpinions
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 var02;
- /*0x04*/ u8 var04A:4;
- /*0x04*/ u8 var04B:4;
- /*0x05*/ u8 playerName[8];
- /*0x0D*/ u8 language;
- /*0x0E*/ u8 var0E;
- /*0x0F*/ u8 var0F;
- /*0x10*/ u8 var10[8];
- /*0x18*/ u16 var18[2];
- /*0x1C*/ u16 var1C[4];
-};
-
-struct TVShowUnknownType04
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 pad02[4];
- /*0x06*/ u16 var06;
-};
-
-struct TVShowNameRaterShow
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 species;
- /*0x04*/ u8 pokemonName[11];
- /*0x0F*/ u8 trainerName[11];
- /*0x1A*/ u8 random;
- /*0x1B*/ u8 random2;
- /*0x1C*/ u16 var1C;
- /*0x1E*/ u8 language;
- /*0x1F*/ u8 pokemonNameLanguage;
-};
-
-struct TVShowBravoTrainerPokemonProfiles
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 species;
- /*0x04*/ u16 var04[2];
- /*0x08*/ u8 pokemonNickname[11];
- /*0x13*/ u8 contestCategory:3;
- /*0x13*/ u8 contestRank:2;
- /*0x13*/ u8 contestResult:2;
- /*0x13*/ u8 var13_7:1;
- /*0x14*/ u16 var14;
- /*0x16*/ u8 playerName[8];
- /*0x1E*/ u8 language;
- /*0x1F*/ u8 var1f;
-};
-
-struct TVShowBravoTrainerBattleTowerSpotlight
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 trainerName[8];
- /*0x0A*/ u16 species;
- /*0x0C*/ u8 pokemonName[8];
- /*0x14*/ u16 defeatedSpecies;
- /*0x16*/ u16 var16;
- /*0x18*/ u16 var18[1];
- /*0x1A*/ u8 btLevel;
- /*0x1B*/ u8 var1b;
- /*0x1C*/ u8 var1c;
- /*0x1D*/ u8 language;
-};
-
-struct TVShowPokemonToday
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 language;
- /*0x03*/ u8 language2;
- /*0x04*/ u8 nickname[11];
- /*0x0F*/ u8 ball;
- /*0x10*/ u16 species;
- /*0x12*/ u8 var12;
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowSmartShopper
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 priceReduced;
- /*0x03*/ u8 language;
- /*0x04*/ u8 pad04[2];
- /*0x06*/ u16 itemIds[3];
- /*0x0C*/ u16 itemAmounts[3];
- /*0x12*/ u8 shopLocation;
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowPokemonTodayFailed
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 language;
- /*0x03*/ u8 pad03[9];
- /*0x0c*/ u16 species;
- /*0x0e*/ u16 species2;
- /*0x10*/ u8 var10;
- /*0x11*/ u8 var11;
- /*0x12*/ u8 var12;
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowPokemonAngler
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 var02;
- /*0x03*/ u8 var03;
- /*0x04*/ u16 var04;
- /*0x06*/ u8 language;
- u8 pad07[12];
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowWorldOfMasters
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 var02;
- /*0x04*/ u16 var04;
- /*0x06*/ u16 var06;
- /*0x08*/ u16 var08;
- /*0x0a*/ u8 var0a;
- /*0x0b*/ u8 language;
- u8 pad0c[7];
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowMassOutbreak
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 var02;
- /*0x03*/ u8 var03;
- /*0x04*/ u16 moves[4];
- /*0x0C*/ u16 species;
- /*0x0E*/ u16 var0E;
- /*0x10*/ u8 locationMapNum;
- /*0x11*/ u8 locationMapGroup;
- /*0x12*/ u8 var12;
- /*0x13*/ u8 probability;
- /*0x14*/ u8 level;
- /*0x15*/ u8 var15;
- /*0x16*/ u16 var16;
- /*0x18*/ u8 language;
- u8 pad19[11];
-};
-
-typedef union TVShow
-{
- struct TVShowCommon common;
- struct TVShowFanClubLetter fanclubLetter;
- struct TVShowRecentHappenings recentHappenings;
- struct TVShowFanclubOpinions fanclubOpinions;
- struct TVShowUnknownType04 unkShow04;
- struct TVShowNameRaterShow nameRaterShow;
- struct TVShowBravoTrainerPokemonProfiles bravoTrainer;
- struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower;
- struct TVShowPokemonToday pokemonToday;
- struct TVShowSmartShopper smartshopperShow;
- struct TVShowPokemonTodayFailed pokemonTodayFailed;
- struct TVShowPokemonAngler pokemonAngler;
- struct TVShowWorldOfMasters worldOfMasters;
- struct TVShowMassOutbreak massOutbreak;
-} TVShow;
-
struct MailStruct
{
/*0x00*/ u16 words[9];
@@ -570,35 +376,6 @@ typedef union OldMan
u8 filler[0x40];
} OldMan;
-struct UnknownSaveStruct2ABC
-{
- u8 val0;
- u8 val1;
- u16 val2;
-};
-
-struct GabbyAndTyData
-{
- /*2ba4*/ u16 mon1;
- /*2ba6*/ u16 mon2;
- /*2ba8*/ u16 lastMove;
- /*2baa*/ u16 quote;
- /*2bac*/ u8 mapnum;
- /*2bad*/ u8 battleNum;
- /*2bae*/ u8 valA_0:1;
- /*2bae*/ u8 valA_1:1;
- /*2bae*/ u8 valA_2:1;
- /*2bae*/ u8 valA_3:1;
- /*2bae*/ u8 valA_4:1;
- /*2bae*/ u8 valA_5:3;
- /*2baf*/ u8 valB_0:1;
- /*2baf*/ u8 valB_1:1;
- /*2baf*/ u8 valB_2:1;
- /*2baf*/ u8 valB_3:1;
- /*2baf*/ u8 valB_4:1;
- /*2baf*/ u8 valB_5:3;
-};
-
struct RecordMixing_UnknownStructSub
{
u32 unk0;
@@ -725,6 +502,16 @@ typedef union // TODO
u8 id;
} LilycoveLady;
+struct WaldaPhrase
+{
+ u16 field_0;
+ u16 field_2;
+ u8 text[16];
+ u8 iconId;
+ u8 patternId;
+ bool8 patternUnlocked;
+};
+
struct SaveBlock1
{
/*0x00*/ struct Coords16 pos;
@@ -775,17 +562,17 @@ struct SaveBlock1
/*0x????*/ u8 decorCushion[10];
/*0x27CA*/ u8 padding_27CA[2];
/*0x27CC*/ TVShow tvShows[25];
- /*0x2B50*/ struct UnknownSaveStruct2ABC pokeNews[16];
+ /*0x2B50*/ PokeNews pokeNews[16];
/*0x2B90*/ u16 outbreakPokemonSpecies;
- /*0x????*/ u8 outbreakLocationMapNum;
- /*0x????*/ u8 outbreakLocationMapGroup;
- /*0x????*/ u8 outbreakPokemonLevel;
- /*0x????*/ u8 outbreakUnk1;
- /*0x????*/ u16 outbreakUnk2;
- /*0x????*/ u16 outbreakPokemonMoves[4];
- /*0x????*/ u8 outbreakUnk4;
- /*0x????*/ u8 outbreakPokemonProbability;
- /*0x????*/ u16 outbreakUnk5;
+ /*0x2B92*/ u8 outbreakLocationMapNum;
+ /*0x2B93*/ u8 outbreakLocationMapGroup;
+ /*0x2B94*/ u8 outbreakPokemonLevel;
+ /*0x2B95*/ u8 outbreakUnk1;
+ /*0x2B96*/ u16 outbreakUnk2;
+ /*0x2B98*/ u16 outbreakPokemonMoves[4];
+ /*0x2BA0*/ u8 outbreakUnk4;
+ /*0x2BA1*/ u8 outbreakPokemonProbability;
+ /*0x2BA2*/ u16 outbreakDaysLeft;
/*0x2BA4*/ struct GabbyAndTyData gabbyAndTyData;
/*0x2BB0*/ u16 unk2BB0[6];
/*0x2BBC*/ u16 unk2BBC[6];
@@ -800,7 +587,8 @@ struct SaveBlock1
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
/*0x3030*/ struct DaycareData daycare;
/*0x3150*/ struct LinkBattleRecord linkBattleRecords[5];
- /*0x31A0*/ u8 filler_31A0[8];
+ /*0x31A0*/ u8 unk_31A0;
+ /*0x31A1*/ u8 filler_31A1[7];
/*0x31A8*/ u8 giftRibbons[52];
/*0x31DC*/ struct Roamer roamer;
/*0x31F8*/ struct EnigmaBerry enigmaBerry;
@@ -810,7 +598,7 @@ struct SaveBlock1
/*0x3B24*/ u8 seen2[52];
/*0x3B58*/ LilycoveLady lilycoveLady;
/*0x3B88*/ u8 filler_3B88[0x1E8];
- /*0x3D70*/ u8 babyPhrase[24]; // TODO: convert to a struct
+ /*0x3D70*/ struct WaldaPhrase waldaPhrase;
// sizeof: 0x3D88
};
diff --git a/include/global.tv.h b/include/global.tv.h
new file mode 100644
index 000000000..5f65aa8e0
--- /dev/null
+++ b/include/global.tv.h
@@ -0,0 +1,535 @@
+#ifndef GUARD_GLOBAL_TV_H
+#define GUARD_GLOBAL_TV_H
+
+enum
+{
+ TVSHOW_OFF_AIR,
+
+ TVSHOW_FAN_CLUB_LETTER = 1,
+ TVSHOW_RECENT_HAPPENINGS,
+ TVSHOW_PKMN_FAN_CLUB_OPINIONS,
+ TVSHOW_UNKN_SHOWTYPE_04,
+ TVSHOW_NAME_RATER_SHOW,
+ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE,
+ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE,
+ TVSHOW_CONTEST_LIVE_UPDATES,
+ TVSHOW_3_CHEERS_FOR_POKEBLOCKS,
+ TVSHOW_BATTLE_UPDATE,
+ TVSHOW_FAN_CLUB_SPECIAL,
+ TVSHOW_CONTEST_LIVE_UPDATES_2,
+
+ TVSHOW_POKEMON_TODAY_CAUGHT = 21,
+ TVSHOW_SMART_SHOPPER,
+ TVSHOW_POKEMON_TODAY_FAILED,
+ TVSHOW_FISHING_ADVICE,
+ TVSHOW_WORLD_OF_MASTERS,
+ TVSHOW_TODAYS_RIVAL_TRAINER,
+ TVSHOW_TREND_WATCHER,
+ TVSHOW_TREASURE_INVESTIGATORS,
+ TVSHOW_FIND_THAT_GAMER,
+ TVSHOW_BREAKING_NEWS,
+ TVSHOW_SECRET_BASE_VISIT,
+ TVSHOW_LOTTO_WINNER,
+ TVSHOW_BATTLE_SEMINAR,
+ TVSHOW_TRAINER_FAN_CLUB,
+ TVSHOW_CUTIES,
+ TVSHOW_FRONTIER,
+ TVSHOW_NUMBER_ONE,
+ TVSHOW_SECRET_BASE_SECRETS,
+ TVSHOW_SAFARI_FAN_CLUB,
+
+ TVSHOW_MASS_OUTBREAK = 41,
+};
+
+typedef union // size = 0x24
+{
+ // Common
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 pad02[26];
+ /*0x1C*/ u8 srcTrainerId3Lo;
+ /*0x1D*/ u8 srcTrainerId3Hi;
+ /*0x1E*/ u8 srcTrainerId2Lo;
+ /*0x1F*/ u8 srcTrainerId2Hi;
+ /*0x20*/ u8 srcTrainerIdLo;
+ /*0x21*/ u8 srcTrainerIdHi;
+ /*0x22*/ u8 trainerIdLo;
+ /*0x23*/ u8 trainerIdHi;
+ } common;
+
+ // Local shows
+ // TVSHOW_FAN_CLUB_LETTER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u16 words[6];
+ /*0x10*/ u8 playerName[8];
+ /*0x18*/ u8 language;
+ } fanclubLetter;
+
+ // TVSHOW_RECENT_HAPPENINGS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 var02;
+ /*0x04*/ u16 words[6];
+ /*0x10*/ u8 playerName[8];
+ /*0x18*/ u8 language;
+ } recentHappenings;
+
+ // TVSHOW_PKMN_FAN_CLUB_OPINIONS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u8 friendshipHighNybble:4;
+ /*0x04*/ u8 questionAsked:4;
+ /*0x05*/ u8 playerName[8];
+ /*0x0D*/ u8 language;
+ /*0x0E*/ u8 pokemonNameLanguage;
+ /*0x0F*/ u8 filler_0F[1];
+ /*0x10*/ u8 nickname[8];
+ /*0x18*/ u8 filler_18[4];
+ /*0x1C*/ u16 words[4];
+ } fanclubOpinions;
+
+ // TVSHOW_UNKN_SHOWTYPE_04 (dummied out)
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 pad02[4];
+ /*0x06*/ u16 var06;
+ /*0x08*/ u8 pad_08[3];
+ /*0x0b*/ u8 string_0b[12];
+ /*0x17*/ u8 language;
+ } unkShow04;
+
+ // TVSHOW_NAME_RATER_SHOW
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u8 pokemonName[11];
+ /*0x0F*/ u8 trainerName[11];
+ /*0x1A*/ u8 random;
+ /*0x1B*/ u8 random2;
+ /*0x1C*/ u16 randomSpecies;
+ /*0x1E*/ u8 language;
+ /*0x1F*/ u8 pokemonNameLanguage;
+ } nameRaterShow;
+
+ // TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE (contest)
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u16 words[2];
+ /*0x08*/ u8 pokemonNickname[11];
+ /*0x13*/ u8 contestCategory:3;
+ /*0x13*/ u8 contestRank:2;
+ /*0x13*/ u8 contestResult:2;
+ /*0x14*/ u16 move;
+ /*0x16*/ u8 playerName[8];
+ /*0x1E*/ u8 language;
+ /*0x1F*/ u8 pokemonNameLanguage;
+ } bravoTrainer;
+
+ // TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 trainerName[8];
+ /*0x0A*/ u16 species;
+ /*0x0C*/ u8 pokemonName[8];
+ /*0x14*/ u16 defeatedSpecies;
+ /*0x16*/ u16 numFights;
+ /*0x18*/ u16 words[1];
+ /*0x1A*/ u8 btLevel;
+ /*0x1B*/ u8 interviewResponse;
+ /*0x1C*/ bool8 wonTheChallenge;
+ /*0x1D*/ u8 language;
+ /*0x1E*/ u8 pokemonNameLanguage;
+ } bravoTrainerTower;
+
+ // TVSHOW_CONTEST_LIVE_UPDATES
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 winningSpecies;
+ /*0x04*/ u8 winningTrainerName[8];
+ /*0x0C*/ u8 appealFlags2;
+ /*0x0D*/ u8 round1Rank;
+ /*0x0e*/ u8 round2Rank;
+ /*0x0f*/ u8 appealFlags1;
+ /*0x10*/ u16 move;
+ /*0x12*/ u16 species;
+ /*0x14*/ u8 playerName[8];
+ /*0x1C*/ u8 category;
+ /*0x1D*/ u8 language;
+ /*0x1E*/ u8 winningTrainerLanguage;
+ } contestLiveUpdates;
+
+ // TVSHOW_3_CHEERS_FOR_POKEBLOCKS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 sheen;
+ /*0x03*/ u8 flavor:3;
+ /*0x03*/ u8 unk_03_3:2;
+ /*0x04*/ u8 worstBlenderName[8];
+ /*0x0C*/ u8 playerName[8];
+ /*0x14*/ u8 language;
+ /*0x15*/ u8 worstBlenderLanguage;
+ } threeCheers;
+
+ // TVSHOW_BATTLE_UPDATE
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u8 playerName[8];
+ /*0x0C*/ u8 linkOpponentName[8];
+ /*0x14*/ u16 move;
+ /*0x16*/ u16 species2;
+ /*0x18*/ u8 battleType;
+ /*0x19*/ u8 language;
+ /*0x1A*/ u8 linkOpponentLanguage;
+ } battleUpdate;
+
+ // TVSHOW_FAN_CLUB_SPECIAL
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 playerName[8];
+ /*0x0a*/ u8 idLo;
+ /*0x0b*/ u8 idHi;
+ /*0x0c*/ u8 idolName[8];
+ /*0x14*/ u16 words[1];
+ /*0x16*/ u8 score;
+ /*0x17*/ u8 language;
+ /*0x18*/ u8 idolNameLanguage;
+ } fanClubSpecial;
+
+ // TVSHOW_CONTEST_LIVE_UPDATES_2
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 playerName[8];
+ /*0x0a*/ u8 contestCategory;
+ /*0x0b*/ u8 nickname[11];
+ /*0x16*/ u8 pokeblockState;
+ /*0x17*/ u8 language;
+ /*0x18*/ u8 pokemonNameLanguage;
+ } contestLiveUpdates2;
+
+ // Record Mixing Shows
+ // TVSHOW_POKEMON_TODAY_CAUGHT
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 language2;
+ /*0x04*/ u8 nickname[11];
+ /*0x0F*/ u8 ball;
+ /*0x10*/ u16 species;
+ /*0x12*/ u8 nBallsUsed;
+ /*0x13*/ u8 playerName[8];
+ } pokemonToday;
+
+ // TVSHOW_SMART_SHOPPER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 priceReduced;
+ /*0x03*/ u8 language;
+ /*0x04*/ u8 pad04[2];
+ /*0x06*/ u16 itemIds[3];
+ /*0x0C*/ u16 itemAmounts[3];
+ /*0x12*/ u8 shopLocation;
+ /*0x13*/ u8 playerName[8];
+ } smartshopperShow;
+
+ // TVSHOW_POKEMON_TODAY_FAILED
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 pad03[9];
+ /*0x0c*/ u16 species;
+ /*0x0e*/ u16 species2;
+ /*0x10*/ u8 nBallsUsed;
+ /*0x11*/ u8 outcome;
+ /*0x12*/ u8 location;
+ /*0x13*/ u8 playerName[8];
+ } pokemonTodayFailed;
+
+ // TVSHOW_FISHING_ADVICE
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 nBites;
+ /*0x03*/ u8 nFails;
+ /*0x04*/ u16 species;
+ /*0x06*/ u8 language;
+ /*0x07*/ u8 pad07[12];
+ /*0x13*/ u8 playerName[8];
+ } pokemonAngler;
+
+ // TVSHOW_WORLD_OF_MASTERS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 numPokeCaught;
+ /*0x04*/ u16 caughtPoke;
+ /*0x06*/ u16 steps;
+ /*0x08*/ u16 species;
+ /*0x0a*/ u8 location;
+ /*0x0b*/ u8 language;
+ /*0x0c*/ u8 pad0c[7];
+ /*0x13*/ u8 playerName[8];
+ } worldOfMasters;
+
+ // TVSHOW_TODAYS_RIVAL_TRAINER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 dexCount;
+ /*0x04*/ u8 badgeCount;
+ /*0x05*/ u8 nSilverSymbols;
+ /*0x06*/ u8 nGoldSymbols;
+ /*0x07*/ u8 location;
+ /*0x08*/ u16 battlePoints;
+ /*0x0a*/ u16 mapDataId;
+ /*0x0c*/ u8 language;
+ /*0x0d*/ u8 filler_0d[6];
+ /*0x13*/ u8 playerName[8];
+ } rivalTrainer;
+
+ // TVSHOW_TREND_WATCHER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 filler_02[2];
+ /*0x04*/ u16 words[2];
+ /*0x08*/ u8 gender;
+ /*0x09*/ u8 language;
+ /*0x0a*/ u8 filler_0a[9];
+ /*0x13*/ u8 playerName[8];
+ } trendWatcher;
+
+ // TVSHOW_TREASURE_INVESTIGATORS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 item;
+ /*0x04*/ u8 location;
+ /*0x05*/ u8 language;
+ /*0x06*/ u16 mapDataId;
+ /*0x08*/ u8 filler_08[11];
+ /*0x13*/ u8 playerName[8];
+ } treasureInvestigators;
+
+ // TVSHOW_FIND_THAT_GAMER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 won;
+ /*0x03*/ u8 whichGame;
+ /*0x04*/ u16 nCoins;
+ /*0x06*/ u8 filler_06[2];
+ /*0x08*/ u8 language;
+ /*0x09*/ u8 filler_09[10];
+ /*0x13*/ u8 playerName[8];
+ } findThatGamer;
+
+ // TVSHOW_BREAKING_NEWS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 lastOpponentSpecies;
+ /*0x04*/ u8 location;
+ /*0x05*/ u8 outcome;
+ /*0x06*/ u16 caughtMonBall;
+ /*0x08*/ u16 balls;
+ /*0x0a*/ u16 poke1Species;
+ /*0x0c*/ u16 lastUsedMove;
+ /*0x0e*/ u8 language;
+ /*0x0f*/ u8 filler_0f[4];
+ /*0x13*/ u8 playerName[8];
+ } breakingNews;
+
+ // TVSHOW_SECRET_BASE_VISIT
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 avgLevel;
+ /*0x03*/ u8 nDecorations;
+ /*0x04*/ u8 decorations[4];
+ /*0x08*/ u16 species;
+ /*0x0a*/ u16 move;
+ /*0x0c*/ u8 language;
+ /*0x0d*/ u8 filler_0d[6];
+ /*0x13*/ u8 playerName[8];
+ } secretBaseVisit;
+
+ // TVSHOW_LOTTO_WINNER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 item;
+ /*0x04*/ u8 whichPrize;
+ /*0x05*/ u8 language;
+ /*0x06*/ u8 filler_06[13];
+ /*0x13*/ u8 playerName[8];
+ } lottoWinner;
+
+ // TVSHOW_BATTLE_SEMINAR
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 move;
+ /*0x04*/ u16 foeSpecies;
+ /*0x06*/ u16 species;
+ /*0x08*/ u16 otherMoves[3];
+ /*0x0e*/ u16 betterMove;
+ /*0x10*/ u8 nOtherMoves;
+ /*0x11*/ u8 language;
+ /*0x12*/ u8 filler_12[1];
+ /*0x13*/ u8 playerName[8];
+ } battleSeminar;
+
+ // TVSHOW_TRAINER_FAN_CLUB
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 filler_02[2];
+ /*0x04*/ u16 words[2];
+ /*0x08*/ u8 language;
+ /*0x09*/ u8 filler_09[10];
+ /*0x13*/ u8 playerName[8];
+ } trainerFanClub;
+
+ // TVSHOW_CUTIES
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 nRibbons;
+ /*0x03*/ u8 selectedRibbon;
+ /*0x04*/ u8 nickname[11];
+ /*0x0f*/ u8 language;
+ /*0x10*/ u8 pokemonNameLanguage;
+ /*0x11*/ u8 filler_12[2];
+ /*0x13*/ u8 playerName[8];
+ } cuties;
+
+ // TVSHOW_FRONTIER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 winStreak;
+ /*0x04*/ u16 species1;
+ /*0x06*/ u16 species2;
+ /*0x08*/ u16 species3;
+ /*0x0a*/ u16 species4;
+ /*0x0c*/ u8 language;
+ /*0x0d*/ u8 facility;
+ /*0x0e*/ u8 filler_0e[5];
+ /*0x13*/ u8 playerName[8];
+ } frontier;
+
+ // TVSHOW_NUMBER_ONE
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 count;
+ /*0x04*/ u8 actionIdx;
+ /*0x05*/ u8 language;
+ /*0x06*/ u8 filler_06[13];
+ /*0x13*/ u8 playerName[8];
+ } numberOne;
+
+ // TVSHOW_SECRET_BASE_SECRETS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 stepsInBase;
+ /*0x04*/ u8 baseOwnersName[8];
+ /*0x0c*/ u32 flags;
+ /*0x10*/ u16 item;
+ /*0x12*/ u8 savedState;
+ /*0x13*/ u8 playerName[8];
+ /*0x1b*/ u8 language;
+ /*0x1c*/ u8 baseOwnersNameLanguage;
+ } secretBaseSecrets;
+
+ // TVSHOW_SAFARI_FAN_CLUB
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 nMonsCaught;
+ /*0x03*/ u8 nPkblkUsed;
+ /*0x04*/ u8 language;
+ /*0x05*/ u8 filler_05[14];
+ /*0x13*/ u8 playerName[8];
+ } safariFanClub;
+
+ // Mass Outbreak
+ // TVSHOW_MASS_OUTBREAK
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 var02;
+ /*0x03*/ u8 var03;
+ /*0x04*/ u16 moves[4];
+ /*0x0C*/ u16 species;
+ /*0x0E*/ u16 var0E;
+ /*0x10*/ u8 locationMapNum;
+ /*0x11*/ u8 locationMapGroup;
+ /*0x12*/ u8 var12;
+ /*0x13*/ u8 probability;
+ /*0x14*/ u8 level;
+ /*0x15*/ u8 var15;
+ /*0x16*/ u16 daysLeft;
+ /*0x18*/ u8 language;
+ } massOutbreak;
+} TVShow;
+
+enum {
+ POKENEWS_NONE,
+ POKENEWS_SLATEPORT,
+ POKENEWS_GAME_CORNER,
+ POKENEWS_LILYCOVE,
+ POKENEWS_BLENDMASTER
+};
+
+typedef struct // 2b50
+{
+ u8 kind;
+ u8 state;
+ u16 days;
+} PokeNews;
+
+struct GabbyAndTyData
+{
+ /*2ba4*/ u16 mon1;
+ /*2ba6*/ u16 mon2;
+ /*2ba8*/ u16 lastMove;
+ /*2baa*/ u16 quote[1];
+ /*2bac*/ u8 mapnum;
+ /*2bad*/ u8 battleNum;
+ /*2bae*/ u8 battleTookMoreThanOneTurn:1;
+ /*2bae*/ u8 playerLostAMon:1;
+ /*2bae*/ u8 playerUsedAnItem:1;
+ /*2bae*/ u8 playerThrewABall:1;
+ /*2bae*/ u8 onAir:1;
+ /*2bae*/ u8 valA_5:3;
+ /*2baf*/ u8 battleTookMoreThanOneTurn2:1;
+ /*2baf*/ u8 playerLostAMon2:1;
+ /*2baf*/ u8 playerUsedAnItem2:1;
+ /*2baf*/ u8 playerThrewABall2:1;
+ /*2baf*/ u8 valB_4:4;
+};
+
+#endif //GUARD_GLOBAL_TV_H
diff --git a/include/graphics.h b/include/graphics.h
new file mode 100644
index 000000000..c50fdef3f
--- /dev/null
+++ b/include/graphics.h
@@ -0,0 +1,95 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_GRAPHICS_H
+#define GUARD_GRAPHICS_H
+
+extern const u8 gItemIcon_QuestionMark[];
+extern const u8 gItemIconPalette_QuestionMark[];
+extern const u8 gUnknown_08DB7AA0[];
+extern const u8 gUnknown_08DB7B34[];
+extern const u8 gUnknown_08DB7B5C[];
+extern const u8 gUnknown_08DB7BEC[];
+extern const u8 gUnknown_08DB7C08[];
+extern const u8 gUnknown_08DB7CE8[];
+extern const u8 gUnknown_08DB7D08[];
+extern const u8 gUnknown_08DB7DCC[];
+extern const u8 gUnknown_08DB7DF4[];
+extern const u8 gUnknown_08DB7EA0[];
+extern const u8 gUnknown_08DB7EC4[];
+extern const u8 gUnknown_08DB7F60[];
+extern const u8 gUnknown_08DB7F7C[];
+extern const u8 gUnknown_08DB8070[];
+extern const u8 gUnknown_08DB808C[];
+extern const u8 gUnknown_08DB8138[];
+extern const u8 gUnknown_08DB8160[];
+extern const u8 gUnknown_08DB8218[];
+extern const u8 gUnknown_08DB823C[];
+extern const u8 gUnknown_08DB8300[];
+extern const u8 gUnknown_08DB8328[];
+extern const u8 gUnknown_08DB8430[];
+extern const u8 gUnknown_08DB8458[];
+extern const u8 gUnknown_08DB8528[];
+extern const u8 gUnknown_08DB854C[];
+extern const u8 gUnknown_08DB862C[];
+extern const u8 gUnknown_08DB8654[];
+extern const u8 gUnknown_08DB86C4[];
+extern const u8 gUnknown_08DB86E0[];
+extern const u8 gUnknown_08DB8750[];
+extern const u8 gUnknown_08DB876C[];
+extern const u8 gUnknown_08DB87DC[];
+extern const u8 gUnknown_08DB87F8[];
+extern const u8 gUnknown_08DB88D8[];
+extern const u8 gUnknown_08DB8900[];
+extern const u8 gUnknown_08DB89E0[];
+extern const u8 gUnknown_08DB8A08[];
+extern const u8 gUnknown_08DB8A68[];
+extern const u8 gUnknown_08DB8A84[];
+extern const u8 gUnknown_08DB8B40[];
+extern const u8 gUnknown_08DB8B68[];
+extern const u8 gUnknown_08DB8C40[];
+extern const u8 gUnknown_08DB8C5C[];
+extern const u8 gUnknown_08DB8CF4[];
+extern const u8 gUnknown_08DB8D18[];
+extern const u8 gUnknown_08DB8DB0[];
+extern const u8 gUnknown_08DB8DD4[];
+extern const u8 gUnknown_08DB8E80[];
+extern const u8 gUnknown_08DB8EA0[];
+extern const u8 gUnknown_08DB8F58[];
+extern const u8 gUnknown_08DB8F7C[];
+extern const u8 gUnknown_08DB9038[];
+extern const u8 gUnknown_08DB9058[];
+extern const u8 gUnknown_08DB9130[];
+extern const u8 gUnknown_08DB9154[];
+extern const u8 gUnknown_08DB9218[];
+extern const u8 gUnknown_08DB9234[];
+extern const u8 gUnknown_08DB92FC[];
+extern const u8 gUnknown_08DB931C[];
+extern const u8 gUnknown_08DB93E8[];
+extern const u8 gUnknown_08DB940C[];
+extern const u8 gUnknown_08DB94CC[];
+extern const u8 gUnknown_08DB94E8[];
+extern const u8 gUnknown_08DB95AC[];
+extern const u8 gUnknown_08DB95D0[];
+extern const u8 gUnknown_08DB96C4[];
+extern const u8 gUnknown_08DB96EC[];
+extern const u8 gUnknown_08DB97F4[];
+extern const u8 gUnknown_08DB981C[];
+extern const u8 gUnknown_08DB9908[];
+extern const u8 gUnknown_08DB9930[];
+extern const u8 gUnknown_08DB9A54[];
+extern const u8 gUnknown_08DB9A7C[];
+extern const u8 gUnknown_08DB9B7C[];
+extern const u8 gUnknown_08DB9BA4[];
+extern const u8 gUnknown_08DB9CB0[];
+extern const u8 gUnknown_08DB9CD8[];
+extern const u8 gUnknown_08DB9DAC[];
+extern const u8 gUnknown_08DB9DD4[];
+extern const u8 gUnknown_08DB9EE4[];
+extern const u8 gUnknown_08DB9F08[];
+extern const u8 gUnknown_08DB9FFC[];
+extern const u8 gUnknown_08DBA020[];
+extern const u8 gUnknown_08DBA12C[];
+
+#endif //GUARD_GRAPHICS_H
diff --git a/include/international_string_util.h b/include/international_string_util.h
new file mode 100644
index 000000000..9d9735a52
--- /dev/null
+++ b/include/international_string_util.h
@@ -0,0 +1,23 @@
+#ifndef GUARD_INTERNATIONAL_STRING_UTIL_H
+#define GUARD_INTERNATIONAL_STRING_UTIL_H
+
+#include "menu.h"
+
+void sub_81DB52C(const u8 *src);
+void TVShowConvertInternationalString(u8 *dest, const u8 *src, u8 language);
+s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth);
+s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth);
+s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
+s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
+s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1);
+s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2);
+// sub_81DB41C
+// sub_81DB468
+// sub_81DB494
+// sub_81DB4DC
+// sub_81DB554
+// sub_81DB5AC
+u32 sub_81DB604(const u8 *);
+// sub_81DB620
+
+#endif // GUARD_INTERNATIONAL_STRING_UTIL_H
diff --git a/include/item.h b/include/item.h
index eaefa0298..a136f03ec 100644
--- a/include/item.h
+++ b/include/item.h
@@ -31,6 +31,7 @@ extern struct BagPocket gBagPockets[];
void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity);
void CopyItemName(u16 itemId, u8 *string);
+void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity);
bool8 IsBagPocketNonEmpty(u8 pocket);
bool8 CheckBagHasItem(u16 itemId, u16 count);
bool8 CheckBagHasSpace(u16 itemId, u16 count);
@@ -58,5 +59,6 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
u8 ItemId_GetBattleUsage(u16 itemId);
ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
+u16 itemid_get_market_price(u16 itemId);
#endif // ITEM_H
diff --git a/include/item_icon.h b/include/item_icon.h
new file mode 100644
index 000000000..a43b72f39
--- /dev/null
+++ b/include/item_icon.h
@@ -0,0 +1,17 @@
+//
+// Created by scott on 10/20/2017.
+//
+
+#ifndef GUARD_ITEM_ICON_H
+#define GUARD_ITEM_ICON_H
+
+extern EWRAM_DATA void *gUnknown_0203CEBC;
+extern EWRAM_DATA void *gUnknown_0203CEC0;
+
+extern const struct SpriteTemplate gUnknown_08614FF4;
+
+bool8 AllocItemIconTemporaryBuffers(void);
+void CopyItemIconPicTo4x4Buffer(void *src, void *dest);
+void FreeItemIconTemporaryBuffers(void);
+
+#endif //GUARD_ITEM_ICON_H
diff --git a/include/librfu.h b/include/librfu.h
new file mode 100644
index 000000000..dbc8a41a6
--- /dev/null
+++ b/include/librfu.h
@@ -0,0 +1,108 @@
+#include "main.h"
+
+enum
+{
+ RFU_RESET = 0x10,
+ RFU_LINK_STATUS,
+ RFU_VERSION_STATUS,
+ RFU_SYSTEM_STATUS,
+ RFU_SLOT_STATUS,
+ RFU_CONFIG_STATUS,
+ RFU_GAME_CONFIG,
+ RFU_SYSTEM_CONFIG,
+ RFU_UNK18,
+ RFU_SC_START,
+ RFU_SC_POLLING,
+ RFU_SC_END,
+ RFU_SP_START,
+ RFU_SP_POLLING,
+ RFU_SP_END,
+ RFU_CP_START,
+ RFU_CP_POLLING,
+ RFU_CP_END,
+ RFU_UNK22,
+ RFU_UNK23,
+ RFU_DATA_TX,
+ RFU_DATA_TX_AND_CHANGE,
+ RFU_DATA_RX,
+ RFU_MS_CHANGE,
+ RFU_DATA_READY_AND_CHANGE,
+ RFU_DISCONNECTED_AND_CHANGE,
+ RFU_UNK2A,
+ RFU_UNK2B,
+ RFU_UNK2C,
+ RFU_UNK2D,
+ RFU_UNK2E,
+ RFU_UNK2F,
+ RFU_DISCONNECT,
+ RFU_TEST_MODE,
+ RFU_CPR_START,
+ RFU_CPR_POLLING,
+ RFU_CPR_END,
+ RFU_UNK35,
+ RFU_UNK36,
+ RFU_RESUME_RETRANSMIT_AND_CHANGE,
+ RFU_UNK38,
+ RFU_UNK39,
+ RFU_UNK3A,
+ RFU_UNK3B,
+ RFU_UNK3C,
+ RFU_STOP_MODE, //3D
+};
+
+struct RfuPacket8
+{
+ u8 data[0x74];
+};
+
+struct RfuPacket32
+{
+ u32 command;
+ u32 data[0x1C];
+};
+
+union RfuPacket
+{
+ struct RfuPacket32 rfuPacket32;
+ struct RfuPacket8 rfuPacket8;
+};
+
+struct RfuStruct
+{
+ vs32 unk_0;
+ u8 txParams;
+ u8 unk_5;
+ u8 activeCommand;
+ u8 unk_7;
+ u8 unk_8;
+ u8 unk_9;
+ u8 timerSelect;
+ u8 unk_b;
+ int timerState;
+ vu8 timerActive;
+ u8 unk_11;
+ vu16 unk_12;
+ vu8 msMode;
+ u8 unk_15;
+ u8 unk_16;
+ u8 unk_17;
+ void (*callbackM)();
+ void (*callbackS)();
+ u32 callbackID;
+ union RfuPacket *txPacket;
+ union RfuPacket *rxPacket;
+ vu8 unk_2c;
+ u8 padding[3];
+};
+
+struct RfuIntrStruct
+{
+ u8 rxPacketAlloc[0x74];
+ u8 txPacketAlloc[0x74];
+ u8 block1[0x960];
+ u8 block2[0x30];
+};
+
+extern struct RfuStruct *gRfuState;
+
+void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam);
diff --git a/include/link.h b/include/link.h
index 5db3ff3d2..b8835ce04 100644
--- a/include/link.h
+++ b/include/link.h
@@ -141,9 +141,9 @@ extern u8 gShouldAdvanceLinkState;
extern struct LinkPlayer gLinkPlayers[];
extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
+extern bool8 gLinkVSyncDisabled;
void Task_DestroySelf(u8);
-void sub_8007270(u8);
void OpenLink(void);
void CloseLink(void);
u16 LinkMain2(u16 *);
@@ -162,24 +162,12 @@ void sub_8007E4C(void);
u8 GetMultiplayerId(void);
u8 bitmask_all_link_players_but_self(void);
bool8 SendBlock(u8, void *, u16);
-bool8 sub_8007E9C(u8);
-bool8 sub_8007ECC(void);
u8 GetBlockReceivedStatus(void);
void ResetBlockReceivedFlags(void);
void ResetBlockReceivedFlag(u8);
-void sub_8007F4C(void);
void SetLinkDebugValues(u32, u32);
-u8 sub_8008198(void);
-void sub_80081C8(u8);
-u8 sub_800820C(void);
-u8 sub_8008218(void);
-void sub_800826C(void);
-void sub_80082EC(void);
u8 GetLinkPlayerCount_2(void);
bool8 IsLinkMaster(void);
-void sub_800832C(void);
-void sub_8008480(void);
-void sub_80084A4(void);
void CB2_LinkError(void);
u8 GetSioMultiSI(void);
bool8 IsLinkConnectionEstablished(void);
@@ -190,5 +178,18 @@ u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]);
void LinkVSync(void);
void Timer3Intr(void);
void SerialCB(void);
+u8 GetLinkPlayerCount(void);
+
+void sub_800E0E8(void);
+bool8 sub_800A520(void);
+bool8 sub_8010500(void);
+void sub_800DFB4(u8, u8);
+void sub_800ADF8(void);
+void sub_800B488(void);
+void sub_8009734(void);
+void sub_800A620(void);
+void sub_8011BD0(void);
+u8 sub_800ABAC(void);
+u8 sub_800ABBC(void);
#endif // GUARD_LINK_H
diff --git a/include/list_menu.h b/include/list_menu.h
new file mode 100644
index 000000000..93005e482
--- /dev/null
+++ b/include/list_menu.h
@@ -0,0 +1,54 @@
+#ifndef GUARD_LIST_MENU_H
+#define GUARD_LIST_MENU_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+struct ListMenuItem {
+ const u8 *unk_00;
+ s32 unk_04;
+};
+
+struct ListMenu;
+
+struct ListMenuTemplate {
+ struct ListMenuItem *unk_00;
+ void (* unk_04)(u32, bool8, struct ListMenu *);
+ void (* unk_08)(u8, s32, u8);
+ u16 unk_0c;
+ u16 unk_0e;
+ u8 unk_10;
+ u8 unk_11;
+ u8 unk_12;
+ u8 unk_13;
+ u32 unk_14_0:4;
+ u32 unk_14_4:4;
+ u32 unk_15_0:4;
+ u32 unk_15_4:4;
+ u32 unk_16_0:1;
+ u32 unk_16_1:6;
+ u32 unk_16_7:1;
+ u32 unk_17_0:6;
+};
+
+struct ListMenu {
+ struct ListMenuTemplate _template;
+ u16 scrollOffset;
+ u16 selectedRow;
+ u8 unk_1C;
+ u8 unk_1D;
+ u8 unk_1E;
+ u8 unk_1F;
+};
+
+extern struct ListMenuTemplate gUnknown_03006310;
+
+// Exported ROM declarations
+
+u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2);
+s32 ListMenuHandleInput(u8 id);
+void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2);
+void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2);
+
+#endif //GUARD_LIST_MENU_H
diff --git a/include/load_save.h b/include/load_save.h
index 20848e1a7..1f406bbad 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -19,5 +19,6 @@ void LoadSerializedGame(void);
void LoadPlayerBag(void);
void SavePlayerBag(void);
void SetSaveBlocksPointers(u16);
+void MoveSaveBlocks_ResetHeap(void);
#endif // GUARD_LOAD_SAVE_H
diff --git a/include/mail.h b/include/mail.h
new file mode 100644
index 000000000..16ca1f676
--- /dev/null
+++ b/include/mail.h
@@ -0,0 +1,19 @@
+#ifndef GUARD_MAIL_H
+#define GUARD_MAIL_H
+
+#include "items.h"
+
+#define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL \
+ || itemId == ITEM_HARBOR_MAIL \
+ || itemId == ITEM_GLITTER_MAIL \
+ || itemId == ITEM_MECH_MAIL \
+ || itemId == ITEM_WOOD_MAIL \
+ || itemId == ITEM_WAVE_MAIL \
+ || itemId == ITEM_BEAD_MAIL \
+ || itemId == ITEM_SHADOW_MAIL \
+ || itemId == ITEM_TROPIC_MAIL \
+ || itemId == ITEM_DREAM_MAIL \
+ || itemId == ITEM_FAB_MAIL \
+ || itemId == ITEM_RETRO_MAIL))
+
+#endif // GUARD_MAIL_H
diff --git a/include/mail_data.h b/include/mail_data.h
new file mode 100644
index 000000000..bf6540bad
--- /dev/null
+++ b/include/mail_data.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_MAIL_DATA_H
+#define GUARD_MAIL_DATA_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+u16 sub_80D45E8(u16, u16 *);
+
+#endif //GUARD_MAIL_DATA_H
diff --git a/include/main.h b/include/main.h
index e5460b3bf..e283d1754 100644
--- a/include/main.h
+++ b/include/main.h
@@ -39,6 +39,7 @@ struct Main
/*0x439*/ u8 oamLoadDisabled:1;
/*0x439*/ u8 inBattle:1;
+ /*0x439*/ u8 field_439_x4:1;
};
extern u8 gUnknown_3001764;
diff --git a/include/malloc.h b/include/malloc.h
index 4568e244a..f3a731797 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -2,7 +2,7 @@
#define GUARD_MALLOC_H
#define malloc Alloc
-#define calloc AllocZeroed
+#define calloc(ct, sz) AllocZeroed((ct) * (sz))
#define free Free
extern u8 gHeap[];
diff --git a/include/map_constants.h b/include/map_constants.h
new file mode 100644
index 000000000..6199793c8
--- /dev/null
+++ b/include/map_constants.h
@@ -0,0 +1,1342 @@
+#ifndef GUARD_MAP_CONSTANTS_H
+#define GUARD_MAP_CONSTANTS_H
+
+//--------------------------------------------------
+// Map Group 0
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY,
+ MAP_ID_SLATEPORT_CITY,
+ MAP_ID_MAUVILLE_CITY,
+ MAP_ID_RUSTBORO_CITY,
+ MAP_ID_FORTREE_CITY,
+ MAP_ID_LILYCOVE_CITY,
+ MAP_ID_MOSSDEEP_CITY,
+ MAP_ID_SOOTOPOLIS_CITY,
+ MAP_ID_EVER_GRANDE_CITY,
+ MAP_ID_LITTLEROOT_TOWN,
+ MAP_ID_OLDALE_TOWN,
+ MAP_ID_DEWFORD_TOWN,
+ MAP_ID_LAVARIDGE_TOWN,
+ MAP_ID_FALLARBOR_TOWN,
+ MAP_ID_VERDANTURF_TOWN,
+ MAP_ID_PACIFIDLOG_TOWN,
+ MAP_ID_ROUTE101,
+ MAP_ID_ROUTE102,
+ MAP_ID_ROUTE103,
+ MAP_ID_ROUTE104,
+ MAP_ID_ROUTE105,
+ MAP_ID_ROUTE106,
+ MAP_ID_ROUTE107,
+ MAP_ID_ROUTE108,
+ MAP_ID_ROUTE109,
+ MAP_ID_ROUTE110,
+ MAP_ID_ROUTE111,
+ MAP_ID_ROUTE112,
+ MAP_ID_ROUTE113,
+ MAP_ID_ROUTE114,
+ MAP_ID_ROUTE115,
+ MAP_ID_ROUTE116,
+ MAP_ID_ROUTE117,
+ MAP_ID_ROUTE118,
+ MAP_ID_ROUTE119,
+ MAP_ID_ROUTE120,
+ MAP_ID_ROUTE121,
+ MAP_ID_ROUTE122,
+ MAP_ID_ROUTE123,
+ MAP_ID_ROUTE124,
+ MAP_ID_ROUTE125,
+ MAP_ID_ROUTE126,
+ MAP_ID_ROUTE127,
+ MAP_ID_ROUTE128,
+ MAP_ID_ROUTE129,
+ MAP_ID_ROUTE130,
+ MAP_ID_ROUTE131,
+ MAP_ID_ROUTE132,
+ MAP_ID_ROUTE133,
+ MAP_ID_ROUTE134,
+ MAP_ID_UNDERWATER1,
+ MAP_ID_UNDERWATER2,
+ MAP_ID_UNDERWATER3,
+ MAP_ID_UNDERWATER4,
+ MAP_ID_UNDERWATER5,
+ MAP_ID_UNDERWATER6,
+ MAP_ID_UNDERWATER7,
+};
+
+#define MAP_GROUP_PETALBURG_CITY 0
+#define MAP_GROUP_SLATEPORT_CITY 0
+#define MAP_GROUP_MAUVILLE_CITY 0
+#define MAP_GROUP_RUSTBORO_CITY 0
+#define MAP_GROUP_FORTREE_CITY 0
+#define MAP_GROUP_LILYCOVE_CITY 0
+#define MAP_GROUP_MOSSDEEP_CITY 0
+#define MAP_GROUP_SOOTOPOLIS_CITY 0
+#define MAP_GROUP_EVER_GRANDE_CITY 0
+#define MAP_GROUP_LITTLEROOT_TOWN 0
+#define MAP_GROUP_OLDALE_TOWN 0
+#define MAP_GROUP_DEWFORD_TOWN 0
+#define MAP_GROUP_LAVARIDGE_TOWN 0
+#define MAP_GROUP_FALLARBOR_TOWN 0
+#define MAP_GROUP_VERDANTURF_TOWN 0
+#define MAP_GROUP_PACIFIDLOG_TOWN 0
+#define MAP_GROUP_ROUTE101 0
+#define MAP_GROUP_ROUTE102 0
+#define MAP_GROUP_ROUTE103 0
+#define MAP_GROUP_ROUTE104 0
+#define MAP_GROUP_ROUTE105 0
+#define MAP_GROUP_ROUTE106 0
+#define MAP_GROUP_ROUTE107 0
+#define MAP_GROUP_ROUTE108 0
+#define MAP_GROUP_ROUTE109 0
+#define MAP_GROUP_ROUTE110 0
+#define MAP_GROUP_ROUTE111 0
+#define MAP_GROUP_ROUTE112 0
+#define MAP_GROUP_ROUTE113 0
+#define MAP_GROUP_ROUTE114 0
+#define MAP_GROUP_ROUTE115 0
+#define MAP_GROUP_ROUTE116 0
+#define MAP_GROUP_ROUTE117 0
+#define MAP_GROUP_ROUTE118 0
+#define MAP_GROUP_ROUTE119 0
+#define MAP_GROUP_ROUTE120 0
+#define MAP_GROUP_ROUTE121 0
+#define MAP_GROUP_ROUTE122 0
+#define MAP_GROUP_ROUTE123 0
+#define MAP_GROUP_ROUTE124 0
+#define MAP_GROUP_ROUTE125 0
+#define MAP_GROUP_ROUTE126 0
+#define MAP_GROUP_ROUTE127 0
+#define MAP_GROUP_ROUTE128 0
+#define MAP_GROUP_ROUTE129 0
+#define MAP_GROUP_ROUTE130 0
+#define MAP_GROUP_ROUTE131 0
+#define MAP_GROUP_ROUTE132 0
+#define MAP_GROUP_ROUTE133 0
+#define MAP_GROUP_ROUTE134 0
+#define MAP_GROUP_UNDERWATER1 0
+#define MAP_GROUP_UNDERWATER2 0
+#define MAP_GROUP_UNDERWATER3 0
+#define MAP_GROUP_UNDERWATER4 0
+#define MAP_GROUP_UNDERWATER5 0
+#define MAP_GROUP_UNDERWATER6 0
+#define MAP_GROUP_UNDERWATER7 0
+//--------------------------------------------------
+// Map Group 1
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F,
+ MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F,
+ MAP_ID_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB,
+};
+
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_1F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F 1
+#define MAP_GROUP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 1
+
+//--------------------------------------------------
+// Map Group 2
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_OLDALE_TOWN_HOUSE1,
+ MAP_ID_OLDALE_TOWN_HOUSE2,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_OLDALE_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_OLDALE_TOWN_MART,
+};
+
+#define MAP_GROUP_OLDALE_TOWN_HOUSE1 2
+#define MAP_GROUP_OLDALE_TOWN_HOUSE2 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_1F 2
+#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_2F 2
+#define MAP_GROUP_OLDALE_TOWN_MART 2
+
+//--------------------------------------------------
+// Map Group 3
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_DEWFORD_TOWN_HOUSE1,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_DEWFORD_TOWN_GYM,
+ MAP_ID_DEWFORD_TOWN_HALL,
+ MAP_ID_DEWFORD_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE1 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_1F 3
+#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_2F 3
+#define MAP_GROUP_DEWFORD_TOWN_GYM 3
+#define MAP_GROUP_DEWFORD_TOWN_HALL 3
+#define MAP_GROUP_DEWFORD_TOWN_HOUSE2 3
+
+//--------------------------------------------------
+// Map Group 4
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LAVARIDGE_TOWN_HERB_SHOP,
+ MAP_ID_LAVARIDGE_TOWN_GYM_1F,
+ MAP_ID_LAVARIDGE_TOWN_GYM_B1F,
+ MAP_ID_LAVARIDGE_TOWN_HOUSE,
+ MAP_ID_LAVARIDGE_TOWN_MART,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_2F,
+};
+
+#define MAP_GROUP_LAVARIDGE_TOWN_HERB_SHOP 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_GYM_B1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_HOUSE 4
+#define MAP_GROUP_LAVARIDGE_TOWN_MART 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_1F 4
+#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_2F 4
+
+//--------------------------------------------------
+// Map Group 5
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FALLARBOR_TOWN_MART,
+ MAP_ID_FALLARBOR_TOWN_TENT_LOBBY,
+ MAP_ID_FALLARBOR_TOWN_TENT_HALL,
+ MAP_ID_FALLARBOR_TOWN_TENT_ARENA,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_FALLARBOR_TOWN_HOUSE1,
+ MAP_ID_FALLARBOR_TOWN_HOUSE2,
+};
+
+#define MAP_GROUP_FALLARBOR_TOWN_MART 5
+#define MAP_GROUP_FALLARBOR_TOWN_TENT_LOBBY 5
+#define MAP_GROUP_FALLARBOR_TOWN_TENT_HALL 5
+#define MAP_GROUP_FALLARBOR_TOWN_TENT_ARENA 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_1F 5
+#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_2F 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE1 5
+#define MAP_GROUP_FALLARBOR_TOWN_HOUSE2 5
+
+//--------------------------------------------------
+// Map Group 6
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_VERDANTURF_TOWN_TENT_LOBBY,
+ MAP_ID_VERDANTURF_TOWN_TENT_HALL,
+ MAP_ID_VERDANTURF_TOWN_TENT_ARENA,
+ MAP_ID_VERDANTURF_TOWN_MART,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_VERDANTURF_TOWN_WANDAS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE,
+ MAP_ID_VERDANTURF_TOWN_HOUSE,
+};
+
+#define MAP_GROUP_VERDANTURF_TOWN_TENT_LOBBY 6
+#define MAP_GROUP_VERDANTURF_TOWN_TENT_HALL 6
+#define MAP_GROUP_VERDANTURF_TOWN_TENT_ARENA 6
+#define MAP_GROUP_VERDANTURF_TOWN_MART 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_1F 6
+#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_2F 6
+#define MAP_GROUP_VERDANTURF_TOWN_WANDAS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE 6
+#define MAP_GROUP_VERDANTURF_TOWN_HOUSE 6
+
+//--------------------------------------------------
+// Map Group 7
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_1F,
+ MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_2F,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE1,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE2,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE3,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE4,
+ MAP_ID_PACIFIDLOG_TOWN_HOUSE5,
+};
+
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE1 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE2 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE3 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE4 7
+#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE5 7
+
+//--------------------------------------------------
+// Map Group 8
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_PETALBURG_CITY_WALLYS_HOUSE,
+ MAP_ID_PETALBURG_CITY_GYM,
+ MAP_ID_PETALBURG_CITY_HOUSE1,
+ MAP_ID_PETALBURG_CITY_HOUSE2,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_1F,
+ MAP_ID_PETALBURG_CITY_POKEMON_CENTER_2F,
+ MAP_ID_PETALBURG_CITY_MART,
+};
+
+#define MAP_GROUP_PETALBURG_CITY_WALLYS_HOUSE 8
+#define MAP_GROUP_PETALBURG_CITY_GYM 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE1 8
+#define MAP_GROUP_PETALBURG_CITY_HOUSE2 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_1F 8
+#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_2F 8
+#define MAP_GROUP_PETALBURG_CITY_MART 8
+
+//--------------------------------------------------
+// Map Group 9
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_1F,
+ MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_2F,
+ MAP_ID_SLATEPORT_CITY_TENT_LOBBY,
+ MAP_ID_SLATEPORT_CITY_TENT_HALL,
+ MAP_ID_SLATEPORT_CITY_TENT_ARENA,
+ MAP_ID_SLATEPORT_CITY_HOUSE1,
+ MAP_ID_SLATEPORT_CITY_POKEMON_FAN_CLUB,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_1F,
+ MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_2F,
+ MAP_ID_SLATEPORT_CITY_HARBOR,
+ MAP_ID_SLATEPORT_CITY_HOUSE2,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SLATEPORT_CITY_MART,
+};
+
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_TENT_LOBBY 9
+#define MAP_GROUP_SLATEPORT_CITY_TENT_HALL 9
+#define MAP_GROUP_SLATEPORT_CITY_TENT_ARENA 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE1 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_FAN_CLUB 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_HARBOR 9
+#define MAP_GROUP_SLATEPORT_CITY_HOUSE2 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_1F 9
+#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_2F 9
+#define MAP_GROUP_SLATEPORT_CITY_MART 9
+
+//--------------------------------------------------
+// Map Group 10
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MAUVILLE_CITY_GYM,
+ MAP_ID_MAUVILLE_CITY_BIKE_SHOP,
+ MAP_ID_MAUVILLE_CITY_HOUSE1,
+ MAP_ID_MAUVILLE_CITY_GAME_CORNER,
+ MAP_ID_MAUVILLE_CITY_HOUSE2,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MAUVILLE_CITY_MART,
+};
+
+#define MAP_GROUP_MAUVILLE_CITY_GYM 10
+#define MAP_GROUP_MAUVILLE_CITY_BIKE_SHOP 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE1 10
+#define MAP_GROUP_MAUVILLE_CITY_GAME_CORNER 10
+#define MAP_GROUP_MAUVILLE_CITY_HOUSE2 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_1F 10
+#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_2F 10
+#define MAP_GROUP_MAUVILLE_CITY_MART 10
+
+//--------------------------------------------------
+// Map Group 11
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_1F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_2F,
+ MAP_ID_RUSTBORO_CITY_DEVON_CORP_3F,
+ MAP_ID_RUSTBORO_CITY_GYM,
+ MAP_ID_RUSTBORO_CITY_POKEMON_SCHOOL,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_1F,
+ MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_2F,
+ MAP_ID_RUSTBORO_CITY_MART,
+ MAP_ID_RUSTBORO_CITY_FLAT1_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT1_2F,
+ MAP_ID_RUSTBORO_CITY_HOUSE1,
+ MAP_ID_RUSTBORO_CITY_CUTTERS_HOUSE,
+ MAP_ID_RUSTBORO_CITY_HOUSE2,
+ MAP_ID_RUSTBORO_CITY_FLAT2_1F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_2F,
+ MAP_ID_RUSTBORO_CITY_FLAT2_3F,
+ MAP_ID_RUSTBORO_CITY_HOUSE3,
+};
+
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_GYM 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_SCHOOL 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_MART 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT1_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE1 11
+#define MAP_GROUP_RUSTBORO_CITY_CUTTERS_HOUSE 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE2 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_1F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_2F 11
+#define MAP_GROUP_RUSTBORO_CITY_FLAT2_3F 11
+#define MAP_GROUP_RUSTBORO_CITY_HOUSE3 11
+
+//--------------------------------------------------
+// Map Group 12
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_FORTREE_CITY_HOUSE1,
+ MAP_ID_FORTREE_CITY_GYM,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_FORTREE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_FORTREE_CITY_MART,
+ MAP_ID_FORTREE_CITY_HOUSE2,
+ MAP_ID_FORTREE_CITY_HOUSE3,
+ MAP_ID_FORTREE_CITY_HOUSE4,
+ MAP_ID_FORTREE_CITY_HOUSE5,
+ MAP_ID_FORTREE_CITY_DECORATION_SHOP,
+};
+
+#define MAP_GROUP_FORTREE_CITY_HOUSE1 12
+#define MAP_GROUP_FORTREE_CITY_GYM 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_1F 12
+#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_2F 12
+#define MAP_GROUP_FORTREE_CITY_MART 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE2 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE3 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE4 12
+#define MAP_GROUP_FORTREE_CITY_HOUSE5 12
+#define MAP_GROUP_FORTREE_CITY_DECORATION_SHOP 12
+
+//--------------------------------------------------
+// Map Group 13
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F,
+ MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_2F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F,
+ MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F,
+ MAP_ID_LILYCOVE_CITY_CONTEST_LOBBY,
+ MAP_ID_LILYCOVE_CITY_CONTEST_HALL,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_LILYCOVE_CITY_UNUSED_MART,
+ MAP_ID_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB,
+ MAP_ID_LILYCOVE_CITY_HARBOR,
+ MAP_ID_LILYCOVE_CITY_MOVE_DELETERS_HOUSE,
+ MAP_ID_LILYCOVE_CITY_HOUSE1,
+ MAP_ID_LILYCOVE_CITY_HOUSE2,
+ MAP_ID_LILYCOVE_CITY_HOUSE3,
+ MAP_ID_LILYCOVE_CITY_HOUSE4,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP,
+ MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR,
+};
+
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_LOBBY 13
+#define MAP_GROUP_LILYCOVE_CITY_CONTEST_HALL 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_UNUSED_MART 13
+#define MAP_GROUP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 13
+#define MAP_GROUP_LILYCOVE_CITY_HARBOR 13
+#define MAP_GROUP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE1 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE2 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE3 13
+#define MAP_GROUP_LILYCOVE_CITY_HOUSE4 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_1F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_2F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_3F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_4F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_5F 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 13
+#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 13
+
+//--------------------------------------------------
+// Map Group 14
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_MOSSDEEP_CITY_GYM,
+ MAP_ID_MOSSDEEP_CITY_HOUSE1,
+ MAP_ID_MOSSDEEP_CITY_HOUSE2,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_MART,
+ MAP_ID_MOSSDEEP_CITY_HOUSE3,
+ MAP_ID_MOSSDEEP_CITY_STEVENS_HOUSE,
+ MAP_ID_MOSSDEEP_CITY_HOUSE4,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_1F,
+ MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_2F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_1F,
+ MAP_ID_MOSSDEEP_CITY_GAME_CORNER_B1F,
+};
+
+#define MAP_GROUP_MOSSDEEP_CITY_GYM 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE1 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE2 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_MART 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE3 14
+#define MAP_GROUP_MOSSDEEP_CITY_STEVENS_HOUSE 14
+#define MAP_GROUP_MOSSDEEP_CITY_HOUSE4 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_2F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_1F 14
+#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_B1F 14
+
+//--------------------------------------------------
+// Map Group 15
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SOOTOPOLIS_CITY_GYM_1F,
+ MAP_ID_SOOTOPOLIS_CITY_GYM_B1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_1F,
+ MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_2F,
+ MAP_ID_SOOTOPOLIS_CITY_MART,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE1,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE2,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE3,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE4,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE5,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE6,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE7,
+ MAP_ID_SOOTOPOLIS_CITY_HOUSE8,
+ MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1,
+ MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2,
+};
+
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_B1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_MART 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE1 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE2 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE3 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE4 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE5 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE6 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE7 15
+#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE8 15
+#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1 15
+#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2 15
+//--------------------------------------------------
+// Map Group 16
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_EVER_GRANDE_CITY_SIDNEYS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_PHOEBES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_GLACIAS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_DRAKES_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CHAMPIONS_ROOM,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR1,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR2,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR3,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR4,
+ MAP_ID_EVER_GRANDE_CITY_CORRIDOR5,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F,
+ MAP_ID_EVER_GRANDE_CITY_HALL_OF_FAME,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_1F,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_2F,
+ MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F,
+};
+
+#define MAP_GROUP_EVER_GRANDE_CITY_SIDNEYS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_PHOEBES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_GLACIAS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_DRAKES_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CHAMPIONS_ROOM 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR1 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR2 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR3 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR4 16
+#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR5 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F 16
+#define MAP_GROUP_EVER_GRANDE_CITY_HALL_OF_FAME 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_1F 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_2F 16
+#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F 16
+
+//--------------------------------------------------
+// Map Group 17
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_MR_BRINEYS_HOUSE,
+ MAP_ID_ROUTE104_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_MR_BRINEYS_HOUSE 17
+#define MAP_GROUP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 17
+
+//--------------------------------------------------
+// Map Group 18
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE111_WINSTRATE_FAMILYS_HOUSE,
+ MAP_ID_ROUTE111_OLD_LADYS_REST_STOP,
+};
+
+#define MAP_GROUP_ROUTE111_WINSTRATE_FAMILYS_HOUSE 18
+#define MAP_GROUP_ROUTE111_OLD_LADYS_REST_STOP 18
+
+//--------------------------------------------------
+// Map Group 19
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE112_CABLE_CAR_STATION,
+ MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION,
+};
+
+#define MAP_GROUP_ROUTE112_CABLE_CAR_STATION 19
+#define MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION 19
+
+//--------------------------------------------------
+// Map Group 20
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_HOUSE,
+ MAP_ID_ROUTE114_FOSSIL_MANIACS_TUNNEL,
+ MAP_ID_ROUTE114_LANETTES_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_HOUSE 20
+#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_TUNNEL 20
+#define MAP_GROUP_ROUTE114_LANETTES_HOUSE 20
+
+//--------------------------------------------------
+// Map Group 21
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE116_TUNNELERS_REST_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE116_TUNNELERS_REST_HOUSE 21
+
+//--------------------------------------------------
+// Map Group 22
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE117_POKEMON_DAY_CARE,
+};
+
+#define MAP_GROUP_ROUTE117_POKEMON_DAY_CARE 22
+
+//--------------------------------------------------
+// Map Group 23
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE121_SAFARI_ZONE_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE121_SAFARI_ZONE_ENTRANCE 23
+
+//--------------------------------------------------
+// Map Group 24
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_METEOR_FALLS_1F_1R,
+ MAP_ID_METEOR_FALLS_1F_2R,
+ MAP_ID_METEOR_FALLS_B1F_1R,
+ MAP_ID_METEOR_FALLS_B1F_2R,
+ MAP_ID_RUSTURF_TUNNEL,
+ MAP_ID_UNDERWATER_SOOTOPOLIS_CITY,
+ MAP_ID_DESERT_RUINS,
+ MAP_ID_GRANITE_CAVE_1F,
+ MAP_ID_GRANITE_CAVE_B1F,
+ MAP_ID_GRANITE_CAVE_B2F,
+ MAP_ID_GRANITE_CAVE_STEVENS_ROOM,
+ MAP_ID_PETALBURG_WOODS,
+ MAP_ID_MT_CHIMNEY,
+ MAP_ID_JAGGED_PASS,
+ MAP_ID_FIERY_PATH,
+ MAP_ID_MT_PYRE_1F,
+ MAP_ID_MT_PYRE_2F,
+ MAP_ID_MT_PYRE_3F,
+ MAP_ID_MT_PYRE_4F,
+ MAP_ID_MT_PYRE_5F,
+ MAP_ID_MT_PYRE_6F,
+ MAP_ID_MT_PYRE_EXTERIOR,
+ MAP_ID_MT_PYRE_SUMMIT,
+ MAP_ID_AQUA_HIDEOUT_1F,
+ MAP_ID_AQUA_HIDEOUT_B1F,
+ MAP_ID_AQUA_HIDEOUT_B2F,
+ MAP_ID_UNDERWATER_SEAFLOOR_CAVERN,
+ MAP_ID_SEAFLOOR_CAVERN_ENTRANCE,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM1,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM2,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM3,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM4,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM5,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM6,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM7,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM8,
+ MAP_ID_SEAFLOOR_CAVERN_ROOM9,
+ MAP_ID_CAVE_OF_ORIGIN_ENTRANCE,
+ MAP_ID_CAVE_OF_ORIGIN_1F,
+ MAP_ID_CAVE_OF_ORIGIN_B1F,
+ MAP_ID_CAVE_OF_ORIGIN_B2F,
+ MAP_ID_CAVE_OF_ORIGIN_B3F,
+ MAP_ID_CAVE_OF_ORIGIN_B4F,
+ MAP_ID_VICTORY_ROAD_1F,
+ MAP_ID_VICTORY_ROAD_B1F,
+ MAP_ID_VICTORY_ROAD_B2F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_INNER_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM,
+ MAP_ID_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM,
+ MAP_ID_NEW_MAUVILLE_ENTRANCE,
+ MAP_ID_NEW_MAUVILLE_INSIDE,
+ MAP_ID_ABANDONED_SHIP_DECK,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_1F,
+ MAP_ID_ABANDONED_SHIP_CORRIDORS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_B1F,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER1,
+ MAP_ID_ABANDONED_SHIP_ROOM_B1F,
+ MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
+ MAP_ID_ABANDONED_SHIP_CAPTAINS_OFFICE,
+ MAP_ID_ABANDONED_SHIP_UNDERWATER2,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS,
+ MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS,
+ MAP_ID_ISLAND_CAVE,
+ MAP_ID_ANCIENT_TOMB,
+ MAP_ID_UNDERWATER_ROUTE134,
+ MAP_ID_UNDERWATER_SEALED_CHAMBER,
+ MAP_ID_SEALED_CHAMBER_OUTER_ROOM,
+ MAP_ID_SEALED_CHAMBER_INNER_ROOM,
+ MAP_ID_SCORCHED_SLAB,
+ MAP_ID_UNUSED_AQUA_HIDEOUT_1F,
+ MAP_ID_UNUSED_AQUA_HIDEOUT_B1F,
+ MAP_ID_UNUSED_AQUA_HIDEOUT_B2F,
+ MAP_ID_SKY_PILLAR_ENTRANCE,
+ MAP_ID_SKY_PILLAR_OUTSIDE,
+ MAP_ID_SKY_PILLAR_1F,
+ MAP_ID_SKY_PILLAR_2F,
+ MAP_ID_SKY_PILLAR_3F,
+ MAP_ID_SKY_PILLAR_4F,
+ MAP_ID_SHOAL_CAVE_LOW_TIDE_ICE_ROOM,
+ MAP_ID_SKY_PILLAR_5F,
+ MAP_ID_SKY_PILLAR_TOP,
+ MAP_ID_MAGMA_HIDEOUT_ENTRANCE,
+ MAP_ID_MAGMA_HIDEOUT_B1F,
+ MAP_ID_MAGMA_HIDEOUT_B2F,
+ MAP_ID_MAGMA_HIDEOUT_B3F,
+ MAP_ID_MAGMA_HIDEOUT_B4F,
+ MAP_ID_MAGMA_HIDEOUT_B5F,
+ MAP_ID_MAGMA_HIDEOUT_B6F,
+ MAP_ID_MAGMA_HIDEOUT_B7F,
+ MAP_ID_MIRAGE_TOWER_1F,
+ MAP_ID_MIRAGE_TOWER_2F,
+ MAP_ID_MIRAGE_TOWER_3F,
+ MAP_ID_MIRAGE_TOWER_4F,
+ MAP_ID_DESERT_UNDERPASS,
+ MAP_ID_ARTISAN_CAVE_1F,
+ MAP_ID_ARTISAN_CAVE_2F,
+ MAP_ID_UNKNOWN_UNDERWATER,
+ MAP_ID_MARINE_CAVE_1F,
+ MAP_ID_MARINE_CAVE_2F,
+ MAP_ID_TERRA_CAVE_1F,
+ MAP_ID_TERRA_CAVE_2F,
+ MAP_ID_ALTERING_CAVE,
+ MAP_ID_METEOR_FALLS_B1F_3R,
+};
+
+#define MAP_GROUP_METEOR_FALLS_1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_1F_2R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_1R 24
+#define MAP_GROUP_METEOR_FALLS_B1F_2R 24
+#define MAP_GROUP_RUSTURF_TUNNEL 24
+#define MAP_GROUP_UNDERWATER_SOOTOPOLIS_CITY 24
+#define MAP_GROUP_DESERT_RUINS 24
+#define MAP_GROUP_GRANITE_CAVE_1F 24
+#define MAP_GROUP_GRANITE_CAVE_B1F 24
+#define MAP_GROUP_GRANITE_CAVE_B2F 24
+#define MAP_GROUP_GRANITE_CAVE_STEVENS_ROOM 24
+#define MAP_GROUP_PETALBURG_WOODS 24
+#define MAP_GROUP_MT_CHIMNEY 24
+#define MAP_GROUP_JAGGED_PASS 24
+#define MAP_GROUP_FIERY_PATH 24
+#define MAP_GROUP_MT_PYRE_1F 24
+#define MAP_GROUP_MT_PYRE_2F 24
+#define MAP_GROUP_MT_PYRE_3F 24
+#define MAP_GROUP_MT_PYRE_4F 24
+#define MAP_GROUP_MT_PYRE_5F 24
+#define MAP_GROUP_MT_PYRE_6F 24
+#define MAP_GROUP_MT_PYRE_EXTERIOR 24
+#define MAP_GROUP_MT_PYRE_SUMMIT 24
+#define MAP_GROUP_AQUA_HIDEOUT_1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B1F 24
+#define MAP_GROUP_AQUA_HIDEOUT_B2F 24
+#define MAP_GROUP_UNDERWATER_SEAFLOOR_CAVERN 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ENTRANCE 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM1 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM2 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM3 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM4 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM5 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM6 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM7 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM8 24
+#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_ENTRANCE 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B1F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B2F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B3F 24
+#define MAP_GROUP_CAVE_OF_ORIGIN_B4F 24
+#define MAP_GROUP_VICTORY_ROAD_1F 24
+#define MAP_GROUP_VICTORY_ROAD_B1F 24
+#define MAP_GROUP_VICTORY_ROAD_B2F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 24
+#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 24
+#define MAP_GROUP_NEW_MAUVILLE_ENTRANCE 24
+#define MAP_GROUP_NEW_MAUVILLE_INSIDE 24
+#define MAP_GROUP_ABANDONED_SHIP_DECK 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER1 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOM_B1F 24
+#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F 24
+#define MAP_GROUP_ABANDONED_SHIP_CAPTAINS_OFFICE 24
+#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER2 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 24
+#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 24
+#define MAP_GROUP_ISLAND_CAVE 24
+#define MAP_GROUP_ANCIENT_TOMB 24
+#define MAP_GROUP_UNDERWATER_ROUTE134 24
+#define MAP_GROUP_UNDERWATER_SEALED_CHAMBER 24
+#define MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM 24
+#define MAP_GROUP_SEALED_CHAMBER_INNER_ROOM 24
+#define MAP_GROUP_SCORCHED_SLAB 24
+#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_1F 24
+#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B1F 24
+#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B2F 24
+#define MAP_GROUP_SKY_PILLAR_ENTRANCE 24
+#define MAP_GROUP_SKY_PILLAR_OUTSIDE 24
+#define MAP_GROUP_SKY_PILLAR_1F 24
+#define MAP_GROUP_SKY_PILLAR_2F 24
+#define MAP_GROUP_SKY_PILLAR_3F 24
+#define MAP_GROUP_SKY_PILLAR_4F 24
+#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 24
+#define MAP_GROUP_SKY_PILLAR_5F 24
+#define MAP_GROUP_SKY_PILLAR_TOP 24
+#define MAP_GROUP_MAGMA_HIDEOUT_ENTRANCE 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B1F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B2F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B3F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B4F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B5F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B6F 24
+#define MAP_GROUP_MAGMA_HIDEOUT_B7F 24
+#define MAP_GROUP_MIRAGE_TOWER_1F 24
+#define MAP_GROUP_MIRAGE_TOWER_2F 24
+#define MAP_GROUP_MIRAGE_TOWER_3F 24
+#define MAP_GROUP_MIRAGE_TOWER_4F 24
+#define MAP_GROUP_DESERT_UNDERPASS 24
+#define MAP_GROUP_ARTISAN_CAVE_1F 24
+#define MAP_GROUP_ARTISAN_CAVE_2F 24
+#define MAP_GROUP_UNKNOWN_UNDERWATER 24
+#define MAP_GROUP_MARINE_CAVE_1F 24
+#define MAP_GROUP_MARINE_CAVE_2F 24
+#define MAP_GROUP_TERRA_CAVE_1F 24
+#define MAP_GROUP_TERRA_CAVE_2F 24
+#define MAP_GROUP_ALTERING_CAVE 24
+#define MAP_GROUP_METEOR_FALLS_B1F_3R 24
+
+//--------------------------------------------------
+// Map Group 25
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SECRET_BASE_RED_CAVE1,
+ MAP_ID_SECRET_BASE_BROWN_CAVE1,
+ MAP_ID_SECRET_BASE_BLUE_CAVE1,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE1,
+ MAP_ID_SECRET_BASE_TREE1,
+ MAP_ID_SECRET_BASE_SHRUB1,
+ MAP_ID_SECRET_BASE_RED_CAVE2,
+ MAP_ID_SECRET_BASE_BROWN_CAVE2,
+ MAP_ID_SECRET_BASE_BLUE_CAVE2,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE2,
+ MAP_ID_SECRET_BASE_TREE2,
+ MAP_ID_SECRET_BASE_SHRUB2,
+ MAP_ID_SECRET_BASE_RED_CAVE3,
+ MAP_ID_SECRET_BASE_BROWN_CAVE3,
+ MAP_ID_SECRET_BASE_BLUE_CAVE3,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE3,
+ MAP_ID_SECRET_BASE_TREE3,
+ MAP_ID_SECRET_BASE_SHRUB3,
+ MAP_ID_SECRET_BASE_RED_CAVE4,
+ MAP_ID_SECRET_BASE_BROWN_CAVE4,
+ MAP_ID_SECRET_BASE_BLUE_CAVE4,
+ MAP_ID_SECRET_BASE_YELLOW_CAVE4,
+ MAP_ID_SECRET_BASE_TREE4,
+ MAP_ID_SECRET_BASE_SHRUB4,
+ MAP_ID_SINGLE_BATTLE_COLOSSEUM,
+ MAP_ID_TRADE_CENTER,
+ MAP_ID_RECORD_CORNER,
+ MAP_ID_DOUBLE_BATTLE_COLOSSEUM,
+ MAP_ID_LINK_CONTEST_ROOM1,
+ MAP_ID_UNKNOWN_MAP_25_29,
+ MAP_ID_UNKNOWN_MAP_25_30,
+ MAP_ID_UNKNOWN_MAP_25_31,
+ MAP_ID_UNKNOWN_MAP_25_32,
+ MAP_ID_UNKNOWN_MAP_25_33,
+ MAP_ID_UNKNOWN_MAP_25_34,
+ MAP_ID_LINK_CONTEST_ROOM2,
+ MAP_ID_LINK_CONTEST_ROOM3,
+ MAP_ID_LINK_CONTEST_ROOM4,
+ MAP_ID_LINK_CONTEST_ROOM5,
+ MAP_ID_LINK_CONTEST_ROOM6,
+ MAP_ID_INSIDE_OF_TRUCK,
+ MAP_ID_SS_TIDAL_CORRIDOR,
+ MAP_ID_SS_TIDAL_LOWER_DECK,
+ MAP_ID_SS_TIDAL_ROOMS,
+ MAP_ID_TEST_ROOM_1,
+ MAP_ID_TEST_ROOM_2,
+ MAP_ID_TEST_ROOM_3,
+ MAP_ID_TEST_ROOM_4,
+ MAP_ID_TEST_ROOM_5,
+ MAP_ID_TEST_ROOM_6,
+ MAP_ID_TEST_ROOM_7,
+ MAP_ID_TEST_ROOM_8,
+ MAP_ID_TEST_ROOM_9,
+ MAP_ID_TEST_ROOM_10,
+ MAP_ID_TEST_ROOM_11,
+ MAP_ID_TEST_ROOM_12,
+ MAP_ID_TEST_ROOM_13,
+ MAP_ID_TEST_ROOM_14,
+ MAP_ID_TEST_ROOM_15,
+ MAP_ID_TEST_ROOM_16,
+ MAP_ID_UNION_ROOM,
+};
+
+#define MAP_GROUP_SECRET_BASE_RED_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE1 25
+#define MAP_GROUP_SECRET_BASE_TREE1 25
+#define MAP_GROUP_SECRET_BASE_SHRUB1 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE2 25
+#define MAP_GROUP_SECRET_BASE_TREE2 25
+#define MAP_GROUP_SECRET_BASE_SHRUB2 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE3 25
+#define MAP_GROUP_SECRET_BASE_TREE3 25
+#define MAP_GROUP_SECRET_BASE_SHRUB3 25
+#define MAP_GROUP_SECRET_BASE_RED_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BROWN_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_BLUE_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE4 25
+#define MAP_GROUP_SECRET_BASE_TREE4 25
+#define MAP_GROUP_SECRET_BASE_SHRUB4 25
+#define MAP_GROUP_SINGLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_TRADE_CENTER 25
+#define MAP_GROUP_RECORD_CORNER 25
+#define MAP_GROUP_DOUBLE_BATTLE_COLOSSEUM 25
+#define MAP_GROUP_LINK_CONTEST_ROOM1 25
+#define MAP_GROUP_UNKNOWN_MAP_25_29 25
+#define MAP_GROUP_UNKNOWN_MAP_25_30 25
+#define MAP_GROUP_UNKNOWN_MAP_25_31 25
+#define MAP_GROUP_UNKNOWN_MAP_25_32 25
+#define MAP_GROUP_UNKNOWN_MAP_25_33 25
+#define MAP_GROUP_UNKNOWN_MAP_25_34 25
+#define MAP_GROUP_LINK_CONTEST_ROOM2 25
+#define MAP_GROUP_LINK_CONTEST_ROOM3 25
+#define MAP_GROUP_LINK_CONTEST_ROOM4 25
+#define MAP_GROUP_LINK_CONTEST_ROOM5 25
+#define MAP_GROUP_LINK_CONTEST_ROOM6 25
+#define MAP_GROUP_INSIDE_OF_TRUCK 25
+#define MAP_GROUP_SS_TIDAL_CORRIDOR 25
+#define MAP_GROUP_SS_TIDAL_LOWER_DECK 25
+#define MAP_GROUP_SS_TIDAL_ROOMS 25
+#define MAP_GROUP_TEST_ROOM_1 25
+#define MAP_GROUP_TEST_ROOM_2 25
+#define MAP_GROUP_TEST_ROOM_3 25
+#define MAP_GROUP_TEST_ROOM_4 25
+#define MAP_GROUP_TEST_ROOM_5 25
+#define MAP_GROUP_TEST_ROOM_6 25
+#define MAP_GROUP_TEST_ROOM_7 25
+#define MAP_GROUP_TEST_ROOM_8 25
+#define MAP_GROUP_TEST_ROOM_9 25
+#define MAP_GROUP_TEST_ROOM_10 25
+#define MAP_GROUP_TEST_ROOM_11 25
+#define MAP_GROUP_TEST_ROOM_12 25
+#define MAP_GROUP_TEST_ROOM_13 25
+#define MAP_GROUP_TEST_ROOM_14 25
+#define MAP_GROUP_TEST_ROOM_15 25
+#define MAP_GROUP_TEST_ROOM_16 25
+#define MAP_GROUP_UNION_ROOM 25
+//--------------------------------------------------
+// Map Group 26
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_SAFARI_ZONE_NORTHWEST,
+ MAP_ID_SAFARI_ZONE_NORTHEAST,
+ MAP_ID_SAFARI_ZONE_SOUTHWEST,
+ MAP_ID_SAFARI_ZONE_SOUTHEAST,
+ MAP_ID_BATTLE_FRONTIER_OUTSIDE_WEST,
+ MAP_ID_BATTLE_TOWER_LOBBY,
+ MAP_ID_BATTLE_TOWER_ELEVATOR,
+ MAP_ID_BATTLE_TOWER_CORRIDOR,
+ MAP_ID_BATTLE_TOWER_BATTLE_ROOM,
+ MAP_ID_SOUTHERN_ISLAND_EXTERIOR,
+ MAP_ID_SOUTHERN_ISLAND_INTERIOR,
+ MAP_ID_SAFARI_ZONE_REST_HOUSE,
+ MAP_ID_SAFARI_ZONE_EM_1,
+ MAP_ID_SAFARI_ZONE_EM_2,
+ MAP_ID_BATTLE_FRONTIER_OUTSIDE_EAST,
+ MAP_ID_BATTLE_FRONTIER_TAG_LINK,
+ MAP_ID_BATTLE_FRONTIER_TAG_LINK_CORRIDOR,
+ MAP_ID_BATTLE_FRONTIER_TAG_LINK_ARENA,
+ MAP_ID_BATTLE_DOME_LOBBY,
+ MAP_ID_BATTLE_DOME_CORRIDOR,
+ MAP_ID_BATTLE_DOME_ROOM,
+ MAP_ID_BATTLE_DOME_ARENA,
+ MAP_ID_BATTLE_PALACE_LOBBY,
+ MAP_ID_BATTLE_PALACE_CORRIDOR,
+ MAP_ID_BATTLE_PALACE_1F,
+ MAP_ID_BATTLE_PYRAMID_LOBBY,
+ MAP_ID_BATTLE_PYRAMID_UNKNOWN,
+ MAP_ID_BATTLE_PYRAMID_PEAK,
+ MAP_ID_BATTLE_ARENA_LOBBY,
+ MAP_ID_BATTLE_ARENA_CORRIDOR,
+ MAP_ID_BATTLE_ARENA_ARENA,
+ MAP_ID_BATTLE_FACTORY_LOBBY,
+ MAP_ID_BATTLE_FACTORY_CORRIDOR,
+ MAP_ID_BATTLE_FACTORY_ARENA,
+ MAP_ID_BATTLE_PALACE_2F,
+ MAP_ID_BATTLE_PALACE_3F,
+ MAP_ID_BATTLE_PALACE_4F,
+ MAP_ID_BATTLE_PALACE_5F,
+ MAP_ID_BATTLE_PALACE_6F,
+ MAP_ID_BATTLE_PALACE_TEST_ROOM,
+ MAP_ID_RANKING_HALL,
+ MAP_ID_STAT_RATER_HOUSE,
+ MAP_ID_BATTLE_FRONTIER_EXCHANGE,
+ MAP_ID_BATTLE_FRONTIER_MANIAC_HOUSE,
+ MAP_ID_BATTLE_FRONTIER_GAMBLING_HOUSE,
+ MAP_ID_BATTLE_FRONTIER_HOUSE1,
+ MAP_ID_BATTLE_FRONTIER_SCOTTS_HOUSE,
+ MAP_ID_BATTLE_FRONTIER_HOUSE2,
+ MAP_ID_BATTLE_FRONTIER_HOUSE3,
+ MAP_ID_BATTLE_FRONTIER_HOUSE4,
+ MAP_ID_BATTLE_FRONTIER_ENTRANCE_HALL,
+ MAP_ID_BATTLE_FRONTIER_HOUSE5,
+ MAP_ID_BATTLE_FRONTIER_UNUSED_HOUSE,
+ MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_1F,
+ MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_2F,
+ MAP_ID_BATTLE_FRONTIER_MART,
+ MAP_ID_FARAWAY_ISLAND_OUTSIDE,
+ MAP_ID_FARAWAY_ISLAND_FOREST,
+ MAP_ID_BIRTH_ISLAND_OUTSIDE,
+ MAP_ID_BIRTH_ISLAND_DOCKS,
+ MAP_ID_TRAINER_HILL_LOBBY,
+ MAP_ID_TRAINER_HILL_1F,
+ MAP_ID_TRAINER_HILL_2F,
+ MAP_ID_TRAINER_HILL_3F,
+ MAP_ID_TRAINER_HILL_4F,
+ MAP_ID_TRAINER_HILL_5F,
+ MAP_ID_NAVEL_ROCK_OUTSIDE,
+ MAP_ID_NAVEL_ROCK_DOCKS,
+ MAP_ID_NAVEL_ROCK_1F,
+ MAP_ID_NAVEL_ROCK_2F,
+ MAP_ID_NAVEL_ROCK_3F,
+ MAP_ID_NAVEL_ROCK_4F,
+ MAP_ID_NAVEL_ROCK_5F,
+ MAP_ID_NAVEL_ROCK_6F,
+ MAP_ID_NAVEL_ROCK_7F,
+ MAP_ID_NAVEL_ROCK_PEAK,
+ MAP_ID_NAVEL_ROCK_B1F,
+ MAP_ID_NAVEL_ROCK_B2F,
+ MAP_ID_NAVEL_ROCK_B3F,
+ MAP_ID_NAVEL_ROCK_B4F,
+ MAP_ID_NAVEL_ROCK_B5F,
+ MAP_ID_NAVEL_ROCK_B6F,
+ MAP_ID_NAVEL_ROCK_B7F,
+ MAP_ID_NAVEL_ROCK_B8F,
+ MAP_ID_NAVEL_ROCK_B9F,
+ MAP_ID_NAVEL_ROCK_B10F,
+ MAP_ID_NAVEL_ROCK_B11F,
+ MAP_ID_NAVEL_ROCK_INNER,
+ MAP_ID_TRAINER_HILL_ELEVATOR,
+};
+
+#define MAP_GROUP_SAFARI_ZONE_NORTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_NORTHEAST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHWEST 26
+#define MAP_GROUP_SAFARI_ZONE_SOUTHEAST 26
+#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_WEST 26
+#define MAP_GROUP_BATTLE_TOWER_LOBBY 26
+#define MAP_GROUP_BATTLE_TOWER_ELEVATOR 26
+#define MAP_GROUP_BATTLE_TOWER_CORRIDOR 26
+#define MAP_GROUP_BATTLE_TOWER_BATTLE_ROOM 26
+#define MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR 26
+#define MAP_GROUP_SOUTHERN_ISLAND_INTERIOR 26
+#define MAP_GROUP_SAFARI_ZONE_REST_HOUSE 26
+#define MAP_GROUP_SAFARI_ZONE_EM_1 26
+#define MAP_GROUP_SAFARI_ZONE_EM_2 26
+#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_EAST 26
+#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK 26
+#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_CORRIDOR 26
+#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_ARENA 26
+#define MAP_GROUP_BATTLE_DOME_LOBBY 26
+#define MAP_GROUP_BATTLE_DOME_CORRIDOR 26
+#define MAP_GROUP_BATTLE_DOME_ROOM 26
+#define MAP_GROUP_BATTLE_DOME_ARENA 26
+#define MAP_GROUP_BATTLE_PALACE_LOBBY 26
+#define MAP_GROUP_BATTLE_PALACE_CORRIDOR 26
+#define MAP_GROUP_BATTLE_PALACE_1F 26
+#define MAP_GROUP_BATTLE_PYRAMID_LOBBY 26
+#define MAP_GROUP_BATTLE_PYRAMID_UNKNOWN 26
+#define MAP_GROUP_BATTLE_PYRAMID_PEAK 26
+#define MAP_GROUP_BATTLE_ARENA_LOBBY 26
+#define MAP_GROUP_BATTLE_ARENA_CORRIDOR 26
+#define MAP_GROUP_BATTLE_ARENA_ARENA 26 // rename
+#define MAP_GROUP_BATTLE_FACTORY_LOBBY 26
+#define MAP_GROUP_BATTLE_FACTORY_CORRIDOR 26
+#define MAP_GROUP_BATTLE_FACTORY_ARENA 26
+#define MAP_GROUP_BATTLE_PALACE_2F 26
+#define MAP_GROUP_BATTLE_PALACE_3F 26
+#define MAP_GROUP_BATTLE_PALACE_4F 26
+#define MAP_GROUP_BATTLE_PALACE_5F 26
+#define MAP_GROUP_BATTLE_PALACE_6F 26
+#define MAP_GROUP_BATTLE_PALACE_TEST_ROOM 26
+#define MAP_GROUP_RANKING_HALL 26
+#define MAP_GROUP_STAT_RATER_HOUSE 26
+#define MAP_GROUP_BATTLE_FRONTIER_EXCHANGE 26
+#define MAP_GROUP_BATTLE_FRONTIER_MANIAC_HOUSE 26
+#define MAP_GROUP_BATTLE_FRONTIER_GAMBLING_HOUSE 26
+#define MAP_GROUP_BATTLE_FRONTIER_HOUSE1 26
+#define MAP_GROUP_BATTLE_FRONTIER_SCOTTS_HOUSE 26
+#define MAP_GROUP_BATTLE_FRONTIER_HOUSE2 26
+#define MAP_GROUP_BATTLE_FRONTIER_HOUSE3 26
+#define MAP_GROUP_BATTLE_FRONTIER_HOUSE4 26
+#define MAP_GROUP_BATTLE_FRONTIER_ENTRANCE_HALL 26
+#define MAP_GROUP_BATTLE_FRONTIER_HOUSE5 26
+#define MAP_GROUP_BATTLE_FRONTIER_UNUSED_HOUSE 26
+#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_1F 26
+#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_2F 26
+#define MAP_GROUP_BATTLE_FRONTIER_MART 26
+#define MAP_GROUP_FARAWAY_ISLAND_OUTSIDE 26
+#define MAP_GROUP_FARAWAY_ISLAND_FOREST 26
+#define MAP_GROUP_BIRTH_ISLAND_OUTSIDE 26
+#define MAP_GROUP_BIRTH_ISLAND_DOCKS 26
+#define MAP_GROUP_TRAINER_HILL_LOBBY 26
+#define MAP_GROUP_TRAINER_HILL_1F 26
+#define MAP_GROUP_TRAINER_HILL_2F 26
+#define MAP_GROUP_TRAINER_HILL_3F 26
+#define MAP_GROUP_TRAINER_HILL_4F 26
+#define MAP_GROUP_TRAINER_HILL_5F 26
+#define MAP_GROUP_NAVEL_ROCK_OUTSIDE 26
+#define MAP_GROUP_NAVEL_ROCK_DOCKS 26
+#define MAP_GROUP_NAVEL_ROCK_1F 26
+#define MAP_GROUP_NAVEL_ROCK_2F 26
+#define MAP_GROUP_NAVEL_ROCK_3F 26
+#define MAP_GROUP_NAVEL_ROCK_4F 26
+#define MAP_GROUP_NAVEL_ROCK_5F 26
+#define MAP_GROUP_NAVEL_ROCK_6F 26
+#define MAP_GROUP_NAVEL_ROCK_7F 26
+#define MAP_GROUP_NAVEL_ROCK_PEAK 26
+#define MAP_GROUP_NAVEL_ROCK_B1F 26
+#define MAP_GROUP_NAVEL_ROCK_B2F 26
+#define MAP_GROUP_NAVEL_ROCK_B3F 26
+#define MAP_GROUP_NAVEL_ROCK_B4F 26
+#define MAP_GROUP_NAVEL_ROCK_B5F 26
+#define MAP_GROUP_NAVEL_ROCK_B6F 26
+#define MAP_GROUP_NAVEL_ROCK_B7F 26
+#define MAP_GROUP_NAVEL_ROCK_B8F 26
+#define MAP_GROUP_NAVEL_ROCK_B9F 26
+#define MAP_GROUP_NAVEL_ROCK_B10F 26
+#define MAP_GROUP_NAVEL_ROCK_B11F 26
+#define MAP_GROUP_NAVEL_ROCK_INNER 26
+#define MAP_GROUP_TRAINER_HILL_ELEVATOR 26
+//--------------------------------------------------
+// Map Group 27
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE104_PROTOTYPE,
+ MAP_ID_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP,
+};
+
+#define MAP_GROUP_ROUTE104_PROTOTYPE 27
+#define MAP_GROUP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP 27
+
+//--------------------------------------------------
+// Map Group 28
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE109_SEASHORE_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE109_SEASHORE_HOUSE 28
+
+//--------------------------------------------------
+// Map Group 29
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE110_TRICK_HOUSE_ENTRANCE,
+ MAP_ID_ROUTE110_TRICK_HOUSE_END,
+ MAP_ID_ROUTE110_TRICK_HOUSE_CORRIDOR,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE1,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE2,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE3,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE4,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE5,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE7,
+ MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE8,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE,
+ MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE,
+};
+
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_END 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_CORRIDOR 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE1 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE2 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE3 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE4 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE5 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE7 29
+#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE8 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE 29
+#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE 29
+
+//--------------------------------------------------
+// Map Group 30
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE113_GLASS_WORKSHOP,
+};
+
+#define MAP_GROUP_ROUTE113_GLASS_WORKSHOP 30
+
+//--------------------------------------------------
+// Map Group 31
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE123_BERRY_MASTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE123_BERRY_MASTERS_HOUSE 31
+
+//--------------------------------------------------
+// Map Group 32
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F,
+ MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F,
+ MAP_ID_ROUTE119_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F 32
+#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_2F 32
+#define MAP_GROUP_ROUTE119_HOUSE 32
+
+//--------------------------------------------------
+// Map Group 33
+//--------------------------------------------------
+
+enum
+{
+ MAP_ID_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE,
+};
+
+#define MAP_GROUP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 33
+
+#endif // GUARD_MAP_CONSTANTS_H \ No newline at end of file
diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h
new file mode 100644
index 000000000..a10648f2f
--- /dev/null
+++ b/include/map_obj_lock.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_MAP_OBJ_LOCK_H
+#define GUARD_MAP_OBJ_LOCK_H
+
+bool8 sub_80983C4(void);
+void ScriptFreezeMapObjects(void);
+bool8 sub_809847C(void);
+void LockSelectedMapObject(void);
+void sub_8098630(void);
+bool8 sub_8098734(void);
+
+#endif // GUARD_MAP_OBJ_LOCK_H
diff --git a/include/map_object_constants.h b/include/map_object_constants.h
new file mode 100644
index 000000000..79482b54a
--- /dev/null
+++ b/include/map_object_constants.h
@@ -0,0 +1,239 @@
+#ifndef GUARD_MAP_OBJECT_CONSTANTS_H
+#define GUARD_MAP_OBJECT_CONSTANTS_H
+
+enum
+{
+ MAP_OBJ_GFX_BRENDAN_NORMAL,
+ MAP_OBJ_GFX_BRENDAN_MACH_BIKE,
+ MAP_OBJ_GFX_BRENDAN_SURFING,
+ MAP_OBJ_GFX_BRENDAN_FIELD_MOVE,
+ MAP_OBJ_GFX_QUINTY_PLUMP,
+ MAP_OBJ_GFX_LITTLE_BOY_1,
+ MAP_OBJ_GFX_LITTLE_GIRL_1,
+ MAP_OBJ_GFX_BOY_1,
+ MAP_OBJ_GFX_GIRL_1,
+ MAP_OBJ_GFX_BOY_2,
+ MAP_OBJ_GFX_GIRL_2,
+ MAP_OBJ_GFX_LITTLE_BOY_2,
+ MAP_OBJ_GFX_LITTLE_GIRL_2,
+ MAP_OBJ_GFX_BOY_3,
+ MAP_OBJ_GFX_GIRL_3,
+ MAP_OBJ_GFX_BOY_4,
+ MAP_OBJ_GFX_WOMAN_1,
+ MAP_OBJ_GFX_FAT_MAN,
+ MAP_OBJ_GFX_WOMAN_2,
+ MAP_OBJ_GFX_MAN_1,
+ MAP_OBJ_GFX_WOMAN_3,
+ MAP_OBJ_GFX_OLD_MAN_1,
+ MAP_OBJ_GFX_OLD_WOMAN_1,
+ MAP_OBJ_GFX_MAN_2,
+ MAP_OBJ_GFX_WOMAN_4,
+ MAP_OBJ_GFX_MAN_3,
+ MAP_OBJ_GFX_WOMAN_5,
+ MAP_OBJ_GFX_COOK,
+ MAP_OBJ_GFX_WOMAN_6,
+ MAP_OBJ_GFX_OLD_MAN_2,
+ MAP_OBJ_GFX_OLD_WOMAN_2,
+ MAP_OBJ_GFX_CAMPER,
+ MAP_OBJ_GFX_PICNICKER,
+ MAP_OBJ_GFX_MAN_4,
+ MAP_OBJ_GFX_WOMAN_7,
+ MAP_OBJ_GFX_YOUNGSTER,
+ MAP_OBJ_GFX_BUG_CATCHER,
+ MAP_OBJ_GFX_PSYCHIC_M,
+ MAP_OBJ_GFX_SCHOOL_KID_M,
+ MAP_OBJ_GFX_MANIAC,
+ MAP_OBJ_GFX_HEX_MANIAC,
+ MAP_OBJ_GFX_WOMAN_8,
+ MAP_OBJ_GFX_SWIMMER_M,
+ MAP_OBJ_GFX_SWIMMER_F,
+ MAP_OBJ_GFX_BLACK_BELT,
+ MAP_OBJ_GFX_BEAUTY,
+ MAP_OBJ_GFX_SCIENTIST_1,
+ MAP_OBJ_GFX_LASS,
+ MAP_OBJ_GFX_GENTLEMAN,
+ MAP_OBJ_GFX_SAILOR,
+ MAP_OBJ_GFX_FISHERMAN,
+ MAP_OBJ_GFX_RUNNING_TRIATHLETE_M,
+ MAP_OBJ_GFX_RUNNING_TRIATHLETE_F,
+ MAP_OBJ_GFX_TUBER_F,
+ MAP_OBJ_GFX_TUBER_M,
+ MAP_OBJ_GFX_HIKER,
+ MAP_OBJ_GFX_CYCLING_TRIATHLETE_M,
+ MAP_OBJ_GFX_CYCLING_TRIATHLETE_F,
+ MAP_OBJ_GFX_NURSE,
+ MAP_OBJ_GFX_ITEM_BALL,
+ MAP_OBJ_GFX_BERRY_TREE,
+ MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES,
+ MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES,
+ MAP_OBJ_GFX_BRENDAN_ACRO_BIKE,
+ MAP_OBJ_GFX_PROF_BIRCH,
+ MAP_OBJ_GFX_MAN_5,
+ MAP_OBJ_GFX_MAN_6,
+ MAP_OBJ_GFX_REPORTER_M,
+ MAP_OBJ_GFX_REPORTER_F,
+ MAP_OBJ_GFX_BARD,
+ MAP_OBJ_GFX_HIPSTER,
+ MAP_OBJ_GFX_TRADER,
+ MAP_OBJ_GFX_STORYTELLER,
+ MAP_OBJ_GFX_GIDDY,
+ MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1,
+ MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2,
+ MAP_OBJ_GFX_UNUSED_NATU_DOLL,
+ MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL,
+ MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL,
+ MAP_OBJ_GFX_UNUSED_WOOPER_DOLL,
+ MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL,
+ MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL,
+ MAP_OBJ_GFX_CUTTABLE_TREE,
+ MAP_OBJ_GFX_MART_EMPLOYEE,
+ MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN,
+ MAP_OBJ_GFX_TEALA,
+ MAP_OBJ_GFX_BREAKABLE_ROCK,
+ MAP_OBJ_GFX_PUSHABLE_BOULDER,
+ MAP_OBJ_GFX_MR_BRINEYS_BOAT,
+ MAP_OBJ_GFX_MAY_NORMAL,
+ MAP_OBJ_GFX_MAY_MACH_BIKE,
+ MAP_OBJ_GFX_MAY_ACRO_BIKE,
+ MAP_OBJ_GFX_MAY_SURFING,
+ MAP_OBJ_GFX_MAY_FIELD_MOVE,
+ MAP_OBJ_GFX_TRUCK,
+ MAP_OBJ_GFX_MACHOKE_CARRYING_BOX,
+ MAP_OBJ_GFX_MACHOKE_FACING_AWAY,
+ MAP_OBJ_GFX_BIRCHS_BAG,
+ MAP_OBJ_GFX_POOCHYENA,
+ MAP_OBJ_GFX_ARTIST,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING,
+ MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE,
+ MAP_OBJ_GFX_RIVAL_MAY_NORMAL,
+ MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE,
+ MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE,
+ MAP_OBJ_GFX_RIVAL_MAY_SURFING,
+ MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE,
+ MAP_OBJ_GFX_CAMERAMAN,
+ MAP_OBJ_GFX_BRENDAN_UNDERWATER,
+ MAP_OBJ_GFX_MAY_UNDERWATER,
+ MAP_OBJ_GFX_MOVING_BOX,
+ MAP_OBJ_GFX_CABLE_CAR,
+ MAP_OBJ_GFX_SCIENTIST_2,
+ MAP_OBJ_GFX_MAN_7,
+ MAP_OBJ_GFX_AQUA_MEMBER_M,
+ MAP_OBJ_GFX_AQUA_MEMBER_F,
+ MAP_OBJ_GFX_MAGMA_MEMBER_M,
+ MAP_OBJ_GFX_MAGMA_MEMBER_F,
+ MAP_OBJ_GFX_SIDNEY,
+ MAP_OBJ_GFX_PHOEBE,
+ MAP_OBJ_GFX_GLACIA,
+ MAP_OBJ_GFX_DRAKE,
+ MAP_OBJ_GFX_ROXANNE,
+ MAP_OBJ_GFX_BRAWLY,
+ MAP_OBJ_GFX_WATTSON,
+ MAP_OBJ_GFX_FLANNERY,
+ MAP_OBJ_GFX_NORMAN,
+ MAP_OBJ_GFX_WINONA,
+ MAP_OBJ_GFX_LIZA,
+ MAP_OBJ_GFX_TATE,
+ MAP_OBJ_GFX_WALLACE,
+ MAP_OBJ_GFX_STEVEN,
+ MAP_OBJ_GFX_WALLY,
+ MAP_OBJ_GFX_LITTLE_BOY_3,
+ MAP_OBJ_GFX_BRENDAN_FISHING,
+ MAP_OBJ_GFX_MAY_FISHING,
+ MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN,
+ MAP_OBJ_GFX_SS_TIDAL,
+ MAP_OBJ_GFX_SUBMARINE_SHADOW,
+ MAP_OBJ_GFX_PICHU_DOLL,
+ MAP_OBJ_GFX_PIKACHU_DOLL,
+ MAP_OBJ_GFX_MARILL_DOLL,
+ MAP_OBJ_GFX_TOGEPI_DOLL,
+ MAP_OBJ_GFX_CYNDAQUIL_DOLL,
+ MAP_OBJ_GFX_CHIKORITA_DOLL,
+ MAP_OBJ_GFX_TOTODILE_DOLL,
+ MAP_OBJ_GFX_JIGGLYPUFF_DOLL,
+ MAP_OBJ_GFX_MEOWTH_DOLL,
+ MAP_OBJ_GFX_CLEFAIRY_DOLL,
+ MAP_OBJ_GFX_DITTO_DOLL,
+ MAP_OBJ_GFX_SMOOCHUM_DOLL,
+ MAP_OBJ_GFX_TREECKO_DOLL,
+ MAP_OBJ_GFX_TORCHIC_DOLL,
+ MAP_OBJ_GFX_MUDKIP_DOLL,
+ MAP_OBJ_GFX_DUSKULL_DOLL,
+ MAP_OBJ_GFX_WYNAUT_DOLL,
+ MAP_OBJ_GFX_BALTOY_DOLL,
+ MAP_OBJ_GFX_KECLEON_DOLL,
+ MAP_OBJ_GFX_AZURILL_DOLL,
+ MAP_OBJ_GFX_SKITTY_DOLL,
+ MAP_OBJ_GFX_SWABLU_DOLL,
+ MAP_OBJ_GFX_GULPIN_DOLL,
+ MAP_OBJ_GFX_LOTAD_DOLL,
+ MAP_OBJ_GFX_SEEDOT_DOLL,
+ MAP_OBJ_GFX_PIKA_CUSHION,
+ MAP_OBJ_GFX_ROUND_CUSHION,
+ MAP_OBJ_GFX_KISS_CUSHION,
+ MAP_OBJ_GFX_ZIGZAG_CUSHION,
+ MAP_OBJ_GFX_SPIN_CUSHION,
+ MAP_OBJ_GFX_DIAMOND_CUSHION,
+ MAP_OBJ_GFX_BALL_CUSHION,
+ MAP_OBJ_GFX_GRASS_CUSHION,
+ MAP_OBJ_GFX_FIRE_CUSHION,
+ MAP_OBJ_GFX_WATER_CUSHION,
+ MAP_OBJ_GFX_BIG_SNORLAX_DOLL,
+ MAP_OBJ_GFX_BIG_RHYDON_DOLL,
+ MAP_OBJ_GFX_BIG_LAPRAS_DOLL,
+ MAP_OBJ_GFX_BIG_VENUSAUR_DOLL,
+ MAP_OBJ_GFX_BIG_CHARIZARD_DOLL,
+ MAP_OBJ_GFX_BIG_BLASTOISE_DOLL,
+ MAP_OBJ_GFX_BIG_WAILMER_DOLL,
+ MAP_OBJ_GFX_BIG_REGIROCK_DOLL,
+ MAP_OBJ_GFX_BIG_REGICE_DOLL,
+ MAP_OBJ_GFX_BIG_REGISTEEL_DOLL,
+ MAP_OBJ_GFX_LATIAS,
+ MAP_OBJ_GFX_LATIOS,
+ MAP_OBJ_GFX_BOY_5,
+ MAP_OBJ_GFX_CONTEST_JUDGE,
+ MAP_OBJ_GFX_BRENDAN_WATERING,
+ MAP_OBJ_GFX_MAY_WATERING,
+ MAP_OBJ_GFX_BRENDAN_DECORATING,
+ MAP_OBJ_GFX_MAY_DECORATING,
+ MAP_OBJ_GFX_ARCHIE,
+ MAP_OBJ_GFX_MAXIE,
+ MAP_OBJ_GFX_KYOGRE_1,
+ MAP_OBJ_GFX_GROUDON_1,
+ MAP_OBJ_GFX_FOSSIL,
+ MAP_OBJ_GFX_REGIROCK,
+ MAP_OBJ_GFX_REGICE,
+ MAP_OBJ_GFX_REGISTEEL,
+ MAP_OBJ_GFX_SKITTY,
+ MAP_OBJ_GFX_KECLEON_1,
+ MAP_OBJ_GFX_KYOGRE_2,
+ MAP_OBJ_GFX_GROUDON_2,
+ MAP_OBJ_GFX_RAYQUAZA,
+ MAP_OBJ_GFX_ZIGZAGOON,
+ MAP_OBJ_GFX_PIKACHU,
+ MAP_OBJ_GFX_AZUMARILL,
+ MAP_OBJ_GFX_WINGULL,
+ MAP_OBJ_GFX_KECLEON_2,
+ MAP_OBJ_GFX_TUBER_M_SWIMMING,
+ MAP_OBJ_GFX_AZURILL,
+ MAP_OBJ_GFX_MOM,
+ MAP_OBJ_GFX_LINK_BRENDAN,
+ MAP_OBJ_GFX_LINK_MAY,
+};
+
+enum {
+ SHADOW_SIZE_S,
+ SHADOW_SIZE_M,
+ SHADOW_SIZE_L,
+ SHADOW_SIZE_XL
+};
+
+enum {
+ TRACKS_NONE,
+ TRACKS_FOOT,
+ TRACKS_BIKE_TIRE
+};
+
+#endif // GUARD_MAP_OBJECT_CONSTANTS_H
diff --git a/include/menu.h b/include/menu.h
index 9a23401e0..927c3d3d4 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -1,20 +1,32 @@
#ifndef GUARD_MENU_H
#define GUARD_MENU_H
-#include "text.h"
+#include "window.h"
struct MenuAction
{
- const u8 *text;
- u8 (*func)();
-};
-
-struct MenuAction2
-{
const u8 *text;
- void (*func)(u8);
+ union {
+ void (*void_u8)(u8);
+ u8 (*u8_void)(void);
+ } func;
};
void box_print(u8, u8, u8, u8, const void *, s8, const u8 *);
+void sub_8198070(u8 windowId, bool8 copyToVram);
+void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
+void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
+void schedule_bg_copy_tilemap_to_vram(u8 bgNum);
+void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs);
+void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8);
+u8 GetMenuCursorPos(void);
+s8 ProcessMenuInput(void);
+void blit_move_info_icon(u8 winId, u8 a2, u16 x, u16 y);
+void reset_temp_tile_data_buffers(void);
+int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u16 offset, u8 mode);
+bool8 free_temp_tile_data_buffers_if_possible(void);
+u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
+void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
+s8 sub_8198C58(void);
#endif // GUARD_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
new file mode 100644
index 000000000..f083a10e2
--- /dev/null
+++ b/include/menu_helpers.h
@@ -0,0 +1,20 @@
+#ifndef GUARD_MENU_HELPERS_H
+#define GUARD_MENU_HELPERS_H
+
+// Exported type declarations
+
+struct YesNoFuncTable {
+ TaskFunc yesFunc;
+ TaskFunc noFunc;
+};
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void sub_812225C(u16 *, u16 *, u8, u8);
+void sub_8122298(u16 *, u16 *, u8, u8, u8);
+void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
+bool8 sub_81221AC(void);
+
+#endif //GUARD_MENU_HELPERS_H
diff --git a/include/menu_indicators.h b/include/menu_indicators.h
new file mode 100644
index 000000000..5a3b2e5b8
--- /dev/null
+++ b/include/menu_indicators.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_MENU_INDICATORS_H
+#define GUARD_MENU_INDICATORS_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u8, u8, u16 *);
+void RemoveScrollIndicatorArrowPair(u8);
+
+#endif //GUARD_MENU_INDICATORS_H
diff --git a/include/metatile_behavior.h b/include/metatile_behavior.h
index 5ed36c690..d6743b788 100644
--- a/include/metatile_behavior.h
+++ b/include/metatile_behavior.h
@@ -1,11 +1,149 @@
-#ifndef GUARD_METATILE_BEHAVIOR_H
-#define GUARD_METATILE_BEHAVIOR_H
+#ifndef GUARD_METATILE_BEHAVIOR
+#define GUARD_METATILE_BEHAVIOR
-// Exported type declarations
+bool8 ShouldDoJumpLandingDustEffect(u8);
+bool8 MetatileBehavior_IsEncounterTile(u8);
+bool8 MetatileBehavior_IsJumpEast(u8);
+bool8 MetatileBehavior_IsJumpWest(u8);
+bool8 MetatileBehavior_IsJumpNorth(u8);
+bool8 MetatileBehavior_IsJumpSouth(u8);
+bool8 MetatileBehavior_IsPokeGrass(u8);
+bool8 MetatileBehavior_IsSandOrDeepSand(u8);
+bool8 MetatileBehavior_IsDeepSand(u8);
+bool8 MetatileBehavior_IsReflective(u8);
+bool8 MetatileBehavior_IsIce(u8);
+bool8 MetatileBehavior_IsWarpDoor(u8);
+bool8 MetatileBehavior_IsDoor(u8);
+bool8 MetatileBehavior_IsEscalator(u8);
+bool8 MetatileBehavior_IsMB_04(u8);
+bool8 MetatileBehavior_IsLadder(u8);
+bool8 MetatileBehavior_IsNonAnimDoor(u8);
+bool8 MetatileBehavior_IsDeepSouthWarp(u8);
+bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8);
+bool8 MetatileBehavior_IsEastArrowWarp(u8);
+bool8 MetatileBehavior_IsWestArrowWarp(u8);
+bool8 MetatileBehavior_IsNorthArrowWarp(u8);
+bool8 MetatileBehavior_IsSouthArrowWarp(u8);
+bool8 MetatileBehavior_IsArrowWarp(u8);
+bool8 MetatileBehavior_IsMoveTile(u8);
+bool8 MetatileBehavior_IsIce_2(u8);
+bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8);
+bool8 MetatileBehavior_IsMB_05(u8);
+bool8 MetatileBehavior_IsWalkNorth(u8);
+bool8 MetatileBehavior_IsWalkSouth(u8);
+bool8 MetatileBehavior_IsWalkWest(u8);
+bool8 MetatileBehavior_IsWalkEast(u8);
+bool8 MetatileBehavior_IsNorthwardCurrent(u8);
+bool8 MetatileBehavior_IsSouthwardCurrent(u8);
+bool8 MetatileBehavior_IsWestwardCurrent(u8);
+bool8 MetatileBehavior_IsEastwardCurrent(u8);
+bool8 MetatileBehavior_IsSlideNorth(u8);
+bool8 MetatileBehavior_IsSlideSouth(u8);
+bool8 MetatileBehavior_IsSlideWest(u8);
+bool8 MetatileBehavior_IsSlideEast(u8);
+bool8 MetatileBehavior_IsCounter(u8);
+bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir);
+bool8 MetatileBehavior_IsPC(u8);
+bool8 MetatileBehavior_IsCableBoxResults1(u8);
+bool8 MetatileBehavior_IsSecretBaseOpen(u8);
+bool8 MetatileBehavior_IsSecretBaseCave(u8);
+bool8 MetatileBehavior_IsSecretBaseTree(u8);
+bool8 MetatileBehavior_IsSecretBaseShrub(u8);
+bool8 MetatileBehavior_IsSecretBasePC(u8);
+bool8 MetatileBehavior_IsSecretBaseRegisterPC(u8);
+bool8 MetatileBehavior_IsMB_B2(u8);
+bool8 MetatileBehavior_IsMB_B3(u8);
+bool8 MetatileBehavior_IsMB_B9(u8);
+bool8 MetatileBehavior_IsMB_C6(u8);
+bool8 MetatileBehavior_IsSecretBasePoster(u8);
+bool8 MetatileBehavior_IsNormal(u8);
+bool8 MetatileBehavior_IsMB_B7(u8);
+bool8 MetatileBehavior_IsMB_B2_Duplicate(u8);
+bool8 MetatileBehavior_IsMB_B5(u8);
+bool8 MetatileBehavior_IsMB_C3(u8);
+bool8 MetatileBehavior_IsMB_C2(u8);
+bool8 MetatileBehavior_IsSecretBaseBalloon(u8);
+bool8 MetatileBehavior_IsMB_BE(u8);
+bool8 MetatileBehavior_IsSecretBaseSoundMat(u8);
+bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8);
+bool8 MetatileBehavior_IsMB_BF(u8);
+bool8 MetatileBehavior_IsSecretBaseTvOrShield(u8);
+bool8 MetatileBehavior_IsMB_C5(u8);
+bool8 MetatileBehavior_HasRipples(u8);
+bool8 MetatileBehavior_IsPuddle(u8);
+bool8 MetatileBehavior_IsTallGrass(u8);
+bool8 MetatileBehavior_IsLongGrass(u8);
+bool8 MetatileBehavior_IsBerryTreeSoil(u8);
+bool8 MetatileBehavior_IsAsh(u8);
+bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8);
+bool8 MetatileBehavior_IsBridge(u8);
+u8 MetatileBehavior_GetBridgeSth(u8);
+u8 MetatileBehavior_8089510(u8);
+bool8 MetatileBehavior_IsLandWildEncounter(u8);
+bool8 MetatileBehavior_IsWaterWildEncounter(u8);
+bool8 MetatileBehavior_IsMB_0B(u8);
+bool8 MetatileBehavior_IsMountain(u8);
+bool8 MetatileBehavior_IsDiveable(u8);
+bool8 MetatileBehavior_IsUnableToEmerge(u8);
+bool8 MetatileBehavior_IsShallowFlowingWater(u8);
+bool8 MetatileBehavior_IsThinIce(u8);
+bool8 MetatileBehavior_IsCrackedIce(u8);
+bool8 MetatileBehavior_IsDeepOrOceanWater(u8);
+bool8 MetatileBehavior_IsMB_18_OrMB_1A(u8);
+bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8);
+bool8 MetatileBehavior_IsEastBlocked(u8);
+bool8 MetatileBehavior_IsWestBlocked(u8);
+bool8 MetatileBehavior_IsNorthBlocked(u8);
+bool8 MetatileBehavior_IsSouthBlocked(u8);
+bool8 MetatileBehavior_IsShortGrass(u8);
+bool8 MetatileBehavior_IsHotSprings(u8);
+bool8 MetatileBehavior_IsWaterfall(u8);
+bool8 MetatileBehavior_IsFortreeBridge(u8);
+bool8 MetatileBehavior_IsPacifilogVerticalLog1(u8);
+bool8 MetatileBehavior_IsPacifilogVerticalLog2(u8);
+bool8 MetatileBehavior_IsPacifilogHorizontalLog1(u8);
+bool8 MetatileBehavior_IsPacifilogHorizontalLog2(u8);
+bool8 MetatileBehavior_IsPacifidlogLog(u8);
+bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8);
+bool8 MetatileBehavior_IsRegionMap(u8);
+bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8);
+bool8 MetatileBehavior_IsUnknownClosedDoor(u8);
+bool8 MetatileBehavior_IsRoulette(u8);
+bool8 MetatileBehavior_IsPokeblockFeeder(u8);
+bool8 MetatileBehavior_IsSecretBaseJumpMat(u8);
+bool8 MetatileBehavior_IsSecretBaseSpinMat(u8);
+bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8);
+bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8);
+bool8 MetatileBehavior_IsAquaHideoutWarp(u8);
+bool8 MetatileBehavior_IsWarpOrBridge(u8);
+bool8 MetatileBehavior_IsMossdeepGymWarp(u8);
+bool8 MetatileBehavior_IsSurfableFishableWater(u8);
+bool8 MetatileBehavior_IsMtPyreHole(u8);
+bool8 MetatileBehavior_IsCrackedFloorHole(u8);
+bool8 MetatileBehavior_IsCrackedFloor(u8);
+bool8 MetatileBehavior_IsMuddySlope(u8);
+bool8 MetatileBehavior_IsBumpySlope(u8);
+bool8 MetatileBehavior_IsIsolatedVerticalRail(u8);
+bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8);
+bool8 MetatileBehavior_IsVerticalRail(u8);
+bool8 MetatileBehavior_IsHorizontalRail(u8);
+bool8 MetatileBehavior_IsSeaweed(u8);
+bool8 MetatileBehavior_IsRunningDisallowed(u8);
+bool8 MetatileBehavior_IsCuttableGrass(u8);
+bool8 MetatileBehavior_IsRunningShoesInstruction(u8);
+bool8 MetatileBehavior_IsPictureBookShelf(u8);
+bool8 MetatileBehavior_IsBookShelf(u8);
+bool8 MetatileBehavior_IsPokeCenterBookShelf(u8);
+bool8 MetatileBehavior_IsVase(u8);
+bool8 MetatileBehavior_IsTrashCan(u8);
+bool8 MetatileBehavior_IsShopShelf(u8);
+bool8 MetatileBehavior_IsBlueprint(u8);
+bool8 MetatileBehavior_IsBattlePyramidWarp(u8);
+bool8 MetatileBehavior_IsPlayerFacingWirelessBoxResults(u8 tile, u8 playerDir);
+bool8 MetatileBehavior_IsCableBoxResults2(u8 tile, u8 playerDir);
+bool8 MetatileBehavior_IsQuestionnaire(u8);
+bool8 MetatileBehavior_IsLongGrass_Duplicate(u8);
+bool8 MetatileBehavior_IsLongGrassSouthEdge(u8);
+bool8 MetatileBehavior_IsTrainerHillTimer(u8);
-// Exported RAM declarations
-
-// Exported ROM declarations
-bool8 sub_8088E64(u8);
-
-#endif //GUARD_METATILE_BEHAVIOR_H
+#endif // GUARD_METATILE_BEHAVIOR
diff --git a/include/metatile_behaviors.h b/include/metatile_behaviors.h
new file mode 100644
index 000000000..dd3a8b4f4
--- /dev/null
+++ b/include/metatile_behaviors.h
@@ -0,0 +1,179 @@
+#ifndef GUARD_METATILE_BEHAVIORS
+#define GUARD_METATILE_BEHAVIORS
+
+#define MB_NORMAL 0x00
+#define MB_TALL_GRASS 0x02
+#define MB_LONG_GRASS 0x03
+#define MB_04 0x04
+#define MB_05 0x05
+#define MB_DEEP_SAND 0x06
+#define MB_SHORT_GRASS 0x07
+#define MB_CAVE 0x08
+#define MB_LONG_GRASS_SOUTH_EDGE 0x09
+#define MB_NO_RUNNING 0x0A
+#define MB_0B 0x0B
+#define MB_MOUNTAIN_TOP 0x0C
+#define MB_BATTLE_PYRAMID_WARP 0x0D
+#define MB_MOSSDEEP_GYM_WARP 0x0E
+#define MB_MT_PYRE_HOLE 0x0F
+#define MB_POND_WATER 0x10
+#define MB_SEMI_DEEP_WATER 0x11
+#define MB_DEEP_WATER 0x12
+#define MB_WATERFALL 0x13
+#define MB_SOOTOPOLIS_DEEP_WATER 0x14
+#define MB_OCEAN_WATER 0x15
+#define MB_PUDDLE 0x16
+#define MB_SHALLOW_WATER 0x17
+#define MB_18 0x18
+#define MB_NO_SURFACING 0x19
+#define MB_1A 0x1A
+#define MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B
+#define MB_SHOAL_CAVE_ENTRANCE 0x1C
+#define MB_ICE 0x20
+#define MB_SAND 0x21
+#define MB_SEAWEED 0x22
+#define MB_ASHGRASS 0x24
+#define MB_25 0x25
+#define MB_THIN_ICE 0x26
+#define MB_CRACKED_ICE 0x27
+#define MB_HOT_SPRINGS 0x28
+#define MB_LAVARIDGE_GYM_B1F_WARP 0x29
+#define MB_SEAWEED_NO_SURFACING 0x2A
+#define MB_REFLECTION_UNDER_BRIDGE 0x2B
+#define MB_IMPASSABLE_EAST 0x30
+#define MB_IMPASSABLE_WEST 0x31
+#define MB_IMPASSABLE_NORTH 0x32
+#define MB_IMPASSABLE_SOUTH 0x33
+#define MB_IMPASSABLE_NORTHEAST 0x34
+#define MB_IMPASSABLE_NORTHWEST 0x35
+#define MB_IMPASSABLE_SOUTHEAST 0x36
+#define MB_IMPASSABLE_SOUTHWEST 0x37
+#define MB_JUMP_EAST 0x38
+#define MB_JUMP_WEST 0x39
+#define MB_JUMP_NORTH 0x3A
+#define MB_JUMP_SOUTH 0x3B
+#define MB_JUMP_SOUTHEAST 0x3E
+#define MB_JUMP_SOUTHWEST 0x3F
+#define MB_WALK_EAST 0x40
+#define MB_WALK_WEST 0x41
+#define MB_WALK_NORTH 0x42
+#define MB_WALK_SOUTH 0x43
+#define MB_SLIDE_EAST 0x44
+#define MB_SLIDE_WEST 0x45
+#define MB_SLIDE_NORTH 0x46
+#define MB_SLIDE_SOUTH 0x47
+#define MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48
+#define MB_EASTWARD_CURRENT 0x50
+#define MB_WESTWARD_CURRENT 0x51
+#define MB_NORTHWARD_CURRENT 0x52
+#define MB_SOUTHWARD_CURRENT 0x53
+#define MB_NON_ANIMATED_DOOR 0x60
+#define MB_LADDER 0x61
+#define MB_EAST_ARROW_WARP 0x62
+#define MB_WEST_ARROW_WARP 0x63
+#define MB_NORTH_ARROW_WARP 0x64
+#define MB_SOUTH_ARROW_WARP 0x65
+#define MB_CRACKED_FLOOR_HOLE 0x66
+#define MB_AQUA_HIDEOUT_WARP 0x67
+#define MB_LAVARIDGE_GYM_1F_WARP 0x68
+#define MB_ANIMATED_DOOR 0x69
+#define MB_UP_ESCALATOR 0x6A
+#define MB_DOWN_ESCALATOR 0x6B
+#define MB_WATER_DOOR 0x6C
+#define MB_WATER_SOUTH_ARROW_WARP 0x6D
+#define MB_DEEP_SOUTH_WARP 0x6E
+#define MB_WARP_OR_BRIDGE 0x70
+#define MB_71 0x71
+#define MB_ROUTE120_NORTH_BRIDGE_1 0x72
+#define MB_ROUTE120_NORTH_BRIDGE_2 0x73
+#define MB_PACIFIDLOG_VERTICAL_LOG_1 0x74
+#define MB_PACIFIDLOG_VERTICAL_LOG_2 0x75
+#define MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76
+#define MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77
+#define MB_FORTREE_BRIDGE 0x78
+#define MB_ROUTE120_SOUTH_BRIDGE_1 0x7A
+#define MB_ROUTE120_SOUTH_BRIDGE_2 0x7B
+#define MB_ROUTE120_NORTH_BRIDGE_3 0x7C
+#define MB_ROUTE120_NORTH_BRIDGE_4 0x7D
+#define MB_7E 0x7E
+#define MB_ROUTE110_BRIDGE 0x7F
+#define MB_COUNTER 0x80
+#define MB_PC 0x83
+#define MB_CABLE_BOX_RESULTS_1 0x84
+#define MB_REGION_MAP 0x85
+#define MB_TELEVISION 0x86
+#define MB_POKEBLOCK_FEEDER 0x87
+#define MB_SLOT_MACHINE 0x89
+#define MB_ROULETTE 0x8A
+#define MB_CLOSED_SOOTOPOLIS_GYM_DOOR 0x8B
+#define MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C
+#define MB_8D 0x8D
+#define MB_RUNNING_SHOES_INSTRUCTION 0x8E
+#define MB_QUESTIONNAIRE 0x8F
+#define MB_SECRET_BASE_SPOT_RED_CAVE 0x90
+#define MB_SECRET_BASE_SPOT_RED_CAVE_OPEN 0x91
+#define MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92
+#define MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN 0x93
+#define MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94
+#define MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN 0x95
+#define MB_SECRET_BASE_SPOT_TREE_LEFT 0x96
+#define MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN 0x97
+#define MB_SECRET_BASE_SPOT_SHRUB 0x98
+#define MB_SECRET_BASE_SPOT_SHRUB_OPEN 0x99
+#define MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A
+#define MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B
+#define MB_SECRET_BASE_SPOT_TREE_RIGHT 0x9C
+#define MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN 0x9D
+#define MB_BERRY_TREE_SOIL 0xA0
+#define MB_SECRET_BASE_PC 0xB0
+#define MB_SECRET_BASE_REGISTER_PC 0xB1
+#define MB_B2 0xB2
+#define MB_B3 0xB3
+#define MB_B4 0xB4
+#define MB_B5 0xB5
+#define MB_B6 0xB6
+#define MB_B7 0xB7
+#define MB_SECRET_BASE_BALLOON 0xB8
+#define MB_B9 0xB9
+#define MB_SECRET_BASE_GLITTER_MAT 0xBA
+#define MB_SECRET_BASE_JUMP_MAT 0xBB
+#define MB_SECRET_BASE_SPIN_MAT 0xBC
+#define MB_SECRET_BASE_SOUND_MAT 0xBD
+#define MB_BE 0xBE
+#define MB_BF 0xBF
+#define MB_BED 0xC0
+#define MB_C1 0xC1
+#define MB_C2 0xC2
+#define MB_C3 0xC3
+#define MB_SECRET_BASE_TV_SHIELD 0xC4
+#define MB_C5 0xC5
+#define MB_C6 0xC6
+#define MB_SECRET_BASE_POSTER 0xC7
+#define MB_C8 0xC8
+#define MB_C9 0xC9
+#define MB_CA 0xCA
+#define MB_CB 0xCB
+#define MB_CC 0xCC
+#define MB_CD 0xCD
+#define MB_CE 0xCE
+#define MB_CF 0xCF
+#define MB_MUDDY_SLOPE 0xD0
+#define MB_BUMPY_SLOPE 0xD1
+#define MB_CRACKED_FLOOR 0xD2
+#define MB_ISOLATED_VERTICAL_RAIL 0xD3
+#define MB_ISOLATED_HORIZONTAL_RAIL 0xD4
+#define MB_VERTICAL_RAIL 0xD5
+#define MB_HORIZONTAL_RAIL 0xD6
+#define MB_PICTURE_BOOK_SHELF 0xE0
+#define MB_BOOKSHELF 0xE1
+#define MB_POKEMON_CENTER_BOOKSHELF 0xE2
+#define MB_VASE 0xE3
+#define MB_TRASH_CAN 0xE4
+#define MB_SHOP_SHELF 0xE5
+#define MB_BLUEPRINT 0xE6
+#define MB_CABLE_BOX_RESULTS_2 0xE7
+#define MB_WIRELESS_BOX_RESULTS 0xE8
+#define MB_TRAINER_HILL_TIMER 0xE9
+#define MB_UNKNOWN_CLOSED_DOOR 0xEA
+
+#endif // GUARD_METATILE_BEHAVIORS
diff --git a/include/money.h b/include/money.h
index 316dbd697..5c7c1c984 100644
--- a/include/money.h
+++ b/include/money.h
@@ -5,6 +5,16 @@ u32 GetMoney(u32* moneyPtr);
void SetMoney(u32* moneyPtr, u32 newValue);
bool8 IsEnoughMoney(u32* moneyPtr, u32 cost);
void AddMoney(u32* moneyPtr, u32 toAdd);
-void SubtractMoney(u32* moneyPtr, u32 toSub);
+void RemoveMoney(u32* moneyPtr, u32 toSub);
+bool8 IsEnoughForCostInVar0x8005(void);
+void SubtractMoneyFromVar0x8005(void);
+void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed);
+void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed);
+void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount);
+void ChangeAmountInMoneyBox(int amount);
+void DrawMoneyBox(int amount, u8 x, u8 y);
+void HideMoneyBox(void);
+void AddMoneyLabelObject(u16 x, u16 y);
+void RemoveMoneyLabelObject(void);
#endif // GUARD_MONEY_H
diff --git a/include/moves.h b/include/moves.h
index e3b6d3113..682f59506 100644
--- a/include/moves.h
+++ b/include/moves.h
@@ -359,5 +359,8 @@ enum
MOVE_DOOM_DESIRE,
MOVE_PSYCHO_BOOST,
};
+extern const u8 gMoveNames[][13];
-#endif // GUARD_MOVES_H \ No newline at end of file
+#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST
+
+#endif // GUARD_MOVES_H
diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h
new file mode 100644
index 000000000..ab23a8d00
--- /dev/null
+++ b/include/mystery_event_script.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_MYSTERY_EVENT_SCRIPT_H
+#define GUARD_MYSTERY_EVENT_SCRIPT_H
+
+u32 RunMysteryEventScript(u8 *);
+void SetMysteryEventScriptStatus(u32 val);
+u16 GetRecordMixingGift(void);
+
+#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
diff --git a/include/naming_screen.h b/include/naming_screen.h
new file mode 100644
index 000000000..3d69b834f
--- /dev/null
+++ b/include/naming_screen.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_NAMING_SCREEN_H
+#define GUARD_NAMING_SCREEN_H
+
+#define NAMING_SCREEN_PLAYER 0
+#define NAMING_SCREEN_BOX 1
+#define NAMING_SCREEN_CAUGHT_MON 2
+#define NAMING_SCREEN_3 3
+#define NAMING_SCREEN_WALDA 4
+
+void DoNamingScreen(u8 caseId, u8* dst, u16 monSpecies, u8 monGender, u32 monPersonality, void (*callback)(void));
+
+#endif // GUARD_NAMING_SCREEN_H
diff --git a/include/new_game.h b/include/new_game.h
index 060279c25..2088d1826 100644
--- a/include/new_game.h
+++ b/include/new_game.h
@@ -2,6 +2,7 @@
#define GUARD_NEW_GAME_H
void WriteUnalignedWord(u32 var, u8 *dataPtr);
+u32 ReadUnalignedWord(u8* dataPtr);
void CopyUnalignedWord(u8 *copyTo, u8 *copyFrom);
void InitPlayerTrainerId(void);
void SetDefaultOptions(void);
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
new file mode 100644
index 000000000..f588967bf
--- /dev/null
+++ b/include/new_menu_helpers.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_NEW_MENU_HELPERS_H
+#define GUARD_NEW_MENU_HELPERS_H
+
+#include "text.h"
+#include "task.h"
+
+void sub_81973A4(void);
+void sub_81973C4(u8, u8);
+void sub_819746C(u8 windowId, bool8 copyToVram);
+void sub_81973FC(u8, u8);
+u16 AddTextPrinterParametrized(u8 windowId, u8 fontId, const u8 *str, u8 speed, void ( *callback)(u16, struct TextPrinter *), u8 fgColor, u8 bgColor, u8 shadowColor);
+void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
+void sub_8197434(u8 a0, u8 a1);
+void sub_8197930(void);
+
+#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/overworld.h b/include/overworld.h
new file mode 100644
index 000000000..5ac4cad29
--- /dev/null
+++ b/include/overworld.h
@@ -0,0 +1,63 @@
+#ifndef GUARD_ROM4_H
+#define GUARD_ROM4_H
+
+#include "main.h"
+
+struct UnkPlayerStruct
+{
+ u8 player_field_0;
+ u8 player_field_1;
+};
+
+struct LinkPlayerMapObject
+{
+ u8 active;
+ u8 linkPlayerId;
+ u8 mapObjId;
+ u8 mode;
+};
+
+struct UCoords32
+{
+ u32 x, y;
+};
+
+extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
+extern MainCallback gFieldCallback;
+
+void IncrementGameStat(u8 index);
+
+void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
+void Overworld_SetMapObjTemplateMovementType(u8, u8);
+
+void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+
+void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void Overworld_SetHealLocationWarp(u8);
+void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void sub_8084E2C(s8, s8, s8, s8, s8);
+void sub_8084E80(s8, s8, s8, s8, s8);
+void sub_8084EBC(s16, s16);
+
+void player_avatar_init_params_reset(void);
+
+void Overworld_SetFlashLevel(s32 a1);
+//u8 Overworld_GetFlashLevel(void);
+void sub_8085524(u16);
+
+void Overworld_SetSavedMusic(u16);
+void Overworld_ChangeMusicToDefault(void);
+void Overworld_ChangeMusicTo(u16);
+
+bool32 is_c1_link_related_active(void);
+
+void strange_npc_table_clear(void);
+const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8);
+void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
+void sub_8086230(void);
+void c2_exit_to_overworld_2_switch(void);
+bool32 sub_8087598(void);
+void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
+void warp_in(void);
+
+#endif //GUARD_ROM4_H
diff --git a/include/palette.h b/include/palette.h
index de2cf0083..d3bcd2271 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -8,6 +8,9 @@
#define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade
#define gPaletteFade_submode (gPaletteFade.multipurpose2) // fast fade
+#define PLTT_BUFFER_SIZE 0x200
+#define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2)
+
enum
{
FAST_FADE_IN_FROM_WHITE,
diff --git a/include/party_menu.h b/include/party_menu.h
new file mode 100644
index 000000000..175aba639
--- /dev/null
+++ b/include/party_menu.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_PARTY_MENU_H
+#define GUARD_PARTY_MENU_H
+
+bool8 pokemon_has_move(struct Pokemon *, u16);
+
+#endif // GUARD_PARTY_MENU_H
diff --git a/include/player_pc.h b/include/player_pc.h
new file mode 100644
index 000000000..b14d1ede3
--- /dev/null
+++ b/include/player_pc.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_PLAYER_PC_H
+#define GUARD_PLAYER_PC_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void sub_816B060(u8 taskId);
+
+#endif //GUARD_PLAYER_PC_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 15f819a2a..79721899f 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -6,6 +6,7 @@ const u8 *GetPokemonCategory(u16);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8);
u16 GetHoennPokedexCount(u8);
+u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
enum
{
@@ -15,6 +16,8 @@ enum
FLAG_SET_CAUGHT
};
-u8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
+s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
+u16 pokedex_count(u8);
+u16 sub_80C0844(u8);
#endif // GUARD_POKEDEX_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 9d01c051e..4159a2f96 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -30,7 +30,7 @@
#define MON_DATA_HP_EV 26
#define MON_DATA_ATK_EV 27
#define MON_DATA_DEF_EV 28
-#define MON_DATA_SPD_EV 29
+#define MON_DATA_SPEED_EV 29
#define MON_DATA_SPATK_EV 30
#define MON_DATA_SPDEF_EV 31
#define MON_DATA_FRIENDSHIP 32
@@ -43,7 +43,7 @@
#define MON_DATA_HP_IV 39
#define MON_DATA_ATK_IV 40
#define MON_DATA_DEF_IV 41
-#define MON_DATA_SPD_IV 42
+#define MON_DATA_SPEED_IV 42
#define MON_DATA_SPATK_IV 43
#define MON_DATA_SPDEF_IV 44
#define MON_DATA_IS_EGG 45
@@ -62,7 +62,7 @@
#define MON_DATA_MAX_HP 58
#define MON_DATA_ATK 59
#define MON_DATA_DEF 60
-#define MON_DATA_SPD 61
+#define MON_DATA_SPEED 61
#define MON_DATA_SPATK 62
#define MON_DATA_SPDEF 63
#define MON_DATA_MAIL 64
@@ -87,7 +87,7 @@
#define MON_DATA_RIBBONS 83
#define MON_DATA_ATK2 84
#define MON_DATA_DEF2 85
-#define MON_DATA_SPD2 86
+#define MON_DATA_SPEED2 86
#define MON_DATA_SPATK2 87
#define MON_DATA_SPDEF2 88
@@ -126,6 +126,8 @@
#define TYPE_DRAGON 0x10
#define TYPE_DARK 0x11
+#define NUMBER_OF_MON_TYPES 0x12
+
#define PARTY_SIZE 6
#define MAX_TOTAL_EVS 510
#define NUM_STATS 6
@@ -333,6 +335,8 @@ struct UnknownPokemonStruct
u8 friendship;
};
+#define BATTLE_STATS_NO 8
+
struct BattlePokemon
{
/*0x00*/ u16 species;
@@ -350,7 +354,7 @@ struct BattlePokemon
/*0x17*/ u32 spDefenseIV:5;
/*0x17*/ u32 isEgg:1;
/*0x17*/ u32 altAbility:1;
- /*0x18*/ s8 statStages[8];
+ /*0x18*/ s8 statStages[BATTLE_STATS_NO];
/*0x20*/ u8 ability;
/*0x21*/ u8 type1;
/*0x22*/ u8 type2;
@@ -435,7 +439,7 @@ struct BattleMove
u8 pp;
u8 secondaryEffectChance;
u8 target;
- u8 priority;
+ s8 priority;
u8 flags;
};
@@ -443,6 +447,7 @@ struct BattleMove
#define FLAG_PROTECT_AFFECTED 0x2
#define FLAG_MAGICCOAT_AFFECTED 0x4
#define FLAG_SNATCH_AFFECTED 0x8
+#define FLAG_MIRROR_MOVE_AFFECTED 0x10
#define FLAG_KINGSROCK_AFFECTED 0x20
struct SpindaSpot
@@ -520,6 +525,7 @@ extern struct PokemonStorage* gPokemonStoragePtr;
extern const u32 gExperienceTables[][MAX_MON_LEVEL + 1];
extern const u16 *const gLevelUpLearnsets[];
+u8 CountAliveMonsInBattle(u8 caseId);
#define BATTLE_ALIVE_EXCEPT_ACTIVE 0
#define BATTLE_ALIVE_ATK_SIDE 1
#define BATTLE_ALIVE_DEF_SIDE 2
@@ -620,8 +626,28 @@ bool8 IsPokeSpriteNotFlipped(u16 species);
bool8 IsMonShiny(struct Pokemon *mon);
bool8 IsShinyOtIdPersonality(u32 otId, u32 personality);
+void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies);
+bool8 IsTradedMon(struct Pokemon *mon);
+void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality);
+s32 sub_806D864(u16 a1);
+bool16 sub_806D82C(u8 id);
+u16 MonTryLearningNewMove(struct Pokemon* mon, bool8);
+void sub_8068AA4(void); // sets stats for deoxys
+bool8 HasTwoFramesAnimation(u16 species);
+u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
+void RandomlyGivePartyPokerus(struct Pokemon *party);
+u8 CheckPartyPokerus(struct Pokemon *party, u8 selection);
+u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection);
+void UpdatePartyPokerusTime(u16 days);
+void PartySpreadPokerus(struct Pokemon *party);
+s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2);
+s8 GetFlavourRelationByPersonality(u32 personality, u8 a2);
+u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
+
#include "sprite.h"
void DoMonFrontSpriteAnimation(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
+void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u8 arg3);
+void BattleAnimateBackSprite(struct Sprite* sprite, u16 species);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_3.h b/include/pokemon_3.h
new file mode 100644
index 000000000..5c9862d57
--- /dev/null
+++ b/include/pokemon_3.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_POKEMON_3_H
+#define GUARD_POKEMON_3_H
+
+const u8* GetTrainerClassNameFromId(u16 trainerId);
+const u8* GetTrainerNameFromId(u16 trainerId);
+
+#endif // GUARD_POKEMON_3_H
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
new file mode 100644
index 000000000..b6d21823e
--- /dev/null
+++ b/include/pokemon_icon.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_POKEMON_ICON_H
+#define GUARD_POKEMON_ICON_H
+
+const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
+const u16 *GetValidMonIconPalettePtr(u16 speciesId);
+u16 sub_80D2E84(u16 speciesId);
+void sub_80D2F68(u16 iconId);
+u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5);
+void sub_80D2FF0(u16 iconId);
+void sub_80D2EF8(struct Sprite *sprite);
+
+#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_item_effects.h b/include/pokemon_item_effects.h
new file mode 100644
index 000000000..505cc0f25
--- /dev/null
+++ b/include/pokemon_item_effects.h
@@ -0,0 +1,62 @@
+#ifndef GUARD_POKEMON_ITEM_EFFECTS
+#define GUARD_POKEMON_ITEM_EFFECTS
+
+#include "pokemon.h"
+
+// TODO once pokemon item effects is decompiled
+/*
+struct PokemonItemEffect
+{
+ //field 0
+ u8 xAtk : 4; // x1, x2, x4, x8 = xF
+ u8 field_0_x10 : 1; // x10
+ u8 critRatioUp : 1; // x20
+ u8 field_0_x40 : 1; // x40
+ u8 cureInfatuation : 1; // x80
+
+ /*field 1
+ u8 xSpeed : 4; // x1, x2, x4, x8 = xF
+ u8 xDefense : 4; // x10, x20, x40, xF0
+
+ /*field 2
+ u8 xSpAtk : 4; // x1, x2, x4, x8 = xF
+ u8 xAccuracy : 4; // x10, x20, x40, xF0
+
+ /*field 3
+ u8 cureConfusion : 1; // x1
+ u8 cureParalysis : 1; // x2
+ u8 cureFreeze : 1; // x4
+ u8 cureBurn : 1; // x8
+ u8 curePoison : 1; // x10
+ u8 cureSleep : 1; // x20
+ u8 field_3_x40 : 1; // x40
+ u8 cantLowerStats : 1; // x80
+
+ /*field 4
+ u8 hpEv : 1; // x1
+ u8 attackEv : 1; // x2
+ u8 healHp : 1; // x4
+ u8 field_4_x8 : 1; // x8
+ u8 field_4_x10 : 1; // x10
+ u8 ppUp : 1; // x20
+ u8 levelUp : 1; // x40
+ u8 evolutionStone : 1; // x80
+
+ /*field 5
+ u8 defEv: 1; // x1
+ u8 speedEv : 1; // x2
+ u8 spDefEv : 1; // x4
+ u8 spAtkEv : 1; // x8
+ u8 ppMax : 1; // x10
+ u8 field_5_x20 : 1; // x20
+ u8 field_5_x40 : 1; // x40
+ u8 field_5_x80 : 1; // x80
+
+ /*field 6
+ u8 value;
+};
+*/
+
+bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 itemId, u8 partyId, u8 monMoveIndex, u8 a5);
+
+#endif // GUARD_POKEMON_ITEM_EFFECTS
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
new file mode 100644
index 000000000..49680793d
--- /dev/null
+++ b/include/pokemon_storage_system.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_POKEMON_STORAGE_SYSTEM_H
+#define GUARD_POKEMON_STORAGE_SYSTEM_H
+
+u8* GetBoxNamePtr(u8 boxNumber);
+struct BoxPokemon *GetBoxedMonPtr(u8, u8);
+void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
+
+#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/recorded_battle.h b/include/recorded_battle.h
new file mode 100644
index 000000000..6b80e220f
--- /dev/null
+++ b/include/recorded_battle.h
@@ -0,0 +1,22 @@
+#ifndef GUARD_RECORDED_BATTLE_H
+#define GUARD_RECORDED_BATTLE_H
+
+extern u32 gRecordedBattleRngSeed;
+
+void sub_8184DA4(u8 arg0);
+void sub_8185F84(void);
+void sub_8184E58(void);
+void RecordedBattle_SetBankAction(u8 bank, u8 action);
+void RecordedBattle_ClearBankAction(u8 bank, u8 bytesToClear);
+void sub_8185F90(u16 arg0);
+bool8 sub_8186450(void);
+u8 sub_8185FAC(void);
+u8 sub_8185FB8(void);
+u8 MoveRecordedBattleToSaveData(void);
+void sub_818603C(u8);
+void sub_8185FD0(void);
+void sub_8186444(void);
+void sub_8185EB8(void);
+u8 sub_81850DC(u8 *arg0);
+
+#endif // GUARD_RECORDED_BATTLE_H
diff --git a/include/region_map.h b/include/region_map.h
new file mode 100644
index 000000000..52e7376be
--- /dev/null
+++ b/include/region_map.h
@@ -0,0 +1,227 @@
+#ifndef GUARD_REGION_MAP_H
+#define GUARD_REGION_MAP_H
+
+// Exported type declarations
+
+enum {
+ REGION_MAP_LITTLEROOT_TOWN,
+ REGION_MAP_OLDALE_TOWN,
+ REGION_MAP_DEWFORD_TOWN,
+ REGION_MAP_LAVARIDGE_TOWN,
+ REGION_MAP_FALLARBOR_TOWN,
+ REGION_MAP_VERDANTURF_TOWN,
+ REGION_MAP_PACIFIDLOG_TOWN,
+ REGION_MAP_PETALBURG_CITY,
+ REGION_MAP_SLATEPORT_CITY,
+ REGION_MAP_MAUVILLE_CITY,
+ REGION_MAP_RUSTBORO_CITY,
+ REGION_MAP_FORTREE_CITY,
+ REGION_MAP_LILYCOVE_CITY,
+ REGION_MAP_MOSSDEEP_CITY,
+ REGION_MAP_SOOTOPOLIS_CITY,
+ REGION_MAP_EVER_GRANDE_CITY,
+ REGION_MAP_ROUTE_101,
+ REGION_MAP_ROUTE_102,
+ REGION_MAP_ROUTE_103,
+ REGION_MAP_ROUTE_104,
+ REGION_MAP_ROUTE_105,
+ REGION_MAP_ROUTE_106,
+ REGION_MAP_ROUTE_107,
+ REGION_MAP_ROUTE_108,
+ REGION_MAP_ROUTE_109,
+ REGION_MAP_ROUTE_110,
+ REGION_MAP_ROUTE_111,
+ REGION_MAP_ROUTE_112,
+ REGION_MAP_ROUTE_113,
+ REGION_MAP_ROUTE_114,
+ REGION_MAP_ROUTE_115,
+ REGION_MAP_ROUTE_116,
+ REGION_MAP_ROUTE_117,
+ REGION_MAP_ROUTE_118,
+ REGION_MAP_ROUTE_119,
+ REGION_MAP_ROUTE_120,
+ REGION_MAP_ROUTE_121,
+ REGION_MAP_ROUTE_122,
+ REGION_MAP_ROUTE_123,
+ REGION_MAP_ROUTE_124,
+ REGION_MAP_ROUTE_125,
+ REGION_MAP_ROUTE_126,
+ REGION_MAP_ROUTE_127,
+ REGION_MAP_ROUTE_128,
+ REGION_MAP_ROUTE_129,
+ REGION_MAP_ROUTE_130,
+ REGION_MAP_ROUTE_131,
+ REGION_MAP_ROUTE_132,
+ REGION_MAP_ROUTE_133,
+ REGION_MAP_ROUTE_134,
+ REGION_MAP_UNDERWATER_124,
+ REGION_MAP_UNDERWATER_125,
+ REGION_MAP_UNDERWATER_126,
+ REGION_MAP_UNDERWATER_127,
+ REGION_MAP_UNDERWATER_128,
+ REGION_MAP_GRANITE_CAVE,
+ REGION_MAP_MT_CHIMNEY,
+ REGION_MAP_SAFARI_ZONE,
+ REGION_MAP_BATTLE_FRONTIER,
+ REGION_MAP_PETALBURG_WOODS,
+ REGION_MAP_RUSTURF_TUNNEL,
+ REGION_MAP_ABANDONED_SHIP,
+ REGION_MAP_NEW_MAUVILLE,
+ REGION_MAP_METEOR_FALLS,
+ REGION_MAP_METEOR_FALLS2,
+ REGION_MAP_MT_PYRE,
+ REGION_MAP_AQUA_HIDEOUT_OLD,
+ REGION_MAP_SHOAL_CAVE,
+ REGION_MAP_SEAFLOOR_CAVERN,
+ REGION_MAP_UNDERWATER,
+ REGION_MAP_VICTORY_ROAD,
+ REGION_MAP_MIRAGE_ISLAND,
+ REGION_MAP_CAVE_OF_ORIGIN,
+ REGION_MAP_SOUTHERN_ISLAND,
+ REGION_MAP_FIERY_PATH,
+ REGION_MAP_FIERY_PATH2,
+ REGION_MAP_JAGGED_PASS,
+ REGION_MAP_JAGGED_PASS2,
+ REGION_MAP_SEALED_CHAMBER,
+ REGION_MAP_UNDERWATER_SEALED_CHAMBER,
+ REGION_MAP_SCORCHED_SLAB,
+ REGION_MAP_ISLAND_CAVE,
+ REGION_MAP_DESERT_RUINS,
+ REGION_MAP_ANCIENT_TOMB,
+ REGION_MAP_INSIDE_OF_TRUCK,
+ REGION_MAP_SKY_PILLAR,
+ REGION_MAP_SECRET_BASE,
+ REGION_MAP_NONE,
+ REGION_MAP_PALLET_TOWN,
+ REGION_MAP_VIRIDIAN_CITY,
+ REGION_MAP_PEWTER_CITY,
+ REGION_MAP_CERULEAN_CITY,
+ REGION_MAP_LAVENDER_TOWN,
+ REGION_MAP_VERMILION_CITY,
+ REGION_MAP_CELADON_CITY,
+ REGION_MAP_FUCHSIA_CITY,
+ REGION_MAP_CINNABAR_ISLAND,
+ REGION_MAP_INDIGO_PLATEAU,
+ REGION_MAP_SAFFRON_CITY,
+ REGION_MAP_ROUTE_4,
+ REGION_MAP_ROUTE_10,
+ REGION_MAP_ROUTE_1,
+ REGION_MAP_ROUTE_2,
+ REGION_MAP_ROUTE_3,
+ REGION_MAP_ROUTE_4_2,
+ REGION_MAP_ROUTE_5,
+ REGION_MAP_ROUTE_6,
+ REGION_MAP_ROUTE_7,
+ REGION_MAP_ROUTE_8,
+ REGION_MAP_ROUTE_9,
+ REGION_MAP_ROUTE_10_2,
+ REGION_MAP_ROUTE_11,
+ REGION_MAP_ROUTE_12,
+ REGION_MAP_ROUTE_13,
+ REGION_MAP_ROUTE_14,
+ REGION_MAP_ROUTE_15,
+ REGION_MAP_ROUTE_16,
+ REGION_MAP_ROUTE_17,
+ REGION_MAP_ROUTE_18,
+ REGION_MAP_ROUTE_19,
+ REGION_MAP_ROUTE_20,
+ REGION_MAP_ROUTE_21,
+ REGION_MAP_ROUTE_22,
+ REGION_MAP_ROUTE_23,
+ REGION_MAP_ROUTE_24,
+ REGION_MAP_ROUTE_25,
+ REGION_MAP_VIRIDIAN_FOREST,
+ REGION_MAP_MT_MOON,
+ REGION_MAP_S_S_ANNE,
+ REGION_MAP_UNDERGROUND_PATH,
+ REGION_MAP_UNDERGROUND_PATH_2,
+ REGION_MAP_DIGLETTS_CAVE,
+ REGION_MAP_KANTO_VICTORY_ROAD,
+ REGION_MAP_ROCKET_HIDEOUT,
+ REGION_MAP_SILPH_CO,
+ REGION_MAP_POKEMON_MANSION,
+ REGION_MAP_KANTO_SAFARI_ZONE,
+ REGION_MAP_POKEMON_LEAGUE,
+ REGION_MAP_ROCK_TUNNEL,
+ REGION_MAP_SEAFOAM_ISLANDS,
+ REGION_MAP_POKEMON_TOWER,
+ REGION_MAP_CERULEAN_CAVE,
+ REGION_MAP_POWER_PLANT,
+ REGION_MAP_ONE_ISLAND,
+ REGION_MAP_TWO_ISLAND,
+ REGION_MAP_THREE_ISLAND,
+ REGION_MAP_FOUR_ISLAND,
+ REGION_MAP_FIVE_ISLAND,
+ REGION_MAP_SEVEN_ISLAND,
+ REGION_MAP_SIX_ISLAND,
+ REGION_MAP_KINDLE_ROAD,
+ REGION_MAP_TREASURE_BEACH,
+ REGION_MAP_CAPE_BRINK,
+ REGION_MAP_BOND_BRIDGE,
+ REGION_MAP_THREE_ISLE_PORT,
+ REGION_MAP_SEVII_ISLE_6,
+ REGION_MAP_SEVII_ISLE_7,
+ REGION_MAP_SEVII_ISLE_8,
+ REGION_MAP_SEVII_ISLE_9,
+ REGION_MAP_RESORT_GORGEOUS,
+ REGION_MAP_WATER_LABYRINTH,
+ REGION_MAP_FIVE_ISLE_MEADOW,
+ REGION_MAP_MEMORIAL_PILLAR,
+ REGION_MAP_OUTCAST_ISLAND,
+ REGION_MAP_GREEN_PATH,
+ REGION_MAP_WATER_PATH,
+ REGION_MAP_RUIN_VALLEY,
+ REGION_MAP_TRAINER_TOWER,
+ REGION_MAP_CANYON_ENTRANCE,
+ REGION_MAP_SEVAULT_CANYON,
+ REGION_MAP_TANOBY_RUINS,
+ REGION_MAP_SEVII_ISLE_22,
+ REGION_MAP_SEVII_ISLE_23,
+ REGION_MAP_SEVII_ISLE_24,
+ REGION_MAP_NAVEL_ROCK,
+ REGION_MAP_MT_EMBER,
+ REGION_MAP_BERRY_FOREST,
+ REGION_MAP_ICEFALL_CAVE,
+ REGION_MAP_ROCKET_WAREHOUSE,
+ REGION_MAP_TRAINER_TOWER_2,
+ REGION_MAP_DOTTED_HOLE,
+ REGION_MAP_LOST_CAVE,
+ REGION_MAP_PATTERN_BUSH,
+ REGION_MAP_ALTERING_CAVE,
+ REGION_MAP_TANOBY_CHAMBERS,
+ REGION_MAP_THREE_ISLE_PATH,
+ REGION_MAP_TANOBY_KEY,
+ REGION_MAP_BIRTH_ISLAND,
+ REGION_MAP_MONEAN_CHAMBER,
+ REGION_MAP_LIPTOO_CHAMBER,
+ REGION_MAP_WEEPTH_CHAMBER,
+ REGION_MAP_DILFORD_CHAMBER,
+ REGION_MAP_SCUFIB_CHAMBER,
+ REGION_MAP_RIXY_CHAMBER,
+ REGION_MAP_VIAPOIS_CHAMBER,
+ REGION_MAP_EMBER_SPA,
+ REGION_MAP_SPECIAL_AREA,
+ REGION_MAP_AQUA_HIDEOUT,
+ REGION_MAP_MAGMA_HIDEOUT,
+ REGION_MAP_MIRAGE_TOWER,
+ REGION_MAP_BIRTH_ISLAND_2,
+ REGION_MAP_FARAWAY_ISLAND,
+ REGION_MAP_ARTISAN_CAVE,
+ REGION_MAP_MARINE_CAVE,
+ REGION_MAP_UNDERWATER_MARINE_CAVE,
+ REGION_MAP_TERRA_CAVE,
+ REGION_MAP_UNDERWATER_TERRA_CAVE,
+ REGION_MAP_UNDERWATER_UNK1,
+ REGION_MAP_UNDERWATER_UNK2,
+ REGION_MAP_DESERT_UNDERPASS,
+ REGION_MAP_ALTERING_CAVE_2,
+ REGION_MAP_NAVEL_ROCK2,
+ REGION_MAP_TRAINER_HILL
+};
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+void GetMapName(u8 *, u16, u16);
+
+#endif //GUARD_REGION_MAP_H
diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h
new file mode 100644
index 000000000..c22135280
--- /dev/null
+++ b/include/reshow_battle_screen.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_RESHOW_BATTLE_SCREEN_H
+#define GUARD_RESHOW_BATTLE_SCREEN_H
+
+void nullsub_35(void);
+void ReshowBattleScreenAfterMenu(void);
+
+#endif // GUARD_RESHOW_BATTLE_SCREEN_H
diff --git a/include/roamer.h b/include/roamer.h
index af7f86e79..ba1b09b54 100644
--- a/include/roamer.h
+++ b/include/roamer.h
@@ -3,9 +3,15 @@
void ClearRoamerData(void);
void ClearRoamerLocationData(void);
+void InitRoamer(void);
void UpdateLocationHistoryForRoamer(void);
void RoamerMoveToOtherLocationSet(void);
-void RoamerMove();
+void RoamerMove(void);
+bool8 IsRoamerAt(u8 mapGroup, u8 mapNum);
+void CreateRoamerMonInstance(void);
u8 TryStartRoamerEncounter(void);
+void UpdateRoamerHPStatus(struct Pokemon *mon);
+void SetRoamerInactive(void);
+void GetRoamerLocation(u8 *mapGroup, u8 *mapNum);
#endif // GUARD_ROAMER_H
diff --git a/include/rom4.h b/include/rom4.h
deleted file mode 100644
index 9f214cfee..000000000
--- a/include/rom4.h
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef GUARD_ROM4_H
-#define GUARD_ROM4_H
-
-struct UnkPlayerStruct
-{
- u8 player_field_0;
- u8 player_field_1;
-};
-
-struct LinkPlayerMapObject
-{
- u8 active;
- u8 linkPlayerId;
- u8 mapObjId;
- u8 mode;
-};
-
-struct UCoords32
-{
- u32 x, y;
-};
-
-
-extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
-
-void strange_npc_table_clear(void);
-const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8);
-void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
-void sub_8086230(void);
-void c2_exit_to_overworld_2_switch(void);
-bool32 is_c1_link_related_active(void);
-
-#endif //GUARD_ROM4_H
diff --git a/include/rom6.h b/include/rom6.h
index 15070616d..0e9927855 100644
--- a/include/rom6.h
+++ b/include/rom6.h
@@ -2,5 +2,6 @@
#define GUARD_ROM6_H
void sub_81357FC(u8, void(void));
+u8 GetLeadMonIndex(void);
#endif //GUARD_ROM6_H
diff --git a/include/save.h b/include/save.h
index e98233c67..6c1238cd2 100644
--- a/include/save.h
+++ b/include/save.h
@@ -76,7 +76,7 @@ u8 GetSaveValidStatus(const struct SaveSectionLocation *location);
//u8 sub_8125B88(u8 a1, u8 *data, u16 size);
u8 DoReadFlashWholeSection(u8, struct SaveSection *);
u16 CalculateChecksum(void *, u16);
-//u8 HandleSavingData(u8 saveType);
+u8 HandleSavingData(u8 saveType);
//u8 TrySavingData(u8 saveType);
//u8 sub_8125D80(void);
//bool8 sub_8125DA8(void);
diff --git a/include/save_location.h b/include/save_location.h
new file mode 100644
index 000000000..95b3a7d7d
--- /dev/null
+++ b/include/save_location.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_SAVE_LOCATION_H
+#define GUARD_SAVE_LOCATION_H
+
+bool32 sub_81AFCEC(void);
+void TrySetMapSaveWarpStatus(void);
+void sub_81AFDA0(void);
+void sub_81AFDD0(void);
+
+#endif // GUARD_SAVE_LOCATION_H
diff --git a/include/script.h b/include/script.h
index ec6a212bc..2b5f8c2ce 100644
--- a/include/script.h
+++ b/include/script.h
@@ -28,8 +28,8 @@ void StopScript(struct ScriptContext *ctx);
bool8 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);
-void ScriptCall(struct ScriptContext *ctx, u8 *ptr);
+void ScriptJump(struct ScriptContext *ctx, const u8 *ptr);
+void ScriptCall(struct ScriptContext *ctx, const u8 *ptr);
void ScriptReturn(struct ScriptContext *ctx);
u16 ScriptReadHalfword(struct ScriptContext *ctx);
u32 ScriptReadWord(struct ScriptContext *ctx);
diff --git a/include/script_menu.h b/include/script_menu.h
new file mode 100644
index 000000000..717eda041
--- /dev/null
+++ b/include/script_menu.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_SCRIPT_MENU_H
+#define GUARD_SCRIPT_MENU_H
+
+extern const u8 *const gUnknown_0858BAF0[9];
+
+bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4);
+bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5);
+bool8 ScriptMenu_YesNo(u8 var1, u8 var2);
+bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
+bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3);
+bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
+
+#endif //GUARD_SCRIPT_MENU_H
diff --git a/include/script_movement.h b/include/script_movement.h
new file mode 100644
index 000000000..4c3fa6002
--- /dev/null
+++ b/include/script_movement.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_SCRIPT_MOVEMENT_H
+#define GUARD_SCRIPT_MOVEMENT_H
+
+bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, const u8 *);
+bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8);
+void sub_80D338C(void);
+
+#endif // GUARD_SCRIPT_MOVEMENT_H
diff --git a/include/script_pokemon_80F8.h b/include/script_pokemon_80F8.h
new file mode 100644
index 000000000..8dd7ed0c0
--- /dev/null
+++ b/include/script_pokemon_80F8.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_SCRIPTPOKE80F8_H
+#define GUARD_SCRIPTPOKE80F8_H
+
+void ShowContestWinner(void);
+u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
+u8 ScriptGiveEgg(u16);
+void CreateScriptedWildMon(u16, u8, u16);
+void ScriptSetMonMoveSlot(u8, u16, u8);
+
+#endif
diff --git a/include/script_pokemon_81B9.h b/include/script_pokemon_81B9.h
new file mode 100644
index 000000000..1b8563ee6
--- /dev/null
+++ b/include/script_pokemon_81B9.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_SCRIPTPOKE81B9_H
+#define GUARD_SCRIPTPOKE81B9_H
+
+void sub_81B9404(void);
+
+#endif
diff --git a/include/secret_base.h b/include/secret_base.h
new file mode 100644
index 000000000..14defff26
--- /dev/null
+++ b/include/secret_base.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_SECRET_BASE_H
+#define GUARD_SECRET_BASE_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+void sub_80E9578(void);
+void sub_80E980C(void);
+
+#endif //GUARD_SECRET_BASE_H
diff --git a/include/shop.h b/include/shop.h
new file mode 100644
index 000000000..d3e86408c
--- /dev/null
+++ b/include/shop.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_SHOP_H
+#define GUARD_SHOP_H
+
+extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
+
+void CreatePokemartMenu(const u16 *);
+void CreateDecorationShop1Menu(const u16 *);
+void CreateDecorationShop2Menu(const u16 *);
+
+#endif // GUARD_SHOP_H
diff --git a/include/slot_machine.h b/include/slot_machine.h
new file mode 100644
index 000000000..8334e56fc
--- /dev/null
+++ b/include/slot_machine.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_SLOT_MACHINE_H
+#define GUARD_SLOT_MACHINE_H
+
+void PlaySlotMachine(u8, void *);
+
+#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/songs.h b/include/songs.h
index afd26d683..5a1fff00c 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -15,8 +15,8 @@ enum
/*0x09*/ SE_KAIDAN,
/*0x0A*/ SE_DANSA,
/*0x0B*/ SE_JITENSYA,
- /*0x0C*/ SE_KOUKA_L,
- /*0x0D*/ SE_KOUKA_M,
+ /*0x0C*/ SE_KOUKA_L, // Goggle told me Kouka means 'effectiveness' which makes sense, because
+ /*0x0D*/ SE_KOUKA_M, // those three sounds play whenever you use a move
/*0x0E*/ SE_KOUKA_H,
/*0x0F*/ SE_BOWA2,
/*0x10*/ SE_POKE_DEAD,
@@ -252,23 +252,23 @@ enum
SE_W114,
SE_W063B,
BGM_STOP = 349,
- BGM_TETSUJI,
- BGM_FIELD13,
- BGM_KACHI22,
- BGM_KACHI2,
- BGM_KACHI3,
- BGM_KACHI5,
- BGM_PCC,
- BGM_NIBI,
- BGM_SUIKUN,
- BGM_DOORO1,
- BGM_DOORO_X1,
- BGM_DOORO_X3,
- BGM_MACHI_S2,
- BGM_MACHI_S4,
- BGM_GIM,
- BGM_NAMINORI,
- BGM_DAN01,
+ /*0x15E*/ BGM_TETSUJI,
+ /*0x15F*/ BGM_FIELD13,
+ /*0x160*/ BGM_KACHI22,
+ /*0x161*/ BGM_KACHI2,
+ /*0x162*/ BGM_KACHI3,
+ /*0x163*/ BGM_KACHI5,
+ /*0x164*/ BGM_PCC,
+ /*0x165*/ BGM_NIBI,
+ /*0x166*/ BGM_SUIKUN,
+ /*0x167*/ BGM_DOORO1,
+ /*0x168*/ BGM_DOORO_X1,
+ /*0x169*/ BGM_DOORO_X3,
+ /*0x16A*/ BGM_MACHI_S2,
+ /*0x16B*/ BGM_MACHI_S4,
+ /*0x16C*/ BGM_GIM,
+ /*0x16D*/ BGM_NAMINORI,
+ /*0x16E*/ BGM_DAN01,
/*0x16F*/ BGM_FANFA1,
/*0x170*/ BGM_ME_ASA,
/*0x171*/ BGM_ME_BACHI,
@@ -306,31 +306,31 @@ enum
/*0x191*/ BGM_NEXTROAD,
/*0x192*/ BGM_GRANROAD,
/*0x193*/ BGM_CYCLING,
- BGM_FRIENDLY,
- BGM_MISHIRO,
- BGM_TOZAN,
- BGM_GIRLEYE,
- BGM_MINAMO,
- BGM_ASHROAD,
- BGM_EVENT0,
- BGM_DEEPDEEP,
- BGM_KACHI1,
- BGM_TITLE3,
- BGM_DEMO1,
- BGM_GIRL_SUP,
- BGM_HAGESHII,
- BGM_KAKKOII,
- BGM_KAZANBAI,
- BGM_AQA_0,
- BGM_TSURETEK,
- BGM_BOY_SUP,
- BGM_RAINBOW,
- BGM_AYASII,
- BGM_KACHI4,
- BGM_ROPEWAY,
- BGM_CASINO,
- BGM_HIGHTOWN,
- BGM_SAFARI,
+ /*0x194*/ BGM_FRIENDLY,
+ /*0x195*/ BGM_MISHIRO,
+ /*0x196*/ BGM_TOZAN,
+ /*0x197*/ BGM_GIRLEYE,
+ /*0x198*/ BGM_MINAMO,
+ /*0x199*/ BGM_ASHROAD,
+ /*0x19A*/ BGM_EVENT0,
+ /*0x19B*/ BGM_DEEPDEEP,
+ /*0x19C*/ BGM_KACHI1,
+ /*0x19D*/ BGM_TITLE3,
+ /*0x19E*/ BGM_DEMO1,
+ /*0x19F*/ BGM_GIRL_SUP,
+ /*0x1A0*/ BGM_HAGESHII,
+ /*0x1A1*/ BGM_KAKKOII,
+ /*0x1A2*/ BGM_KAZANBAI,
+ /*0x1A3*/ BGM_AQA_0,
+ /*0x1A4*/ BGM_TSURETEK,
+ /*0x1A5*/ BGM_BOY_SUP,
+ /*0x1A6*/ BGM_RAINBOW,
+ /*0x1A7*/ BGM_AYASII,
+ /*0x1A8*/ BGM_KACHI4,
+ /*0x1A9*/ BGM_ROPEWAY,
+ /*0x1AA*/ BGM_CASINO,
+ /*0x1AB*/ BGM_HIGHTOWN,
+ /*0x1AC*/ BGM_SAFARI,
BGM_C_ROAD,
BGM_AJITO,
BGM_M_BOAT,
@@ -359,7 +359,24 @@ enum
BGM_DAIGO,
BGM_THANKFOR,
BGM_END,
- BGM_BATTLE27, // wild
+ /*0x1C9*/ BGM_BATTLE_FRONTIER, // human-readable names start here because we don't know the actual filenames
+ BGM_BATTLE_ARENA,
+ BGM_ME_BATTLE_POINTS, // ME_ as in messagebox? Used for KINOMI (berries) and stuff above
+ BGM_ME_MATCH_CALL,
+ BGM_BATTLE_PYRAMID,
+ BGM_BATTLE_PYRAMID_SUMMIT,
+ BGM_BATTLE_PALACE,
+ BGM_FANFA_RAYQUAZA,
+ BGM_BATTLE_TOWER,
+ BGM_ME_BATTLE_SYMBOL,
+ BGM_BATTLE_DOME_TOURNAMENT,
+ BGM_BATTLE_PIKE,
+ BGM_BATTLE_FACTORY,
+ BGM_BATTLE_LEGENDARY,
+ BGM_BATTLE_FRONTIER_BRAIN,
+ BGM_BATTLE_MEW,
+ BGM_BATTLE_DOME, // end of the human-readable names
+ /*0x1DA*/ BGM_BATTLE27, // wild
BGM_BATTLE31, // aqua/magma grunt
BGM_BATTLE20, // trainer
BGM_BATTLE32, // gym leader
@@ -369,6 +386,81 @@ enum
BGM_BATTLE35, // rival
BGM_BATTLE38, // elite four
BGM_BATTLE30, // aqua/magma leader
+ /*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again!
+ BGM_FRLG_GAMECORNER,
+ BGM_FRLG_ROCKET_HIDEOUT,
+ BGM_FRLG_GYM,
+ BGM_FRLG_JIGGLYPUFF,
+ BGM_FRLG_OPENING,
+ BGM_FRLG_TITLE,
+ BGM_FRLG_CINNABAR_ISLAND,
+ BGM_FRLG_LAVENDER_TOWN,
+ BGM_FRLG_HEALING_TEST,
+ BGM_FRLG_BICYCLE,
+ BGM_FRLG_SUSPICIOUS_EYE,
+ BGM_FRLG_GIRL_EYE,
+ BGM_FRLG_BOY_EYE,
+ BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME,
+ BGM_FRLG_VIRIDIAN_FOREST,
+ BGM_FRLG_MT_MOON,
+ BGM_FRLG_POKEMON_MANSION,
+ BGM_FRLG_CREDITS,
+ BGM_FRLG_ROUTE_1,
+ BGM_FRLG_ROUTE_24,
+ BGM_FRLG_ROUTE_3,
+ BGM_FRLG_ROUTE_11,
+ BGM_FRLG_INDIGO_PLATEAU,
+ BGM_FRLG_BATTLE_LEADER,
+ BGM_FRLG_BATTLE_TRAINER,
+ BGM_FRLG_BATTLE_WILD_POKEMON,
+ BGM_FRLG_BATTLE_CHAMPION,
+ BGM_FRLG_PALLET_TOWN,
+ BGM_FRLG_OAK_LAB,
+ BGM_FRLG_PROF_OAK,
+ BGM_FRLG_POKEMON_CENTER,
+ BGM_FRLG_SS_ANNE,
+ BGM_FRLG_SURF,
+ BGM_FRLG_POKEMON_TOWER,
+ BGM_FRLG_SILPH,
+ BGM_FRLG_CERULEAN_CITY,
+ BGM_FRLG_CELADON_CITY,
+ BGM_FRLG_KACHI_TRAINER, // KACHI used in RS test - victory
+ BGM_FRLG_KACHI_WILD_POKEMON,
+ BGM_FRLG_KACHI_LEADER,
+ BGM_FRLG_VERMILION_CITY,
+ BGM_FRLG_VIRIDIAN_CITY,
+ BGM_FRLG_RIVAL,
+ BGM_FRLG_RIVAL_POSTBATTLE,
+ BGM_FRLG_ME_POKEDEX_EVAL,
+ BGM_FRLG_ME_KEYITEM,
+ BGM_FRLG_FANFA_POKEMON_CAUGHT,
+ BGM_FRLG_FANFA_TRAINERCARD_PHOTO,
+ BGM_FRLG_GAMEFREAK_LOGO,
+ BGM_FRLG_CAUGHT_POKEMON,
+ BGM_FRLG_GAME_EXPLANATION_START,
+ BGM_FRLG_GAME_EXPLANATION_MIDDLE,
+ BGM_FRLG_GAME_EXPLANATION_END,
+ BGM_FRLG_POKEMON_JUMP,
+ BGM_FRLG_UNION_ROOM,
+ BGM_FRLG_POKEMON_NETWORK_CENTER,
+ BGM_FRLG_MYSTERY_GIFT,
+ BGM_FRLG_DODRIO_BERRY_PICK,
+ BGM_FRLG_MT_EMBER,
+ BGM_FRLG_TEACHY_TV_EPISODE,
+ BGM_FRLG_SEVII_ISLANDS,
+ BGM_FRLG_TANOBY_RUINS,
+ BGM_FRLG_ISLAND_ONE,
+ BGM_FRLG_ISLAND_FOUR,
+ BGM_FRLG_ISLAND_SIX,
+ BGM_FRLG_FLUTE,
+ BGM_FRLG_BATTLE_DEOXYS,
+ BGM_FRLG_BATTLE_MEWTWO,
+ BGM_FRLG_BATTLE_LEGENDARY,
+ BGM_FRLG_LEADER_EYE,
+ BGM_FRLG_DEOXYS_EYE,
+ BGM_FRLG_TRAINER_TOWER,
+ BGM_FRLG_HALL_OF_FAME_PALLET_TOWN,
+ /*0x22E*/BGM_FRLG_TEACHY_TV,
};
#endif // GUARD_SONGS_H
diff --git a/include/species.h b/include/species.h
index 9ab0565cb..ac0797418 100644
--- a/include/species.h
+++ b/include/species.h
@@ -449,5 +449,6 @@ enum
};
#define NUM_SPECIES SPECIES_EGG
+extern const u8 gSpeciesNames[][11];
#endif // GUARD_SPECIES_H
diff --git a/include/sprite.h b/include/sprite.h
index 838b0d7c0..531314079 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -212,14 +212,14 @@ struct Sprite
u16 flags_5:1; //0x20
u16 flags_6:1; //0x40
u16 flags_7:1; //0x80
- /*0x3F*/ u16 hFlip:1;
- u16 vFlip:1;
- u16 animBeginning:1;
- u16 affineAnimBeginning:1;
- u16 animEnded:1;
- u16 affineAnimEnded:1;
- u16 usingSheet:1;
- u16 flags_f:1;
+ /*0x3F*/ u16 hFlip:1; //1
+ u16 vFlip:1; //2
+ u16 animBeginning:1; //4
+ u16 affineAnimBeginning:1; //8
+ u16 animEnded:1; //0x10
+ u16 affineAnimEnded:1; //0x20
+ u16 usingSheet:1; //0x40
+ u16 flags_f:1; //0x80
/*0x40*/ u16 sheetTileStart;
@@ -251,7 +251,7 @@ void BuildOamBuffer(void);
u8 CreateSprite(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
u8 CreateSpriteAtEnd(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
u8 CreateInvisibleSprite(void (*callback)(struct Sprite *));
-u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
+u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority);
void DestroySprite(struct Sprite *sprite);
void ResetOamRange(u8 a, u8 b);
void LoadOam(void);
diff --git a/include/string_util.h b/include/string_util.h
index 382f52251..f26646082 100644
--- a/include/string_util.h
+++ b/include/string_util.h
@@ -31,7 +31,7 @@ u8 *StringFillWithTerminator(u8 *dest, u16 n);
u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n);
u32 StringLength_Multibyte(u8 *str);
u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color);
-bool32 sub_8009228(u8 *str);
+bool32 IsStringJapanese(u8 *str);
bool32 sub_800924C(u8 *str, s32 n);
u8 GetExtCtrlCodeLength(u8 code);
static const u8 *SkipExtCtrlCode(const u8 *s);
diff --git a/include/strings.h b/include/strings.h
new file mode 100644
index 000000000..191b1809a
--- /dev/null
+++ b/include/strings.h
@@ -0,0 +1,74 @@
+#ifndef GUARD_STRINGS_H
+#define GUARD_STRINGS_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+extern const u8 gText_FromSpace[];
+extern const u8 gText_Lv50[];
+extern const u8 gText_OpenLevel[];
+extern const u8 gText_Mom[];
+extern const u8 gText_Dad[];
+extern const u8 gText_Cool[];
+extern const u8 gText_Beauty[];
+extern const u8 gText_Cute[];
+extern const u8 gText_Smart[];
+extern const u8 gText_Tough[];
+extern const u8 gText_Single[];
+extern const u8 gText_Double[];
+extern const u8 gText_Spicy2[];
+extern const u8 gText_Dry2[];
+extern const u8 gText_Sweet2[];
+extern const u8 gText_Bitter2[];
+extern const u8 gText_Sour2[];
+extern const u8 gText_Excellent[];
+extern const u8 gText_VeryGood[];
+extern const u8 gText_Good[];
+extern const u8 gText_SoSo[];
+extern const u8 gText_Bad[];
+extern const u8 gText_TheWorst[];
+extern const u8 gText_Slots[];
+extern const u8 gText_Roulette[];
+extern const u8 gText_Jackpot[];
+extern const u8 gText_First[];
+extern const u8 gText_Second[];
+extern const u8 gText_Third[];
+extern const u8 gText_NoDecorations[];
+extern const u8 gText_NoDecorationsInUse[];
+extern const u8 gText_Exit[];
+extern const u8 gText_Cancel[];
+extern const u8 gText_Color161Shadow161[];
+extern const u8 gText_GoBackPrevMenu[];
+extern const u8 gText_CantPlaceInRoom[];
+extern const u8 gText_NoMoreDecorations[];
+extern const u8 gText_NoMoreDecorations2[];
+extern const u8 gText_InUseAlready[];
+extern const u8 gText_CancelDecorating[];
+extern const u8 gText_PlaceItHere[];
+extern const u8 gText_CantBePlacedHere[];
+extern const u8 gText_DecorationReturnedToPC[];
+extern const u8 gText_StopPuttingAwayDecorations[];
+extern const u8 gText_ReturnDecorationToPC[];
+extern const u8 gText_NoDecorationHere[];
+extern const u8 gText_DecorationWillBeDiscarded[];
+extern const u8 gText_CantThrowAwayInUse[];
+extern const u8 gText_DecorationThrownAway[];
+extern const u8 gText_Desk[];
+extern const u8 gText_Chair[];
+extern const u8 gText_Plant[];
+extern const u8 gText_Ornament[];
+extern const u8 gText_Mat[];
+extern const u8 gText_Poster[];
+extern const u8 gText_PutOutSelectedDecorItem[];
+extern const u8 gText_StoreChosenDecorInPC[];
+extern const u8 gText_ThrowAwayUnwantedDecors[];
+extern const u8 gText_Doll[];
+extern const u8 gText_Cushion[];
+extern const u8 gText_Decorate[];
+extern const u8 gText_PutAway[];
+extern const u8 gText_Toss2[];
+
+#endif //GUARD_STRINGS_H
diff --git a/include/text.h b/include/text.h
index dba409f37..594661717 100644
--- a/include/text.h
+++ b/include/text.h
@@ -65,54 +65,67 @@
#define CHAR_x 0xEC
#define CHAR_y 0xED
#define CHAR_z 0xEE
+#define CHAR_SPECIAL_F9 0xF9
#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
-#define EOS 0xFF // end of string
+#define EOS 0xFF // end of string
+
+#define TEXT_COLOR_TRANSPARENT 0x0
+#define TEXT_COLOR_WHITE 0x1
+#define TEXT_COLOR_DARK_GREY 0x2
+
+// battle placeholders are located in battle_message.h
#define EXT_CTRL_CODE_JPN 0x15
#define EXT_CTRL_CODE_ENG 0x16
#define NUM_TEXT_PRINTERS 32
+struct TextPrinterSubStruct
+{
+ u8 font_type:4; // 0x14
+ u8 font_type_upper:1;
+ u8 font_type_5:3;
+ u8 field_1:5;
+ u8 field_1_upmid:2;
+ u8 field_1_top:1;
+ u8 frames_visible_counter;
+ u8 field_3;
+ u8 field_4; // 0x18
+ u8 field_5;
+ u8 field_6;
+ u8 active;
+};
+
+struct TextSubPrinter // TODO: Better name
+{
+ const u8* current_text_offset;
+ u8 windowId;
+ u8 fontId;
+ u8 x;
+ u8 y;
+ u8 currentX; // 0x8
+ u8 currentY;
+ u8 letterSpacing;
+ u8 lineSpacing;
+ u8 fontColor_l:4; // 0xC
+ u8 fontColor_h:4;
+ u8 bgColor:4;
+ u8 shadowColor:4;
+};
+
struct TextPrinter
{
- struct TextSubPrinter { // TODO: Better name
- u8* current_text_offset;
- u8 windowId;
- u8 fontId;
- u8 x;
- u8 y;
- u8 currentX; // 0x8
- u8 currentY;
- u8 letterSpacing;
- u8 lineSpacing;
- u8 fontColor_l:4; // 0xC
- u8 fontColor_h:4;
- u8 bgColor:4;
- u8 shadowColor:4;
- } subPrinter;
+ struct TextSubPrinter subPrinter;
void (*callback)(struct TextSubPrinter *, u16); // 0x10
union {
- struct TextPrinterSubStruct
- {
- u8 font_type:4; // 0x14
- u8 font_type_upper:4;
- u8 field_1:5;
- u8 field_1_upmid:2;
- u8 field_1_top:1;
- u8 frames_visible_counter;
- u8 field_3;
- u8 field_4; // 0x18
- u8 field_5;
- u8 field_6;
- u8 active;
- } sub;
+ struct TextPrinterSubStruct sub;
u8 sub_fields[8];
} sub_union;
@@ -138,6 +151,8 @@ struct FontInfo
u8 shadowColor:4;
};
+extern const struct FontInfo *gFonts;
+
struct GlyphWidthFunc
{
u32 font_id;
@@ -151,6 +166,15 @@ struct KeypadIcon
u8 height;
};
+typedef struct {
+ u8 flag_0:1;
+ u8 flag_1:1;
+ u8 flag_2:1;
+ u8 flag_3:1;
+} TextFlags;
+
+extern TextFlags gTextFlags;
+
struct __attribute__((packed)) TextColor
{
u8 fgColor;
@@ -163,9 +187,16 @@ extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
+u8 gUnknown_03002F84;
+u8 gUnknown_03002F90[0x20];
+u8 gUnknown_03002FB0[0x20];
+u8 gUnknown_03002FD0[0x20];
+u8 gUnknown_03002FF0[0x20];
+u8 gGlyphDimensions[0x2];
+
void SetFontsPointer(const struct FontInfo *fonts);
void DeactivateAllTextPrinters(void);
-u16 PrintTextOnWindow(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16));
+u16 PrintTextOnWindow(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16));
bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*callback)(struct TextSubPrinter *, u16));
void RunTextPrinters(void);
bool16 IsTextPrinterActive(u8 id);
@@ -191,8 +222,8 @@ void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter);
void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter);
void TextPrinterClearDownArrow(struct TextPrinter *textPrinter);
bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter);
-bool8 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter);
-bool8 TextPrinterWait(struct TextPrinter *textPrinter);
+bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter);
+bool16 TextPrinterWait(struct TextPrinter *textPrinter);
void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex);
u16 RenderText(struct TextPrinter *textPrinter);
u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing);
diff --git a/include/tilesets.h b/include/tilesets.h
new file mode 100644
index 000000000..70609c046
--- /dev/null
+++ b/include/tilesets.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_tilesets_H
+#define GUARD_tilesets_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+extern struct Tileset *gTilesetPointer_SecretBase;
+extern struct Tileset *gTilesetPointer_SecretBaseRedCave;
+
+#endif //GUARD_tilesets_H
diff --git a/include/trader.h b/include/trader.h
new file mode 100644
index 000000000..71fd1f7c2
--- /dev/null
+++ b/include/trader.h
@@ -0,0 +1,11 @@
+//
+// Created by scott on 10/21/2017.
+//
+
+#ifndef GUARD_TRADER_H
+#define GUARD_TRADER_H
+
+void sub_8133DA0(u8 taskId);
+void sub_8133E1C(u8 taskId);
+
+#endif //GUARD_TRADER_H
diff --git a/include/trainer_see.h b/include/trainer_see.h
index 3f39783b8..ab035d9f8 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -2,6 +2,7 @@
#define GUARD_TRAINER_SEE_H
void sub_80B4578(struct MapObject *);
+u8 sub_80B47BC(void);
void sub_8155D78(struct MapObject *);
#endif //GUARD_TRAINER_SEE_H
diff --git a/include/tv.h b/include/tv.h
new file mode 100644
index 000000000..172754ae0
--- /dev/null
+++ b/include/tv.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_TV_H
+#define GUARD_TV_H
+
+extern u8 *const gTVStringVarPtrs[3];
+
+void ClearTVShowData(void);
+void PutPokemonTodayCaughtOnAir(void);
+u32 GetPlayerIDAsU32(void);
+bool8 GetPriceReduction(u8 newsKind);
+u8 GetRibbonCount(struct Pokemon *pokemon);
+void TV_PutSecretBaseVisitOnTheAir(void);
+void sub_80EE184(void);
+void sub_80F14F8(TVShow *shows);
+size_t sub_80EF370(int value);
+
+#endif //GUARD_TV_H
diff --git a/include/unknown_task.h b/include/unknown_task.h
index f59ca9ac3..9c6968c30 100644
--- a/include/unknown_task.h
+++ b/include/unknown_task.h
@@ -2,10 +2,21 @@
#define GUARD_unknown_task_H
// Exported type declarations
+struct UnknownTaskStruct
+{
+ volatile void *dest;
+ u32 control;
+ u8 unk8;
+ u8 unk9;
+};
+
+extern struct UnknownTaskStruct gUnknown_0831AC70;
// Exported RAM declarations
// Exported ROM declarations
void remove_some_task(void);
+void sub_80BA038(struct UnknownTaskStruct arg0);
+void sub_80BA0A8(void);
-#endif //GUARD_unknown_task_H
+#endif // GUARD_unknown_task_H
diff --git a/include/vars.h b/include/vars.h
index 7c0edeb77..67c0b67fc 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -53,4 +53,14 @@
#define VAR_0x40BC 0x40BC
#define VAR_0x40C2 0x40C2
+#define VAR_FRONTIER_FACILITY 0x40CF
+
+#define VAR_DAILY_SLOTS 0x40E6
+#define VAR_DAILY_WILDS 0x40E7
+#define VAR_DAILY_BLENDER 0x40E8
+#define VAR_DAILY_PLANTED_BERRIES 0x40E9
+#define VAR_DAILY_PICKED_BERRIES 0x40EA
+#define VAR_DAILY_ROULETTE 0x40EB
+#define VAR_DAILY_BP 0x40F1
+
#endif // GUARD_VARS_H
diff --git a/include/walda_phrase.h b/include/walda_phrase.h
new file mode 100644
index 000000000..3d7701123
--- /dev/null
+++ b/include/walda_phrase.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_WALDA_PHRASE_H
+#define GUARD_WALDA_PHRASE_H
+
+u16 TryBufferWaldaPhrase(void);
+void DoWaldaNamingScreen(void);
+u16 TryGetWallpaperWithWaldaPhrase(void);
+
+#endif // GUARD_WALDA_PHRASE_H
diff --git a/include/window.h b/include/window.h
index e8af82e81..b630cd316 100644
--- a/include/window.h
+++ b/include/window.h
@@ -43,7 +43,7 @@ struct Window
bool16 InitWindows(const struct WindowTemplate *templates);
u16 AddWindow(const struct WindowTemplate *template);
-int AddWindowWithoutTileMap(struct WindowTemplate *template);
+int AddWindowWithoutTileMap(const struct WindowTemplate *template);
void RemoveWindow(u8 windowId);
void FreeAllWindowBuffers(void);
void CopyWindowToVram(u8 windowId, u8 mode);
@@ -55,7 +55,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height);
void BlitBitmapToWindow(u8 windowId, u8 *pixels, u16 x, u16 y, u16 width, u16 height);
void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16 srcY, u16 srcWidth, int srcHeight, u16 destX, u16 destY, u16 rectWidth, u16 rectHeight);
void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
-void CopyToWindowPixelBuffer(u8 windowId, u8 *src, u16 size, u16 tileOffset);
+void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset);
void FillWindowPixelBuffer(u8 windowId, u8 fillValue);
void ScrollWindow(u8 windowId, u8 direction, u8 distance, u8 fillValue);
void CallWindowFunction(u8 windowId, void ( *func)(u8, u8, u8, u8, u8, u8));
diff --git a/ld_script.txt b/ld_script.txt
index 543794dbc..8f16f296d 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -54,24 +54,22 @@ SECTIONS {
asm/link.o(.text);
src/rtc.o(.text);
asm/main_menu.o(.text);
- asm/rom3.o(.text);
+ src/battle_controllers.o(.text);
src/decompress.o(.text);
asm/battle_1.o(.text);
- asm/battle_2.o(.text);
- src/battle_3.o(.text);
- src/battle_4.o(.text);
- asm/battle_4.o(.text);
+ src/battle_2.o(.text);
+ src/battle_util.o(.text);
+ src/battle_script_commands.o(.text);
asm/battle_5.o(.text);
asm/battle_controller_player.o(.text);
asm/battle_7.o(.text);
asm/battle_controller_opponent.o(.text);
- asm/battle_9.o(.text);
+ src/battle_ai_switch_items.o(.text);
asm/battle_controller_linkopponent.o(.text);
src/pokemon_1.o(.text);
asm/pokemon_1.o(.text);
src/calculate_base_damage.o(.text);
src/pokemon_2.o(.text);
- asm/pokemon_2.o(.text);
asm/pokemon_item_effect.o(.text);
src/pokemon_3.o(.text);
asm/pokemon_3.o(.text);
@@ -81,7 +79,7 @@ SECTIONS {
src/blend_palette.o(.text);
asm/daycare.o(.text);
src/egg_hatch.o(.text);
- asm/battle_interface.o(.text);
+ src/battle_interface.o(.text);
asm/smokescreen.o(.text);
asm/pokeball.o(.text);
src/load_save.o(.text);
@@ -92,7 +90,7 @@ SECTIONS {
src/new_game.o(.text);
asm/rom4.o(.text);
asm/fieldmap.o(.text);
- asm/metatile_behavior.o(.text);
+ src/metatile_behavior.o(.text);
asm/field_camera.o(.text);
asm/field_door.o(.text);
asm/field_player_avatar.o(.text);
@@ -103,7 +101,7 @@ SECTIONS {
asm/map_obj_lock.o(.text);
src/text_window.o(.text);
src/script.o(.text);
- asm/scrcmd.o(.text);
+ src/scrcmd.o(.text);
asm/field_control_avatar.o(.text);
src/event_data.o(.text);
asm/coord_event_weather.o(.text);
@@ -112,20 +110,19 @@ SECTIONS {
asm/reset_rtc_screen.o(.text);
src/start_menu.o(.text);
asm/start_menu.o(.text);
- asm/tileset.o(.text);
+ src/tileset_anims.o(.text);
src/palette.o(.text);
src/sound.o(.text);
- asm/battle_anim.o(.text);
+ src/battle_anim.o(.text);
asm/rom_80A5C6C.o(.text);
src/task.o(.text);
- asm/reshow_battle_screen.o(.text);
+ src/reshow_battle_screen.o(.text);
asm/battle_anim_80A9C70.o(.text);
asm/title_screen.o(.text);
asm/field_screen.o(.text);
asm/battle_setup.o(.text);
asm/cable_club.o(.text);
asm/trainer_see.o(.text);
- asm/fldeff_emotion.o(.text);
asm/wild_encounter.o(.text);
asm/field_effect.o(.text);
asm/unknown_task.o(.text);
@@ -148,18 +145,16 @@ SECTIONS {
asm/script_menu.o(.text);
asm/naming_screen.o(.text);
src/money.o(.text);
- asm/money.o(.text);
asm/contest_effect.o(.text);
asm/record_mixing.o(.text);
asm/secret_base.o(.text);
- asm/tv.o(.text);
+ src/tv.o(.text);
asm/contest_link_80F57C4.o(.text);
asm/script_pokemon_util_80F87D8.o(.text);
asm/field_poison.o(.text);
src/pokemon_size_record.o(.text);
asm/fldeff_80F9BCC.o(.text);
- asm/truck_scene.o(.text);
- asm/porthole.o(.text);
+ src/field_special_scene.o(.text);
asm/rotating_gate.o(.text);
src/safari_zone.o(.text);
asm/contest_link_80FC4F4.o(.text);
@@ -170,16 +165,16 @@ SECTIONS {
asm/easy_chat.o(.text);
asm/mon_markings.o(.text);
asm/mauville_old_man.o(.text);
- asm/mail.o(.text);
+ src/mail.o(.text);
asm/menu_helpers.o(.text);
asm/dewford_trend.o(.text);
asm/heal_location.o(.text);
asm/region_map.o(.text);
asm/cute_sketch.o(.text);
- asm/decoration.o(.text);
+ src/decoration.o(.text);
asm/slot_machine.o(.text);
asm/contest_painting.o(.text);
- src/battle_ai.o(.text);
+ src/battle_ai_script_commands.o(.text);
asm/trader.o(.text);
asm/starter_choose.o(.text);
asm/wallclock.o(.text);
@@ -195,13 +190,12 @@ SECTIONS {
asm/fldeff_strength.o(.text);
asm/battle_transition.o(.text);
asm/battle_controller_linkpartner.o(.text);
- asm/battle_message.o(.text);
+ src/battle_message.o(.text);
asm/cable_car.o(.text);
asm/math_util.o(.text);
asm/roulette_util.o(.text);
asm/cable_car_util.o(.text);
src/save.o(.text);
- asm/save.o(.text);
asm/mystery_event_script.o(.text);
asm/field_effect_helpers.o(.text);
asm/contest_ai.o(.text);
@@ -211,8 +205,8 @@ SECTIONS {
asm/battle_anim_815A0D4.o(.text);
asm/learn_move.o(.text);
asm/fldeff_softboiled.o(.text);
- asm/decoration_inventory.o(.text);
- asm/roamer.o(.text);
+ src/decoration_inventory.o(.text);
+ src/roamer.o(.text);
asm/battle_tower.o(.text);
asm/use_pokeblock.o(.text);
asm/battle_controller_wally.o(.text);
@@ -224,13 +218,13 @@ SECTIONS {
asm/hall_of_fame.o(.text);
asm/credits.o(.text);
src/lottery_corner.o(.text);
- asm/diploma.o(.text);
+ src/diploma.o(.text);
asm/berry_tag_screen.o(.text);
asm/mystery_event_menu.o(.text);
- asm/save_failed_screen.o(.text);
- asm/braille_puzzles.o(.text);
+ src/save_failed_screen.o(.text);
+ src/braille_puzzles.o(.text);
asm/pokeblock_feed.o(.text);
- asm/clear_save_data_screen.o(.text);
+ src/clear_save_data_screen.o(.text);
asm/intro_credits_graphics.o(.text);
asm/evolution_graphics.o(.text);
asm/bard_music.o(.text);
@@ -250,26 +244,28 @@ SECTIONS {
asm/list_menu.o(.text);
asm/menu_indicators.o(.text);
asm/unk_text_util.o(.text);
- asm/save_location.o(.text);
+ src/save_location.o(.text);
asm/item_icon.o(.text);
asm/party_menu.o(.text);
asm/battle_tent.o(.text);
- asm/unk_text_util_2.o(.text);
+ src/unk_text_util_2.o(.text);
src/multiboot.o(.text);
asm/unk_81BAD84.o(.text);
asm/battle_controller_player_partner.o(.text);
asm/fldeff_groundshake.o(.text);
asm/fossil_specials.o(.text);
src/berry_fix_program.o(.text);
+ src/pokemon_summary_screen.o(.text);
asm/pokemon_summary_screen.o(.text);
asm/pokenav.o(.text);
asm/rayquaza_scene.o(.text);
- asm/walda_phrase.o(.text);
+ src/walda_phrase.o(.text);
asm/contest_link_81D9DE4.o(.text);
asm/trainer_rematch.o(.text);
asm/unk_sprite_file.o(.text);
asm/unk_transition.o(.text);
asm/unk_transition_2.o(.text);
+ src/international_string_util.o(.text);
asm/international_string_util.o(.text);
} =0
@@ -298,6 +294,10 @@ SECTIONS {
src/agb_flash_1m.o(.text);
src/agb_flash_mx.o(.text);
src/siirtc.o(.text);
+ src/librfu_stwi.o(.text);
+ src/librfu_intr.o(.text);
+ asm/librfu_intr.o(.text);
+ src/librfu_rfu.o(.text);
asm/librfu.o(.text);
asm/libagbsyscall.o(.text);
tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text);
@@ -330,11 +330,14 @@ SECTIONS {
src/string_util.o(.rodata);
data/link.o(.rodata);
src/rtc.o(.rodata);
+ data/main_menu.o(.rodata);
+ data/battle_1.o(.rodata);
data/data2b.o(.rodata);
- src/battle_4.o(.rodata);
- data/battle_4.o(.rodata);
+ src/battle_2.o(.rodata);
+ src/battle_util.o(.rodata);
+ src/battle_script_commands.o(.rodata);
data/battle_controller_player.o(.rodata);
- data/data2b_2.o(.rodata);
+ data/smokescreen.o(.rodata);
data/battle_controller_opponent.o(.rodata);
data/battle_controller_link_opponent.o(.rodata);
data/data2c.o(.rodata);
@@ -343,35 +346,37 @@ SECTIONS {
data/daycare.o(.rodata);
src/egg_hatch.o(.rodata);
data/battle_7.o(.rodata);
- data/battle_interface.o(.rodata);
+ src/battle_interface.o(.rodata);
data/pokeball.o(.rodata);
data/trade.o(.rodata);
data/berry_blender.o(.rodata);
src/new_game.o(.rodata);
data/rom4.o(.rodata);
data/fieldmap.o(.rodata);
- data/metatile_behavior.o(.rodata);
+ src/metatile_behavior.o(.rodata);
+ data/rom_8486FEC.o(.rodata);
data/field_door.o(.rodata);
data/field_player_avatar.o(.rodata);
data/field_map_obj.o(.rodata);
data/field_ground_effect.o(.rodata);
data/map_obj_8097404.o(.rodata);
data/text_window.o(.rodata);
- data/scrcmd.o(.rodata);
+ src/scrcmd.o(.rodata);
data/coord_event_weather.o(.rodata);
data/field_tasks.o(.rodata);
data/reset_rtc_screen.o(.rodata);
data/start_menu.o(.rodata);
- data/tileset.o(.rodata);
- data/palette.o(.rodata);
+ src/tileset_anims.o(.rodata);
+ src/palette.o(.rodata);
data/fanfares.o(.rodata);
data/battle_anims.o(.rodata);
+ src/battle_anim.o(.rodata);
+ data/rom_8525F58.o(.rodata);
data/title_screen.o(.rodata);
data/field_screen.o(.rodata);
data/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/trainer_see.o(.rodata);
- data/fldeff_emotion.o(.rodata);
data/wild_encounter.o(.rodata);
data/field_effect.o(.rodata);
data/option_menu.o(.rodata);
@@ -387,16 +392,16 @@ SECTIONS {
src/berry.o(.rodata);
data/script_menu.o(.rodata);
data/naming_screen.o(.rodata);
- data/money.o(.rodata);
+ src/money.o(.rodata);
data/contest_effect.o(.rodata);
data/record_mixing.o(.rodata);
data/secret_base.o(.rodata);
- data/tv.o(.rodata);
+ src/tv.o(.rodata);
data/contest_link_80F57C4.o(.rodata);
data/script_pokemon_util_80F87D8.o(.rodata);
src/pokemon_size_record.o(.rodata)
data/field_effect_misc.o(.rodata);
- data/truck_scene_porthole.o(.rodata);
+ data/field_special_scene.o(.rodata);
data/rotating_gate.o(.rodata);
data/item_use.o(.rodata);
data/battle_anim_80FE840.o(.rodata);
@@ -404,24 +409,28 @@ SECTIONS {
data/easy_chat.o(.rodata);
data/mon_markings.o(.rodata);
data/mauville_old_man.o(.rodata);
- data/mail.o(.rodata);
+ src/mail.o(.rodata);
data/menu_helpers.o(.rodata);
data/heal_location.o(.rodata);
data/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
- data/decoration.o(.rodata);
+ src/decoration.o(.rodata);
data/slot_machine.o(.rodata);
data/contest_painting.o(.rodata);
- src/battle_ai.o(.rodata);
+ src/battle_ai_script_commands.o(.rodata);
data/data4.o(.rodata);
data/battle_controller_link_partner.o(.rodata);
- data/battle_message.o(.rodata);
+ src/battle_message.o(.rodata);
data/cable_car.o(.rodata);
data/save.o(.rodata);
data/field_effect_helpers.o(.rodata);
data/contest_ai.o(.rodata);
data/battle_controller_safari.o(.rodata);
- data/rom_8158B30.o(.rodata);
+ data/battle_anim_815A0D4.o(.rodata);
+ data/learn_move.o(.rodata);
+ src/roamer.o(.rodata);
+ data/battle_tower.o(.rodata);
+ data/use_pokeblock.o(.rodata);
data/battle_controller_wally.o(.rodata);
data/player_pc.o(.rodata);
data/intro.o(.rodata);
@@ -430,14 +439,14 @@ SECTIONS {
data/hall_of_fame.o(.rodata);
data/credits.o(.rodata);
src/lottery_corner.o(.rodata);
- data/diploma.o(.rodata);
+ src/diploma.o(.rodata);
data/strings.o(.rodata);
data/berry_tag_screen.o(.rodata);
data/mystery_event_menu.o(.rodata);
- data/save_failed_screen.o(.rodata);
+ src/save_failed_screen.o(.rodata);
data/braille_puzzles.o(.rodata);
data/pokeblock_feed.o(.rodata);
- data/clear_save_data_screen.o(.rodata);
+ src/clear_save_data_screen.o(.rodata);
data/intro_credits_graphics.o(.rodata);
data/evolution_graphics.o(.rodata);
data/bard_music.o(.rodata);
@@ -451,11 +460,11 @@ SECTIONS {
data/battle_frontier_2.o(.rodata);
data/item_menu.o(.rodata);
data/menu_indicators.o(.rodata);
- data/save_location.o(.rodata);
+ src/save_location.o(.rodata);
data/item_icon.o(.rodata);
data/party_menu.o(.rodata);
data/battle_tent.o(.rodata);
- data/unk_text_util_2.o(.rodata);
+ src/unk_text_util_2.o(.rodata);
data/unk_81BAD84.o(.rodata);
data/battle_controller_player_partner.o(.rodata);
data/fossil_special_fldeff_groundshake.o(.rodata);
@@ -463,7 +472,7 @@ SECTIONS {
data/pokemon_summary_screen.o(.rodata);
data/pokenav.o(.rodata);
data/rayquaza_scene.o(.rodata);
- data/walda_phrase.o(.rodata);
+ src/walda_phrase.o(.rodata);
data/trainer_rematch.o(.rodata);
data/unk_sprite_file.o(.rodata);
data/unk_transition.o(.rodata);
diff --git a/src/battle_1.c b/src/battle_1.c
new file mode 100644
index 000000000..5e4ef5583
--- /dev/null
+++ b/src/battle_1.c
@@ -0,0 +1,17 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u32 gUnknown_03000DD4;
+IWRAM_DATA u32 gUnknown_03000DD8;
+IWRAM_DATA u32 gUnknown_03000DDC;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/battle_2.c b/src/battle_2.c
new file mode 100644
index 000000000..16c07114a
--- /dev/null
+++ b/src/battle_2.c
@@ -0,0 +1,5646 @@
+#include "global.h"
+#include "battle.h"
+#include "recorded_battle.h"
+#include "main.h"
+#include "load_save.h"
+#include "gpu_regs.h"
+#include "unknown_task.h"
+#include "battle_setup.h"
+#include "pokemon.h"
+#include "palette.h"
+#include "task.h"
+#include "event_data.h"
+#include "species.h"
+#include "berry.h"
+#include "text.h"
+#include "item.h"
+#include "items.h"
+#include "hold_effects.h"
+#include "link.h"
+#include "bg.h"
+#include "dma3.h"
+#include "string_util.h"
+#include "malloc.h"
+#include "event_data.h"
+#include "m4a.h"
+#include "window.h"
+#include "rng.h"
+#include "songs.h"
+#include "sound.h"
+#include "battle_message.h"
+#include "sprite.h"
+#include "util.h"
+#include "trig.h"
+#include "battle_ai_script_commands.h"
+#include "battle_move_effects.h"
+#include "battle_controllers.h"
+#include "pokedex.h"
+#include "abilities.h"
+#include "moves.h"
+#include "trainer_classes.h"
+#include "evolution_scene.h"
+#include "roamer.h"
+#include "tv.h"
+#include "safari_zone.h"
+#include "battle_string_ids.h"
+
+struct UnknownStruct6
+{
+ u16 unk0[0xA0];
+ u8 fillerA0[0x640];
+ u16 unk780[0xA0];
+};
+
+struct UnknownPokemonStruct2
+{
+ /*0x00*/ u16 species;
+ /*0x02*/ u16 heldItem;
+ /*0x04*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ /*0x0F*/ u8 level;
+ /*0x10*/ u16 hp;
+ /*0x12*/ u16 maxhp;
+ /*0x14*/ u32 status;
+ /*0x18*/ u32 personality;
+ /*0x1C*/ u8 gender;
+ /*0x1D*/ u8 language;
+};
+
+extern u8 gBattleCommunication[];
+extern u8 gBattleTerrain;
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_BG3_X;
+extern u16 gBattle_BG3_Y;
+extern u16 gPartnerTrainerId;
+extern u16 gBattle_WIN0H;
+extern u16 gBattle_WIN0V;
+extern u16 gBattle_WIN1H;
+extern u16 gBattle_WIN1V;
+extern u16 gTrainerBattleOpponent_A;
+extern u16 gTrainerBattleOpponent_B;
+extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
+extern void (*gPreBattleCallback1)(void);
+extern void (*gBattleMainFunc)(void);
+extern void (*gUnknown_030061E8)(void);
+extern struct UnknownPokemonStruct2 gUnknown_02022FF8[3]; // what is it used for?
+extern struct UnknownPokemonStruct2* gUnknown_02023058; // what is it used for?
+extern u8 gUnknown_02039B28[]; // possibly a struct?
+extern struct UnknownStruct6 gUnknown_02038C28; // todo: identify & document
+extern struct MusicPlayerInfo gMPlay_SE1;
+extern struct MusicPlayerInfo gMPlay_SE2;
+extern u8 gDecompressionBuffer[];
+extern u16 gUnknown_020243FC;
+extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
+extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
+extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
+extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
+extern u8 gStringBank;
+extern u32 gUnknown_02022F88;
+extern u32 gHitMarker;
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
+extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
+extern u16 gPaydayMoney;
+extern u16 gBattleWeather;
+extern u16 gPauseCounterBattle;
+extern u16 gRandomTurnNumber;
+extern u8 gActiveBank;
+extern u8 gNoOfAllBanks;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8 gLeveledUpInBattle;
+extern u8 gAbsentBankFlags;
+extern u32 gBattleExecBuffer;
+extern u8 gMultiHitCounter;
+extern u8 gBattleMoveFlags;
+extern s32 gBattleMoveDamage;
+extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT];
+extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT];
+extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
+extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT];
+extern u16 gUnknown_02024258[BATTLE_BANKS_COUNT];
+extern u16 gUnknown_02024260[BATTLE_BANKS_COUNT];
+extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
+extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT];
+extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT];
+extern u32 gStatuses3[BATTLE_BANKS_COUNT];
+extern u16 gSideAffecting[2];
+extern u16 gCurrentMove;
+extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
+extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT];
+extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
+extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT];
+extern u8 gActionForBanks[BATTLE_BANKS_COUNT];
+extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
+extern u8 gCurrentActionFuncId;
+extern u8 gLastUsedAbility;
+extern u8 gUnknown_0203CF00[];
+extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT];
+extern const u8* gBattlescriptCurrInstr;
+extern u32 gBattlePalaceMoveSelectionRngValue;
+extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT];
+extern u8 gCurrentTurnActionNumber;
+extern u16 gDynamicBasePower;
+extern u8 gCritMultiplier;
+extern u8 gCurrMovePos;
+extern u8 gUnknown_020241E9;
+extern u16 gLastUsedMove;
+
+extern const struct BattleMove gBattleMoves[];
+extern const u16 gUnknown_08C004E0[]; // battle textbox palette
+extern const struct BgTemplate gUnknown_0831AA08[];
+extern const struct WindowTemplate * const gUnknown_0831ABA0[];
+extern const u8 gUnknown_0831ACE0[];
+extern const u8 gStatStageRatios[][2];
+extern const u8 * const gBattleScriptsForMoveEffects[];
+extern const u8 * const gBattlescriptsForBallThrow[];
+extern const u8 * const gBattlescriptsForRunningByItem[];
+extern const u8 * const gUnknown_082DBD3C[];
+extern const u8 * const gBattlescriptsForSafariActions[];
+
+// strings
+extern const u8 gText_LinkStandby3[];
+extern const u8 gText_RecordBattleToPass[];
+extern const u8 gText_BattleYesNoChoice[];
+extern const u8 gText_BattleRecordCouldntBeSaved[];
+extern const u8 gText_BattleRecordedOnPass[];
+extern const u8 gText_ShedinjaJapaneseName[];
+extern const u8 gText_EmptyString3[];
+extern const u8 gText_Poison[];
+extern const u8 gText_Sleep[];
+extern const u8 gText_Paralysis[];
+extern const u8 gText_Burn[];
+extern const u8 gText_Ice[];
+extern const u8 gText_Confusion[];
+extern const u8 gText_Love[];
+
+// battlescripts
+extern const u8 gUnknown_082DB8BE[];
+extern const u8 gUnknown_082DB881[];
+extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[];
+extern const u8 gUnknown_082DAB11[];
+extern const u8 gUnknown_082DB9BA[];
+extern const u8 gUnknown_082DAAFE[];
+extern const u8 gUnknown_082DAB0B[];
+extern const u8 BattleScript_FocusPunchSetUp[];
+extern const u8 BattleScript_LinkBattleWonOrLost[];
+extern const u8 BattleScript_FrontierTrainerBattleWon[];
+extern const u8 BattleScript_LocalTrainerBattleWon[];
+extern const u8 BattleScript_PayDayMoneyAndPickUpItems[];
+extern const u8 BattleScript_LocalBattleLost[];
+extern const u8 gUnknown_082DB9C8[];
+extern const u8 gUnknown_082DAA0B[];
+extern const u8 gUnknown_082DB9C1[];
+extern const u8 BattleScript_RanAwayUsingMonAbility[];
+extern const u8 BattleScript_SmokeBallEscape[];
+extern const u8 BattleScript_GotAwaySafely[];
+extern const u8 BattleScript_WildMonFled[];
+extern const u8 BattleScript_MoveUsedLoafingAround[];
+extern const u8 BattleScript_ActionSwitch[];
+extern const u8 BattleScript_PrintFailedToRunString[];
+
+// functions
+extern void dp12_8087EA4(void);
+extern void sub_80356D0(void);
+extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower
+extern void sub_8166188(void); // battle tower, sets link battle mons level but why?
+extern void sub_8165B88(u8* dst, u16 trainerId); // battle tower, gets language
+extern void sub_81DB4DC(u8* dst, u8 arg2); //
+extern void sub_81B9150(void);
+extern void sub_800AC34(void);
+extern void sub_80B3AF8(u8 taskId); // cable club
+extern void sub_8076918(u8 bank);
+extern void SetHealthboxSpriteVisible(u8 healthoxSpriteId);
+extern void sub_81A56B4(void); // battle frontier 2
+extern u8 sub_81A9E28(void); // battle frontier 2
+extern void sub_81A56E8(u8 bank); // battle frontier 2
+extern void sub_81B8FB0(u8, u8); // party menu
+extern u8 pokemon_order_func(u8); // party menu
+extern bool8 InBattlePyramid(void);
+
+// this file's functions
+static void CB2_InitBattleInternal(void);
+static void CB2_PreInitMultiBattle(void);
+static void CB2_PreInitIngamePlayerPartnerBattle(void);
+static void CB2_HandleStartMultiPartnerBattle(void);
+static void CB2_HandleStartMultiBattle(void);
+static void CB2_HandleStartBattle(void);
+static void TryCorrectShedinjaLanguage(struct Pokemon *mon);
+static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer);
+static void BattleMainCB1(void);
+static void sub_8038538(struct Sprite *sprite);
+static void sub_8038F14(void);
+static void sub_8038F34(void);
+static void sub_80392A8(void);
+static void sub_803937C(void);
+static void sub_803939C(void);
+void oac_poke_opponent(struct Sprite *sprite);
+static void sub_803980C(struct Sprite *sprite);
+static void sub_8039838(struct Sprite *sprite);
+static void sub_8039894(struct Sprite *sprite);
+static void sub_80398D0(struct Sprite *sprite);
+static void sub_8039A48(struct Sprite *sprite);
+static void sub_8039AF4(struct Sprite *sprite);
+static void SpriteCallbackDummy_3(struct Sprite *sprite);
+static void oac_poke_ally_(struct Sprite *sprite);
+static void SpecialStatusesClear(void);
+static void TurnValuesCleanUp(bool8 var0);
+static void SpriteCB_HealthBoxBounce(struct Sprite *sprite);
+static void BattleStartClearSetData(void);
+static void BattleIntroGetMonsData(void);
+static void BattleIntroPrepareBackgroundSlide(void);
+static void BattleIntroDrawTrainersOrMonsSprites(void);
+static void BattleIntroDrawPartySummaryScreens(void);
+static void BattleIntroPrintTrainerWantsToBattle(void);
+static void BattleIntroPrintWildMonAttacked(void);
+static void BattleIntroPrintOpponentSendsOut(void);
+static void BattleIntroPrintPlayerSendsOut(void);
+static void BattleIntroOpponent1SendsOutMonAnimation(void);
+static void BattleIntroOpponent2SendsOutMonAnimation(void);
+static void BattleIntroRecordMonsToDex(void);
+static void BattleIntroPlayer1SendsOutMonAnimation(void);
+static void TryDoEventsBeforeFirstTurn(void);
+static void HandleTurnActionSelectionState(void);
+static void RunTurnActionsFunctions(void);
+static void SetActionsAndBanksTurnOrder(void);
+static void sub_803CDF8(void);
+static bool8 sub_803CDB8(void);
+static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void);
+static void FreeResetData_ReturnToOvOrDoEvolutions(void);
+static void ReturnFromBattleToOverworld(void);
+static void TryEvolvePokemon(void);
+static void WaitForEvoSceneToFinish(void);
+static void HandleEndTurn_ContinueBattle(void);
+static void HandleEndTurn_BattleWon(void);
+static void HandleEndTurn_BattleLost(void);
+static void HandleEndTurn_RanFromBattle(void);
+static void HandleEndTurn_MonFled(void);
+static void HandleEndTurn_FinishBattle(void);
+static void HandleAction_UseMove(void);
+static void HandleAction_Switch(void);
+static void HandleAction_UseItem(void);
+static void HandleAction_Run(void);
+static void HandleAction_WatchesCarefully(void);
+static void HandleAction_SafariZoneBallThrow(void);
+static void HandleAction_ThrowPokeblock(void);
+static void HandleAction_GoNear(void);
+static void HandleAction_SafriZoneRun(void);
+static void HandleAction_Action9(void);
+static void HandleAction_Action11(void);
+static void HandleAction_NothingIsFainted(void);
+static void HandleAction_ActionFinished(void);
+
+// rom const data
+static void (* const sTurnActionsFuncsTable[])(void) =
+{
+ HandleAction_UseMove, // ACTION_USE_MOVE
+ HandleAction_UseItem, // ACTION_USE_ITEM
+ HandleAction_Switch, // ACTION_SWITCH
+ HandleAction_Run, // ACTION_RUN
+ HandleAction_WatchesCarefully, // ACTION_WATCHES_CAREFULLY
+ HandleAction_SafariZoneBallThrow, // ACTION_SAFARI_ZONE_BALL
+ HandleAction_ThrowPokeblock, // ACTION_POKEBLOCK_CASE
+ HandleAction_GoNear, // ACTION_GO_NEAR
+ HandleAction_SafriZoneRun, // ACTION_SAFARI_ZONE_RUN
+ HandleAction_Action9, // ACTION_9
+ HandleAction_RunBattleScript, // ACTION_RUN_BATTLESCRIPT
+ HandleAction_Action11, // not sure about this one
+ HandleAction_ActionFinished, // ACTION_FINISHED
+ HandleAction_NothingIsFainted, // ACTION_NOTHING_FAINTED
+};
+
+static void (* const sEndTurnFuncsTable[])(void) =
+{
+ HandleEndTurn_ContinueBattle, // battle outcome 0
+ HandleEndTurn_BattleWon, // BATTLE_WON
+ HandleEndTurn_BattleLost, // BATTLE_LOST
+ HandleEndTurn_BattleLost, // BATTLE_DREW
+ HandleEndTurn_RanFromBattle, // BATTLE_RAN
+ HandleEndTurn_FinishBattle, // BATTLE_PLAYER_TELEPORTED
+ HandleEndTurn_MonFled, // BATTLE_POKE_FLED
+ HandleEndTurn_FinishBattle, // BATTLE_CAUGHT
+ HandleEndTurn_FinishBattle, // battle outcome 8
+ HandleEndTurn_FinishBattle, // BATTLE_FORFEITED
+ HandleEndTurn_FinishBattle, // BATTLE_OPPONENT_TELEPORTED
+};
+
+const u8 gStatusConditionString_PoisonJpn[8] = _("どく$$$$$");
+const u8 gStatusConditionString_SleepJpn[8] = _("ねむり$$$$");
+const u8 gStatusConditionString_ParalysisJpn[8] = _("まひ$$$$$");
+const u8 gStatusConditionString_BurnJpn[8] = _("やけど$$$$");
+const u8 gStatusConditionString_IceJpn[8] = _("こおり$$$$");
+const u8 gStatusConditionString_ConfusionJpn[8] = _("こんらん$$$");
+const u8 gStatusConditionString_LoveJpn[8] = _("メロメロ$$$");
+
+const u8 * const gStatusConditionStringsTable[7][2] =
+{
+ {gStatusConditionString_PoisonJpn, gText_Poison},
+ {gStatusConditionString_SleepJpn, gText_Sleep},
+ {gStatusConditionString_ParalysisJpn, gText_Paralysis},
+ {gStatusConditionString_BurnJpn, gText_Burn},
+ {gStatusConditionString_IceJpn, gText_Ice},
+ {gStatusConditionString_ConfusionJpn, gText_Confusion},
+ {gStatusConditionString_LoveJpn, gText_Love}
+};
+
+static const u8 sUnknown_0831BCE0[][3] = {{0, 0, 0}, {3, 5, 0}, {2, 3, 0}, {1, 2, 0}, {1, 1, 0}};
+static const u8 sUnknown_0831BCEF[] = {4, 3, 2, 1};
+static const u8 sUnknown_0831BCF3[] = {4, 4, 4, 4};
+
+void CB2_InitBattle(void)
+{
+ MoveSaveBlocks_ResetHeap();
+ AllocateBattleResrouces();
+ AllocateBattleSpritesData();
+ AllocateMonSpritesGfx();
+ sub_8185F84();
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ CB2_InitBattleInternal();
+ }
+ else if (!(gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER))
+ {
+ HandleLinkBattleSetup();
+ SetMainCallback2(CB2_PreInitMultiBattle);
+ }
+ else
+ {
+ SetMainCallback2(CB2_PreInitIngamePlayerPartnerBattle);
+ }
+ gBattleCommunication[MULTIUSE_STATE] = 0;
+ }
+ else
+ {
+ CB2_InitBattleInternal();
+ }
+}
+
+static void CB2_InitBattleInternal(void)
+{
+ s32 i;
+
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+
+ CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 240);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x5051);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+
+ gBattle_WIN0H = 240;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId != STEVEN_PARTNER_ID)
+ {
+ gBattle_WIN0V = 159;
+ gBattle_WIN1H = 240;
+ gBattle_WIN1V = 32;
+ }
+ else
+ {
+ gBattle_WIN0V = 0x5051;
+ dp12_8087EA4();
+
+ for (i = 0; i < 80; i++)
+ {
+ gUnknown_02038C28.unk0[i] = 0xF0;
+ gUnknown_02038C28.unk780[i] = 0xF0;
+ }
+ for (i = 80; i < 160; i++)
+ {
+ #ifndef NONMATCHING
+ asm(""::"r"(i)); // needed to match
+ #endif // NONMATCHING
+
+ gUnknown_02038C28.unk0[i] = 0xFF10;
+ gUnknown_02038C28.unk780[i] = 0xFF10;
+ }
+
+ sub_80BA038(gUnknown_0831AC70);
+ }
+
+ ResetPaletteFade();
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+
+ gBattleTerrain = BattleSetup_GetTerrainId();
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ gBattleTerrain = BATTLE_TERRAIN_INSIDE;
+
+ sub_80356D0();
+ LoadBattleTextboxAndBackground();
+ ResetSpriteData();
+ ResetTasks();
+ LoadBattleEntryBackground();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ SetVBlankCallback(VBlankCB_Battle);
+ SetUpBattleVarsAndBirchZigzagoon();
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ SetMainCallback2(CB2_HandleStartMultiPartnerBattle);
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ SetMainCallback2(CB2_HandleStartMultiPartnerBattle);
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ SetMainCallback2(CB2_HandleStartMultiBattle);
+ else
+ SetMainCallback2(CB2_HandleStartBattle);
+
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED)))
+ {
+ CreateNPCTrainerParty(&gEnemyParty[0], gTrainerBattleOpponent_A, TRUE);
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ CreateNPCTrainerParty(&gEnemyParty[3], gTrainerBattleOpponent_B, FALSE);
+ SetWildMonHeldItem();
+ }
+
+ gMain.inBattle = TRUE;
+ gSaveBlock2Ptr->field_CA9_b = 0;
+
+ for (i = 0; i < 6; i++)
+ AdjustFriendship(&gPlayerParty[i], 3);
+
+ gBattleCommunication[MULTIUSE_STATE] = 0;
+}
+
+static void sub_8036A5C(void)
+{
+ u16 r6 = 0;
+ u16 species = 0;
+ u16 hp = 0;
+ u32 status = 0;
+ s32 i;
+
+ for (i = 0; i < 6; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
+
+ if (species == SPECIES_NONE)
+ continue;
+ if (species != SPECIES_EGG && hp != 0 && status == 0)
+ r6 |= 1 << i * 2;
+
+ if (species == SPECIES_NONE)
+ continue;
+ if (hp != 0 && (species == SPECIES_EGG || status != 0))
+ r6 |= 2 << i * 2;
+
+ if (species == SPECIES_NONE)
+ continue;
+ if (species != SPECIES_EGG && hp == 0)
+ r6 |= 3 << i * 2;
+ }
+
+ gBattleStruct->field_182 = r6;
+ *(&gBattleStruct->field_183) = r6 >> 8;
+ gBattleStruct->field_183 |= FlagGet(SYS_FRONTIER_PASS) << 7;
+}
+
+static void SetPlayerBerryDataInBattleStruct(void)
+{
+ s32 i;
+ struct BattleStruct *battleStruct = gBattleStruct;
+ struct BattleEnigmaBerry *battleBerry = &battleStruct->battleEnigmaBerry;
+
+ if (IsEnigmaBerryValid() == TRUE)
+ {
+ for (i = 0; i < BERRY_NAME_COUNT - 1; i++)
+ battleBerry->name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i];
+ battleBerry->name[i] = EOS;
+
+ for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++)
+ battleBerry->itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i];
+
+ battleBerry->holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
+ battleBerry->holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam;
+ }
+ else
+ {
+ const struct Berry* berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY));
+
+ for (i = 0; i < BERRY_NAME_COUNT - 1; i++)
+ battleBerry->name[i] = berryData->name[i];
+ battleBerry->name[i] = EOS;
+
+ for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++)
+ battleBerry->itemEffect[i] = 0;
+
+ battleBerry->holdEffect = HOLD_EFFECT_NONE;
+ battleBerry->holdEffectParam = 0;
+ }
+}
+
+static void SetAllPlayersBerryData(void)
+{
+ s32 i;
+ s32 j;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ if (IsEnigmaBerryValid() == TRUE)
+ {
+ for (i = 0; i < BERRY_NAME_COUNT - 1; i++)
+ {
+ gEnigmaBerries[0].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i];
+ gEnigmaBerries[2].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i];
+ }
+ gEnigmaBerries[0].name[i] = EOS;
+ gEnigmaBerries[2].name[i] = EOS;
+
+ for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++)
+ {
+ gEnigmaBerries[0].itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i];
+ gEnigmaBerries[2].itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i];
+ }
+
+ gEnigmaBerries[0].holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
+ gEnigmaBerries[2].holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
+ gEnigmaBerries[0].holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam;
+ gEnigmaBerries[2].holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam;
+ }
+ else
+ {
+ const struct Berry* berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY));
+
+ for (i = 0; i < BERRY_NAME_COUNT - 1; i++)
+ {
+ gEnigmaBerries[0].name[i] = berryData->name[i];
+ gEnigmaBerries[2].name[i] = berryData->name[i];
+ }
+ gEnigmaBerries[0].name[i] = EOS;
+ gEnigmaBerries[2].name[i] = EOS;
+
+ for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++)
+ {
+ gEnigmaBerries[0].itemEffect[i] = 0;
+ gEnigmaBerries[2].itemEffect[i] = 0;
+ }
+
+ gEnigmaBerries[0].holdEffect = 0;
+ gEnigmaBerries[2].holdEffect = 0;
+ gEnigmaBerries[0].holdEffectParam = 0;
+ gEnigmaBerries[2].holdEffectParam = 0;
+ }
+ }
+ else
+ {
+ s32 numPlayers;
+ struct BattleEnigmaBerry *src;
+ u8 r4;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ numPlayers = 2;
+ else
+ numPlayers = 4;
+
+ for (i = 0; i < numPlayers; i++)
+ {
+ src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2);
+ r4 = gLinkPlayers[i].lp_field_18;
+
+ for (j = 0; j < BERRY_NAME_COUNT - 1; j++)
+ gEnigmaBerries[r4].name[j] = src->name[j];
+ gEnigmaBerries[r4].name[j] = EOS;
+
+ for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; j++)
+ gEnigmaBerries[r4].itemEffect[j] = src->itemEffect[j];
+
+ gEnigmaBerries[r4].holdEffect = src->holdEffect;
+ gEnigmaBerries[r4].holdEffectParam = src->holdEffectParam;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 2; i++)
+ {
+ src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2);
+
+ for (j = 0; j < BERRY_NAME_COUNT - 1; j++)
+ {
+ gEnigmaBerries[i].name[j] = src->name[j];
+ gEnigmaBerries[i + 2].name[j] = src->name[j];
+ }
+ gEnigmaBerries[i].name[j] = EOS;
+ gEnigmaBerries[i + 2].name[j] = EOS;
+
+ for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; j++)
+ {
+ gEnigmaBerries[i].itemEffect[j] = src->itemEffect[j];
+ gEnigmaBerries[i + 2].itemEffect[j] = src->itemEffect[j];
+ }
+
+ gEnigmaBerries[i].holdEffect = src->holdEffect;
+ gEnigmaBerries[i + 2].holdEffect = src->holdEffect;
+ gEnigmaBerries[i].holdEffectParam = src->holdEffectParam;
+ gEnigmaBerries[i + 2].holdEffectParam = src->holdEffectParam;
+ }
+ }
+ }
+}
+
+static void sub_8036EB8(u8 arg0, u8 arg1)
+{
+ u8 var = 0;
+
+ if (gBlockRecvBuffer[0][0] == 256)
+ {
+ if (arg1 == 0)
+ gBattleTypeFlags |= BATTLE_TYPE_WILD | BATTLE_TYPE_TRAINER;
+ else
+ gBattleTypeFlags |= BATTLE_TYPE_TRAINER;
+ var++;
+ }
+
+ if (var == 0)
+ {
+ s32 i;
+
+ for (i = 0; i < arg0; i++)
+ {
+ if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0])
+ break;
+ }
+
+ if (i == arg0)
+ {
+ if (arg1 == 0)
+ gBattleTypeFlags |= BATTLE_TYPE_WILD | BATTLE_TYPE_TRAINER;
+ else
+ gBattleTypeFlags |= BATTLE_TYPE_TRAINER;
+ var++;
+ }
+
+ if (var == 0)
+ {
+ for (i = 0; i < arg0; i++)
+ {
+ if (gBlockRecvBuffer[i][0] == 0x300)
+ {
+ if (i != arg1 && i < arg1)
+ break;
+ }
+ if (gBlockRecvBuffer[i][0] > 0x300 && i != arg1)
+ break;
+ }
+
+ if (i == arg0)
+ gBattleTypeFlags |= BATTLE_TYPE_WILD | BATTLE_TYPE_TRAINER;
+ else
+ gBattleTypeFlags |= BATTLE_TYPE_TRAINER;
+ }
+ }
+}
+
+static void CB2_HandleStartBattle(void)
+{
+ u8 playerMultiplayerId;
+ u8 enemyMultiplayerId;
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+
+ playerMultiplayerId = GetMultiplayerId();
+ gBattleScripting.multiplayerId = playerMultiplayerId;
+ enemyMultiplayerId = playerMultiplayerId ^ BIT_SIDE;
+
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ sub_805EF14();
+ gBattleCommunication[MULTIUSE_STATE] = 1;
+ }
+ if (gLinkVSyncDisabled)
+ sub_800E0E8();
+ break;
+ case 1:
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ if (sub_800A520())
+ {
+ *(&gBattleStruct->field_180) = 0;
+ *(&gBattleStruct->field_181) = 3;
+ sub_8036A5C();
+ SetPlayerBerryDataInBattleStruct();
+
+ if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ {
+ gLinkPlayers[0].lp_field_18 = 0;
+ gLinkPlayers[1].lp_field_18 = 1;
+ }
+
+ SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32);
+ gBattleCommunication[MULTIUSE_STATE] = 2;
+ }
+ if (gLinkVSyncDisabled)
+ sub_800DFB4(0, 0);
+ }
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ gBattleTypeFlags |= BATTLE_TYPE_WILD;
+ gBattleCommunication[MULTIUSE_STATE] = 15;
+ SetAllPlayersBerryData();
+ }
+ break;
+ case 2:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ u8 taskId;
+
+ ResetBlockReceivedFlags();
+ sub_8036EB8(2, playerMultiplayerId);
+ SetAllPlayersBerryData();
+ taskId = CreateTask(task00_0800F6FC, 0);
+ gTasks[taskId].data[1] = 0x10E;
+ gTasks[taskId].data[2] = 0x5A;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[3] = gBattleStruct->field_182 | (gBattleStruct->field_183 << 8);
+ gTasks[taskId].data[4] = gBlockRecvBuffer[enemyMultiplayerId][1];
+ sub_8185F90(gBlockRecvBuffer[playerMultiplayerId][1]);
+ sub_8185F90(gBlockRecvBuffer[enemyMultiplayerId][1]);
+ sub_8068AA4();
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 3:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 4:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ memcpy(gEnemyParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 7:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 8:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ memcpy(gEnemyParty + 2, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 11:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 12:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ memcpy(gEnemyParty + 4, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
+ TryCorrectShedinjaLanguage(&gEnemyParty[0]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[1]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[2]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[3]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[4]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[5]);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 15:
+ sub_8032768();
+ sub_8184E58();
+ gBattleCommunication[SPRITES_INIT_STATE1] = 0;
+ gBattleCommunication[SPRITES_INIT_STATE2] = 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ s32 i;
+
+ for (i = 0; i < 2 && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++);
+
+ if (i == 2)
+ gBattleCommunication[MULTIUSE_STATE] = 16;
+ else
+ gBattleCommunication[MULTIUSE_STATE] = 18;
+ }
+ else
+ {
+ gBattleCommunication[MULTIUSE_STATE] = 18;
+ }
+ break;
+ case 16:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), &gRecordedBattleRngSeed, sizeof(gRecordedBattleRngSeed));
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 17:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ memcpy(&gRecordedBattleRngSeed, gBlockRecvBuffer[enemyMultiplayerId], sizeof(gRecordedBattleRngSeed));
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 18:
+ if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2]))
+ {
+ gPreBattleCallback1 = gMain.callback1;
+ gMain.callback1 = BattleMainCB1;
+ SetMainCallback2(BattleMainCB2);
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gBattleTypeFlags |= BATTLE_TYPE_20;
+ }
+ }
+ break;
+ case 5:
+ case 9:
+ case 13:
+ gBattleCommunication[MULTIUSE_STATE]++;
+ gBattleCommunication[1] = 1;
+ case 6:
+ case 10:
+ case 14:
+ if (--gBattleCommunication[1] == 0)
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ }
+}
+
+static void CB2_HandleStartMultiPartnerBattle(void)
+{
+ u8 playerMultiplayerId;
+ u8 enemyMultiplayerId;
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+
+ playerMultiplayerId = GetMultiplayerId();
+ gBattleScripting.multiplayerId = playerMultiplayerId;
+ enemyMultiplayerId = playerMultiplayerId ^ BIT_SIDE;
+
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ sub_805EF14();
+ gBattleCommunication[MULTIUSE_STATE] = 1;
+ }
+ if (gLinkVSyncDisabled)
+ sub_800E0E8();
+ // fall through
+ case 1:
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ u8 language;
+
+ gLinkPlayers[0].lp_field_18 = 0;
+ gLinkPlayers[1].lp_field_18 = 2;
+ gLinkPlayers[2].lp_field_18 = 1;
+ gLinkPlayers[3].lp_field_18 = 3;
+ GetFrontierTrainerName(gLinkPlayers[2].name, gTrainerBattleOpponent_A);
+ GetFrontierTrainerName(gLinkPlayers[3].name, gTrainerBattleOpponent_B);
+ sub_8165B88(&language, gTrainerBattleOpponent_A);
+ gLinkPlayers[2].language = language;
+ sub_8165B88(&language, gTrainerBattleOpponent_B);
+ gLinkPlayers[3].language = language;
+
+ if (sub_800A520())
+ {
+ *(&gBattleStruct->field_180) = 0;
+ *(&gBattleStruct->field_181) = 3;
+ sub_8036A5C();
+ SetPlayerBerryDataInBattleStruct();
+ SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32);
+ gBattleCommunication[MULTIUSE_STATE] = 2;
+ }
+
+ if (gLinkVSyncDisabled)
+ sub_800DFB4(0, 0);
+ }
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ gBattleTypeFlags |= BATTLE_TYPE_WILD;
+ gBattleCommunication[MULTIUSE_STATE] = 13;
+ SetAllPlayersBerryData();
+ }
+ break;
+ case 2:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ u8 taskId;
+
+ ResetBlockReceivedFlags();
+ sub_8036EB8(2, playerMultiplayerId);
+ SetAllPlayersBerryData();
+ taskId = CreateTask(task00_0800F6FC, 0);
+ gTasks[taskId].data[1] = 0x10E;
+ gTasks[taskId].data[2] = 0x5A;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[3] = 0x145;
+ gTasks[taskId].data[4] = 0x145;
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 3:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 4:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ if (gLinkPlayers[playerMultiplayerId].lp_field_18 != 0)
+ {
+ memcpy(gPlayerParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
+ memcpy(gPlayerParty + 3, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2);
+ }
+ else
+ {
+ memcpy(gPlayerParty, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon) * 2);
+ memcpy(gPlayerParty + 3, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2);
+ }
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 5:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon));
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 6:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ if (gLinkPlayers[playerMultiplayerId].lp_field_18 != 0)
+ {
+ memcpy(gPlayerParty + 2, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon));
+ memcpy(gPlayerParty + 5, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon));
+ }
+ else
+ {
+ memcpy(gPlayerParty + 2, gBlockRecvBuffer[playerMultiplayerId], sizeof(struct Pokemon));
+ memcpy(gPlayerParty + 5, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon));
+ }
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 7:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gEnemyParty, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 8:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ if (GetMultiplayerId() != 0)
+ {
+ memcpy(gEnemyParty, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2);
+ }
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 9:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gEnemyParty + 2, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 10:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ if (GetMultiplayerId() != 0)
+ {
+ memcpy(gEnemyParty + 2, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2);
+ }
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 11:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gEnemyParty + 4, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 12:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ if (GetMultiplayerId() != 0)
+ memcpy(gEnemyParty + 4, gBlockRecvBuffer[0], sizeof(struct Pokemon) * 2);
+ TryCorrectShedinjaLanguage(&gPlayerParty[0]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[1]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[2]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[3]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[4]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[5]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[0]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[1]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[2]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[3]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[4]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[5]);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 13:
+ sub_8032768();
+ sub_8184E58();
+ gBattleCommunication[SPRITES_INIT_STATE1] = 0;
+ gBattleCommunication[SPRITES_INIT_STATE2] = 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gBattleCommunication[MULTIUSE_STATE] = 14;
+ }
+ else
+ {
+ gBattleCommunication[MULTIUSE_STATE] = 16;
+ }
+ break;
+ case 14:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), &gRecordedBattleRngSeed, sizeof(gRecordedBattleRngSeed));
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 15:
+ if ((GetBlockReceivedStatus() & 3) == 3)
+ {
+ ResetBlockReceivedFlags();
+ if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ memcpy(&gRecordedBattleRngSeed, gBlockRecvBuffer[enemyMultiplayerId], sizeof(gRecordedBattleRngSeed));
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 16:
+ if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2]))
+ {
+ sub_8166188();
+ gPreBattleCallback1 = gMain.callback1;
+ gMain.callback1 = BattleMainCB1;
+ SetMainCallback2(BattleMainCB2);
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gBattleTypeFlags |= BATTLE_TYPE_20;
+ }
+ }
+ break;
+ }
+}
+
+static void sub_80379F8(u8 arrayIdPlus)
+{
+ s32 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ gUnknown_02022FF8[i].species = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_SPECIES);
+ gUnknown_02022FF8[i].heldItem = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HELD_ITEM);
+ GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_NICKNAME, gUnknown_02022FF8[i].nickname);
+ gUnknown_02022FF8[i].level = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LEVEL);
+ gUnknown_02022FF8[i].hp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_HP);
+ gUnknown_02022FF8[i].maxhp = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_MAX_HP);
+ gUnknown_02022FF8[i].status = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_STATUS);
+ gUnknown_02022FF8[i].personality = GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_PERSONALITY);
+ gUnknown_02022FF8[i].gender = GetMonGender(&gPlayerParty[arrayIdPlus + i]);
+ StripExtCtrlCodes(gUnknown_02022FF8[i].nickname);
+ if (GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE)
+ sub_81DB4DC(gUnknown_02022FF8[i].nickname, 0);
+ }
+ memcpy(gUnknown_02023058, gUnknown_02022FF8, sizeof(gUnknown_02022FF8));
+}
+
+static void CB2_PreInitMultiBattle(void)
+{
+ s32 i;
+ u8 playerMultiplierId;
+ s32 numPlayers = 4;
+ u8 r4 = 0xF;
+ u32* savedBattleTypeFlags;
+ void (**savedCallback)(void);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ {
+ numPlayers = 2;
+ r4 = 3;
+ }
+
+ playerMultiplierId = GetMultiplayerId();
+ gBattleScripting.multiplayerId = playerMultiplierId;
+ savedCallback = &gBattleStruct->savedCallback;
+ savedBattleTypeFlags = &gBattleStruct->savedBattleTypeFlags;
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ if (gReceivedRemoteLinkPlayers != 0 && sub_800A520())
+ {
+ gUnknown_02023058 = Alloc(sizeof(struct UnknownPokemonStruct2) * 3);
+ sub_80379F8(0);
+ SendBlock(bitmask_all_link_players_but_self(), gUnknown_02023058, sizeof(struct UnknownPokemonStruct2) * 3);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 1:
+ if ((GetBlockReceivedStatus() & r4) == r4)
+ {
+ ResetBlockReceivedFlags();
+ for (i = 0; i < numPlayers; i++)
+ {
+ if (i == playerMultiplierId)
+ continue;
+
+ if (numPlayers == 4)
+ {
+ if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[playerMultiplierId].lp_field_18 & 1))
+ || (gLinkPlayers[i].lp_field_18 & 1 && gLinkPlayers[playerMultiplierId].lp_field_18 & 1))
+ {
+ memcpy(gUnknown_02022FF8, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct2) * 3);
+ }
+ }
+ else
+ {
+ memcpy(gUnknown_02022FF8, gBlockRecvBuffer[i], sizeof(struct UnknownPokemonStruct2) * 3);
+ }
+ }
+ gBattleCommunication[MULTIUSE_STATE]++;
+ *savedCallback = gMain.savedCallback;
+ *savedBattleTypeFlags = gBattleTypeFlags;
+ gMain.savedCallback = CB2_PreInitMultiBattle;
+ sub_81B9150();
+ }
+ break;
+ case 2:
+ if (sub_800A520() && !gPaletteFade.active)
+ {
+ gBattleCommunication[MULTIUSE_STATE]++;
+ if (gLinkVSyncDisabled)
+ sub_800ADF8();
+ else
+ sub_800AC34();
+ }
+ break;
+ case 3:
+ if (gLinkVSyncDisabled)
+ {
+ if (sub_8010500())
+ {
+ gBattleTypeFlags = *savedBattleTypeFlags;
+ gMain.savedCallback = *savedCallback;
+ SetMainCallback2(CB2_InitBattleInternal);
+ Free(gUnknown_02023058);
+ gUnknown_02023058 = NULL;
+ }
+ }
+ else if (gReceivedRemoteLinkPlayers == 0)
+ {
+ gBattleTypeFlags = *savedBattleTypeFlags;
+ gMain.savedCallback = *savedCallback;
+ SetMainCallback2(CB2_InitBattleInternal);
+ Free(gUnknown_02023058);
+ gUnknown_02023058 = NULL;
+ }
+ break;
+ }
+}
+
+static void CB2_PreInitIngamePlayerPartnerBattle(void)
+{
+ u32* savedBattleTypeFlags;
+ void (**savedCallback)(void);
+
+ savedCallback = &gBattleStruct->savedCallback;
+ savedBattleTypeFlags = &gBattleStruct->savedBattleTypeFlags;
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ gUnknown_02023058 = Alloc(sizeof(struct UnknownPokemonStruct2) * 3);
+ sub_80379F8(3);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ *savedCallback = gMain.savedCallback;
+ *savedBattleTypeFlags = gBattleTypeFlags;
+ gMain.savedCallback = CB2_PreInitIngamePlayerPartnerBattle;
+ sub_81B9150();
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ gBattleCommunication[MULTIUSE_STATE] = 2;
+ gBattleTypeFlags = *savedBattleTypeFlags;
+ gMain.savedCallback = *savedCallback;
+ SetMainCallback2(CB2_InitBattleInternal);
+ Free(gUnknown_02023058);
+ gUnknown_02023058 = NULL;
+ }
+ break;
+ }
+}
+
+static void CB2_HandleStartMultiBattle(void)
+{
+ u8 playerMultiplayerId;
+ s32 id;
+ u8 var;
+
+ playerMultiplayerId = GetMultiplayerId();
+ gBattleScripting.multiplayerId = playerMultiplayerId;
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ sub_805EF14();
+ gBattleCommunication[MULTIUSE_STATE] = 1;
+ }
+ if (gLinkVSyncDisabled)
+ sub_800E0E8();
+ break;
+ case 1:
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ if (sub_800A520())
+ {
+ *(&gBattleStruct->field_180) = 0;
+ *(&gBattleStruct->field_181) = 3;
+ sub_8036A5C();
+ SetPlayerBerryDataInBattleStruct();
+
+ SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->field_180, 32);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ if (gLinkVSyncDisabled)
+ sub_800DFB4(0, 0);
+ }
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ gBattleTypeFlags |= BATTLE_TYPE_WILD;
+ gBattleCommunication[MULTIUSE_STATE] = 7;
+ SetAllPlayersBerryData();
+ }
+ break;
+ case 2:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ ResetBlockReceivedFlags();
+ sub_8036EB8(4, playerMultiplayerId);
+ SetAllPlayersBerryData();
+ sub_8068AA4();
+ var = CreateTask(task00_0800F6FC, 0);
+ gTasks[var].data[1] = 0x10E;
+ gTasks[var].data[2] = 0x5A;
+ gTasks[var].data[5] = 0;
+ gTasks[var].data[3] = 0;
+ gTasks[var].data[4] = 0;
+
+ for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ {
+ sub_8185F90(gBlockRecvBuffer[id][1]);
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ gTasks[var].data[3] |= gBlockRecvBuffer[id][1] & 0x3F;
+ break;
+ case 1:
+ gTasks[var].data[4] |= gBlockRecvBuffer[id][1] & 0x3F;
+ break;
+ case 2:
+ gTasks[var].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
+ break;
+ case 3:
+ gTasks[var].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
+ break;
+ }
+ }
+ ZeroEnemyPartyMons();
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ else
+ break;
+ // fall through
+ case 3:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 4:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ ResetBlockReceivedFlags();
+ for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ {
+ if (id == playerMultiplayerId)
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ case 3:
+ memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ }
+ }
+ else
+ {
+ if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerMultiplayerId].lp_field_18 & 1))
+ || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerMultiplayerId].lp_field_18 & 1)))
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ case 3:
+ memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ }
+ }
+ else
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ case 3:
+ memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ case 1:
+ case 2:
+ memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ }
+ }
+ }
+ }
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 5:
+ if (sub_800A520())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon));
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 6:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ ResetBlockReceivedFlags();
+ for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ {
+ if (id == playerMultiplayerId)
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ case 3:
+ memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ }
+ }
+ else
+ {
+ if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerMultiplayerId].lp_field_18 & 1))
+ || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerMultiplayerId].lp_field_18 & 1)))
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ case 3:
+ memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ }
+ }
+ else
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ case 3:
+ memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ case 1:
+ case 2:
+ memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ }
+ }
+ }
+ }
+ TryCorrectShedinjaLanguage(&gPlayerParty[0]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[1]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[2]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[3]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[4]);
+ TryCorrectShedinjaLanguage(&gPlayerParty[5]);
+
+ TryCorrectShedinjaLanguage(&gEnemyParty[0]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[1]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[2]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[3]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[4]);
+ TryCorrectShedinjaLanguage(&gEnemyParty[5]);
+
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 7:
+ sub_8032768();
+ sub_8184E58();
+ gBattleCommunication[SPRITES_INIT_STATE1] = 0;
+ gBattleCommunication[SPRITES_INIT_STATE2] = 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ for (id = 0; id < 4 && (gLinkPlayers[id].version & 0xFF) == 3; id++);
+
+ if (id == 4)
+ gBattleCommunication[MULTIUSE_STATE] = 8;
+ else
+ gBattleCommunication[MULTIUSE_STATE] = 10;
+ }
+ else
+ {
+ gBattleCommunication[MULTIUSE_STATE] = 10;
+ }
+ break;
+ case 8:
+ if (sub_800A520())
+ {
+ u32* ptr = (u32*)(&gBattleStruct->field_180);
+ ptr[0] = gBattleTypeFlags;
+ ptr[1] = gRecordedBattleRngSeed; // UB: overwrites berry data
+ SendBlock(bitmask_all_link_players_but_self(), ptr, 8);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 9:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ ResetBlockReceivedFlags();
+ for (var = 0; var < 4; var++)
+ {
+ u32 blockValue = gBlockRecvBuffer[var][0];
+ if (blockValue & 4)
+ {
+ memcpy(&gRecordedBattleRngSeed, &gBlockRecvBuffer[var][2], sizeof(gRecordedBattleRngSeed));
+ break;
+ }
+ }
+
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 10:
+ if (BattleInitAllSprites(&gBattleCommunication[SPRITES_INIT_STATE1], &gBattleCommunication[SPRITES_INIT_STATE2]))
+ {
+ gPreBattleCallback1 = gMain.callback1;
+ gMain.callback1 = BattleMainCB1;
+ SetMainCallback2(BattleMainCB2);
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gTrainerBattleOpponent_A = TRAINER_OPPONENT_800;
+ gBattleTypeFlags |= BATTLE_TYPE_20;
+ }
+ }
+ break;
+ }
+}
+
+void BattleMainCB2(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+ RunTasks();
+
+ if (gMain.heldKeys & B_BUTTON && gBattleTypeFlags & BATTLE_TYPE_RECORDED && sub_8186450())
+ {
+ gScriptResult = gBattleOutcome = BATTLE_PLAYER_TELEPORTED;
+ ResetPaletteFadeControl();
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ SetMainCallback2(CB2_QuitRecordedBattle);
+ }
+}
+
+static void FreeRestoreBattleData(void)
+{
+ gMain.callback1 = gPreBattleCallback1;
+ gUnknown_02039B28[0x15] = 3;
+ gMain.inBattle = 0;
+ ZeroEnemyPartyMons();
+ m4aSongNumStop(0x5A);
+ FreeMonSpritesGfx();
+ FreeBattleSpritesData();
+ FreeBattleResources();
+}
+
+void CB2_QuitRecordedBattle(void)
+{
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ m4aMPlayStop(&gMPlay_SE1);
+ m4aMPlayStop(&gMPlay_SE2);
+ FreeRestoreBattleData();
+ FreeAllWindowBuffers();
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
+
+void sub_8038528(struct Sprite* sprite)
+{
+ sprite->data0 = 0;
+ sprite->callback = sub_8038538;
+}
+
+static void sub_8038538(struct Sprite *sprite)
+{
+ u16 *arr = (u16*)(gDecompressionBuffer);
+
+ switch (sprite->data0)
+ {
+ case 0:
+ sprite->data0++;
+ sprite->data1 = 0;
+ sprite->data2 = 0x281;
+ sprite->data3 = 0;
+ sprite->data4 = 1;
+ // fall through
+ case 1:
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ s32 i;
+ s32 r2;
+ s32 r0;
+
+ sprite->data4 = 2;
+ r2 = sprite->data1 + sprite->data3 * 32;
+ r0 = sprite->data2 - sprite->data3 * 32;
+ for (i = 0; i < 29; i += 2)
+ {
+ arr[r2 + i] = 0x3D;
+ arr[r0 + i] = 0x3D;
+ }
+ sprite->data3++;
+ if (sprite->data3 == 21)
+ {
+ sprite->data0++;
+ sprite->data1 = 32;
+ }
+ }
+ break;
+ case 2:
+ sprite->data1--;
+ if (sprite->data1 == 20)
+ SetMainCallback2(CB2_InitBattle);
+ break;
+ }
+}
+
+static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 firstTrainer)
+{
+ u32 nameHash = 0;
+ u32 personalityValue;
+ u8 fixedIV;
+ s32 i, j;
+ u8 monsCount;
+
+ if (trainerNum == SECRET_BASE_OPPONENT)
+ return 0;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_x4000000)))
+ {
+ if (firstTrainer == TRUE)
+ ZeroEnemyPartyMons();
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ {
+ if (gTrainers[trainerNum].partySize > 3)
+ monsCount = 3;
+ else
+ monsCount = gTrainers[trainerNum].partySize;
+ }
+ else
+ {
+ monsCount = gTrainers[trainerNum].partySize;
+ }
+
+ for (i = 0; i < monsCount; i++)
+ {
+
+ if (gTrainers[trainerNum].doubleBattle == TRUE)
+ personalityValue = 0x80;
+ else if (gTrainers[trainerNum].encounterMusic_gender & 0x80)
+ personalityValue = 0x78;
+ else
+ personalityValue = 0x88;
+
+ for (j = 0; gTrainers[trainerNum].trainerName[j] != 0xFF; j++)
+ nameHash += gTrainers[trainerNum].trainerName[j];
+
+ switch (gTrainers[trainerNum].partyFlags)
+ {
+ case 0:
+ {
+ const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
+ break;
+ }
+ case PARTY_FLAG_CUSTOM_MOVES:
+ {
+ const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0);
+
+ for (j = 0; j < 4; j++)
+ {
+ SetMonData(&party[i], MON_DATA_MOVE1 + j, &partyData[i].moves[j]);
+ SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
+ }
+ break;
+ }
+ case PARTY_FLAG_HAS_ITEM:
+ {
+ const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0);
+
+ SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
+ break;
+ }
+ case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM:
+ {
+ const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, 2, 0);
+
+ SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
+
+ for (j = 0; j < 4; j++)
+ {
+ SetMonData(&party[i], MON_DATA_MOVE1 + j, &partyData[i].moves[j]);
+ SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
+ }
+ break;
+ }
+ }
+ }
+
+ gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle;
+ }
+
+ return gTrainers[trainerNum].partySize;
+}
+
+void sub_8038A04(void) // unused
+{
+ if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F)
+ SetGpuReg(REG_OFFSET_BG0CNT, 0x9800);
+}
+
+void VBlankCB_Battle(void)
+{
+ // change gRngSeed every vblank unless the battle could be recorded
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_FRONTIER | BATTLE_TYPE_RECORDED)))
+ Random();
+
+ SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X);
+ SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y);
+ SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
+ SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
+ SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X);
+ SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y);
+ SetGpuReg(REG_OFFSET_BG3HOFS, gBattle_BG3_X);
+ SetGpuReg(REG_OFFSET_BG3VOFS, gBattle_BG3_Y);
+ SetGpuReg(REG_OFFSET_WIN0H, gBattle_WIN0H);
+ SetGpuReg(REG_OFFSET_WIN0V, gBattle_WIN0V);
+ SetGpuReg(REG_OFFSET_WIN1H, gBattle_WIN1H);
+ SetGpuReg(REG_OFFSET_WIN1V, gBattle_WIN1V);
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_80BA0A8();
+}
+
+void nullsub_17(void)
+{
+
+}
+
+static void sub_8038B04(struct Sprite *sprite)
+{
+ if (sprite->data0 != 0)
+ sprite->pos1.x = sprite->data1 + ((sprite->data2 & 0xFF00) >> 8);
+ else
+ sprite->pos1.x = sprite->data1 - ((sprite->data2 & 0xFF00) >> 8);
+
+ sprite->data2 += 0x180;
+
+ if (sprite->affineAnimEnded)
+ {
+ FreeSpriteTilesByTag(0x2710);
+ FreeSpritePaletteByTag(0x2710);
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+void sub_8038B74(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_8038B04;
+ PlaySE(SE_BT_START);
+}
+
+static void sub_8038B94(u8 taskId)
+{
+ struct Pokemon *sp4 = NULL;
+ struct Pokemon *sp8 = NULL;
+ u8 r2 = gBattleScripting.multiplayerId;
+ u32 r7;
+ s32 i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ switch (gLinkPlayers[r2].lp_field_18)
+ {
+ case 0:
+ case 2:
+ sp4 = gPlayerParty;
+ sp8 = gEnemyParty;
+ break;
+ case 1:
+ case 3:
+ sp4 = gEnemyParty;
+ sp8 = gPlayerParty;
+ break;
+ }
+ }
+ else
+ {
+ sp4 = gPlayerParty;
+ sp8 = gEnemyParty;
+ }
+
+ r7 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2);
+ u16 hp = GetMonData(&sp4[i], MON_DATA_HP);
+ u32 status = GetMonData(&sp4[i], MON_DATA_STATUS);
+
+ if (species == SPECIES_NONE)
+ continue;
+ if (species != SPECIES_EGG && hp != 0 && status == 0)
+ r7 |= 1 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (hp != 0 && (species == SPECIES_EGG || status != 0))
+ r7 |= 2 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (species != SPECIES_EGG && hp == 0)
+ r7 |= 3 << i * 2;
+ }
+ gTasks[taskId].data[3] = r7;
+
+ r7 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2);
+ u16 hp = GetMonData(&sp8[i], MON_DATA_HP);
+ u32 status = GetMonData(&sp8[i], MON_DATA_STATUS);
+
+ if (species == SPECIES_NONE)
+ continue;
+ if (species != SPECIES_EGG && hp != 0 && status == 0)
+ r7 |= 1 << i * 2;
+
+ if (species == SPECIES_NONE)
+ continue;
+ if (hp != 0 && (species == SPECIES_EGG || status != 0))
+ r7 |= 2 << i * 2;
+
+ if (species == SPECIES_NONE)
+ continue;
+ if (species != SPECIES_EGG && hp == 0)
+ r7 |= 3 << i * 2;
+ }
+ gTasks[taskId].data[4] = r7;
+}
+
+void sub_8038D64(void)
+{
+ s32 i;
+ u8 taskId;
+
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ gBattleTypeFlags &= ~(BATTLE_TYPE_20);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ SetMainCallback2(gMain.savedCallback);
+ FreeBattleResources();
+ FreeBattleSpritesData();
+ FreeMonSpritesGfx();
+ }
+ else
+ {
+ CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0xF0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0x5051);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ gBattle_WIN0H = 0xF0;
+ gBattle_WIN0V = 0x5051;
+ dp12_8087EA4();
+
+ for (i = 0; i < 80; i++)
+ {
+ gUnknown_02038C28.unk0[i] = 0xF0;
+ gUnknown_02038C28.unk780[i] = 0xF0;
+ }
+ for (i = 80; i < 160; i++)
+ {
+ asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter
+ gUnknown_02038C28.unk0[i] = 0xFF10;
+ gUnknown_02038C28.unk780[i] = 0xFF10;
+ }
+
+ ResetPaletteFade();
+
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+
+ sub_80356D0();
+ LoadCompressedPalette(gUnknown_08C004E0, 0, 64);
+ ApplyPlayerChosenFrameToBattleMenu();
+ ResetSpriteData();
+ ResetTasks();
+ LoadBattleEntryBackground();
+ SetGpuReg(REG_OFFSET_WINOUT, 0x37);
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ SetVBlankCallback(VBlankCB_Battle);
+
+ taskId = CreateTask(task00_0800F6FC, 0);
+ gTasks[taskId].data[1] = 0x10E;
+ gTasks[taskId].data[2] = 0x5A;
+ gTasks[taskId].data[5] = 1;
+ sub_8038B94(taskId);
+ SetMainCallback2(sub_8038F14);
+ gBattleCommunication[MULTIUSE_STATE] = 0;
+ }
+}
+
+static void sub_8038F14(void)
+{
+ sub_8038F34();
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+static void sub_8038F34(void)
+{
+ s32 i;
+
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ gBattleCommunication[1] = 0xFF;
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ case 1:
+ if (--gBattleCommunication[1] == 0)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ u8 monsCount;
+
+ gMain.field_439_x4 = sub_8185FAC();
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ monsCount = 4;
+ else
+ monsCount = 2;
+
+ for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++);
+
+ if (!gSaveBlock2Ptr->field_CA9_b && i == monsCount)
+ {
+ if (FlagGet(SYS_FRONTIER_PASS))
+ {
+ FreeAllWindowBuffers();
+ SetMainCallback2(sub_80392A8);
+ }
+ else if (!gMain.field_439_x4)
+ {
+ SetMainCallback2(gMain.savedCallback);
+ FreeBattleResources();
+ FreeBattleSpritesData();
+ FreeMonSpritesGfx();
+ }
+ else if (gReceivedRemoteLinkPlayers == 0)
+ {
+ CreateTask(sub_80B3AF8, 5);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ else
+ {
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ }
+ else
+ {
+ SetMainCallback2(gMain.savedCallback);
+ FreeBattleResources();
+ FreeBattleSpritesData();
+ FreeMonSpritesGfx();
+ }
+ }
+ break;
+ case 3:
+ CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+
+ for (i = 0; i < 2; i++)
+ LoadChosenBattleElement(i);
+
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ case 5:
+ if (!FuncIsActiveTask(sub_80B3AF8))
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ case 6:
+ if (sub_800A520() == TRUE)
+ {
+ sub_800ADF8();
+ sub_814F9EC(gText_LinkStandby3, 0);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 7:
+ if (!IsTextPrinterActive(0))
+ {
+ if (sub_800A520() == TRUE)
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 8:
+ if (!gLinkVSyncDisabled)
+ sub_800AC34();
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ case 9:
+ if (!gMain.field_439_x4 || gLinkVSyncDisabled || gReceivedRemoteLinkPlayers != 1)
+ {
+ gMain.field_439_x4 = 0;
+ SetMainCallback2(gMain.savedCallback);
+ FreeBattleResources();
+ FreeBattleSpritesData();
+ FreeMonSpritesGfx();
+ }
+ break;
+ }
+}
+
+u32 sub_80391E0(u8 arrayId, u8 caseId)
+{
+ u32 ret = 0;
+
+ switch (caseId)
+ {
+ case 0:
+ ret = gUnknown_0831AA08[arrayId].bg;
+ break;
+ case 1:
+ ret = gUnknown_0831AA08[arrayId].charBaseIndex;
+ break;
+ case 2:
+ ret = gUnknown_0831AA08[arrayId].mapBaseIndex;
+ break;
+ case 3:
+ ret = gUnknown_0831AA08[arrayId].screenSize;
+ break;
+ case 4:
+ ret = gUnknown_0831AA08[arrayId].paletteMode;
+ break;
+ case 5:
+ ret = gUnknown_0831AA08[arrayId].priority;
+ break;
+ case 6:
+ ret = gUnknown_0831AA08[arrayId].baseTile;
+ break;
+ }
+
+ return ret;
+}
+
+static void sub_80392A8(void)
+{
+ s32 i;
+
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+ ResetPaletteFade();
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ sub_80356D0();
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ApplyPlayerChosenFrameToBattleMenu();
+
+ for (i = 0; i < 2; i++)
+ LoadChosenBattleElement(i);
+
+ ResetSpriteData();
+ ResetTasks();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ SetVBlankCallback(VBlankCB_Battle);
+ SetMainCallback2(sub_803937C);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gBattleCommunication[MULTIUSE_STATE] = 0;
+}
+
+static void sub_803937C(void)
+{
+ sub_803939C();
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+static void sub_803939C(void)
+{
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ case 1:
+ if (gMain.field_439_x4 && gReceivedRemoteLinkPlayers == 0)
+ CreateTask(sub_80B3AF8, 5);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ case 2:
+ if (!FuncIsActiveTask(sub_80B3AF8))
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ {
+ sub_814F9EC(gText_RecordBattleToPass, 0);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 4:
+ if (!IsTextPrinterActive(0))
+ {
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 0);
+ sub_814F9EC(gText_BattleYesNoChoice, 0xC);
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateCursorAt(1);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 5:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ if (gBattleCommunication[CURSOR_POSITION] != 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateCursorAt(0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateCursorAt(1);
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 1);
+ gBattleCommunication[1] = MoveRecordedBattleToSaveData();
+ gBattleCommunication[MULTIUSE_STATE] = 10;
+ }
+ else
+ {
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 6:
+ if (sub_800A520() == TRUE)
+ {
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 1);
+ if (gMain.field_439_x4)
+ {
+ sub_800ADF8();
+ sub_814F9EC(gText_LinkStandby3, 0);
+ }
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 8:
+ if (--gBattleCommunication[1] == 0)
+ {
+ if (gMain.field_439_x4 && !gLinkVSyncDisabled)
+ sub_800AC34();
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 9:
+ if (!gMain.field_439_x4 || gLinkVSyncDisabled || gReceivedRemoteLinkPlayers != 1)
+ {
+ gMain.field_439_x4 = 0;
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(gMain.savedCallback);
+ FreeBattleResources();
+ FreeBattleSpritesData();
+ FreeMonSpritesGfx();
+ }
+ }
+ break;
+ case 10:
+ if (gBattleCommunication[1] == 1)
+ {
+ PlaySE(SE_SAVE);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_BattleRecordedOnPass);
+ sub_814F9EC(gDisplayedStringBattle, 0);
+ gBattleCommunication[1] = 0x80;
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ else
+ {
+ BattleStringExpandPlaceholdersToDisplayedString(gText_BattleRecordCouldntBeSaved);
+ sub_814F9EC(gDisplayedStringBattle, 0);
+ gBattleCommunication[1] = 0x80;
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 11:
+ if (sub_800A520() == TRUE && !IsTextPrinterActive(0) && --gBattleCommunication[1] == 0)
+ {
+ if (gMain.field_439_x4)
+ {
+ sub_800ADF8();
+ sub_814F9EC(gText_LinkStandby3, 0);
+ }
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 12:
+ case 7:
+ if (!IsTextPrinterActive(0))
+ {
+ if (gMain.field_439_x4)
+ {
+ if (sub_800A520() == TRUE)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBattleCommunication[1] = 0x20;
+ gBattleCommunication[MULTIUSE_STATE] = 8;
+ }
+
+ }
+ else
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBattleCommunication[1] = 0x20;
+ gBattleCommunication[MULTIUSE_STATE] = 8;
+ }
+ }
+ break;
+ }
+}
+
+static void TryCorrectShedinjaLanguage(struct Pokemon *mon)
+{
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ u8 language = LANGUAGE_JAPANESE;
+
+ if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_SHEDINJA
+ && GetMonData(mon, MON_DATA_LANGUAGE) != language)
+ {
+ GetMonData(mon, MON_DATA_NICKNAME, nickname);
+ if (StringCompareWithoutExtCtrlCodes(nickname, gText_ShedinjaJapaneseName) == 0)
+ SetMonData(mon, MON_DATA_LANGUAGE, &language);
+ }
+}
+
+u32 sub_80397C4(u32 setId, u32 tableId)
+{
+ return gUnknown_0831ABA0[setId][tableId].width * 8;
+}
+
+#define tBank data0
+#define tSpeciesId data2
+
+void oac_poke_opponent(struct Sprite *sprite)
+{
+ sprite->callback = sub_803980C;
+ StartSpriteAnimIfDifferent(sprite, 0);
+ BeginNormalPaletteFade(0x20000, 0, 10, 10, 0x2108);
+}
+
+static void sub_803980C(struct Sprite *sprite)
+{
+ if ((gUnknown_020243FC & 1) == 0)
+ {
+ sprite->pos2.x += 2;
+ if (sprite->pos2.x == 0)
+ {
+ sprite->callback = sub_8039838;
+ }
+ }
+}
+
+static void sub_8039838(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ sub_8076918(sprite->tBank);
+ SetHealthboxSpriteVisible(gHealthBoxesIds[sprite->tBank]);
+ sprite->callback = sub_8039894;
+ StartSpriteAnimIfDifferent(sprite, 0);
+ BeginNormalPaletteFade(0x20000, 0, 10, 0, 0x2108);
+ }
+}
+
+static void sub_8039894(struct Sprite *sprite)
+{
+ if (!gPaletteFade.active)
+ {
+ BattleAnimateFrontSprite(sprite, sprite->tSpeciesId, FALSE, 1);
+ }
+}
+
+void SpriteCallbackDummy_2(struct Sprite *sprite)
+{
+
+}
+
+static void sub_80398BC(struct Sprite *sprite) // unused?
+{
+ sprite->data3 = 6;
+ sprite->data4 = 1;
+ sprite->callback = sub_80398D0;
+}
+
+static void sub_80398D0(struct Sprite *sprite)
+{
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ sprite->data4 = 8;
+ sprite->invisible ^= 1;
+ sprite->data3--;
+ if (sprite->data3 == 0)
+ {
+ sprite->invisible = FALSE;
+ sprite->callback = SpriteCallbackDummy_2;
+ gUnknown_02022F88 = 0;
+ }
+ }
+}
+
+// to get rid of once the struct is declared in a header
+struct MonCoords
+{
+ // This would use a bitfield, but sub_8079F44
+ // uses it as a u8 and casting won't match.
+ u8 coords; // u8 x:4, y:4;
+ u8 y_offset;
+};
+
+extern const struct MonCoords gMonFrontPicCoords[];
+extern const struct MonCoords gCastformFrontSpriteCoords[];
+
+void sub_8039934(struct Sprite *sprite)
+{
+ u8 bank = sprite->tBank;
+ u16 species;
+ u8 yOffset;
+
+ if (gBattleSpritesDataPtr->bankData[bank].transformSpecies != 0)
+ species = gBattleSpritesDataPtr->bankData[bank].transformSpecies;
+ else
+ species = sprite->tSpeciesId;
+
+ GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_PERSONALITY); // Unused return value
+
+ if (species == SPECIES_UNOWN)
+ {
+ u32 personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_PERSONALITY);
+ u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C);
+ u16 unownSpecies;
+
+ if (unownForm == 0)
+ unownSpecies = SPECIES_UNOWN; // Use the A Unown form
+ else
+ unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters
+
+ yOffset = gMonFrontPicCoords[unownSpecies].y_offset;
+ }
+ else if (species == SPECIES_CASTFORM)
+ {
+ yOffset = gCastformFrontSpriteCoords[gBattleMonForms[bank]].y_offset;
+ }
+ else if (species > NUM_SPECIES)
+ {
+ yOffset = gMonFrontPicCoords[SPECIES_NONE].y_offset;
+ }
+ else
+ {
+ yOffset = gMonFrontPicCoords[species].y_offset;
+ }
+
+ sprite->data3 = 8 - yOffset / 8;
+ sprite->data4 = 1;
+ sprite->callback = sub_8039A48;
+}
+
+static void sub_8039A48(struct Sprite *sprite)
+{
+ s32 i;
+
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ sprite->data4 = 2;
+ sprite->pos2.y += 8;
+ sprite->data3--;
+ if (sprite->data3 < 0)
+ {
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+ else
+ {
+ u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBankIdentity(sprite->tBank)] + (gBattleMonForms[sprite->tBank] << 11) + (sprite->data3 << 8);
+
+ for (i = 0; i < 0x100; i++)
+ *(dst++) = 0;
+
+ StartSpriteAnim(sprite, gBattleMonForms[sprite->tBank]);
+ }
+ }
+}
+
+void sub_8039AD8(struct Sprite *sprite)
+{
+ sprite->data3 = 8;
+ sprite->data4 = sprite->invisible;
+ sprite->callback = sub_8039AF4;
+}
+
+static void sub_8039AF4(struct Sprite *sprite)
+{
+ sprite->data3--;
+ if (sprite->data3 == 0)
+ {
+ sprite->invisible ^= 1;
+ sprite->data3 = 8;
+ }
+}
+
+void sub_8039B2C(struct Sprite *sprite)
+{
+ sprite->invisible = sprite->data4;
+ sprite->data4 = FALSE;
+ sprite->callback = SpriteCallbackDummy_2;
+}
+
+void sub_8039B58(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ if (!(gHitMarker & HITMARKER_NO_ANIMATIONS) || gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (HasTwoFramesAnimation(sprite->tSpeciesId))
+ StartSpriteAnim(sprite, 1);
+ }
+ BattleAnimateFrontSprite(sprite, sprite->tSpeciesId, TRUE, 1);
+ }
+}
+
+void sub_8039BB4(struct Sprite *sprite)
+{
+ sprite->callback = oac_poke_ally_;
+}
+
+static void oac_poke_ally_(struct Sprite *sprite)
+{
+ if ((gUnknown_020243FC & 1) == 0)
+ {
+ sprite->pos2.x -= 2;
+ if (sprite->pos2.x == 0)
+ {
+ sprite->callback = SpriteCallbackDummy_3;
+ sprite->data1 = 0;
+ }
+ }
+}
+
+void sub_80105DC(struct Sprite *sprite)
+{
+ sprite->callback = SpriteCallbackDummy_3;
+}
+
+static void SpriteCallbackDummy_3(struct Sprite *sprite)
+{
+}
+
+void sub_8039C00(struct Sprite *sprite)
+{
+ if (!(gUnknown_020243FC & 1))
+ {
+ sprite->pos2.x += sprite->data1;
+ sprite->pos2.y += sprite->data2;
+ }
+}
+
+void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d)
+{
+ u8 bounceHealthBoxSpriteId;
+ u8 spriteId2;
+
+ if (b)
+ {
+ if (gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2)
+ return;
+ }
+ else
+ {
+ if (gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4)
+ return;
+ }
+
+ bounceHealthBoxSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_HealthBoxBounce);
+ if (b == TRUE)
+ {
+ spriteId2 = gHealthBoxesIds[bank];
+ gBattleSpritesDataPtr->healthBoxesData[bank].field_2 = bounceHealthBoxSpriteId;
+ gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2 = 1;
+ gSprites[bounceHealthBoxSpriteId].data0 = 0x80;
+ }
+ else
+ {
+ spriteId2 = gBankSpriteIds[bank];
+ gBattleSpritesDataPtr->healthBoxesData[bank].field_3 = bounceHealthBoxSpriteId;
+ gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4 = 1;
+ gSprites[bounceHealthBoxSpriteId].data0 = 0xC0;
+ }
+ gSprites[bounceHealthBoxSpriteId].data1 = c;
+ gSprites[bounceHealthBoxSpriteId].data2 = d;
+ gSprites[bounceHealthBoxSpriteId].data3 = spriteId2;
+ gSprites[bounceHealthBoxSpriteId].data4 = b;
+ gSprites[spriteId2].pos2.x = 0;
+ gSprites[spriteId2].pos2.y = 0;
+}
+
+void dp11b_obj_free(u8 bank, bool8 b)
+{
+ u8 r4;
+
+ if (b == TRUE)
+ {
+ if (!gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2)
+ return;
+
+ r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_2].data3;
+ DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_2]);
+ gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2 = 0;
+ }
+ else
+ {
+ if (!gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4)
+ return;
+
+ r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_3].data3;
+ DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_3]);
+ gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4 = 0;
+ }
+ gSprites[r4].pos2.x = 0;
+ gSprites[r4].pos2.y = 0;
+}
+
+static void SpriteCB_HealthBoxBounce(struct Sprite *sprite)
+{
+ u8 spriteId = sprite->data3;
+ s32 var;
+
+ if (sprite->data4 == 1)
+ var = sprite->data0;
+ else
+ var = sprite->data0;
+
+ gSprites[spriteId].pos2.y = Sin(var, sprite->data2) + sprite->data2;
+ sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF;
+}
+
+void sub_8039E44(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ BattleAnimateBackSprite(sprite, sprite->tSpeciesId);
+}
+
+void sub_8039E60(struct Sprite *sprite)
+{
+ sub_8039E9C(sprite);
+ if (sprite->animEnded)
+ sprite->callback = SpriteCallbackDummy_3;
+}
+
+void sub_8039E84(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, 1);
+ sprite->callback = sub_8039E60;
+}
+
+void sub_8039E9C(struct Sprite *sprite)
+{
+ if (sprite->animDelayCounter == 0)
+ sprite->centerToCornerVecX = gUnknown_0831ACE0[sprite->animCmdIndex];
+}
+
+void nullsub_20(void)
+{
+
+}
+
+void BeginBattleIntro(void)
+{
+ BattleStartClearSetData();
+ gBattleCommunication[1] = 0;
+ gBattleMainFunc = BattleIntroGetMonsData;
+}
+
+static void BattleMainCB1(void)
+{
+ gBattleMainFunc();
+
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ gBattleBankFunc[gActiveBank]();
+}
+
+static void BattleStartClearSetData(void)
+{
+ s32 i;
+ u32 j;
+ u8 *dataPtr;
+
+ TurnValuesCleanUp(FALSE);
+ SpecialStatusesClear();
+
+ for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ {
+ gStatuses3[i] = 0;
+
+ dataPtr = (u8 *)&gDisableStructs[i];
+ for (j = 0; j < sizeof(struct DisableStruct); j++)
+ dataPtr[j] = 0;
+
+ gDisableStructs[i].isFirstTurn= 2;
+ gUnknown_02024284[i] = 0;
+ gLastUsedMovesByBanks[i] = 0;
+ gUnknown_02024250[i] = 0;
+ gUnknown_02024258[i] = 0;
+ gUnknown_02024260[i] = 0;
+ gUnknown_02024270[i] = 0xFF;
+ gLockedMoves[i] = 0;
+ gUnknownMovesUsedByBanks[i] = 0;
+ gBattleResources->flags->flags[i] = 0;
+ gUnknown_02024230[i] = 0;
+ }
+
+ for (i = 0; i < 2; i++)
+ {
+ gSideAffecting[i] = 0;
+
+ dataPtr = (u8 *)&gSideTimers[i];
+ for (j = 0; j < sizeof(struct SideTimer); j++)
+ dataPtr[j] = 0;
+ }
+
+ gBankAttacker = 0;
+ gBankTarget = 0;
+ gBattleWeather = 0;
+
+ dataPtr = (u8 *)&gWishFutureKnock;
+ for (i = 0; i < sizeof(struct WishFutureKnock); i++)
+ dataPtr[i] = 0;
+
+ gHitMarker = 0;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gSaveBlock2Ptr->optionsBattleSceneOff == TRUE)
+ gHitMarker |= HITMARKER_NO_ANIMATIONS;
+ }
+ else if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && sub_8185FB8())
+ gHitMarker |= HITMARKER_NO_ANIMATIONS;
+
+ gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
+
+ gMultiHitCounter = 0;
+ gBattleOutcome = 0;
+ gBattleExecBuffer = 0;
+ gPaydayMoney = 0;
+ gBattleResources->battleScriptsStack->size = 0;
+ gBattleResources->battleCallbackStack->size = 0;
+
+ for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++)
+ gBattleCommunication[i] = 0;
+
+ gPauseCounterBattle = 0;
+ gBattleMoveDamage = 0;
+ gUnknown_020243FC = 0;
+ gBattleScripting.animTurn = 0;
+ gBattleScripting.animTargetsHit = 0;
+ gLeveledUpInBattle = 0;
+ gAbsentBankFlags = 0;
+ gBattleStruct->runTries = 0;
+ gBattleStruct->field_79 = 0;
+ gBattleStruct->field_7A = 0;
+ *(&gBattleStruct->field_7C) = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275;
+ gBattleStruct->field_7B = 3;
+ gBattleStruct->wildVictorySong = 0;
+ gBattleStruct->moneyMultiplier = 1;
+
+ for (i = 0; i < 8; i++)
+ {
+ *((u8 *)gBattleStruct->mirrorMoves + i) = 0;
+ *((u8 *)gBattleStruct->usedHeldItems + i) = 0;
+ *((u8 *)gBattleStruct->choicedMove + i) = 0;
+ *((u8 *)gBattleStruct->changedItems + i) = 0;
+ *(i + 0 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(i + 1 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(i + 2 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(i + 3 * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ *(gBattleStruct->field_294 + i) = 6;
+ }
+
+ gBattleStruct->field_DF = 0;
+ gBattleStruct->field_92 = 0;
+
+ gRandomTurnNumber = Random();
+
+ dataPtr = (u8 *)(&gBattleResults);
+ for (i = 0; i < sizeof(struct BattleResults); i++)
+ dataPtr[i] = 0;
+
+ gBattleResults.unk5_6 = IsMonShiny(&gEnemyParty[0]);
+
+ gBattleStruct->field_2A0 = 0;
+ gBattleStruct->field_2A1 = 0;
+}
+
+void SwitchInClearSetData(void)
+{
+ struct DisableStruct disableStructCopy = gDisableStructs[gActiveBank];
+ s32 i;
+ u8 *ptr;
+
+ if (gBattleMoves[gCurrentMove].effect != EFFECT_BATON_PASS)
+ {
+ for (i = 0; i < BATTLE_STATS_NO; i++)
+ gBattleMons[gActiveBank].statStages[i] = 6;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
+ gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION;
+ if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBank)
+ {
+ gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
+ 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_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))
+ {
+ gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
+ gStatuses3[i] |= 0x10;
+ }
+ }
+ }
+ else
+ {
+ gBattleMons[gActiveBank].status2 = 0;
+ gStatuses3[gActiveBank] = 0;
+ }
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBank))
+ gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBank));
+ if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBank)
+ gBattleMons[i].status2 &= ~(STATUS2_WRAPPED);
+ }
+
+ gActionSelectionCursor[gActiveBank] = 0;
+ gMoveSelectionCursor[gActiveBank] = 0;
+
+ ptr = (u8 *)&gDisableStructs[gActiveBank];
+ for (i = 0; i < sizeof(struct DisableStruct); i++)
+ ptr[i] = 0;
+
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
+ {
+ gDisableStructs[gActiveBank].substituteHP = disableStructCopy.substituteHP;
+ gDisableStructs[gActiveBank].bankWithSureHit = disableStructCopy.bankWithSureHit;
+ gDisableStructs[gActiveBank].perishSong1 = disableStructCopy.perishSong1;
+ gDisableStructs[gActiveBank].perishSong2 = disableStructCopy.perishSong2;
+ gDisableStructs[gActiveBank].bankPreventingEscape = disableStructCopy.bankPreventingEscape;
+ }
+
+ gBattleMoveFlags = 0;
+ gDisableStructs[gActiveBank].isFirstTurn= 2;
+ gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit;
+ gLastUsedMovesByBanks[gActiveBank] = 0;
+ gUnknown_02024250[gActiveBank] = 0;
+ gUnknown_02024258[gActiveBank] = 0;
+ gUnknown_02024260[gActiveBank] = 0;
+ gUnknownMovesUsedByBanks[gActiveBank] = 0;
+ gUnknown_02024270[gActiveBank] = 0xFF;
+
+ *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0;
+ *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0;
+ *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+
+ gBattleStruct->field_92 &= ~(gBitTable[gActiveBank]);
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (i != gActiveBank && GetBankSide(i) != GetBankSide(gActiveBank))
+ {
+ *(gBattleStruct->mirrorMoves + i * 2 + 0) = 0;
+ *(gBattleStruct->mirrorMoves + i * 2 + 1) = 0;
+ }
+ *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ }
+
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0;
+
+ gBattleResources->flags->flags[gActiveBank] = 0;
+ gCurrentMove = 0;
+ gBattleStruct->field_DA = 0xFF;
+
+ ClearBankMoveHistory(gActiveBank);
+ ClearBankAbilityHistory(gActiveBank);
+}
+
+void FaintClearSetData(void)
+{
+ s32 i;
+ u8 *ptr;
+
+ for (i = 0; i < BATTLE_STATS_NO; i++)
+ gBattleMons[gActiveBank].statStages[i] = 6;
+
+ gBattleMons[gActiveBank].status2 = 0;
+ gStatuses3[gActiveBank] = 0;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
+ gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION;
+ if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBank))
+ gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBank));
+ if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBank)
+ gBattleMons[i].status2 &= ~(STATUS2_WRAPPED);
+ }
+
+ gActionSelectionCursor[gActiveBank] = 0;
+ gMoveSelectionCursor[gActiveBank] = 0;
+
+ ptr = (u8 *)&gDisableStructs[gActiveBank];
+ for (i = 0; i < sizeof(struct DisableStruct); 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].targetNotAffected = 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;
+
+ gLastUsedMovesByBanks[gActiveBank] = 0;
+ gUnknown_02024250[gActiveBank] = 0;
+ gUnknown_02024258[gActiveBank] = 0;
+ gUnknown_02024260[gActiveBank] = 0;
+ gUnknownMovesUsedByBanks[gActiveBank] = 0;
+ gUnknown_02024270[gActiveBank] = 0xFF;
+
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0;
+
+ *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0;
+ *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0;
+ *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(0 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(1 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(2 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(3 * 2 + gActiveBank * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+
+ gBattleStruct->field_92 &= ~(gBitTable[gActiveBank]);
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (i != gActiveBank && GetBankSide(i) != GetBankSide(gActiveBank))
+ {
+ *(gBattleStruct->mirrorMoves + i * 2 + 0) = 0;
+ *(gBattleStruct->mirrorMoves + i * 2 + 1) = 0;
+ }
+ *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = 0;
+ *(i * 8 + gActiveBank * 2 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = 0;
+ }
+
+ gBattleResources->flags->flags[gActiveBank] = 0;
+
+ gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1;
+ gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2;
+
+ ClearBankMoveHistory(gActiveBank);
+ ClearBankAbilityHistory(gActiveBank);
+}
+
+static void BattleIntroGetMonsData(void)
+{
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ gActiveBank = gBattleCommunication[1];
+ EmitGetMonData(0, 0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ break;
+ case 1:
+ if (gBattleExecBuffer == 0)
+ {
+ gBattleCommunication[1]++;
+ if (gBattleCommunication[1] == gNoOfAllBanks)
+ gBattleMainFunc = BattleIntroPrepareBackgroundSlide;
+ else
+ gBattleCommunication[MULTIUSE_STATE] = 0;
+ }
+ break;
+ }
+}
+
+static void BattleIntroPrepareBackgroundSlide(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBankByIdentity(0);
+ EmitIntroSlide(0, gBattleTerrain);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleMainFunc = BattleIntroDrawTrainersOrMonsSprites;
+ gBattleCommunication[0] = 0;
+ gBattleCommunication[1] = 0;
+ }
+}
+
+static void BattleIntroDrawTrainersOrMonsSprites(void)
+{
+ u8 *ptr;
+ s32 i;
+
+ if (gBattleExecBuffer)
+ return;
+
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ && GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ ptr = (u8 *)&gBattleMons[gActiveBank];
+ for (i = 0; i < sizeof(struct BattlePokemon); i++)
+ ptr[i] = 0;
+ }
+ else
+ {
+ u16* hpOnSwitchout;
+
+ ptr = (u8 *)&gBattleMons[gActiveBank];
+ for (i = 0; i < sizeof(struct BattlePokemon); i++)
+ ptr[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);
+ hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBankSide(gActiveBank)];
+ *hpOnSwitchout = gBattleMons[gActiveBank].hp;
+ for (i = 0; i < BATTLE_STATS_NO; i++)
+ gBattleMons[gActiveBank].statStages[i] = 6;
+ gBattleMons[gActiveBank].status2 = 0;
+ }
+
+ if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON1)
+ {
+ EmitDrawTrainerPic(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON1)
+ {
+ EmitDrawTrainerPic(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT
+ && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_LINK
+ | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_x4000000)))
+ {
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality);
+ }
+ }
+ else
+ {
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ {
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_LINK
+ | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_x4000000)))
+ {
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality);
+ }
+ EmitLoadMonSprite(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL);
+ }
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON2
+ || GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON2)
+ {
+ EmitDrawTrainerPic(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBankIdentity(gActiveBank) == IDENTITY_OPPONENT_MON2)
+ {
+ EmitDrawTrainerPic(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ sub_81A56B4();
+ }
+ gBattleMainFunc = BattleIntroDrawPartySummaryScreens;
+}
+
+static void BattleIntroDrawPartySummaryScreens(void)
+{
+ s32 i;
+ struct HpAndStatus hpStatus[6];
+
+ if (gBattleExecBuffer)
+ return;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE
+ || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ hpStatus[i].hp = 0xFFFF;
+ hpStatus[i].status = 0;
+ }
+ else
+ {
+ hpStatus[i].hp = GetMonData(&gEnemyParty[i], MON_DATA_HP);
+ hpStatus[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS);
+ }
+ }
+ gActiveBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
+ MarkBufferBankForExecution(gActiveBank);
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE
+ || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ hpStatus[i].hp = 0xFFFF;
+ hpStatus[i].status = 0;
+ }
+ else
+ {
+ hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
+ }
+ }
+ gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattleMainFunc = BattleIntroPrintTrainerWantsToBattle;
+ }
+ else
+ {
+ // The struct gets set here, but nothing is ever done with it since
+ // wild battles don't show the party summary.
+ // Still, there's no point in having dead code.
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE
+ || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ hpStatus[i].hp = 0xFFFF;
+ hpStatus[i].status = 0;
+ }
+ else
+ {
+ hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
+ }
+ }
+
+ gBattleMainFunc = BattleIntroPrintWildMonAttacked;
+ }
+
+}
+
+static void BattleIntroPrintTrainerWantsToBattle(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ PrepareStringBattle(STRINGID_INTROMSG, gActiveBank);
+ gBattleMainFunc = BattleIntroPrintOpponentSendsOut;
+ }
+}
+
+static void BattleIntroPrintWildMonAttacked(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
+ PrepareStringBattle(STRINGID_INTROMSG, 0);
+ }
+}
+
+static void BattleIntroPrintOpponentSendsOut(void)
+{
+ u32 identity;
+
+ if (gBattleExecBuffer)
+ return;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ identity = IDENTITY_OPPONENT_MON1;
+ else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ identity = IDENTITY_OPPONENT_MON1;
+ else
+ identity = IDENTITY_PLAYER_MON1;
+ }
+ else
+ identity = IDENTITY_OPPONENT_MON1;
+
+ PrepareStringBattle(STRINGID_INTROSENDOUT, GetBankByIdentity(identity));
+ gBattleMainFunc = BattleIntroOpponent1SendsOutMonAnimation;
+}
+
+static void BattleIntroOpponent2SendsOutMonAnimation(void)
+{
+ u32 identity;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ identity = IDENTITY_OPPONENT_MON2;
+ else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ identity = IDENTITY_OPPONENT_MON2;
+ else
+ identity = IDENTITY_PLAYER_MON2;
+ }
+ else
+ identity = IDENTITY_OPPONENT_MON2;
+
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankIdentity(gActiveBank) == identity)
+ {
+ EmitIntroTrainerBallThrow(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+
+ gBattleMainFunc = BattleIntroRecordMonsToDex;
+}
+
+#ifdef NONMATCHING
+static void BattleIntroOpponent1SendsOutMonAnimation(void)
+{
+ u32 identity;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ identity = IDENTITY_OPPONENT_MON1;
+ else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ identity = IDENTITY_OPPONENT_MON1;
+ else
+ identity = IDENTITY_PLAYER_MON1;
+ }
+ else
+ identity = IDENTITY_OPPONENT_MON1;
+
+ if (gBattleExecBuffer)
+ return;
+
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankIdentity(gActiveBank) == identity)
+ {
+ EmitIntroTrainerBallThrow(0);
+ MarkBufferBankForExecution(gActiveBank);
+ if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS))
+ {
+ gBattleMainFunc = BattleIntroOpponent2SendsOutMonAnimation;
+ return;
+ }
+ }
+ }
+
+ gBattleMainFunc = BattleIntroRecordMonsToDex;
+}
+
+#else
+__attribute__((naked))
+static void BattleIntroOpponent1SendsOutMonAnimation(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ ldr r0, =gBattleTypeFlags\n\
+ ldr r2, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 17\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0803B298\n\
+ movs r0, 0x80\n\
+ lsls r0, 18\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _0803B298\n\
+ movs r1, 0x80\n\
+ lsls r1, 24\n\
+ ands r1, r2\n\
+ negs r0, r1\n\
+ orrs r0, r1\n\
+ lsrs r5, r0, 31\n\
+ b _0803B29A\n\
+ .pool\n\
+_0803B288:\n\
+ ldr r1, =gBattleMainFunc\n\
+ ldr r0, =BattleIntroOpponent2SendsOutMonAnimation\n\
+ b _0803B2F0\n\
+ .pool\n\
+_0803B298:\n\
+ movs r5, 0x1\n\
+_0803B29A:\n\
+ ldr r0, =gBattleExecBuffer\n\
+ ldr r2, [r0]\n\
+ cmp r2, 0\n\
+ bne _0803B2F2\n\
+ ldr r0, =gActiveBank\n\
+ strb r2, [r0]\n\
+ ldr r1, =gNoOfAllBanks\n\
+ adds r4, r0, 0\n\
+ ldrb r1, [r1]\n\
+ cmp r2, r1\n\
+ bcs _0803B2EC\n\
+ adds r6, r4, 0\n\
+_0803B2B2:\n\
+ ldrb r0, [r4]\n\
+ bl GetBankIdentity\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, r5\n\
+ bne _0803B2D8\n\
+ movs r0, 0\n\
+ bl EmitIntroTrainerBallThrow\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, =gBattleTypeFlags\n\
+ ldr r0, [r0]\n\
+ ldr r1, =0x00008040\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0803B288\n\
+_0803B2D8:\n\
+ ldrb r0, [r6]\n\
+ adds r0, 0x1\n\
+ strb r0, [r6]\n\
+ ldr r1, =gNoOfAllBanks\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r4, =gActiveBank\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _0803B2B2\n\
+_0803B2EC:\n\
+ ldr r1, =gBattleMainFunc\n\
+ ldr r0, =BattleIntroRecordMonsToDex\n\
+_0803B2F0:\n\
+ str r0, [r1]\n\
+_0803B2F2:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+static void BattleIntroRecordMonsToDex(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT
+ && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_LINK
+ | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_x4000000)))
+ {
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality);
+ }
+ }
+ gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
+ }
+}
+
+void sub_803B3AC(void) // unused
+{
+ if (gBattleExecBuffer == 0)
+ gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
+}
+
+static void BattleIntroPrintPlayerSendsOut(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u8 identity;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ identity = IDENTITY_PLAYER_MON1;
+ else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ identity = IDENTITY_PLAYER_MON1;
+ else
+ identity = IDENTITY_OPPONENT_MON1;
+ }
+ else
+ identity = IDENTITY_PLAYER_MON1;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
+ PrepareStringBattle(STRINGID_INTROSENDOUT, GetBankByIdentity(identity));
+
+ gBattleMainFunc = BattleIntroPlayer1SendsOutMonAnimation;
+ }
+}
+
+static void BattleIntroPlayer2SendsOutMonAnimation(void)
+{
+ u32 identity;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ identity = IDENTITY_PLAYER_MON2;
+ else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ identity = IDENTITY_PLAYER_MON2;
+ else
+ identity = IDENTITY_OPPONENT_MON2;
+ }
+ else
+ identity = IDENTITY_PLAYER_MON2;
+
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankIdentity(gActiveBank) == identity)
+ {
+ EmitIntroTrainerBallThrow(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+
+ gBattleStruct->switchInAbilitiesCounter = 0;
+ gBattleStruct->switchInItemsCounter = 0;
+ gBattleStruct->overworldWeatherDone = FALSE;
+
+ gBattleMainFunc = TryDoEventsBeforeFirstTurn;
+}
+
+static void BattleIntroPlayer1SendsOutMonAnimation(void)
+{
+ u32 identity;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ identity = IDENTITY_PLAYER_MON1;
+ else if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ identity = IDENTITY_PLAYER_MON1;
+ else
+ identity = IDENTITY_OPPONENT_MON1;
+ }
+ else
+ identity = IDENTITY_PLAYER_MON1;
+
+ if (gBattleExecBuffer)
+ return;
+
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankIdentity(gActiveBank) == identity)
+ {
+ EmitIntroTrainerBallThrow(0);
+ MarkBufferBankForExecution(gActiveBank);
+ if (gBattleTypeFlags & (BATTLE_TYPE_MULTI))
+ {
+ gBattleMainFunc = BattleIntroPlayer2SendsOutMonAnimation;
+ return;
+ }
+ }
+ }
+
+ gBattleStruct->switchInAbilitiesCounter = 0;
+ gBattleStruct->switchInItemsCounter = 0;
+ gBattleStruct->overworldWeatherDone = FALSE;
+
+ gBattleMainFunc = TryDoEventsBeforeFirstTurn;
+}
+
+void sub_803B598(void) // unused
+{
+ if (gBattleExecBuffer == 0)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], FALSE);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+
+ gBattleStruct->switchInAbilitiesCounter = 0;
+ gBattleStruct->switchInItemsCounter = 0;
+ gBattleStruct->overworldWeatherDone = FALSE;
+
+ gBattleMainFunc = TryDoEventsBeforeFirstTurn;
+ }
+}
+
+static void TryDoEventsBeforeFirstTurn(void)
+{
+ s32 i;
+ s32 j;
+ u8 effect = 0;
+
+ if (gBattleExecBuffer)
+ return;
+
+ if (gBattleStruct->switchInAbilitiesCounter == 0)
+ {
+ for (i = 0; i < gNoOfAllBanks; i++)
+ gBanksByTurnOrder[i] = i;
+ for (i = 0; i < gNoOfAllBanks - 1; i++)
+ {
+ for (j = i + 1; j < gNoOfAllBanks; j++)
+ {
+ if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], TRUE) != 0)
+ SwapTurnOrder(i, j);
+ }
+ }
+ }
+ if (!gBattleStruct->overworldWeatherDone
+ && AbilityBattleEffects(0, 0, 0, ABILITYEFFECT_SWITCH_IN_WEATHER, 0) != 0)
+ {
+ gBattleStruct->overworldWeatherDone = TRUE;
+ return;
+ }
+ // check all switch in abilities happening from the fastest mon to slowest
+ while (gBattleStruct->switchInAbilitiesCounter < gNoOfAllBanks)
+ {
+ if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBanksByTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0)
+ effect++;
+
+ gBattleStruct->switchInAbilitiesCounter++;
+
+ if (effect)
+ return;
+ }
+ if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) != 0)
+ return;
+ if (AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) != 0)
+ return;
+ // check all switch in items having effect from the fastest mon to slowest
+ while (gBattleStruct->switchInItemsCounter < gNoOfAllBanks)
+ {
+ if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBanksByTurnOrder[gBattleStruct->switchInItemsCounter], 0) != 0)
+ effect++;
+
+ gBattleStruct->switchInItemsCounter++;
+
+ if (effect)
+ return;
+ }
+ for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ {
+ *(gBattleStruct->field_5C + i) = 6;
+ gActionForBanks[i] = ACTION_INIT_VALUE;
+ gChosenMovesByBanks[i] = MOVE_NONE;
+ }
+ TurnValuesCleanUp(FALSE);
+ SpecialStatusesClear();
+ *(&gBattleStruct->field_91) = gAbsentBankFlags;
+ sub_814F9EC(gText_EmptyString3, 0);
+ gBattleMainFunc = HandleTurnActionSelectionState;
+ ResetSentPokesToOpponentValue();
+
+ for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++)
+ gBattleCommunication[i] = 0;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ gBattleMons[i].status2 &= ~(STATUS2_FLINCHED);
+
+ *(&gBattleStruct->turnEffectsTracker) = 0;
+ *(&gBattleStruct->turnEffectsBank) = 0;
+ *(&gBattleStruct->field_1A0) = 0;
+ *(&gBattleStruct->field_1A1) = 0;
+ gBattleScripting.atk49_state = 0;
+ gBattleStruct->field_4D = 0;
+ gBattleStruct->turncountersTracker = 0;
+ gBattleMoveFlags = 0;
+
+ gRandomTurnNumber = Random();
+
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ {
+ StopCryAndClearCrySongs();
+ BattleScriptExecute(gUnknown_082DB8BE);
+ }
+}
+
+static void HandleEndTurn_ContinueBattle(void)
+{
+ s32 i;
+
+ if (gBattleExecBuffer == 0)
+ {
+ gBattleMainFunc = BattleTurnPassed;
+ for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++)
+ gBattleCommunication[i] = 0;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ gBattleMons[i].status2 &= ~(STATUS2_FLINCHED);
+ if ((gBattleMons[i].status1 & STATUS_SLEEP) && (gBattleMons[i].status2 & STATUS2_MULTIPLETURNS))
+ CancelMultiTurnMoves(i);
+ }
+ gBattleStruct->turnEffectsTracker = 0;
+ gBattleStruct->turnEffectsBank = 0;
+ gBattleStruct->field_1A0 = 0;
+ gBattleStruct->field_1A1 = 0;
+ gBattleStruct->turncountersTracker = 0;
+ gBattleMoveFlags = 0;
+ }
+}
+
+void BattleTurnPassed(void)
+{
+ s32 i;
+
+ TurnValuesCleanUp(TRUE);
+ if (gBattleOutcome == 0)
+ {
+ if (UpdateTurnCounters() != 0)
+ return;
+ if (TurnBasedEffects() != 0)
+ return;
+ }
+ if (sub_8041728() != 0)
+ return;
+ gBattleStruct->field_4D = 0;
+ if (sub_8041364() != 0)
+ return;
+
+ TurnValuesCleanUp(FALSE);
+ gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
+ gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
+ gHitMarker &= ~(HITMARKER_x400000);
+ gHitMarker &= ~(HITMARKER_x100000);
+ gBattleScripting.animTurn = 0;
+ gBattleScripting.animTargetsHit = 0;
+ gBattleScripting.atk49_state = 0;
+ gBattleMoveDamage = 0;
+ gBattleMoveFlags = 0;
+
+ for (i = 0; i < 5; i++)
+ gBattleCommunication[i] = 0;
+
+ if (gBattleOutcome != 0)
+ {
+ gCurrentActionFuncId = 12;
+ gBattleMainFunc = RunTurnActionsFunctions;
+ return;
+ }
+
+ if (gBattleResults.battleTurnCounter < 0xFF)
+ {
+ gBattleResults.battleTurnCounter++;
+ gBattleStruct->field_DA++;
+ }
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ gActionForBanks[i] = ACTION_INIT_VALUE;
+ gChosenMovesByBanks[i] = MOVE_NONE;
+ }
+
+ for (i = 0; i < 4; i++)
+ *(gBattleStruct->field_5C + i) = 6;
+
+ *(&gBattleStruct->field_91) = gAbsentBankFlags;
+ sub_814F9EC(gText_EmptyString3, 0);
+ gBattleMainFunc = HandleTurnActionSelectionState;
+ gRandomTurnNumber = Random();
+
+ if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
+ BattleScriptExecute(gUnknown_082DB881);
+ else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_DA == 0)
+ BattleScriptExecute(gUnknown_082DB8BE);
+}
+
+u8 IsRunningFromBattleImpossible(void)
+{
+ u8 holdEffect;
+ u8 side;
+ s32 i;
+
+ if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[gActiveBank].holdEffect;
+ else
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item);
+
+ gStringBank = gActiveBank;
+
+ if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
+ return 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ return 0;
+ if (gBattleMons[gActiveBank].ability == ABILITY_RUN_AWAY)
+ return 0;
+
+ side = GetBankSide(gActiveBank);
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (side != GetBankSide(i)
+ && gBattleMons[i].ability == ABILITY_SHADOW_TAG)
+ {
+ gBattleScripting.bank = i;
+ gLastUsedAbility = gBattleMons[i].ability;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ return 2;
+ }
+ if (side != GetBankSide(i)
+ && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE
+ && gBattleMons[gActiveBank].type1 != TYPE_FLYING
+ && gBattleMons[gActiveBank].type2 != TYPE_FLYING
+ && gBattleMons[i].ability == ABILITY_ARENA_TRAP)
+ {
+ gBattleScripting.bank = i;
+ gLastUsedAbility = gBattleMons[i].ability;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ return 2;
+ }
+ }
+ i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBank, ABILITY_MAGNET_PULL, 0, 0);
+ if (i != 0 && (gBattleMons[gActiveBank].type1 == TYPE_STEEL || gBattleMons[gActiveBank].type2 == TYPE_STEEL))
+ {
+ gBattleScripting.bank = i - 1;
+ gLastUsedAbility = gBattleMons[i - 1].ability;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ return 2;
+ }
+ if ((gBattleMons[gActiveBank].status2 & (STATUS2_ESCAPE_PREVENTION | STATUS2_WRAPPED))
+ || (gStatuses3[gActiveBank] & STATUS3_ROOTED))
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ return 1;
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ return 1;
+ }
+ return 0;
+}
+
+void sub_803BDA0(u8 bank)
+{
+ s32 i;
+ u8 r4;
+ u8 r1;
+
+ // gBattleStruct->field_60[bank][i]
+
+ for (i = 0; i < 3; i++)
+ gUnknown_0203CF00[i] = *(bank * 3 + i + (u8*)(gBattleStruct->field_60));
+
+ r4 = pokemon_order_func(gBattlePartyID[bank]);
+ r1 = pokemon_order_func(*(gBattleStruct->field_5C + bank));
+ sub_81B8FB0(r4, r1);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ *(bank * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
+ *((bank ^ BIT_MON) * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
+ }
+ }
+ else
+ {
+ for (i = 0; i < 3; i++)
+ {
+ *(bank * 3 + i + (u8*)(gBattleStruct->field_60)) = gUnknown_0203CF00[i];
+ }
+ }
+}
+
+enum
+{
+ STATE_TURN_START_RECORD,
+ STATE_BEFORE_ACTION_CHOSEN,
+ STATE_WAIT_ACTION_CHOSEN,
+ STATE_WAIT_ACTION_CASE_CHOSEN,
+ STATE_WAIT_ACTION_CONFIRMED_STANDBY,
+ STATE_WAIT_ACTION_CONFIRMED,
+ STATE_SELECTION_SCRIPT,
+ STATE_WAIT_SET_BEFORE_ACTION,
+ STATE_SELECTION_SCRIPT_MAY_RUN
+};
+
+static void HandleTurnActionSelectionState(void)
+{
+ s32 i;
+
+ gBattleCommunication[ACTIONS_CONFIRMED_COUNT] = 0;
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ u8 identity = GetBankIdentity(gActiveBank);
+ switch (gBattleCommunication[gActiveBank])
+ {
+ case STATE_TURN_START_RECORD: // recorded battle related on start of every turn
+ sub_8185FD0();
+ gBattleCommunication[gActiveBank] = STATE_BEFORE_ACTION_CHOSEN;
+ break;
+ case STATE_BEFORE_ACTION_CHOSEN: // choose an action
+ *(gBattleStruct->field_5C + gActiveBank) = 6;
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI
+ || !(identity & BIT_MON)
+ || gBattleStruct->field_91 & gBitTable[GetBankByIdentity(identity ^ BIT_MON)]
+ || gBattleCommunication[GetBankByIdentity(identity ^ BIT_MON)] == 5)
+ {
+ if (gBattleStruct->field_91 & gBitTable[gActiveBank])
+ {
+ gActionForBanks[gActiveBank] = ACTION_NOTHING_FAINTED;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED;
+ else
+ gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ }
+ else
+ {
+ if (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS
+ || gBattleMons[gActiveBank].status2 & STATUS2_RECHARGE)
+ {
+ gActionForBanks[gActiveBank] = ACTION_USE_MOVE;
+ gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ }
+ else
+ {
+ EmitChooseAction(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleCommunication[gActiveBank]++;
+ }
+ }
+ }
+ break;
+ case STATE_WAIT_ACTION_CHOSEN: // try to perform an action
+ if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ {
+ RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]);
+ gActionForBanks[gActiveBank] = gBattleBufferB[gActiveBank][1];
+
+ switch (gBattleBufferB[gActiveBank][1])
+ {
+ case ACTION_USE_MOVE:
+ if (AreAllMovesUnusable())
+ {
+ gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ *(gBattleStruct->moveTarget + gActiveBank) = gBattleBufferB[gActiveBank][3];
+ return;
+ }
+ else if (gDisableStructs[gActiveBank].encoredMove != 0)
+ {
+ gChosenMovesByBanks[gActiveBank] = gDisableStructs[gActiveBank].encoredMove;
+ *(gBattleStruct->chosenMovePositions + gActiveBank) = gDisableStructs[gActiveBank].encoredMovePos;
+ gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ return;
+ }
+ else
+ {
+ struct ChooseMoveStruct moveInfo;
+
+ moveInfo.species = gBattleMons[gActiveBank].species;
+ moveInfo.monType1 = gBattleMons[gActiveBank].type1;
+ moveInfo.monType2 = gBattleMons[gActiveBank].type2;
+
+ for (i = 0; i < 4; i++)
+ {
+ moveInfo.moves[i] = gBattleMons[gActiveBank].moves[i];
+ moveInfo.currentPp[i] = gBattleMons[gActiveBank].pp[i];
+ moveInfo.maxPp[i] = CalculatePPWithBonus(
+ gBattleMons[gActiveBank].moves[i],
+ gBattleMons[gActiveBank].ppBonuses,
+ i);
+ }
+
+ EmitChooseMove(0, (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) != 0, FALSE, &moveInfo);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ break;
+ case ACTION_USE_ITEM:
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK
+ | BATTLE_TYPE_FRONTIER_NO_PYRAMID
+ | BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_x2000000))
+ {
+ RecordedBattle_ClearBankAction(gActiveBank, 1);
+ gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed;
+ gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
+ return;
+ }
+ else
+ {
+ EmitOpenBag(0, gBattleStruct->field_60[gActiveBank]);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ break;
+ case ACTION_SWITCH:
+ *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank];
+ if (gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)
+ || gBattleTypeFlags & BATTLE_TYPE_ARENA
+ || gStatuses3[gActiveBank] & STATUS3_ROOTED)
+ {
+ EmitChoosePokemon(0, 2, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBank]);
+ }
+ else if ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_SHADOW_TAG, 0, 0))
+ || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_ARENA_TRAP, 0, 0))
+ && gBattleMons[gActiveBank].type1 != TYPE_FLYING
+ && gBattleMons[gActiveBank].type2 != TYPE_FLYING
+ && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE)
+ || ((i = AbilityBattleEffects(ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK, gActiveBank, ABILITY_MAGNET_PULL, 0, 0))
+ && (gBattleMons[gActiveBank].type1 == TYPE_STEEL
+ || gBattleMons[gActiveBank].type2 == TYPE_STEEL)))
+ {
+ EmitChoosePokemon(0, ((i - 1) << 4) | 4, 6, gLastUsedAbility, gBattleStruct->field_60[gActiveBank]);
+ }
+ else
+ {
+ if (gActiveBank == 2 && gActionForBanks[0] == ACTION_SWITCH)
+ EmitChoosePokemon(0, 0, *(gBattleStruct->field_5C + 0), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]);
+ else if (gActiveBank == 3 && gActionForBanks[1] == ACTION_SWITCH)
+ EmitChoosePokemon(0, 0, *(gBattleStruct->field_5C + 1), ABILITY_NONE, gBattleStruct->field_60[gActiveBank]);
+ else
+ EmitChoosePokemon(0, 0, 6, ABILITY_NONE, gBattleStruct->field_60[gActiveBank]);
+ }
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case ACTION_SAFARI_ZONE_BALL:
+ if (IsPlayerPartyAndPokemonStorageFull())
+ {
+ gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB11;
+ gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
+ return;
+ }
+ break;
+ case ACTION_POKEBLOCK_CASE:
+ EmitOpenBag(0, gBattleStruct->field_60[gActiveBank]);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case ACTION_CANCEL_PARTNER:
+ gBattleCommunication[gActiveBank] = 7;
+ gBattleCommunication[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] = 1;
+ RecordedBattle_ClearBankAction(gActiveBank, 1);
+ if (gBattleMons[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].status2 & STATUS2_MULTIPLETURNS
+ || gBattleMons[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].status2 & STATUS2_RECHARGE)
+ {
+ EmitCmd50(0);
+ MarkBufferBankForExecution(gActiveBank);
+ return;
+ }
+ else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_SWITCH)
+ {
+ RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 2);
+ }
+ else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_RUN)
+ {
+ RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1);
+ }
+ else if (gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_USE_MOVE
+ && (gProtectStructs[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].onlyStruggle
+ || gDisableStructs[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)].encoredMove))
+ {
+ RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_PALACE
+ && gActionForBanks[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)] == ACTION_USE_MOVE)
+ {
+ gRngValue = gBattlePalaceMoveSelectionRngValue;
+ RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 1);
+ }
+ else
+ {
+ RecordedBattle_ClearBankAction(GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON), 3);
+ }
+ EmitCmd50(0);
+ MarkBufferBankForExecution(gActiveBank);
+ return;
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
+ && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000)
+ && gBattleBufferB[gActiveBank][1] == ACTION_RUN)
+ {
+ gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB9BA;
+ gBattleCommunication[gActiveBank] = 8;
+ *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
+ return;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
+ && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ && gBattleBufferB[gActiveBank][1] == ACTION_RUN)
+ {
+ BattleScriptExecute(gUnknown_082DAAFE);
+ gBattleCommunication[gActiveBank] = 1;
+ }
+ else if (IsRunningFromBattleImpossible() != 0
+ && gBattleBufferB[gActiveBank][1] == ACTION_RUN)
+ {
+ gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB0B;
+ gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
+ return;
+ }
+ else
+ {
+ gBattleCommunication[gActiveBank]++;
+ }
+ }
+ break;
+ case STATE_WAIT_ACTION_CASE_CHOSEN:
+ if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ {
+ switch (gActionForBanks[gActiveBank])
+ {
+ case ACTION_USE_MOVE:
+ switch (gBattleBufferB[gActiveBank][1])
+ {
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ gActionForBanks[gActiveBank] = gBattleBufferB[gActiveBank][1];
+ return;
+ case 15:
+ gActionForBanks[gActiveBank] = ACTION_SWITCH;
+ sub_803CDF8();
+ return;
+ default:
+ sub_818603C(2);
+ if ((gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8)) == 0xFFFF)
+ {
+ gBattleCommunication[gActiveBank] = 1;
+ RecordedBattle_ClearBankAction(gActiveBank, 1);
+ }
+ else if (TrySetCantSelectMoveBattleScript())
+ {
+ RecordedBattle_ClearBankAction(gActiveBank, 1);
+ gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
+ *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
+ gBattleBufferB[gActiveBank][1] = 0;
+ *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_WAIT_ACTION_CHOSEN;
+ return;
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_PALACE))
+ {
+ RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][2]);
+ RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][3]);
+ }
+ *(gBattleStruct->chosenMovePositions + gActiveBank) = gBattleBufferB[gActiveBank][2];
+ gChosenMovesByBanks[gActiveBank] = gBattleMons[gActiveBank].moves[*(gBattleStruct->chosenMovePositions + gActiveBank)];
+ *(gBattleStruct->moveTarget + gActiveBank) = gBattleBufferB[gActiveBank][3];
+ gBattleCommunication[gActiveBank]++;
+ }
+ break;
+ }
+ break;
+ case ACTION_USE_ITEM:
+ if ((gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8)) == 0)
+ {
+ gBattleCommunication[gActiveBank] = 1;
+ }
+ else
+ {
+ gLastUsedItem = (gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8));
+ gBattleCommunication[gActiveBank]++;
+ }
+ break;
+ case ACTION_SWITCH:
+ if (gBattleBufferB[gActiveBank][1] == 6)
+ {
+ gBattleCommunication[gActiveBank] = 1;
+ RecordedBattle_ClearBankAction(gActiveBank, 1);
+ }
+ else
+ {
+ sub_803CDF8();
+ gBattleCommunication[gActiveBank]++;
+ }
+ break;
+ case ACTION_RUN:
+ gHitMarker |= HITMARKER_RUN;
+ gBattleCommunication[gActiveBank]++;
+ break;
+ case ACTION_WATCHES_CAREFULLY:
+ gBattleCommunication[gActiveBank]++;
+ break;
+ case ACTION_SAFARI_ZONE_BALL:
+ gBattleCommunication[gActiveBank]++;
+ break;
+ case ACTION_POKEBLOCK_CASE:
+ if ((gBattleBufferB[gActiveBank][1] | (gBattleBufferB[gActiveBank][2] << 8)) != 0)
+ {
+ gBattleCommunication[gActiveBank]++;
+ }
+ else
+ {
+ gBattleCommunication[gActiveBank] = STATE_BEFORE_ACTION_CHOSEN;
+ }
+ break;
+ case ACTION_GO_NEAR:
+ gBattleCommunication[gActiveBank]++;
+ break;
+ case ACTION_SAFARI_ZONE_RUN:
+ gHitMarker |= HITMARKER_RUN;
+ gBattleCommunication[gActiveBank]++;
+ break;
+ case ACTION_9:
+ gBattleCommunication[gActiveBank]++;
+ break;
+ }
+ }
+ break;
+ case STATE_WAIT_ACTION_CONFIRMED_STANDBY:
+ if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ {
+ i = (sub_803CDB8() != 0);
+
+ if (((gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_DOUBLE)) != BATTLE_TYPE_DOUBLE)
+ || (identity & BIT_MON)
+ || (*(&gBattleStruct->field_91) & gBitTable[GetBankByIdentity(identity ^ BIT_MON)]))
+ {
+ EmitLinkStandbyMsg(0, 0, i);
+ }
+ else
+ {
+ EmitLinkStandbyMsg(0, 1, i);
+ }
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleCommunication[gActiveBank]++;
+ }
+ break;
+ case STATE_WAIT_ACTION_CONFIRMED:
+ if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ {
+ gBattleCommunication[ACTIONS_CONFIRMED_COUNT]++;
+ }
+ break;
+ case STATE_SELECTION_SCRIPT:
+ if (*(gBattleStruct->selectionScriptFinished + gActiveBank))
+ {
+ gBattleCommunication[gActiveBank] = *(gBattleStruct->stateIdAfterSelScript + gActiveBank);
+ }
+ else
+ {
+ gBankAttacker = gActiveBank;
+ gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank];
+ if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ {
+ gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
+ }
+ gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr;
+ }
+ break;
+ case STATE_WAIT_SET_BEFORE_ACTION:
+ if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ {
+ gBattleCommunication[gActiveBank] = 1;
+ }
+ break;
+ case STATE_SELECTION_SCRIPT_MAY_RUN:
+ if (*(gBattleStruct->selectionScriptFinished + gActiveBank))
+ {
+ if (gBattleBufferB[gActiveBank][1] == 13)
+ {
+ gHitMarker |= HITMARKER_RUN;
+ gActionForBanks[gActiveBank] = ACTION_RUN;
+ gBattleCommunication[gActiveBank] = STATE_WAIT_ACTION_CONFIRMED_STANDBY;
+ }
+ else
+ {
+ RecordedBattle_ClearBankAction(gActiveBank, 1);
+ gBattleCommunication[gActiveBank] = *(gBattleStruct->stateIdAfterSelScript + gActiveBank);
+ }
+ }
+ else
+ {
+ gBankAttacker = gActiveBank;
+ gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank];
+ if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
+ {
+ gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
+ }
+ gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr;
+ }
+ break;
+ }
+ }
+
+ // check if everyone chose actions
+ if (gBattleCommunication[ACTIONS_CONFIRMED_COUNT] == gNoOfAllBanks)
+ {
+ sub_818603C(1);
+ gBattleMainFunc = SetActionsAndBanksTurnOrder;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ {
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gActionForBanks[i] == ACTION_SWITCH)
+ sub_80571DC(i, *(gBattleStruct->field_5C + i));
+ }
+ }
+ }
+}
+
+static bool8 sub_803CDB8(void)
+{
+ s32 i, var;
+
+ for (var = 0, i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleCommunication[i] == 5)
+ var++;
+ }
+
+ if (var + 1 == gNoOfAllBanks)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void sub_803CDF8(void)
+{
+ *(gBattleStruct->field_5C + gActiveBank) = gBattleBufferB[gActiveBank][1];
+ RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF;
+ *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0);
+ *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBank][3];
+
+ *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0);
+ *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4;
+ *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBank][3];
+ }
+}
+
+void SwapTurnOrder(u8 id1, u8 id2)
+{
+ u32 temp = gActionsByTurnOrder[id1];
+ gActionsByTurnOrder[id1] = gActionsByTurnOrder[id2];
+ gActionsByTurnOrder[id2] = temp;
+
+ temp = gBanksByTurnOrder[id1];
+ gBanksByTurnOrder[id1] = gBanksByTurnOrder[id2];
+ gBanksByTurnOrder[id2] = temp;
+}
+
+u8 GetWhoStrikesFirst(u8 bank1, u8 bank2, bool8 ignoreChosenMoves)
+{
+ u8 strikesFirst = 0;
+ u8 speedMultiplierBank1 = 0, speedMultiplierBank2 = 0;
+ u32 speedBank1 = 0, speedBank2 = 0;
+ u8 holdEffect = 0;
+ u8 holdEffectParam = 0;
+ u16 moveBank1 = 0, moveBank2 = 0;
+
+ if (WEATHER_HAS_EFFECT)
+ {
+ if ((gBattleMons[bank1].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
+ || (gBattleMons[bank1].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
+ speedMultiplierBank1 = 2;
+ else
+ speedMultiplierBank1 = 1;
+
+ if ((gBattleMons[bank2].ability == ABILITY_SWIFT_SWIM && gBattleWeather & WEATHER_RAIN_ANY)
+ || (gBattleMons[bank2].ability == ABILITY_CHLOROPHYLL && gBattleWeather & WEATHER_SUN_ANY))
+ speedMultiplierBank2 = 2;
+ else
+ speedMultiplierBank2 = 1;
+ }
+ else
+ {
+ speedMultiplierBank1 = 1;
+ speedMultiplierBank2 = 1;
+ }
+
+ speedBank1 = (gBattleMons[bank1].speed * speedMultiplierBank1)
+ * (gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][0])
+ / (gStatStageRatios[gBattleMons[bank1].statStages[STAT_STAGE_SPEED]][1]);
+
+ if (gBattleMons[bank1].item == ITEM_ENIGMA_BERRY)
+ {
+ holdEffect = gEnigmaBerries[bank1].holdEffect;
+ holdEffectParam = gEnigmaBerries[bank1].holdEffectParam;
+ }
+ else
+ {
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[bank1].item);
+ holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank1].item);
+ }
+
+ // badge boost
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
+ && FlagGet(BADGE03_GET)
+ && GetBankSide(bank1) == SIDE_PLAYER)
+ {
+ speedBank1 = (speedBank1 * 110) / 100;
+ }
+
+ if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
+ speedBank1 /= 2;
+
+ if (gBattleMons[bank1].status1 & STATUS_PARALYSIS)
+ speedBank1 /= 4;
+
+ if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
+ speedBank1 = UINT_MAX;
+
+ // check second bank's speed
+
+ speedBank2 = (gBattleMons[bank2].speed * speedMultiplierBank2)
+ * (gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][0])
+ / (gStatStageRatios[gBattleMons[bank2].statStages[STAT_STAGE_SPEED]][1]);
+
+ if (gBattleMons[bank2].item == ITEM_ENIGMA_BERRY)
+ {
+ holdEffect = gEnigmaBerries[bank2].holdEffect;
+ holdEffectParam = gEnigmaBerries[bank2].holdEffectParam;
+ }
+ else
+ {
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[bank2].item);
+ holdEffectParam = ItemId_GetHoldEffectParam(gBattleMons[bank2].item);
+ }
+
+ // badge boost
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000 | BATTLE_TYPE_FRONTIER))
+ && FlagGet(BADGE03_GET)
+ && GetBankSide(bank2) == SIDE_PLAYER)
+ {
+ speedBank2 = (speedBank2 * 110) / 100;
+ }
+
+ if (holdEffect == HOLD_EFFECT_MACHO_BRACE)
+ speedBank2 /= 2;
+
+ if (gBattleMons[bank2].status1 & STATUS_PARALYSIS)
+ speedBank2 /= 4;
+
+ if (holdEffect == HOLD_EFFECT_QUICK_CLAW && gRandomTurnNumber < (0xFFFF * holdEffectParam) / 100)
+ speedBank2 = UINT_MAX;
+
+ if (ignoreChosenMoves)
+ {
+ moveBank1 = MOVE_NONE;
+ moveBank2 = MOVE_NONE;
+ }
+ else
+ {
+ if (gActionForBanks[bank1] == ACTION_USE_MOVE)
+ {
+ if (gProtectStructs[bank1].onlyStruggle)
+ moveBank1 = MOVE_STRUGGLE;
+ else
+ moveBank1 = gBattleMons[bank1].moves[*(gBattleStruct->chosenMovePositions + bank1)];
+ }
+ else
+ moveBank1 = MOVE_NONE;
+
+ if (gActionForBanks[bank2] == ACTION_USE_MOVE)
+ {
+ if (gProtectStructs[bank2].onlyStruggle)
+ moveBank2 = MOVE_STRUGGLE;
+ else
+ moveBank2 = gBattleMons[bank2].moves[*(gBattleStruct->chosenMovePositions + bank2)];
+ }
+ else
+ moveBank2 = MOVE_NONE;
+ }
+
+ // both move priorities are different than 0
+ if (gBattleMoves[moveBank1].priority != 0 || gBattleMoves[moveBank2].priority != 0)
+ {
+ // both priorities are the same
+ if (gBattleMoves[moveBank1].priority == gBattleMoves[moveBank2].priority)
+ {
+ if (speedBank1 == speedBank2 && Random() & 1)
+ strikesFirst = 2; // same speeds, same priorities
+ else if (speedBank1 < speedBank2)
+ strikesFirst = 1; // bank2 has more speed
+
+ // else bank1 has more speed
+ }
+ else if (gBattleMoves[moveBank1].priority < gBattleMoves[moveBank2].priority)
+ strikesFirst = 1; // bank2's move has greater priority
+
+ // else bank1's move has greater priority
+ }
+ // both priorities are equal to 0
+ else
+ {
+ if (speedBank1 == speedBank2 && Random() & 1)
+ strikesFirst = 2; // same speeds, same priorities
+ else if (speedBank1 < speedBank2)
+ strikesFirst = 1; // bank2 has more speed
+
+ // else bank1 has more speed
+ }
+
+ return strikesFirst;
+}
+
+static void SetActionsAndBanksTurnOrder(void)
+{
+ s32 var = 0;
+ s32 i, j;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
+ gBanksByTurnOrder[var] = gActiveBank;
+ var++;
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (gActionForBanks[gActiveBank] == ACTION_RUN)
+ {
+ var = 5;
+ break;
+ }
+ }
+ }
+ else
+ {
+ if (gActionForBanks[0] == ACTION_RUN)
+ {
+ gActiveBank = 0;
+ var = 5;
+ }
+ if (gActionForBanks[2] == ACTION_RUN)
+ {
+ gActiveBank = 2;
+ var = 5;
+ }
+ }
+
+ if (var == 5)
+ {
+ gActionsByTurnOrder[0] = gActionForBanks[gActiveBank];
+ gBanksByTurnOrder[0] = gActiveBank;
+ var = 1;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (i != gActiveBank)
+ {
+ gActionsByTurnOrder[var] = gActionForBanks[i];
+ gBanksByTurnOrder[var] = i;
+ var++;
+ }
+ }
+ gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
+ gBattleStruct->focusPunchBank = 0;
+ return;
+ }
+ else
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (gActionForBanks[gActiveBank] == ACTION_USE_ITEM || gActionForBanks[gActiveBank] == ACTION_SWITCH)
+ {
+ gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
+ gBanksByTurnOrder[var] = gActiveBank;
+ var++;
+ }
+ }
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (gActionForBanks[gActiveBank] != ACTION_USE_ITEM && gActionForBanks[gActiveBank] != ACTION_SWITCH)
+ {
+ gActionsByTurnOrder[var] = gActionForBanks[gActiveBank];
+ gBanksByTurnOrder[var] = gActiveBank;
+ var++;
+ }
+ }
+ for (i = 0; i < gNoOfAllBanks - 1; i++)
+ {
+ for (j = i + 1; j < gNoOfAllBanks; j++)
+ {
+ u8 bank1 = gBanksByTurnOrder[i];
+ u8 bank2 = gBanksByTurnOrder[j];
+ if (gActionsByTurnOrder[i] != ACTION_USE_ITEM
+ && gActionsByTurnOrder[j] != ACTION_USE_ITEM
+ && gActionsByTurnOrder[i] != ACTION_SWITCH
+ && gActionsByTurnOrder[j] != ACTION_SWITCH)
+ {
+ if (GetWhoStrikesFirst(bank1, bank2, FALSE))
+ SwapTurnOrder(i, j);
+ }
+ }
+ }
+ }
+ }
+ gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
+ gBattleStruct->focusPunchBank = 0;
+}
+
+static void TurnValuesCleanUp(bool8 var0)
+{
+ s32 i;
+ u8 *dataPtr;
+
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (var0)
+ {
+ gProtectStructs[gActiveBank].protected = 0;
+ gProtectStructs[gActiveBank].endured = 0;
+ }
+ else
+ {
+ dataPtr = (u8*)(&gProtectStructs[gActiveBank]);
+ for (i = 0; i < sizeof(struct ProtectStruct); i++)
+ dataPtr[i] = 0;
+
+ if (gDisableStructs[gActiveBank].isFirstTurn)
+ gDisableStructs[gActiveBank].isFirstTurn--;
+
+ if (gDisableStructs[gActiveBank].rechargeCounter)
+ {
+ gDisableStructs[gActiveBank].rechargeCounter--;
+ if (gDisableStructs[gActiveBank].rechargeCounter == 0)
+ gBattleMons[gActiveBank].status2 &= ~(STATUS2_RECHARGE);
+ }
+ }
+
+ if (gDisableStructs[gActiveBank].substituteHP == 0)
+ gBattleMons[gActiveBank].status2 &= ~(STATUS2_SUBSTITUTE);
+ }
+
+ gSideTimers[0].followmeTimer = 0;
+ gSideTimers[1].followmeTimer = 0;
+}
+
+static void SpecialStatusesClear(void)
+{
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ s32 i;
+ u8 *dataPtr = (u8*)(&gSpecialStatuses[gActiveBank]);
+
+ for (i = 0; i < sizeof(struct SpecialStatus); i++)
+ dataPtr[i] = 0;
+ }
+}
+
+static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
+{
+ if (!(gHitMarker & HITMARKER_RUN))
+ {
+ while (gBattleStruct->focusPunchBank < gNoOfAllBanks)
+ {
+ gActiveBank = gBankAttacker = gBattleStruct->focusPunchBank;
+ gBattleStruct->focusPunchBank++;
+ if (gChosenMovesByBanks[gActiveBank] == MOVE_FOCUS_PUNCH
+ && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP)
+ && !(gDisableStructs[gBankAttacker].truantCounter)
+ && !(gProtectStructs[gActiveBank].onlyStruggle))
+ {
+ BattleScriptExecute(BattleScript_FocusPunchSetUp);
+ return;
+ }
+ }
+ }
+
+ TryClearRageStatuses();
+ gCurrentTurnActionNumber = 0;
+{
+ // something stupid needed to match
+ u8 zero;
+ gCurrentActionFuncId = gActionsByTurnOrder[(zero = 0)];
+}
+ gDynamicBasePower = 0;
+ gBattleStruct->dynamicMoveType = 0;
+ gBattleMainFunc = RunTurnActionsFunctions;
+ gBattleCommunication[3] = 0;
+ gBattleCommunication[4] = 0;
+ gBattleScripting.field_16 = 0;
+ gBattleResources->battleScriptsStack->size = 0;
+}
+
+static void RunTurnActionsFunctions(void)
+{
+ if (gBattleOutcome != 0)
+ gCurrentActionFuncId = 12;
+
+ *(&gBattleStruct->field_4B) = gCurrentTurnActionNumber;
+ sTurnActionsFuncsTable[gCurrentActionFuncId]();
+
+ if (gCurrentTurnActionNumber >= gNoOfAllBanks) // everyone did their actions, turn finished
+ {
+ gHitMarker &= ~(HITMARKER_x100000);
+ gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F];
+ }
+ else
+ {
+ if (gBattleStruct->field_4B != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank
+ {
+ gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
+ gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
+ }
+ }
+}
+
+static void HandleEndTurn_BattleWon(void)
+{
+ gCurrentActionFuncId = 0;
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ gScriptResult = gBattleOutcome;
+ gBattleTextBuff1[0] = gBattleOutcome;
+ gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
+ gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
+ && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000 | BATTLE_TYPE_EREADER_TRAINER))
+ {
+ BattleMusicStop();
+ gBattlescriptCurrInstr = BattleScript_FrontierTrainerBattleWon;
+
+ if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE)
+ PlayBGM(BGM_KACHI3);
+ else
+ PlayBGM(BGM_KACHI1);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ BattleMusicStop();
+ gBattlescriptCurrInstr = BattleScript_LocalTrainerBattleWon;
+
+ switch (gTrainers[gTrainerBattleOpponent_A].trainerClass)
+ {
+ case CLASS_ELITE_FOUR:
+ case CLASS_CHAMPION:
+ PlayBGM(BGM_KACHI5);
+ break;
+ case CLASS_TEAM_AQUA:
+ case CLASS_TEAM_MAGMA:
+ case CLASS_AQUA_ADMIN:
+ case CLASS_AQUA_LEADER:
+ case CLASS_MAGMA_ADMIN:
+ case CLASS_MAGMA_LEADER:
+ PlayBGM(BGM_KACHI4);
+ break;
+ case CLASS_LEADER:
+ PlayBGM(BGM_KACHI3);
+ break;
+ default:
+ PlayBGM(BGM_KACHI1);
+ break;
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BattleScript_PayDayMoneyAndPickUpItems;
+ }
+
+ gBattleMainFunc = HandleEndTurn_FinishBattle;
+}
+
+static void HandleEndTurn_BattleLost(void)
+{
+ gCurrentActionFuncId = 0;
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ if (gBattleOutcome & BATTLE_OUTCOME_BIT_x80)
+ {
+ gBattlescriptCurrInstr = gUnknown_082DB9C8;
+ gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80);
+ gSaveBlock2Ptr->field_CA9_b = 1;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = gUnknown_082DAA0B;
+ gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80);
+ }
+ }
+ else
+ {
+ gBattleTextBuff1[0] = gBattleOutcome;
+ gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
+ gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80);
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BattleScript_LocalBattleLost;
+ }
+
+ gBattleMainFunc = HandleEndTurn_FinishBattle;
+}
+
+static void HandleEndTurn_RanFromBattle(void)
+{
+ gCurrentActionFuncId = 0;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER && gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ gBattlescriptCurrInstr = gUnknown_082DB9C1;
+ gBattleOutcome = BATTLE_FORFEITED;
+ gSaveBlock2Ptr->field_CA9_b = 1;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ gBattlescriptCurrInstr = gUnknown_082DB9C1;
+ gBattleOutcome = BATTLE_FORFEITED;
+ }
+ else
+ {
+ switch (gProtectStructs[gBankAttacker].fleeFlag)
+ {
+ default:
+ gBattlescriptCurrInstr = BattleScript_GotAwaySafely;
+ break;
+ case 1:
+ gBattlescriptCurrInstr = BattleScript_SmokeBallEscape;
+ break;
+ case 2:
+ gBattlescriptCurrInstr = BattleScript_RanAwayUsingMonAbility;
+ break;
+ }
+ }
+
+ gBattleMainFunc = HandleEndTurn_FinishBattle;
+}
+
+static void HandleEndTurn_MonFled(void)
+{
+ gCurrentActionFuncId = 0;
+
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker]);
+ gBattlescriptCurrInstr = BattleScript_WildMonFled;
+
+ gBattleMainFunc = HandleEndTurn_FinishBattle;
+}
+
+static void HandleEndTurn_FinishBattle(void)
+{
+ if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
+ {
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
+ | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_FIRST_BATTLE
+ | BATTLE_TYPE_SAFARI
+ | BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_WALLY_TUTORIAL
+ | BATTLE_TYPE_FRONTIER)))
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ if (gBattleResults.playerMon1Species == SPECIES_NONE)
+ {
+ gBattleResults.playerMon1Species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL);
+ GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, gBattleResults.playerMon1Name);
+ }
+ else
+ {
+ gBattleResults.playerMon2Species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL);
+ GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_NICKNAME, gBattleResults.playerMon2Name);
+ }
+ }
+ }
+ PutPokemonTodayCaughtOnAir();
+ }
+
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
+ | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_TRAINER
+ | BATTLE_TYPE_FIRST_BATTLE
+ | BATTLE_TYPE_SAFARI
+ | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_WALLY_TUTORIAL))
+ && gBattleResults.unk5_6)
+ {
+ sub_80EE184();
+ }
+
+ sub_8186444();
+ BeginFastPaletteFade(3);
+ FadeOutMapMusic(5);
+ gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions;
+ gUnknown_030061E8 = BattleMainCB2;
+ }
+ else
+ {
+ if (gBattleExecBuffer == 0)
+ gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
+ }
+}
+
+static void FreeResetData_ReturnToOvOrDoEvolutions(void)
+{
+ if (!gPaletteFade.active)
+ {
+ ResetSpriteData();
+ if (gLeveledUpInBattle == 0 || gBattleOutcome != BATTLE_WON)
+ {
+ gBattleMainFunc = ReturnFromBattleToOverworld;
+ return;
+ }
+ else
+ {
+ gBattleMainFunc = TryEvolvePokemon;
+ }
+ }
+
+ FreeAllWindowBuffers();
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ FreeMonSpritesGfx();
+ FreeBattleResources();
+ FreeBattleSpritesData();
+ }
+}
+
+static void TryEvolvePokemon(void)
+{
+ s32 i;
+
+ while (gLeveledUpInBattle != 0)
+ {
+ for (i = 0; i < 6; i++)
+ {
+ if (gLeveledUpInBattle & gBitTable[i])
+ {
+ u16 species;
+ u8 levelUpBits = gLeveledUpInBattle;
+
+ levelUpBits &= ~(gBitTable[i]);
+ gLeveledUpInBattle = levelUpBits;
+
+ species = GetEvolutionTargetSpecies(&gPlayerParty[i], 0, levelUpBits);
+ if (species != SPECIES_NONE)
+ {
+ FreeAllWindowBuffers();
+ gBattleMainFunc = WaitForEvoSceneToFinish;
+ EvolutionScene(&gPlayerParty[i], species, TRUE, i);
+ return;
+ }
+ }
+ }
+ }
+
+ gBattleMainFunc = ReturnFromBattleToOverworld;
+}
+
+static void WaitForEvoSceneToFinish(void)
+{
+ if (gMain.callback2 == BattleMainCB2)
+ gBattleMainFunc = TryEvolvePokemon;
+}
+
+static void ReturnFromBattleToOverworld(void)
+{
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ RandomlyGivePartyPokerus(gPlayerParty);
+ PartySpreadPokerus(gPlayerParty);
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK && gReceivedRemoteLinkPlayers != 0)
+ return;
+
+ gScriptResult = gBattleOutcome;
+ gMain.inBattle = 0;
+ gMain.callback1 = gPreBattleCallback1;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_ROAMER)
+ {
+ UpdateRoamerHPStatus(&gEnemyParty[0]);
+ if ((gBattleOutcome & BATTLE_WON) || gBattleOutcome == BATTLE_CAUGHT)
+ SetRoamerInactive();
+ }
+
+ m4aSongNumStop(0x5A);
+ SetMainCallback2(gMain.savedCallback);
+}
+
+void RunBattleScriptCommands_PopCallbacksStack(void)
+{
+ if (gCurrentActionFuncId == 0xB || gCurrentActionFuncId == 0xC)
+ {
+ if (BATTLE_CALLBACKS_STACK->size != 0)
+ BATTLE_CALLBACKS_STACK->size--;
+ gBattleMainFunc = BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size];
+ }
+ else
+ {
+ if (gBattleExecBuffer == 0)
+ gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
+ }
+}
+
+void RunBattleScriptCommands(void)
+{
+ if (gBattleExecBuffer == 0)
+ gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
+}
+
+static void HandleAction_UseMove(void)
+{
+ u8 side;
+ u8 var = 4;
+
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+
+ if (*(&gBattleStruct->field_91) & gBitTable[gBankAttacker])
+ {
+ gCurrentActionFuncId = ACTION_FINISHED;
+ return;
+ }
+
+ gCritMultiplier = 1;
+ gBattleScripting.dmgMultiplier = 1;
+ gBattleStruct->atkCancellerTracker = 0;
+ gBattleMoveFlags = 0;
+ gMultiHitCounter = 0;
+ gBattleCommunication[6] = 0;
+ gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovePositions + gBankAttacker);
+
+ // choose move
+ if (gProtectStructs[gBankAttacker].onlyStruggle)
+ {
+ gProtectStructs[gBankAttacker].onlyStruggle = 0;
+ gCurrentMove = gLastUsedMove = MOVE_STRUGGLE;
+ gHitMarker |= HITMARKER_NO_PPDEDUCT;
+ *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
+ }
+ else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE)
+ {
+ gCurrentMove = gLastUsedMove = gLockedMoves[gBankAttacker];
+ }
+ // encore forces you to use the same move
+ else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE
+ && gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
+ {
+ gCurrentMove = gLastUsedMove = gDisableStructs[gBankAttacker].encoredMove;
+ gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
+ *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
+ }
+ // check if the encored move wasn't overwritten
+ else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE
+ && gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
+ {
+ gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
+ gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE;
+ gDisableStructs[gBankAttacker].encoredMovePos = 0;
+ gDisableStructs[gBankAttacker].encoreTimer1 = 0;
+ *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
+ }
+ else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker])
+ {
+ gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
+ }
+ else
+ {
+ gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ }
+
+ if (gBattleMons[gBankAttacker].hp != 0)
+ {
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ gBattleResults.lastUsedMovePlayer = gCurrentMove;
+ else
+ gBattleResults.lastUsedMoveOpponent = gCurrentMove;
+ }
+
+ // choose target
+ side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+ if (gSideTimers[side].followmeTimer != 0
+ && gBattleMoves[gCurrentMove].target == MOVE_TARGET_SELECTED
+ && GetBankSide(gBankAttacker) != GetBankSide(gSideTimers[side].followmeTarget)
+ && gBattleMons[gSideTimers[side].followmeTarget].hp != 0)
+ {
+ gBankTarget = gSideTimers[side].followmeTarget;
+ }
+ else if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ && gSideTimers[side].followmeTimer == 0
+ && (gBattleMoves[gCurrentMove].power != 0
+ || gBattleMoves[gCurrentMove].target != MOVE_TARGET_x10)
+ && gBattleMons[*(gBattleStruct->moveTarget + gBankAttacker)].ability != ABILITY_LIGHTNING_ROD
+ && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ {
+ side = GetBankSide(gBankAttacker);
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (side != GetBankSide(gActiveBank)
+ && *(gBattleStruct->moveTarget + gBankAttacker) != gActiveBank
+ && gBattleMons[gActiveBank].ability == ABILITY_LIGHTNING_ROD
+ && BankGetTurnOrder(gActiveBank) < var)
+ {
+ var = BankGetTurnOrder(gActiveBank);
+ }
+ }
+ if (var == 4)
+ {
+ if (gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM)
+ {
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ {
+ if (Random() & 1)
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ }
+ else
+ {
+ if (Random() & 1)
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ }
+ }
+ else
+ {
+ gBankTarget = *(gBattleStruct->moveTarget + gBankAttacker);
+ }
+
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ {
+ if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ else
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE);
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ }
+ }
+ else
+ {
+ gActiveBank = gBanksByTurnOrder[var];
+ RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability);
+ gSpecialStatuses[gActiveBank].lightningRodRedirected = 1;
+ gBankTarget = gActiveBank;
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM)
+ {
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ {
+ if (Random() & 1)
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ }
+ else
+ {
+ if (Random() & 1)
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ }
+
+ if (gAbsentBankFlags & gBitTable[gBankTarget]
+ && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ }
+ else
+ {
+ gBankTarget = *(gBattleStruct->moveTarget + gBankAttacker);
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ {
+ if (GetBankSide(gBankAttacker) != GetBankSide(gBankTarget))
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ else
+ {
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_SIDE);
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ gBankTarget = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ }
+ }
+ }
+
+ // choose battlescript
+ if (gBattleTypeFlags & BATTLE_TYPE_PALACE
+ && gProtectStructs[gBankAttacker].flag_x10)
+ {
+ if (gBattleMons[gBankAttacker].hp == 0)
+ {
+ gCurrentActionFuncId = 12;
+ return;
+ }
+ else if (gUnknown_02024230[gBankAttacker] != NULL)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattlescriptCurrInstr = gUnknown_02024230[gBankAttacker];
+ gUnknown_02024230[gBankAttacker] = NULL;
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ sub_81A56E8(gBankAttacker);
+
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+static void HandleAction_Switch(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gActionSelectionCursor[gBankAttacker] = 0;
+ gMoveSelectionCursor[gBankAttacker] = 0;
+
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, *(gBattleStruct->field_58 + gBankAttacker))
+
+ gBattleScripting.bank = gBankAttacker;
+ gBattlescriptCurrInstr = BattleScript_ActionSwitch;
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+
+ if (gBattleResults.playerSwitchesCounter < 255)
+ gBattleResults.playerSwitchesCounter++;
+}
+
+static void HandleAction_UseItem(void)
+{
+ gBankAttacker = gBankTarget = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ ClearFuryCutterDestinyBondGrudge(gBankAttacker);
+ gLastUsedItem = gBattleBufferB[gBankAttacker][1] | (gBattleBufferB[gBankAttacker][2] << 8);
+
+ if (gLastUsedItem <= ITEM_PREMIER_BALL) // is ball
+ {
+ gBattlescriptCurrInstr = gBattlescriptsForBallThrow[gLastUsedItem];
+ }
+ else if (gLastUsedItem == ITEM_POKE_DOLL || gLastUsedItem == ITEM_FLUFFY_TAIL)
+ {
+ gBattlescriptCurrInstr = gBattlescriptsForRunningByItem[0];
+ }
+ else if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ {
+ gBattlescriptCurrInstr = gUnknown_082DBD3C[0];
+ }
+ else
+ {
+ gBattleScripting.bank = gBankAttacker;
+
+ switch (*(gBattleStruct->AI_itemType + (gBankAttacker >> 1)))
+ {
+ case AI_ITEM_FULL_RESTORE:
+ case AI_ITEM_HEAL_HP:
+ break;
+ case AI_ITEM_CURE_CONDITION:
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ if (*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 1)
+ {
+ if (*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 0x3E)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ }
+ else
+ {
+ while (!(*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 1))
+ {
+ *(gBattleStruct->AI_itemFlags + gBankAttacker / 2) >>= 1;
+ gBattleCommunication[MULTISTRING_CHOOSER]++;
+ }
+ }
+ break;
+ case AI_ITEM_X_STAT:
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ if (*(gBattleStruct->AI_itemFlags + (gBankAttacker >> 1)) & 0x80)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ }
+ else
+ {
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2)
+
+ while (!((*(gBattleStruct->AI_itemFlags + (gBankAttacker >> 1))) & 1))
+ {
+ *(gBattleStruct->AI_itemFlags + gBankAttacker / 2) >>= 1;
+ gBattleTextBuff1[2]++;
+ }
+
+ gBattleScripting.animArg1 = gBattleTextBuff1[2] + 14;
+ gBattleScripting.animArg2 = 0;
+ }
+ break;
+ case AI_ITEM_GUARD_SPECS:
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ break;
+ }
+
+ gBattlescriptCurrInstr = gUnknown_082DBD3C[*(gBattleStruct->AI_itemType + gBankAttacker / 2)];
+ }
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+bool8 TryRunFromBattle(u8 bank)
+{
+ bool8 effect = FALSE;
+ u8 holdEffect;
+ u8 pyramidMultiplier;
+ u8 speedVar;
+
+ if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[bank].holdEffect;
+ else
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item);
+
+ gStringBank = bank;
+
+ if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
+ {
+ gLastUsedItem = gBattleMons[bank].item ;
+ gProtectStructs[bank].fleeFlag = 1;
+ effect++;
+ }
+ else if (gBattleMons[bank].ability == ABILITY_RUN_AWAY)
+ {
+ if (InBattlePyramid())
+ {
+ gBattleStruct->runTries++;
+ pyramidMultiplier = sub_81A9E28();
+ speedVar = (gBattleMons[bank].speed * pyramidMultiplier) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30);
+ if (speedVar > (Random() & 0xFF))
+ {
+ gLastUsedAbility = ABILITY_RUN_AWAY;
+ gProtectStructs[bank].fleeFlag = 2;
+ effect++;
+ }
+ }
+ else
+ {
+ gLastUsedAbility = ABILITY_RUN_AWAY;
+ gProtectStructs[bank].fleeFlag = 2;
+ effect++;
+ }
+ }
+ else if (gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000) && gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ effect++;
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ if (InBattlePyramid())
+ {
+ pyramidMultiplier = sub_81A9E28();
+ speedVar = (gBattleMons[bank].speed * pyramidMultiplier) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30);
+ if (speedVar > (Random() & 0xFF))
+ effect++;
+ }
+ else if (gBattleMons[bank].speed < gBattleMons[bank ^ BIT_SIDE].speed)
+ {
+ speedVar = (gBattleMons[bank].speed * 128) / (gBattleMons[bank ^ BIT_SIDE].speed) + (gBattleStruct->runTries * 30);
+ if (speedVar > (Random() & 0xFF))
+ effect++;
+ }
+ else // same speed or faster
+ {
+ effect++;
+ }
+ }
+
+ gBattleStruct->runTries++;
+ }
+
+ if (effect)
+ {
+ gCurrentTurnActionNumber = gNoOfAllBanks;
+ gBattleOutcome = BATTLE_RAN;
+ }
+
+ return effect;
+}
+
+static void HandleAction_Run(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ gCurrentTurnActionNumber = gNoOfAllBanks;
+
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ if (gActionForBanks[gActiveBank] == ACTION_RUN)
+ gBattleOutcome |= BATTLE_LOST;
+ }
+ else
+ {
+ if (gActionForBanks[gActiveBank] == ACTION_RUN)
+ gBattleOutcome |= BATTLE_WON;
+ }
+ }
+
+ gBattleOutcome |= BATTLE_OUTCOME_BIT_x80;
+ gSaveBlock2Ptr->field_CA9_b = 1;
+ }
+ else
+ {
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ {
+ if (!TryRunFromBattle(gBankAttacker)) // failed to run away
+ {
+ ClearFuryCutterDestinyBondGrudge(gBankAttacker);
+ gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ }
+ }
+ else
+ {
+ if (gBattleMons[gBankAttacker].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gBattlescriptCurrInstr = BattleScript_PrintFailedToRunString;
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ }
+ else
+ {
+ gCurrentTurnActionNumber = gNoOfAllBanks;
+ gBattleOutcome = BATTLE_POKE_FLED;
+ }
+ }
+ }
+}
+
+static void HandleAction_WatchesCarefully(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[0];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+static void HandleAction_SafariZoneBallThrow(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gNumSafariBalls--;
+ gLastUsedItem = ITEM_SAFARI_BALL;
+ gBattlescriptCurrInstr = gBattlescriptsForBallThrow[ITEM_SAFARI_BALL];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+static void HandleAction_ThrowPokeblock(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = gBattleBufferB[gBankAttacker][1] - 1;
+ gLastUsedItem = gBattleBufferB[gBankAttacker][2];
+
+ if (gBattleResults.field_1F < 0xFF)
+ gBattleResults.field_1F++;
+ if (gBattleStruct->field_7A < 3)
+ gBattleStruct->field_7A++;
+ if (gBattleStruct->field_7B > 1)
+ {
+ if (gBattleStruct->field_7B < sUnknown_0831BCE0[gBattleStruct->field_7A][gBattleCommunication[MULTISTRING_CHOOSER]])
+ gBattleStruct->field_7B = 1;
+ else
+ gBattleStruct->field_7B -= sUnknown_0831BCE0[gBattleStruct->field_7A][gBattleCommunication[MULTISTRING_CHOOSER]];
+ }
+
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[2];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+static void HandleAction_GoNear(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+
+ gBattleStruct->field_7C += sUnknown_0831BCEF[gBattleStruct->field_79];
+ if (gBattleStruct->field_7C > 20)
+ gBattleStruct->field_7C = 20;
+
+ gBattleStruct->field_7B +=sUnknown_0831BCF3[gBattleStruct->field_79];
+ if (gBattleStruct->field_7B > 20)
+ gBattleStruct->field_7B = 20;
+
+ if (gBattleStruct->field_79 < 3)
+ {
+ gBattleStruct->field_79++;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[1];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+}
+
+static void HandleAction_SafriZoneRun(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ PlaySE(SE_NIGERU);
+ gCurrentTurnActionNumber = gNoOfAllBanks;
+ gBattleOutcome = BATTLE_RAN;
+}
+
+static void HandleAction_Action9(void)
+{
+ gBankAttacker = gBanksByTurnOrder[gCurrentTurnActionNumber];
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker])
+
+ gBattlescriptCurrInstr = gBattlescriptsForSafariActions[3];
+ gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
+ gActionsByTurnOrder[1] = ACTION_FINISHED;
+}
+
+static void HandleAction_Action11(void)
+{
+ if (!sub_8041728())
+ {
+ gBattleStruct->field_4D = 0;
+ gCurrentActionFuncId = ACTION_FINISHED;
+ }
+}
+
+static void HandleAction_NothingIsFainted(void)
+{
+ gCurrentTurnActionNumber++;
+ gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
+ gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
+ | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
+ | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000
+ | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT
+ | HITMARKER_x8000000 | HITMARKER_x4000000);
+}
+
+static void HandleAction_ActionFinished(void)
+{
+ *(gBattleStruct->field_5C + gBanksByTurnOrder[gCurrentTurnActionNumber]) = 6;
+ gCurrentTurnActionNumber++;
+ gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber];
+ SpecialStatusesClear();
+ gHitMarker &= ~(HITMARKER_DESTINYBOND | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_ATTACKSTRING_PRINTED
+ | HITMARKER_NO_PPDEDUCT | HITMARKER_IGNORE_SAFEGUARD | HITMARKER_IGNORE_ON_AIR
+ | HITMARKER_IGNORE_UNDERGROUND | HITMARKER_IGNORE_UNDERWATER | HITMARKER_x100000
+ | HITMARKER_OBEYS | HITMARKER_x10 | HITMARKER_SYNCHRONISE_EFFECT
+ | HITMARKER_x8000000 | HITMARKER_x4000000);
+
+ gCurrentMove = 0;
+ gBattleMoveDamage = 0;
+ gBattleMoveFlags = 0;
+ gBattleScripting.animTurn = 0;
+ gBattleScripting.animTargetsHit = 0;
+ gUnknown_02024250[gBankAttacker] = 0;
+ gUnknown_02024258[gBankAttacker] = 0;
+ gBattleStruct->dynamicMoveType = 0;
+ gDynamicBasePower = 0;
+ gBattleScripting.atk49_state = 0;
+ gBattleCommunication[3] = 0;
+ gBattleCommunication[4] = 0;
+ gBattleScripting.field_16 = 0;
+ gBattleResources->battleScriptsStack->size = 0;
+}
diff --git a/src/battle_4.c b/src/battle_4.c
deleted file mode 100644
index 92561251f..000000000
--- a/src/battle_4.c
+++ /dev/null
@@ -1,601 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_move_effects.h"
-#include "moves.h"
-#include "abilities.h"
-#include "item.h"
-#include "items.h"
-#include "hold_effects.h"
-
-void atk00_attackcanceler(void);
-void atk01_accuracycheck(void);
-void atk02_attackstring(void);
-void atk03_ppreduce(void);
-void atk04_critcalc(void);
-void atk05_damagecalc1(void);
-void atk06_typecalc(void);
-void atk07_dmg_adjustment(void);
-void atk08_dmg_adjustment2(void);
-void atk09_attackanimation(void);
-void atk0A_waitanimation(void);
-void atk0B_healthbarupdate(void);
-void atk0C_datahpupdate(void);
-void atk0D_critmessage(void);
-void atk0E_effectiveness_sound(void);
-void atk0F_resultmessage(void);
-void atk10_printstring(void);
-void atk11_printstring_playeronly(void);
-void atk12_waitmessage(void);
-void atk13_printfromtable(void);
-void atk14_printfromtable_playeronly(void);
-void atk15_seteffectwithchancetarget(void);
-void atk16_seteffectprimary(void);
-void atk17_seteffectsecondary(void);
-void atk18_status_effect_clear(void);
-void atk19_faint_pokemon(void);
-void atk1A_faint_animation(void);
-void atk1B_faint_effects_clear(void);
-void atk1C_jumpifstatus(void);
-void atk1D_jumpifstatus2(void);
-void atk1E_jumpifability(void);
-void atk1F_jumpifsideaffecting(void);
-void atk20_jumpifstat(void);
-void atk21_jumpifstatus3(void);
-void atk22_jumpiftype(void);
-void atk23_getexp(void);
-void atk24(void);
-void atk25_move_values_cleanup(void);
-void atk26_set_multihit(void);
-void atk27_decrement_multihit(void);
-void atk28_goto(void);
-void atk29_jumpifbyte(void);
-void atk2A_jumpifhalfword(void);
-void atk2B_jumpifword(void);
-void atk2C_jumpifarrayequal(void);
-void atk2D_jumpifarraynotequal(void);
-void atk2E_setbyte(void);
-void atk2F_addbyte(void);
-void atk30_subbyte(void);
-void atk31_copyarray(void);
-void atk32_copyarray_withindex(void);
-void atk33_orbyte(void);
-void atk34_orhalfword(void);
-void atk35_orword(void);
-void atk36_bicbyte(void);
-void atk37_bichalfword(void);
-void atk38_bicword(void);
-void atk39_pause(void);
-void atk3A_waitstate(void);
-void atk3B_healthbar_update(void);
-void atk3C_return(void);
-void atk3D_end(void);
-void atk3E_end2(void);
-void atk3F_end3(void);
-void atk40_jump_if_move_affected_by_protect(void);
-void atk41_call(void);
-void atk42_jumpiftype2(void);
-void atk43_jumpifabilitypresent(void);
-void atk44(void);
-void atk45_playanimation(void);
-void atk46_playanimation2(void);
-void atk47_setgraphicalstatchangevalues(void);
-void atk48_playstatchangeanimation(void);
-void atk49_moveendturn(void);
-void atk4A_typecalc2(void);
-void atk4B_return_atk_to_ball(void);
-void atk4C_copy_poke_data(void);
-void atk4D_switch_data_update(void);
-void atk4E_switchin_anim(void);
-void atk4F_jump_if_cannot_switch(void);
-void atk50_openpartyscreen(void);
-void atk51_switch_handle_order(void);
-void atk52_switch_in_effects(void);
-void atk53_trainer_slide(void);
-void atk54_effectiveness_sound(void);
-void atk55_play_sound(void);
-void atk56_fainting_cry(void);
-void atk57(void);
-void atk58_return_to_ball(void);
-void atk59_learnmove_inbattle(void);
-void atk5A(void);
-void atk5B_80256E0(void);
-void atk5C_hitanimation(void);
-void atk5D_getmoneyreward(void);
-void atk5E_8025A70(void);
-void atk5F_8025B24(void);
-void atk60_increment_gamestat(void);
-void atk61_8025BA4(void);
-void atk62_08025C6C(void);
-void atk63_jumptorandomattack(void);
-void atk64_statusanimation(void);
-void atk65_status2animation(void);
-void atk66_chosenstatusanimation(void);
-void atk67_8025ECC(void);
-void atk68_80246A0(void);
-void atk69_dmg_adjustment2(void);
-void atk6A_removeitem(void);
-void atk6B_atknameinbuff1(void);
-void atk6C_lvlbox_display(void);
-void atk6D_set_sentpokes_values(void);
-void atk6E_set_atk_to_player0(void);
-void atk6F_set_visible(void);
-void atk70_record_ability(void);
-void atk71_buffer_move_to_learn(void);
-void atk72_jump_if_can_run_frombattle(void);
-void atk73_hp_thresholds(void);
-void atk74_hp_thresholds2(void);
-void atk75_8026A58(void);
-void atk76_various(void);
-void atk77_setprotect(void);
-void atk78_faintifabilitynotdamp(void);
-void atk79_setatkhptozero(void);
-void atk7A_jumpwhiletargetvalid(void);
-void atk7B_healhalfHP_if_possible(void);
-void atk7C_8025508(void);
-void atk7D_set_rain(void);
-void atk7E_setreflect(void);
-void atk7F_setseeded(void);
-void atk80_manipulatedamage(void);
-void atk81_setrest(void);
-void atk82_jumpifnotfirstturn(void);
-void atk83_nop(void);
-void atk84_jump_if_cant_sleep(void);
-void atk85_stockpile(void);
-void atk86_stockpiletobasedamage(void);
-void atk87_stockpiletohpheal(void);
-void atk88_negativedamage(void);
-void atk89_statbuffchange(void);
-void atk8A_normalisebuffs(void);
-void atk8B_setbide(void);
-void atk8C_confuseifrepeatingattackends(void);
-void atk8D_setmultihit_counter(void);
-void atk8E_prepare_multihit(void);
-void atk8F_forcerandomswitch(void);
-void atk90_conversion_type_change(void);
-void atk91_givepaydaymoney(void);
-void atk92_setlightscreen(void);
-void atk93_ko_move(void);
-void atk94_gethalfcurrentenemyhp(void);
-void atk95_setsandstorm(void);
-void atk96_weatherdamage(void);
-void atk97_try_infatuation(void);
-void atk98_status_icon_update(void);
-void atk99_setmist(void);
-void atk9A_set_focusenergy(void);
-void atk9B_transformdataexecution(void);
-void atk9C_set_substitute(void);
-void atk9D_copyattack(void);
-void atk9E_metronome(void);
-void atk9F_dmgtolevel(void);
-void atkA0_psywavedamageeffect(void);
-void atkA1_counterdamagecalculator(void);
-void atkA2_mirrorcoatdamagecalculator(void);
-void atkA3_disablelastusedattack(void);
-void atkA4_setencore(void);
-void atkA5_painsplitdmgcalc(void);
-void atkA6_settypetorandomresistance(void);
-void atkA7_setalwayshitflag(void);
-void atkA8_copymovepermanently(void);
-void atkA9_sleeptalk_choose_move(void);
-void atkAA_set_destinybond(void);
-void atkAB_DestinyBondFlagUpdate(void);
-void atkAC_remaininghptopower(void);
-void atkAD_spite_ppreduce(void);
-void atkAE_heal_party_status(void);
-void atkAF_cursetarget(void);
-void atkB0_set_spikes(void);
-void atkB1_set_foresight(void);
-void atkB2_setperishsong(void);
-void atkB3_rolloutdamagecalculation(void);
-void atkB4_jumpifconfusedandstatmaxed(void);
-void atkB5_furycuttercalc(void);
-void atkB6_happinesstodamagecalculation(void);
-void atkB7_presentdamagecalculation(void);
-void atkB8_set_safeguard(void);
-void atkB9_magnitudedamagecalculation(void);
-void atkBA_jumpifnopursuitswitchdmg(void);
-void atkBB_setsunny(void);
-void atkBC_maxattackhalvehp(void);
-void atkBD_copyfoestats(void);
-void atkBE_breakfree(void);
-void atkBF_set_defense_curl(void);
-void atkC0_recoverbasedonsunlight(void);
-void atkC1_hidden_power(void);
-void atkC2_selectnexttarget(void);
-void atkC3_setfutureattack(void);
-void atkC4_beat_up(void);
-void atkC5_hidepreattack(void);
-void atkC6_unhidepostattack(void);
-void atkC7_setminimize(void);
-void atkC8_sethail(void);
-void atkC9_jumpifattackandspecialattackcannotfall(void);
-void atkCA_setforcedtarget(void);
-void atkCB_setcharge(void);
-void atkCC_callterrainattack(void);
-void atkCD_cureifburnedparalysedorpoisoned(void);
-void atkCE_settorment(void);
-void atkCF_jumpifnodamage(void);
-void atkD0_settaunt(void);
-void atkD1_set_helpinghand(void);
-void atkD2_swap_items(void);
-void atkD3_copy_ability(void);
-void atkD4_wish_effect(void);
-void atkD5_setroots(void);
-void atkD6_doubledamagedealtifdamaged(void);
-void atkD7_setyawn(void);
-void atkD8_setdamagetohealthdifference(void);
-void atkD9_scaledamagebyhealthratio(void);
-void atkDA_abilityswap(void);
-void atkDB_imprisoneffect(void);
-void atkDC_setgrudge(void);
-void atkDD_weightdamagecalculation(void);
-void atkDE_asistattackselect(void);
-void atkDF_setmagiccoat(void);
-void atkE0_setstealstatchange(void);
-void atkE1_intimidate_string_loader(void);
-void atkE2_switchout_abilities(void);
-void atkE3_jumpiffainted(void);
-void atkE4_getsecretpowereffect(void);
-void atkE5_pickup(void);
-void atkE6_castform_change_animation(void);
-void atkE7_castform_data_change(void);
-void atkE8_settypebasedhalvers(void);
-void atkE9_setweatherballtype(void);
-void atkEA_recycleitem(void);
-void atkEB_settypetoterrain(void);
-void atkEC_pursuit_sth(void);
-void atkED_802B4B4(void);
-void atkEE_removelightscreenreflect(void);
-void atkEF_pokeball_catch_calculation(void);
-void atkF0_copy_caught_poke(void);
-void atkF1_setpoke_as_caught(void);
-void atkF2_display_dex_info(void);
-void atkF3_nickname_caught_poke(void);
-void atkF4_802BEF0(void);
-void atkF5_removeattackerstatus1(void);
-void atkF6_802BF48(void);
-void atkF7_802BF54(void);
-void sub_8056EF8(void);
-
-void (* const gBattleScriptingCommandsTable[])(void) =
-{
- 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,
- sub_8056EF8
-};
-
-struct statFractions
-{
- u8 dividend;
- u8 divisor;
-};
-
-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.
-const u16 gCriticalHitChance[] = {16, 8, 4, 3, 2};
-
-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
-};
diff --git a/src/battle_ai.c b/src/battle_ai_script_commands.c
index 3b696b84e..24377eacc 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai_script_commands.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "battle_ai.h"
+#include "battle_ai_script_commands.h"
#include "pokemon.h"
#include "battle.h"
#include "species.h"
@@ -7,11 +7,13 @@
#include "rng.h"
#include "item.h"
#include "battle_move_effects.h"
+#include "moves.h"
+#include "util.h"
#define AIScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
#define AIScriptRead16(ptr) ((ptr)[0] | (ptr)[1] << 8)
#define AIScriptRead8(ptr) ((ptr)[0])
-#define AIScriptReadPtr(ptr) (u8*) AIScriptRead32(ptr)
+#define AIScriptReadPtr(ptr) (const u8*) AIScriptRead32(ptr)
#define AI_ACTION_DONE 0x0001
#define AI_ACTION_FLEE 0x0002
@@ -52,16 +54,16 @@ AI scripts.
extern u32 gBattleTypeFlags;
extern u8 gActiveBank;
-extern struct BattlePokemon gBattleMons[4];
+extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern u16 gCurrentMove;
extern u8 gBankTarget;
extern u8 gAbsentBankFlags;
-extern u16 gLastUsedMovesByBanks[4];
+extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
extern u16 gTrainerBattleOpponent_A;
extern u16 gTrainerBattleOpponent_B;
-extern u32 gStatuses3[4];
+extern u32 gStatuses3[BATTLE_BANKS_COUNT];
extern u16 gSideAffecting[2];
-extern u16 gBattlePartyID[4];
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
extern u16 gDynamicBasePower;
extern u8 gBattleMoveFlags;
extern s32 gBattleMoveDamage;
@@ -70,16 +72,8 @@ extern u16 gBattleWeather;
extern const struct BattleMove gBattleMoves[];
extern const struct BaseStats gBaseStats[];
-extern const u32 gBitTable[];
-extern u8 * const gBattleAI_ScriptsTable[];
+extern const u8 * const gBattleAI_ScriptsTable[];
-extern u8 GetBankIdentity(u8);
-extern u8 b_first_side(u8, u8, u8);
-extern u8 GetBankByPlayerAI(u8);
-extern void TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
-extern void AI_CalcDmg(u8, u8);
-
-extern u8 CheckMoveLimitations();
extern u32 GetAiScriptsInRecordedBattle();
extern u32 GetAiScriptsInBattleFactory();
@@ -119,8 +113,8 @@ static void BattleAICmd_if_move(void);
static void BattleAICmd_if_not_move(void);
static void BattleAICmd_if_in_bytes(void);
static void BattleAICmd_if_not_in_bytes(void);
-static void BattleAICmd_if_in_words(void);
-static void BattleAICmd_if_not_in_words(void);
+static void BattleAICmd_if_in_hwords(void);
+static void BattleAICmd_if_not_in_hwords(void);
static void BattleAICmd_if_user_can_damage(void);
static void BattleAICmd_if_user_cant_damage(void);
static void BattleAICmd_get_turn_count(void);
@@ -230,8 +224,8 @@ static const BattleAICmdFunc sBattleAICmdTable[] =
BattleAICmd_if_not_move, // 0x1A
BattleAICmd_if_in_bytes, // 0x1B
BattleAICmd_if_not_in_bytes, // 0x1C
- BattleAICmd_if_in_words, // 0x1D
- BattleAICmd_if_not_in_words, // 0x1E
+ BattleAICmd_if_in_hwords, // 0x1D
+ BattleAICmd_if_not_in_hwords, // 0x1E
BattleAICmd_if_user_can_damage, // 0x1F
BattleAICmd_if_user_cant_damage, // 0x20
BattleAICmd_get_turn_count, // 0x21
@@ -337,7 +331,7 @@ void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves)
{
if (gTrainers[gTrainerBattleOpponent_A].items[i] != 0)
{
- gBattleResources->battleHistory->TrainerItems[gBattleResources->battleHistory->itemsNo] = gTrainers[gTrainerBattleOpponent_A].items[i];
+ gBattleResources->battleHistory->trainerItems[gBattleResources->battleHistory->itemsNo] = gTrainers[gTrainerBattleOpponent_A].items[i];
gBattleResources->battleHistory->itemsNo++;
}
}
@@ -475,13 +469,11 @@ static u8 BattleAI_ChooseMoveOrAction_Singles(void)
return consideredMoveArray[Random() % numOfBestMoves];
}
-#ifdef NONMATCHING
static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
{
s32 i;
s32 j;
s32 scriptsToRun;
- s16 mostMovePoints;
s16 bestMovePointsForTarget[4];
s8 mostViableTargetsArray[4];
u8 actionOrMoveIndex[4];
@@ -489,27 +481,27 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
u8 mostViableMovesIndices[4];
s32 mostViableTargetsNo;
s32 mostViableMovesNo;
+ s16 mostMovePoints;
- for (i = 0; i < 4; i++) //08130D14
+ for (i = 0; i < 4; i++)
{
if (i == sBank_AI || gBattleMons[i].hp == 0)
{
- //_08130D2E
actionOrMoveIndex[i] = -1;
bestMovePointsForTarget[i] = -1;
}
- //_08130D48
else
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
BattleAI_SetupAIData(gBattleStruct->field_92 >> 4);
else
BattleAI_SetupAIData(0xF);
- //_08130D76
+
gBankTarget = i;
- if ((i & 1) != (sBank_AI & 1))
+
+ if ((i & BIT_SIDE) != (sBank_AI & BIT_SIDE))
RecordLastUsedMoveByTarget();
- //_08130D90
+
AI_THINKING_STRUCT->aiLogicId = 0;
AI_THINKING_STRUCT->movesetIndex = 0;
scriptsToRun = AI_THINKING_STRUCT->aiFlags;
@@ -524,14 +516,12 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
AI_THINKING_STRUCT->aiLogicId++;
AI_THINKING_STRUCT->movesetIndex = 0;
}
- //_08130DD8
if (AI_THINKING_STRUCT->aiAction & AI_ACTION_FLEE)
actionOrMoveIndex[i] = 4;
else if (AI_THINKING_STRUCT->aiAction & AI_ACTION_WATCH)
actionOrMoveIndex[i] = 5;
else
{
- //_08130E10
mostViableMovesScores[0] = AI_THINKING_STRUCT->score[0];
mostViableMovesIndices[0] = 0;
mostViableMovesNo = 1;
@@ -558,17 +548,20 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
bestMovePointsForTarget[i] = mostViableMovesScores[0];
// don't use a move against ally if it has less than 100 pts
- if (i == (sBank_AI ^ 2) && bestMovePointsForTarget[i] < 100)
+ if (i == (sBank_AI ^ BIT_MON) && bestMovePointsForTarget[i] < 100)
+ {
bestMovePointsForTarget[i] = -1;
+ mostViableMovesScores[0] = mostViableMovesScores[0]; // needed to match
+ }
+
}
}
- //_08130EAE
}
- //08130EC4
mostMovePoints = bestMovePointsForTarget[0];
mostViableTargetsArray[0] = 0;
mostViableTargetsNo = 1;
+
for (i = 1; i < 4; i++)
{
//_08130EDA
@@ -585,305 +578,10 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
mostViableTargetsNo = 1;
}
}
+
gBankTarget = mostViableTargetsArray[Random() % mostViableTargetsNo];
return actionOrMoveIndex[gBankTarget];
}
-#else
-__attribute__((naked))
-static u8 BattleAI_ChooseMoveOrAction_Doubles(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, 0x24\n\
- movs r0, 0\n\
- mov r8, r0\n\
- mov r1, sp\n\
- adds r1, 0xC\n\
- str r1, [sp, 0x1C]\n\
- mov r2, sp\n\
- adds r2, 0x8\n\
- str r2, [sp, 0x18]\n\
- str r1, [sp, 0x20]\n\
- mov r10, sp\n\
-_08130D14:\n\
- ldr r0, =sBank_AI\n\
- ldrb r0, [r0]\n\
- cmp r8, r0\n\
- beq _08130D2E\n\
- movs r0, 0x58\n\
- mov r7, r8\n\
- muls r7, r0\n\
- adds r0, r7, 0\n\
- ldr r1, =gBattleMons\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08130D48\n\
-_08130D2E:\n\
- movs r0, 0xFF\n\
- ldr r2, [sp, 0x20]\n\
- strb r0, [r2]\n\
- ldr r0, =0x0000ffff\n\
- mov r7, r10\n\
- strh r0, [r7]\n\
- b _08130EAE\n\
- .pool\n\
-_08130D48:\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08130D70\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- adds r0, 0x92\n\
- ldrb r0, [r0]\n\
- lsrs r0, 4\n\
- bl BattleAI_SetupAIData\n\
- b _08130D76\n\
- .pool\n\
-_08130D70:\n\
- movs r0, 0xF\n\
- bl BattleAI_SetupAIData\n\
-_08130D76:\n\
- ldr r0, =gBankTarget\n\
- mov r1, r8\n\
- strb r1, [r0]\n\
- movs r1, 0x1\n\
- mov r2, r8\n\
- ands r2, r1\n\
- ldr r0, =sBank_AI\n\
- ldrb r0, [r0]\n\
- ands r1, r0\n\
- cmp r2, r1\n\
- beq _08130D90\n\
- bl RecordLastUsedMoveByTarget\n\
-_08130D90:\n\
- ldr r2, =gBattleResources\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- movs r1, 0\n\
- strb r1, [r0, 0x11]\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- strb r1, [r0, 0x1]\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldr r4, [r0, 0xC]\n\
- mov r9, r2\n\
- cmp r4, 0\n\
- beq _08130DD8\n\
- mov r5, r9\n\
- movs r6, 0\n\
-_08130DB0:\n\
- movs r0, 0x1\n\
- ands r0, r4\n\
- cmp r0, 0\n\
- beq _08130DC2\n\
- ldr r0, [r5]\n\
- ldr r0, [r0, 0x14]\n\
- strb r6, [r0]\n\
- bl BattleAI_DoAIProcessing\n\
-_08130DC2:\n\
- asrs r4, 1\n\
- ldr r0, [r5]\n\
- ldr r1, [r0, 0x14]\n\
- ldrb r0, [r1, 0x11]\n\
- adds r0, 0x1\n\
- strb r0, [r1, 0x11]\n\
- ldr r0, [r5]\n\
- ldr r0, [r0, 0x14]\n\
- strb r6, [r0, 0x1]\n\
- cmp r4, 0\n\
- bne _08130DB0\n\
-_08130DD8:\n\
- mov r2, r9\n\
- ldr r0, [r2]\n\
- ldr r3, [r0, 0x14]\n\
- ldrb r1, [r3, 0x10]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08130DFC\n\
- movs r0, 0x4\n\
- ldr r7, [sp, 0x20]\n\
- strb r0, [r7]\n\
- b _08130EAE\n\
- .pool\n\
-_08130DFC:\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- cmp r2, 0\n\
- beq _08130E10\n\
- movs r0, 0x5\n\
- ldr r1, [sp, 0x20]\n\
- strb r0, [r1]\n\
- b _08130EAE\n\
-_08130E10:\n\
- add r1, sp, 0x10\n\
- ldrb r0, [r3, 0x4]\n\
- strb r0, [r1]\n\
- add r0, sp, 0x14\n\
- strb r2, [r0]\n\
- movs r5, 0x1\n\
- movs r3, 0x1\n\
- adds r6, r1, 0\n\
- ldr r0, =sBank_AI\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- ldr r2, =gBattleMons + 0xC\n\
- adds r0, r2\n\
- adds r4, r0, 0x2\n\
- add r7, sp, 0x14\n\
-_08130E30:\n\
- ldrh r0, [r4]\n\
- cmp r0, 0\n\
- beq _08130E72\n\
- ldrb r1, [r6]\n\
- mov r2, r9\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- adds r0, 0x4\n\
- adds r2, r0, r3\n\
- movs r0, 0\n\
- ldrsb r0, [r2, r0]\n\
- cmp r1, r0\n\
- bne _08130E56\n\
- adds r0, r6, r5\n\
- ldrb r1, [r2]\n\
- strb r1, [r0]\n\
- adds r0, r7, r5\n\
- strb r3, [r0]\n\
- adds r5, 0x1\n\
-_08130E56:\n\
- ldrb r1, [r6]\n\
- mov r2, r9\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- adds r0, 0x4\n\
- adds r2, r0, r3\n\
- movs r0, 0\n\
- ldrsb r0, [r2, r0]\n\
- cmp r1, r0\n\
- bge _08130E72\n\
- ldrb r0, [r2]\n\
- strb r0, [r6]\n\
- strb r3, [r7]\n\
- movs r5, 0x1\n\
-_08130E72:\n\
- adds r4, 0x2\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _08130E30\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- adds r1, r5, 0\n\
- bl __modsi3\n\
- add r0, sp\n\
- adds r0, 0x14\n\
- ldrb r0, [r0]\n\
- ldr r7, [sp, 0x20]\n\
- strb r0, [r7]\n\
- ldrb r2, [r6]\n\
- mov r0, r10\n\
- strh r2, [r0]\n\
- ldr r0, =sBank_AI\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- eors r0, r1\n\
- cmp r8, r0\n\
- bne _08130EAE\n\
- cmp r2, 0x63\n\
- bgt _08130EAE\n\
- ldr r0, =0x0000ffff\n\
- mov r1, r10\n\
- strh r0, [r1]\n\
-_08130EAE:\n\
- ldr r2, [sp, 0x20]\n\
- adds r2, 0x1\n\
- str r2, [sp, 0x20]\n\
- movs r7, 0x2\n\
- add r10, r7\n\
- movs r0, 0x1\n\
- add r8, r0\n\
- mov r1, r8\n\
- cmp r1, 0x3\n\
- bgt _08130EC4\n\
- b _08130D14\n\
-_08130EC4:\n\
- mov r0, sp\n\
- ldrh r5, [r0]\n\
- movs r0, 0\n\
- ldr r2, [sp, 0x18]\n\
- strb r0, [r2]\n\
- movs r4, 0x1\n\
- mov r8, r4\n\
- ldr r6, =gBankTarget\n\
- ldr r3, [sp, 0x18]\n\
- mov r1, sp\n\
- adds r1, 0x2\n\
-_08130EDA:\n\
- lsls r0, r5, 16\n\
- asrs r2, r0, 16\n\
- movs r7, 0\n\
- ldrsh r0, [r1, r7]\n\
- cmp r2, r0\n\
- bne _08130EEE\n\
- adds r0, r3, r4\n\
- mov r7, r8\n\
- strb r7, [r0]\n\
- adds r4, 0x1\n\
-_08130EEE:\n\
- movs r7, 0\n\
- ldrsh r0, [r1, r7]\n\
- cmp r2, r0\n\
- bge _08130EFE\n\
- ldrh r5, [r1]\n\
- mov r0, r8\n\
- strb r0, [r3]\n\
- movs r4, 0x1\n\
-_08130EFE:\n\
- adds r1, 0x2\n\
- movs r2, 0x1\n\
- add r8, r2\n\
- mov r7, r8\n\
- cmp r7, 0x3\n\
- ble _08130EDA\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- adds r1, r4, 0\n\
- bl __modsi3\n\
- ldr r1, [sp, 0x18]\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- strb r0, [r6]\n\
- ldrb r0, [r6]\n\
- ldr r2, [sp, 0x1C]\n\
- adds r0, r2, r0\n\
- ldrb r0, [r0]\n\
- add sp, 0x24\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .pool\n\
- .syntax divided\n");
-}
-#endif
static void BattleAI_DoAIProcessing(void)
{
@@ -891,7 +589,7 @@ static void BattleAI_DoAIProcessing(void)
{
switch (AI_THINKING_STRUCT->aiState)
{
- case AIState_DoNotProcess: //Needed to match.
+ case AIState_DoNotProcess: // Needed to match.
break;
case AIState_SettingUp:
gAIScriptPtr = gBattleAI_ScriptsTable[AI_THINKING_STRUCT->aiLogicId]; // set AI ptr to logic ID.
@@ -907,7 +605,7 @@ static void BattleAI_DoAIProcessing(void)
break;
case AIState_Processing:
if (AI_THINKING_STRUCT->moveConsidered != 0)
- sBattleAICmdTable[*gAIScriptPtr](); // run AI command.
+ sBattleAICmdTable[*gAIScriptPtr](); // Run AI command.
else
{
AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0;
@@ -937,7 +635,7 @@ static void RecordLastUsedMoveByTarget(void)
{
if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget])
break;
- if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] //HACK: This redundant condition is a hack to make the asm match.
+ if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] // HACK: This redundant condition is a hack to make the asm match.
&& gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == 0)
{
gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastUsedMovesByBanks[gBankTarget];
@@ -1264,7 +962,7 @@ static void BattleAICmd_if_not_equal(void)
static void BattleAICmd_if_less_than_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
if (AI_THINKING_STRUCT->funcResult < *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
@@ -1274,7 +972,7 @@ static void BattleAICmd_if_less_than_32(void)
static void BattleAICmd_if_more_than_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
if (AI_THINKING_STRUCT->funcResult > *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
@@ -1284,7 +982,7 @@ static void BattleAICmd_if_more_than_32(void)
static void BattleAICmd_if_equal_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
if (AI_THINKING_STRUCT->funcResult == *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
@@ -1294,7 +992,7 @@ static void BattleAICmd_if_equal_32(void)
static void BattleAICmd_if_not_equal_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
if (AI_THINKING_STRUCT->funcResult != *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
@@ -1324,7 +1022,7 @@ static void BattleAICmd_if_not_move(void)
static void BattleAICmd_if_in_bytes(void)
{
- u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
while (*ptr != 0xFF)
{
@@ -1340,7 +1038,7 @@ static void BattleAICmd_if_in_bytes(void)
static void BattleAICmd_if_not_in_bytes(void)
{
- u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
while (*ptr != 0xFF)
{
@@ -1354,9 +1052,9 @@ static void BattleAICmd_if_not_in_bytes(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
}
-static void BattleAICmd_if_in_words(void)
+static void BattleAICmd_if_in_hwords(void)
{
- u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
+ const u16 *ptr = (const u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
while (*ptr != 0xFFFF)
{
@@ -1370,9 +1068,9 @@ static void BattleAICmd_if_in_words(void)
gAIScriptPtr += 9;
}
-static void BattleAICmd_if_not_in_words(void)
+static void BattleAICmd_if_not_in_hwords(void)
{
- u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
+ const u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
while (*ptr != 0xFFFF)
{
@@ -1459,9 +1157,9 @@ static u8 BattleAI_GetWantedBank(u8 index)
default:
return gBankTarget;
case AI_USER_PARTNER:
- return sBank_AI ^ 2;
+ return sBank_AI ^ BIT_MON;
case AI_TARGET_PARTNER:
- return gBankTarget ^ 2;
+ return gBankTarget ^ BIT_MON;
}
}
@@ -1487,248 +1185,68 @@ static void BattleAICmd_get_last_used_bank_move_power(void)
gAIScriptPtr += 1;
}
-__attribute__((naked)) // not even going to try. if it doesnt match in ruby, it wont match in emerald (yet).
static void BattleAICmd_is_most_powerful_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\
- sub sp, 0x14\n\
- movs r3, 0\n\
- ldr r0, =sDiscouragedPowerfulMoveEffects\n\
- ldrh r1, [r0]\n\
- ldr r5, =0x0000ffff\n\
- ldr r6, =gBattleMoves\n\
- ldr r2, =gBattleResources\n\
- cmp r1, r5\n\
- beq _08131F86\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldrh r1, [r0, 0x2]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r4, [r0]\n\
- ldr r1, =sDiscouragedPowerfulMoveEffects\n\
-_08131F76:\n\
- ldrh r0, [r1]\n\
- cmp r4, r0\n\
- beq _08131F86\n\
- adds r1, 0x2\n\
- adds r3, 0x1\n\
- ldrh r0, [r1]\n\
- cmp r0, r5\n\
- bne _08131F76\n\
-_08131F86:\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldrh r1, [r0, 0x2]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r0, 0x1\n\
- bhi _08131F9C\n\
- b _08132126\n\
-_08131F9C:\n\
- lsls r0, r3, 1\n\
- ldr r1, =sDiscouragedPowerfulMoveEffects\n\
- adds r0, r1\n\
- ldrh r3, [r0]\n\
- ldr r0, =0x0000ffff\n\
- cmp r3, r0\n\
- beq _08131FAC\n\
- b _08132126\n\
-_08131FAC:\n\
- ldr r0, =gDynamicBasePower\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- strb r1, [r0, 0x13]\n\
- ldr r0, =gBattleScripting\n\
- movs r2, 0x1\n\
- strb r2, [r0, 0xE]\n\
- ldr r0, =gBattleMoveFlags\n\
- strb r1, [r0]\n\
- ldr r0, =gCritMultiplier\n\
- strb r2, [r0]\n\
- movs r6, 0\n\
- mov r9, r3\n\
- ldr r2, =sDiscouragedPowerfulMoveEffects\n\
- ldrh r2, [r2]\n\
- str r2, [sp, 0x10]\n\
-_08131FD0:\n\
- movs r3, 0\n\
- ldr r5, =gBattleMons\n\
- lsls r4, r6, 1\n\
- ldr r7, =sBank_AI\n\
- lsls r0, r6, 2\n\
- mov r8, r0\n\
- adds r1, r6, 0x1\n\
- mov r10, r1\n\
- ldr r2, [sp, 0x10]\n\
- cmp r2, r9\n\
- beq _08132014\n\
- ldr r2, =gBattleMoves\n\
- ldrb r1, [r7]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r4, r0\n\
- adds r1, r5, 0\n\
- adds r1, 0xC\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r2, [r0]\n\
- ldr r1, =sDiscouragedPowerfulMoveEffects\n\
-_08132004:\n\
- ldrh r0, [r1]\n\
- cmp r2, r0\n\
- beq _08132014\n\
- adds r1, 0x2\n\
- adds r3, 0x1\n\
- ldrh r0, [r1]\n\
- cmp r0, r9\n\
- bne _08132004\n\
-_08132014:\n\
- ldrb r1, [r7]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r4, r0\n\
- adds r1, r5, 0\n\
- adds r1, 0xC\n\
- adds r1, r0, r1\n\
- ldrh r0, [r1]\n\
- cmp r0, 0\n\
- beq _081320C0\n\
- lsls r0, r3, 1\n\
- ldr r2, =sDiscouragedPowerfulMoveEffects\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- cmp r0, r9\n\
- bne _081320C0\n\
- ldr r0, =gBattleMoves\n\
- ldrh r2, [r1]\n\
- lsls r1, r2, 1\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0x1\n\
- bls _081320C0\n\
- ldr r5, =gCurrentMove\n\
- strh r2, [r5]\n\
- ldrb r0, [r7]\n\
- ldr r4, =gBankTarget\n\
- ldrb r1, [r4]\n\
- bl AI_CalcDmg\n\
- ldrh r0, [r5]\n\
- ldrb r1, [r7]\n\
- ldrb r2, [r4]\n\
- bl TypeCalc\n\
- mov r4, sp\n\
- add r4, r8\n\
- ldr r2, =gBattleMoveDamage\n\
- ldr r0, =gBattleResources\n\
- ldr r0, [r0]\n\
- ldr r0, [r0, 0x14]\n\
- adds r0, 0x18\n\
- adds r0, r6\n\
- ldrb r1, [r0]\n\
- ldr r0, [r2]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- str r0, [r4]\n\
- cmp r0, 0\n\
- bne _081320C8\n\
- movs r0, 0x1\n\
- str r0, [r4]\n\
- b _081320C8\n\
- .pool\n\
-_081320C0:\n\
- mov r1, sp\n\
- add r1, r8\n\
- movs r0, 0\n\
- str r0, [r1]\n\
-_081320C8:\n\
- mov r6, r10\n\
- cmp r6, 0x3\n\
- bgt _081320D0\n\
- b _08131FD0\n\
-_081320D0:\n\
- movs r6, 0\n\
- ldr r2, =gBattleResources\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r1, [sp]\n\
- ldr r0, [r0]\n\
- ldr r5, =gAIScriptPtr\n\
- cmp r1, r0\n\
- bgt _08132106\n\
- adds r4, r2, 0\n\
- mov r3, sp\n\
-_081320EC:\n\
- adds r3, 0x4\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- bgt _08132106\n\
- ldr r0, [r4]\n\
- ldr r0, [r0, 0x14]\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r1, [r3]\n\
- ldr r0, [r0]\n\
- cmp r1, r0\n\
- ble _081320EC\n\
-_08132106:\n\
- cmp r6, 0x4\n\
- bne _0813211C\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x2\n\
- str r0, [r1, 0x8]\n\
- b _08132130\n\
- .pool\n\
-_0813211C:\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x1\n\
- str r0, [r1, 0x8]\n\
- b _08132130\n\
-_08132126:\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0\n\
- str r0, [r1, 0x8]\n\
- ldr r5, =gAIScriptPtr\n\
-_08132130:\n\
- ldr r0, [r5]\n\
- adds r0, 0x1\n\
- str r0, [r5]\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 {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
+ s32 i, checkedMove;
+ s32 moveDmgs[4];
+
+ for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
+ {
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
+ break;
+ }
+
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
+ && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
+ {
+ gDynamicBasePower = 0;
+ *(&gBattleStruct->dynamicMoveType) = 0;
+ gBattleScripting.dmgMultiplier = 1;
+ gBattleMoveFlags = 0;
+ gCritMultiplier = 1;
+
+ for (checkedMove = 0; checkedMove < 4; checkedMove++)
+ {
+ for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
+ {
+ if (gBattleMoves[gBattleMons[sBank_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
+ break;
+ }
+
+ if (gBattleMons[sBank_AI].moves[checkedMove] != MOVE_NONE
+ && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF
+ && gBattleMoves[gBattleMons[sBank_AI].moves[checkedMove]].power > 1)
+ {
+ gCurrentMove = gBattleMons[sBank_AI].moves[checkedMove];
+ AI_CalcDmg(sBank_AI, gBankTarget);
+ TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
+ moveDmgs[checkedMove] = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[checkedMove] / 100;
+ if (moveDmgs[checkedMove] == 0)
+ moveDmgs[checkedMove] = 1;
+ }
+ else
+ {
+ moveDmgs[checkedMove] = 0;
+ }
+ }
+
+ for (checkedMove = 0; checkedMove < 4; checkedMove++)
+ {
+ if (moveDmgs[checkedMove] > moveDmgs[AI_THINKING_STRUCT->movesetIndex])
+ break;
+ }
+
+ if (checkedMove == 4)
+ AI_THINKING_STRUCT->funcResult = 2; // is the most powerful
+ else
+ AI_THINKING_STRUCT->funcResult = 1; // not most powerful
+ }
+ else
+ {
+ AI_THINKING_STRUCT->funcResult = 0; // highly discouraged in terms of power
+ }
+
+ gAIScriptPtr++;
}
static void BattleAICmd_get_last_used_bank_move(void)
@@ -1759,7 +1277,7 @@ static void BattleAICmd_if_arg_not_equal(void)
static void BattleAICmd_if_would_go_first(void)
{
- if (b_first_side(sBank_AI, gBankTarget, 1) == gAIScriptPtr[1])
+ if (GetWhoStrikesFirst(sBank_AI, gBankTarget, TRUE) == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1767,7 +1285,7 @@ static void BattleAICmd_if_would_go_first(void)
static void BattleAICmd_if_would_not_go_first(void)
{
- if (b_first_side(sBank_AI, gBankTarget, 1) != gAIScriptPtr[1])
+ if (GetWhoStrikesFirst(sBank_AI, gBankTarget, TRUE) != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1795,7 +1313,7 @@ static void BattleAICmd_count_alive_pokemon(void)
else
index = gBankTarget;
- if (GetBankSide(index) == 0)
+ if (GetBankSide(index) == SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -1805,7 +1323,7 @@ static void BattleAICmd_count_alive_pokemon(void)
u32 status;
bankOnField1 = gBattlePartyID[index];
status = GetBankIdentity(index) ^ 2;
- bankOnField2 = gBattlePartyID[GetBankByPlayerAI(status)];
+ bankOnField2 = gBattlePartyID[GetBankByIdentity(status)];
}
else // in singles there's only one bank by side
{
@@ -1899,11 +1417,10 @@ static void BattleAICmd_get_ability(void)
gAIScriptPtr += 2;
}
-#ifdef NONMATCHING
static void BattleAICmd_check_ability(void)
{
- u8 bank = BattleAI_GetWantedBank(gAIScriptPtr[1]);
- u8 ability = gAIScriptPtr[2];
+ u32 bank = BattleAI_GetWantedBank(gAIScriptPtr[1]);
+ u32 ability = gAIScriptPtr[2];
if (gAIScriptPtr[1] == AI_TARGET || gAIScriptPtr[1] == AI_TARGET_PARTNER)
{
@@ -1923,8 +1440,9 @@ static void BattleAICmd_check_ability(void)
{
if (gBaseStats[gBattleMons[bank].species].ability2 != ABILITY_NONE)
{
- if (gBaseStats[gBattleMons[bank].species].ability1 != ability
- && gBaseStats[gBattleMons[bank].species].ability2 != ability)
+ u8 abilityDummyVariable = ability; // needed to match
+ if (gBaseStats[gBattleMons[bank].species].ability1 != abilityDummyVariable
+ && gBaseStats[gBattleMons[bank].species].ability2 != abilityDummyVariable)
{
ability = gBaseStats[gBattleMons[bank].species].ability1;
}
@@ -1960,137 +1478,6 @@ static void BattleAICmd_check_ability(void)
}
gAIScriptPtr += 3;
}
-#else
-__attribute__((naked))
-static void BattleAICmd_check_ability(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r4, =gAIScriptPtr\n\
- ldr r0, [r4]\n\
- ldrb r0, [r0, 0x1]\n\
- bl BattleAI_GetWantedBank\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r0, [r4]\n\
- ldrb r3, [r0, 0x2]\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r0, 0\n\
- beq _0813253A\n\
- cmp r0, 0x2\n\
- bne _081325BC\n\
-_0813253A:\n\
- ldr r0, =gBattleResources\n\
- ldr r4, [r0]\n\
- ldr r1, [r4, 0x18]\n\
- adds r1, 0x40\n\
- adds r2, r1, r5\n\
- ldrb r1, [r2]\n\
- adds r6, r0, 0\n\
- cmp r1, 0\n\
- beq _0813255C\n\
- adds r3, r1, 0\n\
- ldr r0, [r4, 0x14]\n\
- str r3, [r0, 0x8]\n\
- b _081325CA\n\
- .pool\n\
-_0813255C:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- muls r0, r5\n\
- adds r4, r0, r1\n\
- adds r0, r4, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x17\n\
- beq _08132576\n\
- cmp r0, 0x2A\n\
- beq _08132576\n\
- cmp r0, 0x47\n\
- bne _08132588\n\
-_08132576:\n\
- movs r0, 0x58\n\
- muls r0, r5\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r3, [r0]\n\
- b _081325CA\n\
- .pool\n\
-_08132588:\n\
- ldr r2, =gBaseStats\n\
- ldrh r1, [r4]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 2\n\
- adds r1, r0, r2\n\
- ldrb r4, [r1, 0x16]\n\
- cmp r4, 0\n\
- beq _081325B8\n\
- ldrb r2, [r1, 0x17]\n\
- cmp r2, 0\n\
- beq _081325B4\n\
- adds r0, r3, 0\n\
- cmp r4, r0\n\
- beq _081325CE\n\
- cmp r2, r0\n\
- beq _081325CE\n\
- adds r3, r4, 0\n\
- b _081325CA\n\
- .pool\n\
-_081325B4:\n\
- ldrb r3, [r1, 0x16]\n\
- b _081325CA\n\
-_081325B8:\n\
- ldrb r3, [r1, 0x17]\n\
- b _081325CA\n\
-_081325BC:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- muls r0, r5\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r3, [r0]\n\
- ldr r6, =gBattleResources\n\
-_081325CA:\n\
- cmp r3, 0\n\
- bne _081325E8\n\
-_081325CE:\n\
- ldr r0, [r6]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x2\n\
- str r0, [r1, 0x8]\n\
- ldr r2, =gAIScriptPtr\n\
- b _08132608\n\
- .pool\n\
-_081325E8:\n\
- ldr r0, =gAIScriptPtr\n\
- ldr r1, [r0]\n\
- adds r2, r0, 0\n\
- ldrb r1, [r1, 0x2]\n\
- cmp r3, r1\n\
- bne _08132600\n\
- ldr r0, [r6]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x1\n\
- b _08132606\n\
- .pool\n\
-_08132600:\n\
- ldr r0, [r6]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0\n\
-_08132606:\n\
- str r0, [r1, 0x8]\n\
-_08132608:\n\
- ldr r0, [r2]\n\
- adds r0, 0x3\n\
- str r0, [r2]\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif
static void BattleAICmd_get_highest_type_effectiveness(void)
{
@@ -2187,7 +1574,7 @@ static void BattleAICmd_if_status_in_party(void)
switch(gAIScriptPtr[1])
{
- case 1:
+ case AI_USER:
index = sBank_AI;
break;
default:
@@ -2400,7 +1787,7 @@ static void BattleAICmd_if_cant_faint(void)
static void BattleAICmd_if_has_move(void)
{
int i;
- u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
+ const u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
switch(gAIScriptPtr[1])
{
@@ -2467,7 +1854,7 @@ static void BattleAICmd_if_has_move(void)
static void BattleAICmd_if_dont_have_move(void)
{
int i;
- u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
+ const u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
switch(gAIScriptPtr[1])
{
@@ -2634,7 +2021,7 @@ static void BattleAICmd_if_curr_move_disabled_or_encored(void)
static void BattleAICmd_flee(void)
{
- AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK); // what matters is UNK2 being enabled.
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK);
}
static void BattleAICmd_if_random_100(void)
@@ -2649,7 +2036,7 @@ static void BattleAICmd_if_random_100(void)
static void BattleAICmd_watch(void)
{
- AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK); // what matters is UNK3 being enabled.
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK);
}
static void BattleAICmd_get_hold_effect(void)
@@ -2678,7 +2065,7 @@ static void BattleAICmd_if_holds_item(void)
u16 item;
u8 var1, var2;
- if ((bank & 1) == (sBank_AI & 1))
+ if ((bank & BIT_SIDE) == (sBank_AI & BIT_SIDE))
item = gBattleMons[bank].item;
else
item = BATTLE_HISTORY->itemEffects[bank];
@@ -2755,7 +2142,7 @@ static void BattleAICmd_get_used_held_item(void)
#ifdef NONMATCHING
AI_THINKING_STRUCT->funcResult = gBattleStruct->usedHeldItems[bank];
#else
- AI_THINKING_STRUCT->funcResult = *(u8*)((u8*)(gBattleStruct) + 0xB8 + (bank * 2));
+ AI_THINKING_STRUCT->funcResult = *(u8*)((u8*)(gBattleStruct) + offsetof(struct BattleStruct, usedHeldItems) + (bank * 2));
#endif // NONMATCHING
gAIScriptPtr += 2;
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
new file mode 100644
index 000000000..d86be6fad
--- /dev/null
+++ b/src/battle_ai_switch_items.c
@@ -0,0 +1,951 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_controllers.h"
+#include "abilities.h"
+#include "moves.h"
+#include "pokemon.h"
+#include "species.h"
+#include "rng.h"
+#include "util.h"
+#include "items.h"
+#include "pokemon_item_effects.h"
+
+extern u8 gActiveBank;
+extern u8 gAbsentBankFlags;
+extern u32 gBattleTypeFlags;
+extern u32 gStatuses3[BATTLE_BANKS_COUNT];
+extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT];
+extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT];
+extern u16 gDynamicBasePower;
+extern u8 gBattleMoveFlags;
+extern u8 gCritMultiplier;
+extern s32 gBattleMoveDamage;
+
+extern const struct BattleMove gBattleMoves[];
+extern const struct BaseStats gBaseStats[];
+extern const u8 gTypeEffectiveness[];
+extern const u8 * const gItemEffectTable[]; // todo: fix once struct is declared
+
+// this file's functions
+static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng);
+static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent);
+static bool8 ShouldUseItem(void);
+
+static bool8 ShouldSwitchIfPerishSong(void)
+{
+ if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG
+ && gDisableStructs[gActiveBank].perishSong1 == 0)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = 6;
+ EmitCmd33(1, 2, 0);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 ShouldSwitchIfWonderGuard(void)
+{
+ u8 opposingIdentity;
+ u8 opposingBank;
+ u8 moveFlags;
+ s32 i, j;
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party = NULL;
+ u16 move;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ return FALSE;
+
+ opposingIdentity = GetBankIdentity(gActiveBank) ^ BIT_SIDE;
+
+ if (gBattleMons[GetBankByIdentity(opposingIdentity)].ability != ABILITY_WONDER_GUARD)
+ return FALSE;
+
+ // check if pokemon has a super effective move
+ for (opposingBank = GetBankByIdentity(opposingIdentity), i = 0; i < 4; i++)
+ {
+ move = gBattleMons[gActiveBank].moves[i];
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ return FALSE;
+ }
+
+ // get party information
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ // find a pokemon in the party that has a super effective move
+ for (i = firstId; i < lastId; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlePartyID[gActiveBank])
+ continue;
+
+ GetMonData(&party[i], MON_DATA_SPECIES); // unused return value
+ GetMonData(&party[i], MON_DATA_ALT_ABILITY); // unused return value
+
+ for (opposingBank = GetBankByIdentity(opposingIdentity), j = 0; j < 4; j++)
+ {
+ move = GetMonData(&party[i], MON_DATA_MOVE1 + j);
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % 3 < 2)
+ {
+ // we found a mon
+ *(gBattleStruct->field_294 + gActiveBank) = i;
+ EmitCmd33(1, 2, 0);
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard
+}
+
+static bool8 FindMonThatAbsorbsOpponentsMove(void)
+{
+ u8 bankIn1, bankIn2;
+ u8 absorbingTypeAbility;
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party;
+ s32 i;
+
+ if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0)
+ return FALSE;
+ if (gUnknown_02024250[gActiveBank] == 0)
+ return FALSE;
+ if (gUnknown_02024250[gActiveBank] == 0xFFFF)
+ return FALSE;
+ if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0)
+ return FALSE;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ bankIn1 = gActiveBank;
+ if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)])
+ bankIn2 = gActiveBank;
+ else
+ bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON);
+ }
+ else
+ {
+ bankIn1 = gActiveBank;
+ bankIn2 = gActiveBank;
+ }
+
+ if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_FIRE)
+ absorbingTypeAbility = ABILITY_FLASH_FIRE;
+ else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_WATER)
+ absorbingTypeAbility = ABILITY_WATER_ABSORB;
+ else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_ELECTRIC)
+ absorbingTypeAbility = ABILITY_VOLT_ABSORB;
+ else
+ return FALSE;
+
+ if (gBattleMons[gActiveBank].ability == absorbingTypeAbility)
+ return FALSE;
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = firstId; i < lastId; i++)
+ {
+ u16 species;
+ u8 monAbility;
+
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlePartyID[bankIn1])
+ continue;
+ if (i == gBattlePartyID[bankIn2])
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ species = GetMonData(&party[i], MON_DATA_SPECIES);
+ if (GetMonData(&party[i], MON_DATA_ALT_ABILITY) != 0)
+ monAbility = gBaseStats[species].ability2;
+ else
+ monAbility = gBaseStats[species].ability1;
+
+ if (absorbingTypeAbility == monAbility && Random() & 1)
+ {
+ // we found a mon
+ *(gBattleStruct->field_294 + gActiveBank) = i;
+ EmitCmd33(1, 2, 0);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static bool8 ShouldSwitchIfNaturalCure(void)
+{
+ if (!(gBattleMons[gActiveBank].status1 & STATUS_SLEEP))
+ return FALSE;
+ if (gBattleMons[gActiveBank].ability != ABILITY_NATURAL_CURE)
+ return FALSE;
+ if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2)
+ return FALSE;
+
+ if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = 6;
+ EmitCmd33(1, 2, 0);
+ return TRUE;
+ }
+ else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = 6;
+ EmitCmd33(1, 2, 0);
+ return TRUE;
+ }
+
+ if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 1))
+ return TRUE;
+ if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 1))
+ return TRUE;
+ if (Random() & 1)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = 6;
+ EmitCmd33(1, 2, 0);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng)
+{
+ u8 opposingIdentity;
+ u8 opposingBank;
+ s32 i;
+ u8 moveFlags;
+ u16 move;
+
+ opposingIdentity = GetBankIdentity(gActiveBank) ^ BIT_SIDE;
+ opposingBank = GetBankByIdentity(opposingIdentity);
+
+ if (!(gAbsentBankFlags & gBitTable[opposingBank]))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ move = gBattleMons[gActiveBank].moves[i];
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ {
+ if (noRng)
+ return TRUE;
+ if (Random() % 10 != 0)
+ return TRUE;
+ }
+ }
+ }
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ return FALSE;
+
+ opposingBank = GetBankByIdentity(opposingIdentity ^ BIT_MON);
+
+ if (!(gAbsentBankFlags & gBitTable[opposingBank]))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ move = gBattleMons[gActiveBank].moves[i];
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ {
+ if (noRng)
+ return TRUE;
+ if (Random() % 10 != 0)
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static bool8 AreStatsRaised(void)
+{
+ u8 buffedStatsValue = 0;
+ s32 i;
+
+ for (i = 0; i < BATTLE_STATS_NO; i++)
+ {
+ if (gBattleMons[gActiveBank].statStages[i] > 6)
+ buffedStatsValue += gBattleMons[gActiveBank].statStages[i] - 6;
+ }
+
+ return (buffedStatsValue > 3);
+}
+
+static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
+{
+ u8 bankIn1, bankIn2;
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party;
+ s32 i, j;
+ u16 move;
+ u8 moveFlags;
+
+ if (gUnknown_02024250[gActiveBank] == 0)
+ return FALSE;
+ if (gUnknown_02024250[gActiveBank] == 0xFFFF)
+ return FALSE;
+ if (gUnknown_02024270[gActiveBank] == 0xFF)
+ return FALSE;
+ if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0)
+ return FALSE;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ bankIn1 = gActiveBank;
+ if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)])
+ bankIn2 = gActiveBank;
+ else
+ bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON);
+ }
+ else
+ {
+ bankIn1 = gActiveBank;
+ bankIn2 = gActiveBank;
+ }
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = firstId; i < lastId; i++)
+ {
+ u16 species;
+ u8 monAbility;
+
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlePartyID[bankIn1])
+ continue;
+ if (i == gBattlePartyID[bankIn2])
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ species = GetMonData(&party[i], MON_DATA_SPECIES);
+ if (GetMonData(&party[i], MON_DATA_ALT_ABILITY) != 0)
+ monAbility = gBaseStats[species].ability2;
+ else
+ monAbility = gBaseStats[species].ability1;
+
+ moveFlags = AI_TypeCalc(gUnknown_02024250[gActiveBank], species, monAbility);
+ if (moveFlags & flags)
+ {
+ bankIn1 = gUnknown_02024270[gActiveBank];
+
+ for (j = 0; j < 4; j++)
+ {
+ move = GetMonData(&party[i], MON_DATA_MOVE1 + j);
+ if (move == 0)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[bankIn1].species, gBattleMons[bankIn1].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % moduloPercent == 0)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = i;
+ EmitCmd33(1, 2, 0);
+ return TRUE;
+ }
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static bool8 ShouldSwitch(void)
+{
+ u8 bankIn1, bankIn2;
+ u8 *activeBankPtr; // needed to match
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party;
+ s32 i;
+ s32 availableToSwitch;
+
+ if (gBattleMons[*(activeBankPtr = &gActiveBank)].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ return FALSE;
+ if (gStatuses3[gActiveBank] & STATUS3_ROOTED)
+ return FALSE;
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_SHADOW_TAG, 0, 0))
+ return FALSE;
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_ARENA_TRAP, 0, 0))
+ return FALSE; // misses the flying or levitate check
+ if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MAGNET_PULL, 0, 0))
+ {
+ if (gBattleMons[gActiveBank].type1 == TYPE_STEEL)
+ return FALSE;
+ if (gBattleMons[gActiveBank].type2 == TYPE_STEEL)
+ return FALSE;
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ return FALSE;
+
+ availableToSwitch = 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ bankIn1 = *activeBankPtr;
+ if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(*activeBankPtr) ^ BIT_MON)])
+ bankIn2 = *activeBankPtr;
+ else
+ bankIn2 = GetBankByIdentity(GetBankIdentity(*activeBankPtr) ^ BIT_MON);
+ }
+ else
+ {
+ bankIn1 = *activeBankPtr;
+ bankIn2 = *activeBankPtr;
+ }
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = firstId; i < lastId; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlePartyID[bankIn1])
+ continue;
+ if (i == gBattlePartyID[bankIn2])
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ availableToSwitch++;
+ }
+
+ if (availableToSwitch == 0)
+ return FALSE;
+ if (ShouldSwitchIfPerishSong())
+ return TRUE;
+ if (ShouldSwitchIfWonderGuard())
+ return TRUE;
+ if (FindMonThatAbsorbsOpponentsMove())
+ return TRUE;
+ if (ShouldSwitchIfNaturalCure())
+ return TRUE;
+ if (HasSuperEffectiveMoveAgainstOpponents(FALSE))
+ return FALSE;
+ if (AreStatsRaised())
+ return FALSE;
+ if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 2)
+ || FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 3))
+ return TRUE;
+
+ return FALSE;
+}
+
+void AI_TrySwitchOrUseItem(void)
+{
+ struct Pokemon *party;
+ u8 bankIn1, bankIn2;
+ s32 firstId;
+ s32 lastId; // + 1
+ u8 bankIdentity = GetBankIdentity(gActiveBank);
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (ShouldSwitch())
+ {
+ if (*(gBattleStruct->field_294 + gActiveBank) == 6)
+ {
+ s32 monToSwitchId = GetMostSuitableMonToSwitchInto();
+ if (monToSwitchId == 6)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ bankIn1 = GetBankByIdentity(bankIdentity);
+ bankIn2 = bankIn1;
+ }
+ else
+ {
+ bankIn1 = GetBankByIdentity(bankIdentity);
+ bankIn2 = GetBankByIdentity(bankIdentity ^ BIT_MON);
+ }
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ for (monToSwitchId = firstId; monToSwitchId < lastId; monToSwitchId++)
+ {
+ if (GetMonData(&party[monToSwitchId], MON_DATA_HP) == 0)
+ continue;
+ if (monToSwitchId == gBattlePartyID[bankIn1])
+ continue;
+ if (monToSwitchId == gBattlePartyID[bankIn2])
+ continue;
+ if (monToSwitchId == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (monToSwitchId == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ break;
+ }
+ }
+
+ *(gBattleStruct->field_294 + gActiveBank) = monToSwitchId;
+ }
+
+ *(gBattleStruct->field_5C + gActiveBank) = *(gBattleStruct->field_294 + gActiveBank);
+ return;
+ }
+ else if (ShouldUseItem())
+ {
+ return;
+ }
+ }
+
+ EmitCmd33(1, 0, (gActiveBank ^ BIT_SIDE) << 8);
+}
+
+#define TYPE_FORESIGHT 0xFE
+#define TYPE_ENDTABLE 0xFF
+
+static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var)
+{
+ s32 i = 0;
+
+ while (gTypeEffectiveness[i] != TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ i += 3;
+ continue;
+ }
+ else if (gTypeEffectiveness[i] == atkType)
+ {
+ // check type1
+ if (gTypeEffectiveness[i + 1] == defType1)
+ *var = (*var * gTypeEffectiveness[i + 2]) / 10;
+ // check type2
+ if (gTypeEffectiveness[i + 1] == defType2 && defType1 != defType2)
+ *var = (*var * gTypeEffectiveness[i + 2]) / 10;
+ }
+ i += 3;
+ }
+}
+
+u8 GetMostSuitableMonToSwitchInto(void)
+{
+ u8 opposingBank;
+ u8 bestDmg; // note : should be changed to u32 for obvious reasons
+ u8 bestMonId;
+ u8 bankIn1, bankIn2;
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party;
+ s32 i, j;
+ u8 invalidMons;
+ u16 move;
+
+ if (*(gBattleStruct->field_5C + gActiveBank) != 6)
+ return *(gBattleStruct->field_5C + gActiveBank);
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ return gBattlePartyID[gActiveBank] + 1;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ bankIn1 = gActiveBank;
+ if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)])
+ bankIn2 = gActiveBank;
+ else
+ bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON);
+
+ // UB: It considers the opponent only player's side even though it can battle alongside player;
+ opposingBank = Random() & BIT_MON;
+ if (gAbsentBankFlags & gBitTable[opposingBank])
+ opposingBank ^= BIT_MON;
+ }
+ else
+ {
+ opposingBank = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_SIDE);
+ bankIn1 = gActiveBank;
+ bankIn2 = gActiveBank;
+ }
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ invalidMons = 0;
+
+ while (invalidMons != 0x3F) // all mons are invalid
+ {
+ bestDmg = 0;
+ bestMonId = 6;
+ // find the mon which type is the most suitable offensively
+ for (i = firstId; i < lastId; i++)
+ {
+ u16 species = GetMonData(&party[i], MON_DATA_SPECIES);
+ if (species != SPECIES_NONE
+ && GetMonData(&party[i], MON_DATA_HP) != 0
+ && !(gBitTable[i] & invalidMons)
+ && gBattlePartyID[bankIn1] != i
+ && gBattlePartyID[bankIn2] != i
+ && i != *(gBattleStruct->field_5C + bankIn1)
+ && i != *(gBattleStruct->field_5C + bankIn2))
+ {
+ u8 type1 = gBaseStats[species].type1;
+ u8 type2 = gBaseStats[species].type2;
+ u8 typeDmg = 10;
+ ModulateByTypeEffectiveness(gBattleMons[opposingBank].type1, type1, type2, &typeDmg);
+ ModulateByTypeEffectiveness(gBattleMons[opposingBank].type2, type1, type2, &typeDmg);
+ if (bestDmg < typeDmg)
+ {
+ bestDmg = typeDmg;
+ bestMonId = i;
+ }
+ }
+ else
+ {
+ invalidMons |= gBitTable[i];
+ }
+ }
+
+ // ok, we know the mon has the right typing but does it have at least one super effective move?
+ if (bestMonId != 6)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ move = GetMonData(&party[bestMonId], MON_DATA_MOVE1 + i);
+ if (move != MOVE_NONE && TypeCalc(move, gActiveBank, opposingBank) & MOVESTATUS_SUPEREFFECTIVE)
+ break;
+ }
+
+ if (i != 4)
+ return bestMonId; // has both the typing and at least one super effective move
+
+ invalidMons |= gBitTable[bestMonId]; // sorry buddy, we want something better
+ }
+ else
+ {
+ invalidMons = 0x3F; // no viable mon to switch
+ }
+ }
+
+ gDynamicBasePower = 0;
+ gBattleStruct->dynamicMoveType = 0;
+ gBattleScripting.dmgMultiplier = 1;
+ gBattleMoveFlags = 0;
+ gCritMultiplier = 1;
+ bestDmg = 0;
+ bestMonId = 6;
+
+ // if we couldn't find the best mon in terms of typing, find the one that deals most damage
+ for (i = firstId; i < lastId; i++)
+ {
+ if ((u16)(GetMonData(&party[i], MON_DATA_SPECIES)) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (gBattlePartyID[bankIn1] == i)
+ continue;
+ if (gBattlePartyID[bankIn2] == i)
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ for (j = 0; j < 4; j++)
+ {
+ move = GetMonData(&party[i], MON_DATA_MOVE1 + j);
+ gBattleMoveDamage = 0;
+ if (move != MOVE_NONE && gBattleMoves[move].power != 1)
+ {
+ AI_CalcDmg(gActiveBank, opposingBank);
+ TypeCalc(move, gActiveBank, opposingBank);
+ }
+ if (bestDmg < gBattleMoveDamage)
+ {
+ bestDmg = gBattleMoveDamage;
+ bestMonId = i;
+ }
+ }
+ }
+
+ return bestMonId;
+}
+
+// TODO: use PokemonItemEffect struct instead of u8 once it's documented
+static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u16 as item Id argument
+{
+ if (itemId == ITEM_FULL_RESTORE)
+ return AI_ITEM_FULL_RESTORE;
+ if (itemEffect[4] & 4)
+ return AI_ITEM_HEAL_HP;
+ if (itemEffect[3] & 0x3F)
+ return AI_ITEM_CURE_CONDITION;
+ if (itemEffect[0] & 0x3F || itemEffect[1] != 0 || itemEffect[2] != 0)
+ return AI_ITEM_X_STAT;
+ if (itemEffect[3] & 0x80)
+ return AI_ITEM_GUARD_SPECS;
+
+ return AI_ITEM_NOT_RECOGNIZABLE;
+}
+
+static bool8 ShouldUseItem(void)
+{
+ struct Pokemon *party;
+ s32 i;
+ u8 validMons = 0;
+ bool8 shouldUse = FALSE;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON2)
+ return FALSE;
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_HP) != 0
+ && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
+ && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
+ {
+ validMons++;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ u16 item;
+ const u8 *itemEffects;
+ u8 paramOffset;
+ u8 bankSide;
+
+ if (i != 0 && validMons > (gBattleResources->battleHistory->itemsNo - i) + 1)
+ continue;
+ item = gBattleResources->battleHistory->trainerItems[i];
+ if (item == ITEM_NONE)
+ continue;
+ if (gItemEffectTable[item - 13] == NULL)
+ continue;
+
+ if (item == ITEM_ENIGMA_BERRY)
+ itemEffects = gSaveBlock1Ptr->enigmaBerry.itemEffect;
+ else
+ itemEffects = gItemEffectTable[item - 13];
+
+ *(gBattleStruct->AI_itemType + gActiveBank / 2) = GetAI_ItemType(item, itemEffects);
+
+ switch (*(gBattleStruct->AI_itemType + gActiveBank / 2))
+ {
+ case AI_ITEM_FULL_RESTORE:
+ if (gBattleMons[gActiveBank].hp >= gBattleMons[gActiveBank].maxHP / 4)
+ break;
+ if (gBattleMons[gActiveBank].hp == 0)
+ break;
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_HEAL_HP:
+ paramOffset = GetItemEffectParamOffset(item, 4, 4);
+ if (paramOffset == 0)
+ break;
+ if (gBattleMons[gActiveBank].hp == 0)
+ break;
+ if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 4 || gBattleMons[gActiveBank].maxHP - gBattleMons[gActiveBank].hp > itemEffects[paramOffset])
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_CURE_CONDITION:
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) = 0;
+ if (itemEffects[3] & 0x20 && gBattleMons[gActiveBank].status1 & STATUS_SLEEP)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x20;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBank].status1 & STATUS_POISON || gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON))
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x10;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x8 && gBattleMons[gActiveBank].status1 & STATUS_BURN)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x8;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x4 && gBattleMons[gActiveBank].status1 & STATUS_FREEZE)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x4;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x2 && gBattleMons[gActiveBank].status1 & STATUS_PARALYSIS)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x2;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x1 && gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x1;
+ shouldUse = TRUE;
+ }
+ break;
+ case AI_ITEM_X_STAT:
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) = 0;
+ if (gDisableStructs[gActiveBank].isFirstTurn == 0)
+ break;
+ if (itemEffects[0] & 0xF)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x1;
+ if (itemEffects[1] & 0xF0)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x2;
+ if (itemEffects[1] & 0xF)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x4;
+ if (itemEffects[2] & 0xF)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x8;
+ if (itemEffects[2] & 0xF0)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x20;
+ if (itemEffects[0] & 0x30)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x80;
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_GUARD_SPECS:
+ bankSide = GetBankSide(gActiveBank);
+ if (gDisableStructs[gActiveBank].isFirstTurn != 0 && gSideTimers[bankSide].mistTimer == 0)
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_NOT_RECOGNIZABLE:
+ return FALSE;
+ }
+
+ if (shouldUse)
+ {
+ EmitCmd33(1, 1, 0);
+ *(gBattleStruct->field_C0 + (gActiveBank / 2) * 2) = item;
+ gBattleResources->battleHistory->trainerItems[i] = 0;
+ return shouldUse;
+ }
+ }
+
+ return FALSE;
+}
diff --git a/src/battle_anim.c b/src/battle_anim.c
new file mode 100644
index 000000000..023272017
--- /dev/null
+++ b/src/battle_anim.c
@@ -0,0 +1,1850 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "sprite.h"
+#include "contest.h"
+#include "m4a.h"
+#include "pokemon.h"
+#include "battle_interface.h"
+#include "task.h"
+#include "decompress.h"
+#include "sound.h"
+#include "dma3.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "main.h"
+
+// sprites start at 10000 and thus must be subtracted of 10000 to account for the true index.
+#define GET_TRUE_SPRITE_INDEX(i) ((i - 10000))
+
+#define SCRIPT_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define SCRIPT_READ_32(ptr) (((ptr)[0]) + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
+#define SCRIPT_READ_PTR(ptr) ((const u8*)(SCRIPT_READ_32(ptr)))
+
+#define ANIM_SPRITE_INDEX_COUNT 8
+
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u16 gBattle_WIN0H;
+extern u16 gBattle_WIN0V;
+extern u16 gBattle_WIN1H;
+extern u16 gBattle_WIN1V;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern struct MusicPlayerInfo gMPlay_SE1;
+extern struct MusicPlayerInfo gMPlay_SE2;
+extern u8 gDecompressionBuffer[];
+
+extern const u16 gUnknown_082C8D64[];
+extern const u8 * const gBattleAnims_Moves[];
+extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
+extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
+extern const struct BattleAnimBackground gBattleAnimBackgroundTable[];
+
+extern void sub_80A8278(void); // rom_80A5C6C.s
+extern void sub_80A6B30(struct UnknownAnimStruct2*); // rom_80A5C6C.s
+extern void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1); // rom_80A5C6C.s
+extern u8 sub_80A82E4(u8 bank); // rom_80A5C6C.s
+extern u8 sub_80A5C6C(u8 bank, u8 attributeId); // rom_80A5C6C.s
+extern bool8 AnimBankSpriteExists(u8 bank); // rom_80A5C6C.s
+extern void sub_80A6C68(u8 arg0); // rom_80A5C6C.s
+extern u8 GetAnimBankSpriteId(u8 wantedBank); // rom_80A5C6C.s
+extern u8 sub_80A6D94(void);
+extern u8 sub_80A8364(u8);
+extern bool8 IsDoubleBattle(void);
+
+// this file's functions
+static void ScriptCmd_loadspritegfx(void);
+static void ScriptCmd_unloadspritegfx(void);
+static void ScriptCmd_createsprite(void);
+static void ScriptCmd_createvisualtask(void);
+static void ScriptCmd_delay(void);
+static void ScriptCmd_waitforvisualfinish(void);
+static void ScriptCmd_hang1(void);
+static void ScriptCmd_hang2(void);
+static void ScriptCmd_end(void);
+static void ScriptCmd_playse(void);
+static void ScriptCmd_monbg(void);
+static void ScriptCmd_clearmonbg(void);
+static void ScriptCmd_setalpha(void);
+static void ScriptCmd_blendoff(void);
+static void ScriptCmd_call(void);
+static void ScriptCmd_return(void);
+static void ScriptCmd_setarg(void);
+static void ScriptCmd_choosetwoturnanim(void);
+static void ScriptCmd_jumpifmoveturn(void);
+static void ScriptCmd_jump(void);
+static void ScriptCmd_fadetobg(void);
+static void ScriptCmd_restorebg(void);
+static void ScriptCmd_waitbgfadeout(void);
+static void ScriptCmd_waitbgfadein(void);
+static void ScriptCmd_changebg(void);
+static void ScriptCmd_playsewithpan(void);
+static void ScriptCmd_setpan(void);
+static void ScriptCmd_panse_1B(void);
+static void ScriptCmd_loopsewithpan(void);
+static void ScriptCmd_waitplaysewithpan(void);
+static void ScriptCmd_setbldcnt(void);
+static void ScriptCmd_createsoundtask(void);
+static void ScriptCmd_waitsound(void);
+static void ScriptCmd_jumpargeq(void);
+static void ScriptCmd_monbg_22(void);
+static void ScriptCmd_clearmonbg_23(void);
+static void ScriptCmd_jumpifcontest(void);
+static void ScriptCmd_fadetobgfromset(void);
+static void ScriptCmd_panse_26(void);
+static void ScriptCmd_panse_27(void);
+static void ScriptCmd_monbgprio_28(void);
+static void ScriptCmd_monbgprio_29(void);
+static void ScriptCmd_monbgprio_2A(void);
+static void ScriptCmd_invisible(void);
+static void ScriptCmd_visible(void);
+static void ScriptCmd_doublebattle_2D(void);
+static void ScriptCmd_doublebattle_2E(void);
+static void ScriptCmd_stopsound(void);
+
+static void RunAnimScriptCommand(void);
+static void task_pA_ma0A_obj_to_bg_pal(u8 taskId);
+static void sub_80A46A0(void);
+static void sub_80A4980(u8 taskId);
+static void sub_80A4BB0(u8 taskId);
+static void Task_FadeToBg(u8 taskId);
+static void Task_PanFromInitialToTarget(u8 taskId);
+static void Task_LoopAndPlaySE(u8 taskId);
+static void Task_WaitAndPlaySE(u8 taskId);
+static void LoadDefaultBg(void);
+static void LoadMoveBg(u16 bgId);
+
+// ewram
+EWRAM_DATA static const u8 *sBattleAnimScriptPtr = NULL;
+EWRAM_DATA static const u8 *sBattleAnimScriptRetAddr = NULL;
+EWRAM_DATA void (*gAnimScriptCallback)(void) = NULL;
+EWRAM_DATA static s8 gAnimFramesToWait = 0;
+EWRAM_DATA bool8 gAnimScriptActive = FALSE;
+EWRAM_DATA u8 gAnimVisualTaskCount = 0;
+EWRAM_DATA u8 gAnimSoundTaskCount = 0;
+EWRAM_DATA struct DisableStruct *gAnimDisableStructPtr = NULL;
+EWRAM_DATA u32 gAnimMoveDmg = 0;
+EWRAM_DATA u16 gAnimMovePower = 0;
+EWRAM_DATA static u16 sAnimSpriteIndexArray[ANIM_SPRITE_INDEX_COUNT] = {0};
+EWRAM_DATA u8 gAnimFriendship = 0;
+EWRAM_DATA u16 gWeatherMoveAnim = 0;
+EWRAM_DATA s16 gBattleAnimArgs[ANIM_ARGS_COUNT] = {0};
+EWRAM_DATA static u16 sSoundAnimFramesToWait = 0;
+EWRAM_DATA static u8 sMonAnimTaskIdArray[2] = {0};
+EWRAM_DATA u8 gAnimMoveTurn = 0;
+EWRAM_DATA static u8 sAnimBackgroundFadeState = 0;
+EWRAM_DATA static u16 sAnimMoveIndex = 0; // set but unused.
+EWRAM_DATA u8 gAnimBankAttacker = 0;
+EWRAM_DATA u8 gAnimBankTarget = 0;
+EWRAM_DATA u16 gAnimSpeciesByBanks[BATTLE_BANKS_COUNT] = {0};
+EWRAM_DATA u8 gUnknown_02038440 = 0;
+
+// const rom data
+static void (* const sScriptCmdTable[])(void) =
+{
+ ScriptCmd_loadspritegfx,
+ ScriptCmd_unloadspritegfx,
+ ScriptCmd_createsprite,
+ ScriptCmd_createvisualtask,
+ ScriptCmd_delay,
+ ScriptCmd_waitforvisualfinish,
+ ScriptCmd_hang1,
+ ScriptCmd_hang2,
+ ScriptCmd_end,
+ ScriptCmd_playse,
+ ScriptCmd_monbg,
+ ScriptCmd_clearmonbg,
+ ScriptCmd_setalpha,
+ ScriptCmd_blendoff,
+ ScriptCmd_call,
+ ScriptCmd_return,
+ ScriptCmd_setarg,
+ ScriptCmd_choosetwoturnanim,
+ ScriptCmd_jumpifmoveturn,
+ ScriptCmd_jump,
+ ScriptCmd_fadetobg,
+ ScriptCmd_restorebg,
+ ScriptCmd_waitbgfadeout,
+ ScriptCmd_waitbgfadein,
+ ScriptCmd_changebg,
+ ScriptCmd_playsewithpan,
+ ScriptCmd_setpan,
+ ScriptCmd_panse_1B,
+ ScriptCmd_loopsewithpan,
+ ScriptCmd_waitplaysewithpan,
+ ScriptCmd_setbldcnt,
+ ScriptCmd_createsoundtask,
+ ScriptCmd_waitsound,
+ ScriptCmd_jumpargeq,
+ ScriptCmd_monbg_22,
+ ScriptCmd_clearmonbg_23,
+ ScriptCmd_jumpifcontest,
+ ScriptCmd_fadetobgfromset,
+ ScriptCmd_panse_26,
+ ScriptCmd_panse_27,
+ ScriptCmd_monbgprio_28,
+ ScriptCmd_monbgprio_29,
+ ScriptCmd_monbgprio_2A,
+ ScriptCmd_invisible,
+ ScriptCmd_visible,
+ ScriptCmd_doublebattle_2D,
+ ScriptCmd_doublebattle_2E,
+ ScriptCmd_stopsound
+};
+
+void ClearBattleAnimationVars(void)
+{
+ s32 i;
+
+ gAnimFramesToWait = 0;
+ gAnimScriptActive = FALSE;
+ gAnimVisualTaskCount = 0;
+ gAnimSoundTaskCount = 0;
+ gAnimDisableStructPtr = NULL;
+ gAnimMoveDmg = 0;
+ gAnimMovePower = 0;
+ gAnimFriendship = 0;
+
+ // clear index array.
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
+ sAnimSpriteIndexArray[i] |= 0xFFFF;
+
+ // clear anim args.
+ for (i = 0; i < ANIM_ARGS_COUNT; i++)
+ gBattleAnimArgs[i] = 0;
+
+ sMonAnimTaskIdArray[0] = 0xFF;
+ sMonAnimTaskIdArray[1] = 0xFF;
+ gAnimMoveTurn = 0;
+ sAnimBackgroundFadeState = 0;
+ sAnimMoveIndex = 0;
+ gAnimBankAttacker = 0;
+ gAnimBankTarget = 0;
+ gUnknown_02038440 = 0;
+}
+
+void DoMoveAnim(u16 move)
+{
+ gAnimBankAttacker = gBankAttacker;
+ gAnimBankTarget = gBankTarget;
+ DoBattleAnim(gBattleAnims_Moves, move, TRUE);
+}
+
+void DoBattleAnim(const u8 *const animsTable[], u16 tableId, bool8 isMoveAnim)
+{
+ s32 i;
+
+ if (!IsContest())
+ {
+ sub_80A8278();
+ UpdateOamPriorityInAllHealthboxes(0);
+ for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ {
+ if (GetBankSide(i) != 0)
+ gAnimSpeciesByBanks[i] = GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_SPECIES);
+ else
+ gAnimSpeciesByBanks[i] = GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_SPECIES);
+ }
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ gAnimSpeciesByBanks[i] = gContestResources->field_18->field_0;
+ }
+
+ if (!isMoveAnim)
+ sAnimMoveIndex = 0;
+ else
+ sAnimMoveIndex = tableId;
+
+ for (i = 0; i < ANIM_ARGS_COUNT; i++)
+ gBattleAnimArgs[i] = 0;
+
+ sMonAnimTaskIdArray[0] = 0xFF;
+ sMonAnimTaskIdArray[1] = 0xFF;
+ sBattleAnimScriptPtr = animsTable[tableId];
+ gAnimScriptActive = TRUE;
+ gAnimFramesToWait = 0;
+ gAnimScriptCallback = RunAnimScriptCommand;
+
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
+ sAnimSpriteIndexArray[i] |= 0xFFFF;
+
+ if (isMoveAnim)
+ {
+ for (i = 0; gUnknown_082C8D64[i] != 0xFFFF; i++)
+ {
+ if (tableId == gUnknown_082C8D64[i])
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128);
+ break;
+ }
+ }
+ }
+
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ gBattle_WIN1H = 0;
+ gBattle_WIN1V = 0;
+}
+
+void DestroyAnimSprite(struct Sprite *sprite)
+{
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ gAnimVisualTaskCount--;
+}
+
+void DestroyAnimVisualTask(u8 taskId)
+{
+ DestroyTask(taskId);
+ gAnimVisualTaskCount--;
+}
+
+void DestroyAnimSoundTask(u8 taskId)
+{
+ DestroyTask(taskId);
+ gAnimSoundTaskCount--;
+}
+
+static void AddSpriteIndex(u16 index)
+{
+ s32 i;
+
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
+ {
+ if (sAnimSpriteIndexArray[i] == 0xFFFF)
+ {
+ sAnimSpriteIndexArray[i] = index;
+ return;
+ }
+ }
+}
+
+static void ClearSpriteIndex(u16 index)
+{
+ s32 i;
+
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
+ {
+ if (sAnimSpriteIndexArray[i] == index)
+ {
+ sAnimSpriteIndexArray[i] |= 0xFFFF;
+ return;
+ }
+ }
+}
+
+static void WaitAnimFrameCount(void)
+{
+ if (gAnimFramesToWait <= 0)
+ {
+ gAnimScriptCallback = RunAnimScriptCommand;
+ gAnimFramesToWait = 0;
+ }
+ else
+ {
+ gAnimFramesToWait--;
+ }
+}
+
+static void RunAnimScriptCommand(void)
+{
+ do
+ {
+ sScriptCmdTable[sBattleAnimScriptPtr[0]]();
+ } while (gAnimFramesToWait == 0 && gAnimScriptActive);
+}
+
+static void ScriptCmd_loadspritegfx(void)
+{
+ u16 index;
+
+ sBattleAnimScriptPtr++;
+ index = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ LoadCompressedObjectPicUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]);
+ LoadCompressedObjectPaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]);
+ sBattleAnimScriptPtr += 2;
+ AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
+ gAnimFramesToWait = 1;
+ gAnimScriptCallback = WaitAnimFrameCount;
+}
+
+static void ScriptCmd_unloadspritegfx(void)
+{
+ u16 index;
+
+ sBattleAnimScriptPtr++;
+ index = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag);
+ FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag);
+ sBattleAnimScriptPtr += 2;
+ ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
+}
+
+static void ScriptCmd_createsprite(void)
+{
+ s32 i;
+ const struct SpriteTemplate *template;
+ u8 argVar;
+ u8 argsCount;
+ s16 subpriority;
+
+ sBattleAnimScriptPtr++;
+ template = (const struct SpriteTemplate *)(SCRIPT_READ_32(sBattleAnimScriptPtr));
+ sBattleAnimScriptPtr += 4;
+
+ argVar = sBattleAnimScriptPtr[0];
+ sBattleAnimScriptPtr++;
+
+ argsCount = sBattleAnimScriptPtr[0];
+ sBattleAnimScriptPtr++;
+ for (i = 0; i < argsCount; i++)
+ {
+ gBattleAnimArgs[i] = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 2;
+ }
+
+ if (argVar & 0x80)
+ {
+ argVar ^= 0x80;
+ if (argVar >= 0x40)
+ argVar -= 0x40;
+ else
+ argVar *= -1;
+
+ subpriority = sub_80A82E4(gAnimBankTarget) + (s8)(argVar);
+ }
+ else
+ {
+ if (argVar >= 0x40)
+ argVar -= 0x40;
+ else
+ argVar *= -1;
+
+ subpriority = sub_80A82E4(gAnimBankAttacker) + (s8)(argVar);
+ }
+
+ if (subpriority < 3)
+ subpriority = 3;
+
+ CreateSpriteAndAnimate(template, sub_80A5C6C(gAnimBankTarget, 2), sub_80A5C6C(gAnimBankTarget, 3), subpriority);
+ gAnimVisualTaskCount++;
+}
+
+static void ScriptCmd_createvisualtask(void)
+{
+ TaskFunc taskFunc;
+ u8 taskPriority;
+ u8 taskId;
+ u8 numArgs;
+ s32 i;
+
+ sBattleAnimScriptPtr++;
+
+ taskFunc = (TaskFunc)SCRIPT_READ_32(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 4;
+
+ taskPriority = sBattleAnimScriptPtr[0];
+ sBattleAnimScriptPtr++;
+
+ numArgs = sBattleAnimScriptPtr[0];
+ sBattleAnimScriptPtr++;
+
+ for (i = 0; i < numArgs; i++)
+ {
+ gBattleAnimArgs[i] = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 2;
+ }
+
+ taskId = CreateTask(taskFunc, taskPriority);
+ taskFunc(taskId);
+ gAnimVisualTaskCount++;
+}
+
+static void ScriptCmd_delay(void)
+{
+ sBattleAnimScriptPtr++;
+ gAnimFramesToWait = sBattleAnimScriptPtr[0];
+ if (gAnimFramesToWait == 0)
+ gAnimFramesToWait = -1;
+ sBattleAnimScriptPtr++;
+ gAnimScriptCallback = WaitAnimFrameCount;
+}
+
+// wait for visual tasks to finish.
+static void ScriptCmd_waitforvisualfinish(void)
+{
+ if (gAnimVisualTaskCount == 0)
+ {
+ sBattleAnimScriptPtr++;
+ gAnimFramesToWait = 0;
+ }
+ else
+ {
+ gAnimFramesToWait = 1;
+ }
+}
+
+static void ScriptCmd_hang1(void)
+{
+}
+
+static void ScriptCmd_hang2(void)
+{
+}
+
+static void ScriptCmd_end(void)
+{
+ s32 i;
+ bool32 continuousAnim = FALSE;
+
+ // keep waiting as long as there is animations to be done.
+ if (gAnimVisualTaskCount != 0 || gAnimSoundTaskCount != 0
+ || sMonAnimTaskIdArray[0] != 0xFF || sMonAnimTaskIdArray[1] != 0xFF)
+ {
+ sSoundAnimFramesToWait = 0;
+ gAnimFramesToWait = 1;
+ return;
+ }
+
+ // finish the sound effects.
+ if (IsSEPlaying())
+ {
+ if (++sSoundAnimFramesToWait <= 90) // wait 90 frames, then halt the sound effect.
+ {
+ gAnimFramesToWait = 1;
+ return;
+ }
+ else
+ {
+ m4aMPlayStop(&gMPlay_SE1);
+ m4aMPlayStop(&gMPlay_SE2);
+ }
+ }
+
+ // the SE has halted, so set the SE Frame Counter to 0 and continue.
+ sSoundAnimFramesToWait = 0;
+
+ for (i = 0; i < ANIM_SPRITE_INDEX_COUNT; i++)
+ {
+ if (sAnimSpriteIndexArray[i] != 0xFFFF)
+ {
+ FreeSpriteTilesByTag(gBattleAnimPicTable[sAnimSpriteIndexArray[i]].tag);
+ FreeSpritePaletteByTag(gBattleAnimPicTable[sAnimSpriteIndexArray[i]].tag);
+ sAnimSpriteIndexArray[i] |= 0xFFFF; // set terminator.
+ }
+ }
+
+ if (!continuousAnim) // may have been used for debug?
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
+ if (!IsContest())
+ {
+ sub_80A8278();
+ UpdateOamPriorityInAllHealthboxes(1);
+ }
+ gAnimScriptActive = FALSE;
+ }
+}
+
+static void ScriptCmd_playse(void)
+{
+ sBattleAnimScriptPtr++;
+ PlaySE(SCRIPT_READ_16(sBattleAnimScriptPtr));
+ sBattleAnimScriptPtr += 2;
+}
+
+#define t1_MONBG_BANK 0
+#define t1_MON_IN_BG2 1
+#define t1_CREATE_ANOTHER_TASK 2
+#define t1_IS_SECONDMON_BG 3
+
+#define t2_BANK_SPRITE_ID 0
+#define t2_MON_IN_BG2 5
+#define t2_MONBG_BANK 6
+
+static void sub_80A40F4(u8 taskId)
+{
+ u8 newTaskId;
+
+ s16 *selfData = gTasks[taskId].data;
+ u8 bankSpriteId = gBankSpriteIds[selfData[t1_MONBG_BANK]];
+ gSprites[bankSpriteId].invisible = 1;
+
+ if (!selfData[t1_CREATE_ANOTHER_TASK])
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ newTaskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
+ gTasks[newTaskId].data[t2_BANK_SPRITE_ID] = bankSpriteId;
+ gTasks[newTaskId].data[1] = gSprites[bankSpriteId].pos1.x + gSprites[bankSpriteId].pos2.x;
+ gTasks[newTaskId].data[2] = gSprites[bankSpriteId].pos1.y + gSprites[bankSpriteId].pos2.y;
+
+ if (!selfData[t1_MON_IN_BG2])
+ {
+ gTasks[newTaskId].data[3] = gBattle_BG1_X;
+ gTasks[newTaskId].data[4] = gBattle_BG1_Y;
+ }
+ else
+ {
+ gTasks[newTaskId].data[3] = gBattle_BG2_X;
+ gTasks[newTaskId].data[4] = gBattle_BG2_Y;
+ }
+
+ gTasks[newTaskId].data[t2_MON_IN_BG2] = selfData[t1_MON_IN_BG2];
+ gTasks[newTaskId].data[t2_MONBG_BANK] = selfData[t1_MONBG_BANK];
+ sMonAnimTaskIdArray[selfData[t1_IS_SECONDMON_BG]] = newTaskId;
+ DestroyAnimVisualTask(taskId);
+}
+
+static void ScriptCmd_monbg(void)
+{
+ bool8 toBG_2;
+ u8 taskId;
+ u8 bank;
+ u8 animBank;
+
+ sBattleAnimScriptPtr++;
+
+ animBank = sBattleAnimScriptPtr[0];
+ if (animBank & ANIM_BANK_TARGET)
+ bank = gAnimBankTarget;
+ else
+ bank = gAnimBankAttacker;
+
+ if (IsAnimBankSpriteVisible(bank))
+ {
+ u8 identity = GetBankIdentity(bank);
+ if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ toBG_2 = FALSE;
+ else
+ toBG_2 = TRUE;
+
+ sub_80A438C(bank, toBG_2, FALSE);
+ taskId = CreateTask(sub_80A40F4, 10);
+ gAnimVisualTaskCount++;
+ gTasks[taskId].data[t1_MONBG_BANK] = bank;
+ gTasks[taskId].data[t1_MON_IN_BG2] = toBG_2;
+ gTasks[taskId].data[t1_CREATE_ANOTHER_TASK] = TRUE;
+ gTasks[taskId].data[t1_IS_SECONDMON_BG] = 0;
+
+ }
+
+ bank ^= BIT_MON;
+ if (IsAnimBankSpriteVisible(bank))
+ {
+ u8 identity = GetBankIdentity(bank);
+ if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ toBG_2 = FALSE;
+ else
+ toBG_2 = TRUE;
+
+ sub_80A438C(bank, toBG_2, FALSE);
+ taskId = CreateTask(sub_80A40F4, 10);
+ gAnimVisualTaskCount++;
+ gTasks[taskId].data[0] = bank;
+ gTasks[taskId].data[1] = toBG_2;
+ gTasks[taskId].data[t1_CREATE_ANOTHER_TASK] = TRUE;
+ gTasks[taskId].data[t1_IS_SECONDMON_BG] = 1;
+ }
+
+ sBattleAnimScriptPtr++;
+ gAnimFramesToWait = 1;
+ gAnimScriptCallback = WaitAnimFrameCount;
+}
+
+bool8 IsAnimBankSpriteVisible(u8 bank)
+{
+ if (IsContest())
+ {
+ if (bank == gAnimBankAttacker)
+ return TRUE;
+ else
+ return FALSE;
+ }
+ if (!AnimBankSpriteExists(bank))
+ return FALSE;
+ if (IsContest())
+ return TRUE; // this line wont ever be reached.
+ if (!gBattleSpritesDataPtr->bankData[bank].invisible || !gSprites[gBankSpriteIds[bank]].invisible)
+ return TRUE;
+
+ return FALSE;
+}
+
+void sub_80A438C(u8 bank, bool8 toBG_2, bool8 setSpriteInvisible)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+ u8 bankSpriteId;
+
+ if (!toBG_2)
+ {
+ u8 bankIdentity;
+
+ if (IsContest() == TRUE)
+ {
+ RequestDma3Fill(0, (void*)(VRAM + 0x8000), 0x2000, 1);
+ RequestDma3Fill(0xFF, (void*)(VRAM + 0xF000), 0x1000, 0);
+ }
+ else
+ {
+ RequestDma3Fill(0, (void*)(VRAM + 0x4000), 0x2000, 1);
+ RequestDma3Fill(0xFF, (void*)(VRAM + 0xe000), 0x1000, 0);
+ }
+
+ sub_80A6B30(&unknownStruct);
+ CpuFill16(0, unknownStruct.unk0, 0x1000);
+ CpuFill16(0xFF, unknownStruct.unk4, 0x800);
+
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 2);
+ SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
+ SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0);
+
+ bankSpriteId = gBankSpriteIds[bank];
+
+ gBattle_BG1_X = -(gSprites[bankSpriteId].pos1.x + gSprites[bankSpriteId].pos2.x) + 0x20;
+ if (IsContest() && IsSpeciesNotUnown(gContestResources->field_18->field_0))
+ gBattle_BG1_X--;
+
+ gBattle_BG1_Y = -(gSprites[bankSpriteId].pos1.y + gSprites[bankSpriteId].pos2.y) + 0x20;
+ if (setSpriteInvisible)
+ gSprites[gBankSpriteIds[bank]].invisible = 1;
+
+ SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
+ SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
+
+ LoadPalette(&gPlttBufferUnfaded[0x100 + bank * 16], unknownStruct.unk8 * 16, 0x20);
+ CpuCopy32(&gPlttBufferUnfaded[0x100 + bank * 16], (void*)(BG_PLTT + unknownStruct.unk8 * 32), 0x20);
+
+ if (IsContest())
+ bankIdentity = 0;
+ else
+ bankIdentity = GetBankIdentity(bank);
+
+ sub_8118FBC(1, 0, 0, bankIdentity, unknownStruct.unk8, unknownStruct.unk0, unknownStruct.unk4, unknownStruct.unkA);
+
+ if (IsContest())
+ sub_80A46A0();
+ }
+ else
+ {
+ RequestDma3Fill(0, (void*)(VRAM + 0x6000), 0x2000, 1);
+ RequestDma3Fill(0, (void*)(VRAM + 0xF000), 0x1000, 1);
+ sub_80A6B90(&unknownStruct, 2);
+ CpuFill16(0, unknownStruct.unk0 + 0x1000, 0x1000);
+ CpuFill16(0, unknownStruct.unk4 + 0x400, 0x800);
+ SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
+ SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1);
+ SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0);
+
+ bankSpriteId = gBankSpriteIds[bank];
+
+ gBattle_BG2_X = -(gSprites[bankSpriteId].pos1.x + gSprites[bankSpriteId].pos2.x) + 0x20;
+ gBattle_BG2_Y = -(gSprites[bankSpriteId].pos1.y + gSprites[bankSpriteId].pos2.y) + 0x20;
+
+ if (setSpriteInvisible)
+ gSprites[gBankSpriteIds[bank]].invisible = 1;
+
+ SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X);
+ SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y);
+
+ LoadPalette(&gPlttBufferUnfaded[0x100 + bank * 16], 0x90, 0x20);
+ CpuCopy32(&gPlttBufferUnfaded[0x100 + bank * 16], (void*)(BG_PLTT + 0x120), 0x20);
+
+ sub_8118FBC(2, 0, 0, GetBankIdentity(bank), unknownStruct.unk8, unknownStruct.unk0 + 0x1000, unknownStruct.unk4 + 0x400, unknownStruct.unkA);
+ }
+}
+
+static void sub_80A46A0(void)
+{
+ s32 i, j;
+ struct UnknownAnimStruct2 unknownStruct;
+ u16 *ptr;
+
+ if (IsSpeciesNotUnown(gContestResources->field_18->field_0))
+ {
+ sub_80A6B30(&unknownStruct);
+ ptr = unknownStruct.unk4;
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ u16 temp = ptr[j + i * 32];
+
+ ptr[j + i * 32] = ptr[7 - j + i * 32];
+ ptr[7 - j + i * 32] = temp;
+ }
+ }
+ for (i = 0; i < 8; i++)
+ {
+ for (j = 0; j < 8; j++)
+ ptr[j + i * 32] ^= 0x400;
+ }
+ }
+}
+
+void sub_80A4720(u16 a, u16 *b, u32 c, u8 d)
+{
+ s32 i, j;
+ s32 var;
+
+ if (d == 0)
+ var = 32;
+ else
+ var = 64;
+ a <<= 12;
+ for (i = 0; i < var; i++)
+ {
+ for (j = 0; j < 32; j++)
+ b[j + i * 32] = ((b[j + i * 32] & 0xFFF) | a) + c;
+ }
+}
+
+void sub_80A477C(bool8 to_BG2)
+{
+ struct UnknownAnimStruct2 unknownStruct;
+ sub_80A6B30(&unknownStruct);
+
+ if (!to_BG2 || IsContest())
+ {
+ sub_80A6C68(1);
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ }
+ else
+ {
+ sub_80A6C68(2);
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ }
+}
+
+static void task_pA_ma0A_obj_to_bg_pal(u8 taskId)
+{
+ u8 spriteId, palIndex;
+ s16 x, y;
+ struct UnknownAnimStruct2 unknownStruct;
+
+ spriteId = gTasks[taskId].data[0];
+ palIndex = gTasks[taskId].data[6];
+ sub_80A6B30(&unknownStruct);
+ x = gTasks[taskId].data[1] - (gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x);
+ y = gTasks[taskId].data[2] - (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y);
+
+ if (gTasks[taskId].data[5] == 0)
+ {
+ u16 *src;
+ u16 *dst;
+
+ gBattle_BG1_X = x + gTasks[taskId].data[3];
+ gBattle_BG1_Y = y + gTasks[taskId].data[4];
+ src = gPlttBufferFaded + 0x100 + palIndex * 16;
+ dst = gPlttBufferFaded + 0x100 + unknownStruct.unk8 * 16 - 256;
+ CpuCopy32(src, dst, 0x20);
+ }
+ else
+ {
+ u16 *src;
+ u16 *dst;
+
+ gBattle_BG2_X = x + gTasks[taskId].data[3];
+ gBattle_BG2_Y = y + gTasks[taskId].data[4];
+ src = gPlttBufferFaded + 0x100 + palIndex * 16;
+ dst = gPlttBufferFaded + 0x100 - 112;
+ CpuCopy32(src, dst, 0x20);
+ }
+}
+
+static void ScriptCmd_clearmonbg(void)
+{
+ u8 animBankId;
+ u8 bank;
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ animBankId = sBattleAnimScriptPtr[0];
+
+ if (animBankId == ANIM_BANK_ATTACKER)
+ animBankId = ANIM_BANK_ATK_PARTNER;
+ else if (animBankId == ANIM_BANK_TARGET)
+ animBankId = ANIM_BANK_DEF_PARTNER;
+
+ if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER)
+ bank = gAnimBankAttacker;
+ else
+ bank = gAnimBankTarget;
+
+ if (sMonAnimTaskIdArray[0] != 0xFF)
+ gSprites[gBankSpriteIds[bank]].invisible = 0;
+ if (animBankId > 1 && sMonAnimTaskIdArray[1] != 0xFF)
+ gSprites[gBankSpriteIds[bank ^ BIT_MON]].invisible = 0;
+ else
+ animBankId = 0;
+
+ taskId = CreateTask(sub_80A4980, 5);
+ gTasks[taskId].data[0] = animBankId;
+ gTasks[taskId].data[2] = bank;
+
+ sBattleAnimScriptPtr++;
+}
+
+static void sub_80A4980(u8 taskId)
+{
+ gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[1] != 1)
+ {
+ u8 to_BG2;
+ u8 identity = GetBankIdentity(gTasks[taskId].data[2]);
+ if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ to_BG2 = FALSE;
+ else
+ to_BG2 = TRUE;
+
+ if (sMonAnimTaskIdArray[0] != 0xFF)
+ {
+ sub_80A477C(to_BG2);
+ DestroyTask(sMonAnimTaskIdArray[0]);
+ sMonAnimTaskIdArray[0] = 0xFF;
+ }
+ if (gTasks[taskId].data[0] > 1)
+ {
+ sub_80A477C(to_BG2 ^ 1);
+ DestroyTask(sMonAnimTaskIdArray[1]);
+ sMonAnimTaskIdArray[1] = 0xFF;
+ }
+ DestroyTask(taskId);
+ }
+}
+
+static void ScriptCmd_monbg_22(void)
+{
+ bool8 toBG_2;
+ u8 bank;
+ u8 animBankId;
+
+ sBattleAnimScriptPtr++;
+
+ animBankId = sBattleAnimScriptPtr[0];
+
+ if (animBankId == ANIM_BANK_ATTACKER)
+ animBankId = ANIM_BANK_ATK_PARTNER;
+ else if (animBankId == ANIM_BANK_TARGET)
+ animBankId = ANIM_BANK_DEF_PARTNER;
+
+ if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER)
+ bank = gAnimBankAttacker;
+ else
+ bank = gAnimBankTarget;
+
+ if (IsAnimBankSpriteVisible(bank))
+ {
+ u8 identity = GetBankIdentity(bank);
+ if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ toBG_2 = FALSE;
+ else
+ toBG_2 = TRUE;
+
+ sub_80A438C(bank, toBG_2, FALSE);
+ }
+
+ bank ^= BIT_MON;
+ if (animBankId > 1 && IsAnimBankSpriteVisible(bank))
+ {
+ u8 identity = GetBankIdentity(bank);
+ if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ toBG_2 = FALSE;
+ else
+ toBG_2 = TRUE;
+
+ sub_80A438C(bank, toBG_2, FALSE);
+ }
+
+ sBattleAnimScriptPtr++;
+}
+
+static void ScriptCmd_clearmonbg_23(void)
+{
+ u8 animBankId;
+ u8 bank;
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ animBankId = sBattleAnimScriptPtr[0];
+
+ if (animBankId == ANIM_BANK_ATTACKER)
+ animBankId = ANIM_BANK_ATK_PARTNER;
+ else if (animBankId == ANIM_BANK_TARGET)
+ animBankId = ANIM_BANK_DEF_PARTNER;
+
+ if (animBankId == ANIM_BANK_ATTACKER || animBankId == ANIM_BANK_ATK_PARTNER)
+ bank = gAnimBankAttacker;
+ else
+ bank = gAnimBankTarget;
+
+ if (IsAnimBankSpriteVisible(bank))
+ gSprites[gBankSpriteIds[bank]].invisible = 0;
+ if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ BIT_MON))
+ gSprites[gBankSpriteIds[bank ^ BIT_MON]].invisible = 0;
+ else
+ animBankId = 0;
+
+ taskId = CreateTask(sub_80A4BB0, 5);
+ gTasks[taskId].data[0] = animBankId;
+ gTasks[taskId].data[2] = bank;
+
+ sBattleAnimScriptPtr++;
+}
+
+static void sub_80A4BB0(u8 taskId)
+{
+ gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[1] != 1)
+ {
+ bool8 toBG_2;
+ u8 bank = gTasks[taskId].data[2];
+ u8 identity = GetBankIdentity(bank);
+ if (identity == IDENTITY_OPPONENT_MON1 || identity == IDENTITY_PLAYER_MON2 || IsContest())
+ toBG_2 = FALSE;
+ else
+ toBG_2 = TRUE;
+
+ if (IsAnimBankSpriteVisible(bank))
+ sub_80A477C(toBG_2);
+ if (gTasks[taskId].data[0] > 1 && IsAnimBankSpriteVisible(bank ^ BIT_MON))
+ sub_80A477C(toBG_2 ^ 1);
+
+ DestroyTask(taskId);
+ }
+}
+
+#undef t1_MONBG_BANK
+#undef t1_MON_IN_BG2
+#undef t1_CREATE_ANOTHER_TASK
+#undef t1_IS_SECONDMON_BG
+
+#undef t2_BANK_SPRITE_ID
+#undef t2_MON_IN_BG2
+#undef t2_MONBG_BANK
+
+static void ScriptCmd_setalpha(void)
+{
+ u16 half1, half2;
+
+ sBattleAnimScriptPtr++;
+ half1 = *(sBattleAnimScriptPtr++);
+ half2 = *(sBattleAnimScriptPtr++) << 8;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x3F40);
+ SetGpuReg(REG_OFFSET_BLDALPHA, half1 | half2);
+}
+
+static void ScriptCmd_setbldcnt(void)
+{
+ u16 half1, half2;
+
+ sBattleAnimScriptPtr++;
+ half1 = *(sBattleAnimScriptPtr++);
+ half2 = *(sBattleAnimScriptPtr++) << 8;
+ SetGpuReg(REG_OFFSET_BLDCNT, half1 | half2);
+}
+
+static void ScriptCmd_blendoff(void)
+{
+ sBattleAnimScriptPtr++;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+}
+
+static void ScriptCmd_call(void)
+{
+ sBattleAnimScriptPtr++;
+ sBattleAnimScriptRetAddr = sBattleAnimScriptPtr + 4;
+ sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr);
+}
+
+static void ScriptCmd_return(void)
+{
+ sBattleAnimScriptPtr = sBattleAnimScriptRetAddr;
+}
+
+static void ScriptCmd_setarg(void)
+{
+ const u8 *addr = sBattleAnimScriptPtr;
+ u16 value;
+ u8 argId;
+
+ sBattleAnimScriptPtr++;
+ argId = sBattleAnimScriptPtr[0];
+ sBattleAnimScriptPtr++;
+ value = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr = addr + 4;
+ gBattleAnimArgs[argId] = value;
+}
+
+static void ScriptCmd_choosetwoturnanim(void)
+{
+ sBattleAnimScriptPtr++;
+ if (gAnimMoveTurn & 1)
+ sBattleAnimScriptPtr += 4;
+ sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr);
+}
+
+static void ScriptCmd_jumpifmoveturn(void)
+{
+ u8 toCheck;
+ sBattleAnimScriptPtr++;
+ toCheck = sBattleAnimScriptPtr[0];
+ sBattleAnimScriptPtr++;
+
+ if (toCheck == gAnimMoveTurn)
+ sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr);
+ else
+ sBattleAnimScriptPtr += 4;
+}
+
+static void ScriptCmd_jump(void)
+{
+ sBattleAnimScriptPtr++;
+ sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr);
+}
+
+// Uses of this function that rely on a TRUE return are expecting inBattle to not be ticked as defined in contest behavior. As a result, if misused, this function cannot reliably discern between field and contest status and could result in undefined behavior.
+bool8 IsContest(void)
+{
+ if (!gMain.inBattle)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+#define tBackgroundId data[0]
+#define tState data[10]
+
+static void ScriptCmd_fadetobg(void)
+{
+ u8 backgroundId;
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ backgroundId = sBattleAnimScriptPtr[0];
+ sBattleAnimScriptPtr++;
+ taskId = CreateTask(Task_FadeToBg, 5);
+ gTasks[taskId].tBackgroundId = backgroundId;
+ sAnimBackgroundFadeState = 1;
+}
+
+static void ScriptCmd_fadetobgfromset(void)
+{
+ u8 bg1, bg2, bg3;
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ bg1 = sBattleAnimScriptPtr[0];
+ bg2 = sBattleAnimScriptPtr[1];
+ bg3 = sBattleAnimScriptPtr[2];
+ sBattleAnimScriptPtr += 3;
+ taskId = CreateTask(Task_FadeToBg, 5);
+
+ if (IsContest())
+ gTasks[taskId].tBackgroundId = bg3;
+ else if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ gTasks[taskId].tBackgroundId = bg2;
+ else
+ gTasks[taskId].tBackgroundId = bg1;
+
+ sAnimBackgroundFadeState = 1;
+}
+
+static void Task_FadeToBg(u8 taskId)
+{
+ if (gTasks[taskId].tState == 0)
+ {
+ BeginHardwarePaletteFade(0xE8, 0, 0, 16, 0);
+ gTasks[taskId].tState++;
+ return;
+ }
+ if (gPaletteFade.active)
+ return;
+ if (gTasks[taskId].tState == 1)
+ {
+ gTasks[taskId].tState++;
+ sAnimBackgroundFadeState = 2;
+ }
+ else if (gTasks[taskId].tState == 2)
+ {
+ s16 bgId = gTasks[taskId].tBackgroundId;
+
+ if (bgId == -1)
+ LoadDefaultBg();
+ else
+ LoadMoveBg(bgId);
+
+ BeginHardwarePaletteFade(0xE8, 0, 16, 0, 1);
+ gTasks[taskId].tState++;
+ return;
+ }
+ if (gPaletteFade.active)
+ return;
+ if (gTasks[taskId].tState == 3)
+ {
+ DestroyTask(taskId);
+ sAnimBackgroundFadeState = 0;
+ }
+}
+
+static void LoadMoveBg(u16 bgId)
+{
+ if (IsContest())
+ {
+ const void *tilemap = gBattleAnimBackgroundTable[bgId].tilemap;
+ void *dmaSrc;
+ void *dmaDest;
+
+ LZDecompressWram(tilemap, gDecompressionBuffer);
+ sub_80A4720(sub_80A6D94(), (void*)(gDecompressionBuffer), 0x100, 0);
+ dmaSrc = gDecompressionBuffer;
+ dmaDest = (void *)(VRAM + 0xD000);
+ DmaCopy32(3, dmaSrc, dmaDest, 0x800);
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x2000));
+ LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, sub_80A6D94() * 16, 32);
+ }
+ else
+ {
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].tilemap, (void *)(VRAM + 0xD000));
+ LZDecompressVram(gBattleAnimBackgroundTable[bgId].image, (void *)(VRAM + 0x8000));
+ LoadCompressedPalette(gBattleAnimBackgroundTable[bgId].palette, 32, 32);
+ }
+}
+
+static void LoadDefaultBg(void)
+{
+ if (IsContest())
+ LoadContestBgAfterMoveAnim();
+ else
+ DrawMainBattleBackground();
+}
+
+static void ScriptCmd_restorebg(void)
+{
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ taskId = CreateTask(Task_FadeToBg, 5);
+ gTasks[taskId].tBackgroundId = -1;
+ sAnimBackgroundFadeState = 1;
+}
+
+#undef tBackgroundId
+#undef tState
+
+static void ScriptCmd_waitbgfadeout(void)
+{
+ if (sAnimBackgroundFadeState == 2)
+ {
+ sBattleAnimScriptPtr++;
+ gAnimFramesToWait = 0;
+ }
+ else
+ {
+ gAnimFramesToWait = 1;
+ }
+}
+
+static void ScriptCmd_waitbgfadein(void)
+{
+ if (sAnimBackgroundFadeState == 0)
+ {
+ sBattleAnimScriptPtr++;
+ gAnimFramesToWait = 0;
+ }
+ else
+ {
+ gAnimFramesToWait = 1;
+ }
+}
+
+static void ScriptCmd_changebg(void)
+{
+ sBattleAnimScriptPtr++;
+ LoadMoveBg(sBattleAnimScriptPtr[0]);
+ sBattleAnimScriptPtr++;
+}
+
+s8 BattleAnimAdjustPanning(s8 pan)
+{
+ if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10)
+ {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ pan = PAN_SIDE_OPPONENT;
+ else
+ pan = PAN_SIDE_PLAYER;
+ }
+ else if (IsContest())
+ {
+ if (gAnimBankAttacker != gAnimBankTarget || gAnimBankAttacker != 2 || pan != PAN_SIDE_OPPONENT)
+ pan *= -1;
+ }
+ else if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER)
+ {
+ if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ {
+ if (pan == PAN_SIDE_OPPONENT)
+ pan = PAN_SIDE_PLAYER;
+ else if (pan != PAN_SIDE_PLAYER)
+ pan *= -1;
+ }
+ }
+ else if (GetBankSide(gAnimBankTarget) == SIDE_OPPONENT)
+ {
+ if (pan == PAN_SIDE_PLAYER)
+ pan = PAN_SIDE_OPPONENT;
+ }
+ else
+ {
+ pan *= -1;
+ }
+
+ if (pan > PAN_SIDE_OPPONENT)
+ pan = PAN_SIDE_OPPONENT;
+ else if (pan < PAN_SIDE_PLAYER)
+ pan = PAN_SIDE_PLAYER;
+
+ return pan;
+}
+
+s8 BattleAnimAdjustPanning2(s8 pan)
+{
+ if (!IsContest() && gBattleSpritesDataPtr->healthBoxesData[gAnimBankAttacker].flag_x10)
+ {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ pan = PAN_SIDE_OPPONENT;
+ else
+ pan = PAN_SIDE_PLAYER;
+ }
+ else
+ {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER || IsContest())
+ pan = -pan;
+ }
+ return pan;
+}
+
+s16 sub_80A52EC(s16 a)
+{
+ s16 var = a;
+
+ if (var > 63)
+ var = 63;
+ else if (var < -64)
+ var = -64;
+
+ return var;
+}
+
+s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan)
+{
+ s16 ret;
+
+ if (sourcePan < targetPan)
+ ret = ((incrementPan < 0) ? -incrementPan : incrementPan);
+ else if (sourcePan > targetPan)
+ ret = -((incrementPan < 0) ? -incrementPan : incrementPan);
+ else
+ ret = 0;
+
+ return ret;
+}
+
+static void ScriptCmd_playsewithpan(void)
+{
+ u16 songId;
+ s8 pan;
+
+ sBattleAnimScriptPtr++;
+ songId = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ pan = sBattleAnimScriptPtr[2];
+ PlaySE12WithPanning(songId, BattleAnimAdjustPanning(pan));
+ sBattleAnimScriptPtr += 3;
+}
+
+static void ScriptCmd_setpan(void)
+{
+ s8 pan;
+
+ sBattleAnimScriptPtr++;
+ pan = sBattleAnimScriptPtr[0];
+ SE12PanpotControl(BattleAnimAdjustPanning(pan));
+ sBattleAnimScriptPtr++;
+}
+
+#define tInitialPan data[0]
+#define tTargetPan data[1]
+#define tIncrementPan data[2]
+#define tFramesToWait data[3]
+#define tCurrentPan data[4]
+#define tFrameCounter data[8]
+
+static void ScriptCmd_panse_1B(void)
+{
+ u16 songNum;
+ s8 currentPanArg, incrementPan, incrementPanArg, currentPan, targetPan;
+ u8 framesToWait;
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ songNum = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ currentPanArg = sBattleAnimScriptPtr[2];
+ incrementPan = sBattleAnimScriptPtr[3];
+ incrementPanArg = sBattleAnimScriptPtr[4];
+ framesToWait = sBattleAnimScriptPtr[5];
+
+ currentPan = BattleAnimAdjustPanning(currentPanArg);
+ targetPan = BattleAnimAdjustPanning(incrementPan);
+ incrementPan = CalculatePanIncrement(currentPan, targetPan, incrementPanArg);
+ taskId = CreateTask(Task_PanFromInitialToTarget, 1);
+ gTasks[taskId].tInitialPan = currentPan;
+ gTasks[taskId].tTargetPan = targetPan;
+ gTasks[taskId].tIncrementPan = incrementPan;
+ gTasks[taskId].tFramesToWait = framesToWait;
+ gTasks[taskId].tCurrentPan = currentPan;
+
+ PlaySE12WithPanning(songNum, currentPan);
+
+ gAnimSoundTaskCount++;
+ sBattleAnimScriptPtr += 6;
+}
+
+void Task_PanFromInitialToTarget(u8 taskId)
+{
+ bool32 destroyTask = FALSE;
+ if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait)
+ {
+ s16 pan;
+ s16 initialPanning, targetPanning, currentPan, incrementPan;
+
+ gTasks[taskId].tFrameCounter = 0;
+ initialPanning = gTasks[taskId].tInitialPan;
+ targetPanning = gTasks[taskId].tTargetPan;
+ currentPan = gTasks[taskId].tCurrentPan;
+ incrementPan = gTasks[taskId].tIncrementPan;
+ pan = currentPan + incrementPan;
+ gTasks[taskId].tCurrentPan = pan;
+
+ if (incrementPan == 0) // If we're not incrementing, just cancel the task immediately
+ {
+ destroyTask = TRUE;
+ }
+ else if (initialPanning < targetPanning) // Panning increasing
+ {
+ if (pan >= targetPanning) // Target reached
+ destroyTask = TRUE;
+ }
+ else // Panning decreasing
+ {
+ if (pan <= targetPanning) // Target reached
+ destroyTask = TRUE;
+ }
+
+ if (destroyTask)
+ {
+ pan = targetPanning;
+ DestroyTask(taskId);
+ gAnimSoundTaskCount--;
+ }
+
+ SE12PanpotControl(pan);
+ }
+}
+
+static void ScriptCmd_panse_26(void)
+{
+ u16 songId;
+ s8 currentPan, targetPan, incrementPan;
+ u8 framesToWait;
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ songId = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ currentPan = sBattleAnimScriptPtr[2];
+ targetPan = sBattleAnimScriptPtr[3];
+ incrementPan = sBattleAnimScriptPtr[4];
+ framesToWait = sBattleAnimScriptPtr[5];
+
+ taskId = CreateTask(Task_PanFromInitialToTarget, 1);
+ gTasks[taskId].tInitialPan = currentPan;
+ gTasks[taskId].tTargetPan = targetPan;
+ gTasks[taskId].tIncrementPan = incrementPan;
+ gTasks[taskId].tFramesToWait = framesToWait;
+ gTasks[taskId].tCurrentPan = currentPan;
+
+ PlaySE12WithPanning(songId, currentPan);
+
+ gAnimSoundTaskCount++;
+ sBattleAnimScriptPtr += 6;
+}
+
+static void ScriptCmd_panse_27(void)
+{
+ u16 songId;
+ s8 targetPanArg, incrementPanArg, currentPanArg, currentPan, targetPan, incrementPan;
+ u8 framesToWait;
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ songId = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ currentPanArg = sBattleAnimScriptPtr[2];
+ targetPanArg = sBattleAnimScriptPtr[3];
+ incrementPanArg = sBattleAnimScriptPtr[4];
+ framesToWait = sBattleAnimScriptPtr[5];
+
+ currentPan = BattleAnimAdjustPanning2(currentPanArg);
+ targetPan = BattleAnimAdjustPanning2(targetPanArg);
+ incrementPan = BattleAnimAdjustPanning2(incrementPanArg);
+
+ taskId = CreateTask(Task_PanFromInitialToTarget, 1);
+ gTasks[taskId].tInitialPan = currentPan;
+ gTasks[taskId].tTargetPan = targetPan;
+ gTasks[taskId].tIncrementPan = incrementPan;
+ gTasks[taskId].tFramesToWait = framesToWait;
+ gTasks[taskId].tCurrentPan = currentPan;
+
+ PlaySE12WithPanning(songId, currentPan);
+
+ gAnimSoundTaskCount++;
+ sBattleAnimScriptPtr += 6;
+}
+
+#undef tInitialPan
+#undef tTargetPan
+#undef tIncrementPan
+#undef tFramesToWait
+#undef tCurrentPan
+#undef tFrameCounter
+
+#define tSongId data[0]
+#define tPanning data[1]
+#define tFramesToWait data[2]
+#define tNumberOfPlays data[3]
+#define tFrameCounter data[8]
+
+static void ScriptCmd_loopsewithpan(void)
+{
+ u16 songId;
+ s8 panningArg, panning;
+ u8 framesToWait, numberOfPlays;
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ songId = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ panningArg = sBattleAnimScriptPtr[2];
+ framesToWait = sBattleAnimScriptPtr[3];
+ numberOfPlays = sBattleAnimScriptPtr[4];
+ panning = BattleAnimAdjustPanning(panningArg);
+
+ taskId = CreateTask(Task_LoopAndPlaySE, 1);
+ gTasks[taskId].tSongId = songId;
+ gTasks[taskId].tPanning = panning;
+ gTasks[taskId].tFramesToWait = framesToWait;
+ gTasks[taskId].tNumberOfPlays = numberOfPlays;
+ gTasks[taskId].tFrameCounter = framesToWait;
+ gTasks[taskId].func(taskId);
+
+ gAnimSoundTaskCount++;
+ sBattleAnimScriptPtr += 5;
+}
+
+static void Task_LoopAndPlaySE(u8 taskId)
+{
+ if (gTasks[taskId].tFrameCounter++ >= gTasks[taskId].tFramesToWait)
+ {
+ u16 songId;
+ s8 panning;
+ u8 numberOfPlays;
+
+ gTasks[taskId].tFrameCounter = 0;
+ songId = gTasks[taskId].tSongId;
+ panning = gTasks[taskId].tPanning;
+ numberOfPlays = --gTasks[taskId].tNumberOfPlays;
+ PlaySE12WithPanning(songId, panning);
+ if (numberOfPlays == 0)
+ {
+ DestroyTask(taskId);
+ gAnimSoundTaskCount--;
+ }
+ }
+}
+
+#undef tSongId
+#undef tPanning
+#undef tFramesToWait
+#undef tNumberOfPlays
+#undef tFrameCounter
+
+#define tSongId data[0]
+#define tPanning data[1]
+#define tFramesToWait data[2]
+
+static void ScriptCmd_waitplaysewithpan(void)
+{
+ u16 songId;
+ s8 panningArg, panning;
+ u8 framesToWait;
+ u8 taskId;
+
+ sBattleAnimScriptPtr++;
+ songId = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ panningArg = sBattleAnimScriptPtr[2];
+ framesToWait = sBattleAnimScriptPtr[3];
+ panning = BattleAnimAdjustPanning(panningArg);
+
+ taskId = CreateTask(Task_WaitAndPlaySE, 1);
+ gTasks[taskId].tSongId = songId;
+ gTasks[taskId].tPanning = panning;
+ gTasks[taskId].tFramesToWait = framesToWait;
+
+ gAnimSoundTaskCount++;
+ sBattleAnimScriptPtr += 4;
+}
+
+static void Task_WaitAndPlaySE(u8 taskId)
+{
+ if (gTasks[taskId].tFramesToWait-- <= 0)
+ {
+ PlaySE12WithPanning(gTasks[taskId].tSongId, gTasks[taskId].tPanning);
+ DestroyTask(taskId);
+ gAnimSoundTaskCount--;
+ }
+}
+
+#undef tSongId
+#undef tPanning
+#undef tFramesToWait
+
+static void ScriptCmd_createsoundtask(void)
+{
+ TaskFunc func;
+ u8 numArgs, taskId;
+ s32 i;
+
+ sBattleAnimScriptPtr++;
+ func = (TaskFunc)SCRIPT_READ_32(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 4;
+ numArgs = sBattleAnimScriptPtr[0];
+ sBattleAnimScriptPtr++;
+ for (i = 0; i < numArgs; i++)
+ {
+ gBattleAnimArgs[i] = SCRIPT_READ_16(sBattleAnimScriptPtr);
+ sBattleAnimScriptPtr += 2;
+ }
+ taskId = CreateTask(func, 1);
+ func(taskId);
+ gAnimSoundTaskCount++;
+}
+
+static void ScriptCmd_waitsound(void)
+{
+ if (gAnimSoundTaskCount != 0)
+ {
+ sSoundAnimFramesToWait = 0;
+ gAnimFramesToWait = 1;
+ }
+ else if (IsSEPlaying())
+ {
+ if (++sSoundAnimFramesToWait > 90)
+ {
+ m4aMPlayStop(&gMPlay_SE1);
+ m4aMPlayStop(&gMPlay_SE2);
+ sSoundAnimFramesToWait = 0;
+ }
+ else
+ {
+ gAnimFramesToWait = 1;
+ }
+ }
+ else
+ {
+ sSoundAnimFramesToWait = 0;
+ sBattleAnimScriptPtr++;
+ gAnimFramesToWait = 0;
+ }
+}
+
+static void ScriptCmd_jumpargeq(void)
+{
+ u8 argId;
+ s16 valueToCheck;
+
+ sBattleAnimScriptPtr++;
+ argId = sBattleAnimScriptPtr[0];
+ valueToCheck = SCRIPT_READ_16(sBattleAnimScriptPtr + 1);
+
+ if (valueToCheck == gBattleAnimArgs[argId])
+ sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr + 3);
+ else
+ sBattleAnimScriptPtr += 7;
+}
+
+static void ScriptCmd_jumpifcontest(void)
+{
+ sBattleAnimScriptPtr++;
+ if (IsContest())
+ sBattleAnimScriptPtr = SCRIPT_READ_PTR(sBattleAnimScriptPtr);
+ else
+ sBattleAnimScriptPtr += 4;
+}
+
+static void ScriptCmd_monbgprio_28(void)
+{
+ u8 wantedBank;
+ u8 bank;
+ u8 bankIdentity;
+
+ wantedBank = sBattleAnimScriptPtr[1];
+ sBattleAnimScriptPtr += 2;
+
+ if (wantedBank != ANIM_BANK_ATTACKER)
+ bank = gAnimBankTarget;
+ else
+ bank = gAnimBankAttacker;
+
+ bankIdentity = GetBankIdentity(bank);
+ if (!IsContest() && (bankIdentity == IDENTITY_PLAYER_MON1 || bankIdentity == IDENTITY_OPPONENT_MON2))
+ {
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
+ }
+}
+
+static void ScriptCmd_monbgprio_29(void)
+{
+ sBattleAnimScriptPtr++;
+ if (!IsContest())
+ {
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
+ }
+}
+
+static void ScriptCmd_monbgprio_2A(void)
+{
+ u8 wantedBank;
+ u8 bankIdentity;
+ u8 bank;
+
+ wantedBank = sBattleAnimScriptPtr[1];
+ sBattleAnimScriptPtr += 2;
+ if (GetBankSide(gAnimBankAttacker) != GetBankSide(gAnimBankTarget))
+ {
+ if (wantedBank != ANIM_BANK_ATTACKER)
+ bank = gAnimBankTarget;
+ else
+ bank = gAnimBankAttacker;
+
+ bankIdentity = GetBankIdentity(bank);
+ if (!IsContest() && (bankIdentity == IDENTITY_PLAYER_MON1 || bankIdentity == IDENTITY_OPPONENT_MON2))
+ {
+ SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
+ SetAnimBgAttribute(2, BG_ANIM_PRIORITY, 2);
+ }
+ }
+}
+
+static void ScriptCmd_invisible(void)
+{
+ u8 spriteId;
+
+ spriteId = GetAnimBankSpriteId(sBattleAnimScriptPtr[1]);
+ if (spriteId != 0xFF)
+ gSprites[spriteId].invisible = 1;
+
+ sBattleAnimScriptPtr += 2;
+}
+
+static void ScriptCmd_visible(void)
+{
+ u8 spriteId;
+
+ spriteId = GetAnimBankSpriteId(sBattleAnimScriptPtr[1]);
+ if (spriteId != 0xFF)
+ gSprites[spriteId].invisible = 0;
+
+ sBattleAnimScriptPtr += 2;
+}
+
+static void ScriptCmd_doublebattle_2D(void)
+{
+ u8 wantedBank;
+ u8 r4;
+ u8 spriteId;
+
+ wantedBank = sBattleAnimScriptPtr[1];
+ sBattleAnimScriptPtr += 2;
+ if (!IsContest() && IsDoubleBattle()
+ && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ {
+ if (wantedBank == ANIM_BANK_ATTACKER)
+ {
+ r4 = sub_80A8364(gAnimBankAttacker);
+ spriteId = GetAnimBankSpriteId(0);
+ }
+ else
+ {
+ r4 = sub_80A8364(gAnimBankTarget);
+ spriteId = GetAnimBankSpriteId(1);
+ }
+ if (spriteId != 0xFF)
+ {
+ gSprites[spriteId].invisible = FALSE;
+ if (r4 == 2)
+ gSprites[spriteId].oam.priority = 3;
+
+ if (r4 == 1)
+ sub_80A477C(FALSE);
+ else
+ sub_80A477C(TRUE);
+ }
+ }
+}
+
+static void ScriptCmd_doublebattle_2E(void)
+{
+ u8 wantedBank;
+ u8 r4;
+ u8 spriteId;
+
+ wantedBank = sBattleAnimScriptPtr[1];
+ sBattleAnimScriptPtr += 2;
+ if (!IsContest() && IsDoubleBattle()
+ && GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
+ {
+ if (wantedBank == ANIM_BANK_ATTACKER)
+ {
+ r4 = sub_80A8364(gAnimBankAttacker);
+ spriteId = GetAnimBankSpriteId(0);
+ }
+ else
+ {
+ r4 = sub_80A8364(gAnimBankTarget);
+ spriteId = GetAnimBankSpriteId(1);
+ }
+
+ if (spriteId != 0xFF && r4 == 2)
+ gSprites[spriteId].oam.priority = 2;
+ }
+}
+
+static void ScriptCmd_stopsound(void)
+{
+ m4aMPlayStop(&gMPlay_SE1);
+ m4aMPlayStop(&gMPlay_SE2);
+ sBattleAnimScriptPtr++;
+}
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
new file mode 100644
index 000000000..9ac18c72f
--- /dev/null
+++ b/src/battle_controllers.c
@@ -0,0 +1,1551 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_controllers.h"
+#include "link.h"
+#include "task.h"
+#include "battle_ai_script_commands.h"
+#include "battle_anim.h"
+#include "pokemon.h"
+#include "species.h"
+#include "recorded_battle.h"
+#include "util.h"
+#include "abilities.h"
+#include "battle_message.h"
+
+extern u32 gBattleTypeFlags;
+extern u32 gBattleExecBuffer;
+extern void (*gBattleMainFunc)(void);
+extern void (*gBattleBankFunc[BATTLE_BANKS_COUNT])(void);
+extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
+extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
+extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT];
+extern u8 gNoOfAllBanks;
+extern u8 gActiveBank;
+extern u8 gUnknown_0202428C;
+extern u32 gUnknown_02022FF4;
+extern u8 gUnknown_0203C7B4;
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
+extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
+extern u8 gBattleBuffersTransferData[0x100];
+extern u8 gUnknown_02022D08;
+extern u8 gUnknown_02022D09;
+extern u8 gUnknown_02022D0A;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8 gAbsentBankFlags;
+extern u8 gEffectBank;
+extern u16 gBattleWeather;
+extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
+extern u16 gCurrentMove;
+extern u16 gLastUsedMove;
+extern u16 gLastUsedItem;
+extern u8 gBattleOutcome;
+extern u8 gLastUsedAbility;
+extern u8 gStringBank;
+
+extern const struct BattleMove gBattleMoves[];
+
+extern void task00_08081A90(u8 taskId); // cable_club
+extern void sub_81B8D64(u8 bank, u8 arg1); // party_menu
+
+// this file's funcionts
+static void CreateTasksForSendRecvLinkBuffers(void);
+static void SetControllersVariablesInLinkBattle(void);
+static void SetControllersVariables(void);
+static void SetBattlePartyIds(void);
+static void Task_HandleSendLinkBuffersData(u8 taskId);
+static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId);
+
+void HandleLinkBattleSetup(void)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gLinkVSyncDisabled)
+ sub_800B488();
+ if (!gReceivedRemoteLinkPlayers)
+ sub_8009734();
+ CreateTask(task00_08081A90, 0);
+ CreateTasksForSendRecvLinkBuffers();
+ }
+}
+
+void SetUpBattleVarsAndBirchZigzagoon(void)
+{
+ s32 i;
+
+ gBattleMainFunc = nullsub_20;
+
+ for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ {
+ gBattleBankFunc[i] = nullsub_21;
+ gBanksByIdentity[i] = 0xFF;
+ gActionSelectionCursor[i] = 0;
+ gMoveSelectionCursor[i] = 0;
+ }
+
+ HandleLinkBattleSetup();
+ gBattleExecBuffer = 0;
+ ClearBattleAnimationVars();
+ ClearBattleMonForms();
+ BattleAI_HandleItemUseBeforeAISetup(0xF);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
+ {
+ ZeroEnemyPartyMons();
+ CreateMon(&gEnemyParty[0], SPECIES_ZIGZAGOON, 2, 32, 0, 0, 0, 0);
+ i = 0;
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, &i);
+ }
+
+ gUnknown_02022FF4 = 0;
+ gUnknown_0202428C = 0;
+}
+
+void sub_8032768(void)
+{
+ s32 i;
+ u8 *data;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ sub_8184DA4(1);
+ else
+ sub_8184DA4(2);
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
+ sub_8185EB8();
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ SetControllersVariablesInLinkBattle();
+ else
+ SetControllersVariables();
+
+ SetBattlePartyIds();
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ for (i = 0; i < gNoOfAllBanks; i++)
+ sub_81B8D64(i, 0);
+ }
+
+ for (i = 0; i < sizeof(gBattleStruct->field_1A4); i++)
+ *(gBattleStruct->field_1A4 + i) = 0;
+
+ for (i = 0; i < sizeof(gBattleStruct->field_204); i++)
+ *(gBattleStruct->field_204 + i) = 0;
+}
+
+static void SetControllersVariables(void)
+{
+ s32 i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ {
+ gBattleMainFunc = BeginBattleIntro;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[2] = SetBankFuncToPlayerPartnerBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+
+ gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ }
+ else
+ {
+ gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[2] = SetBankFuncToPlayerPartnerBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+
+ gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ }
+
+ gNoOfAllBanks = 4;
+
+ sub_81B8D64(0, 0);
+ sub_81B8D64(1, 0);
+ sub_81B8D64(2, 1);
+ sub_81B8D64(3, 1);
+
+ gBattlePartyID[0] = 0;
+ gBattlePartyID[1] = 0;
+ gBattlePartyID[2] = 3;
+ gBattlePartyID[3] = 3;
+ }
+ else if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gBattleMainFunc = BeginBattleIntro;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ gBattleBankFunc[0] = SetBankFuncToSafariBufferRunCommand;
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ gBattleBankFunc[0] = SetBankFuncToWallyBufferRunCommand;
+ else
+ gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
+
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gNoOfAllBanks = 2;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x80000000)
+ {
+ gBattleMainFunc = BeginBattleIntro;
+
+ gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToRecordedOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gNoOfAllBanks = 2;
+ }
+ else // see how the banks are switched
+ {
+ gBattleBankFunc[1] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[0] = SetBankFuncToRecordedOpponentBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+
+ gNoOfAllBanks = 2;
+ }
+ }
+ else
+ {
+ gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+ }
+ }
+ }
+ else
+ {
+ gBattleMainFunc = BeginBattleIntro;
+
+ gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[2] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+
+ gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+
+ gNoOfAllBanks = 4;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ {
+ gBattleMainFunc = BeginBattleIntro;
+
+ gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[0] = 0;
+
+ gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[1] = 1;
+
+ gBattleBankFunc[2] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[2] = 2;
+
+ gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[3] = 3;
+
+ gNoOfAllBanks = 4;
+
+ sub_81B8D64(0, 0);
+ sub_81B8D64(1, 0);
+ sub_81B8D64(2, 1);
+ sub_81B8D64(3, 1);
+
+ gBattlePartyID[0] = 0;
+ gBattlePartyID[1] = 0;
+ gBattlePartyID[2] = 3;
+ gBattlePartyID[3] = 3;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ u8 var; // multiplayer Id in a recorded battle?
+
+ for (var = gUnknown_0203C7B4, i = 0; i < BATTLE_BANKS_COUNT; i++)
+ {
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ sub_81B8D64(gLinkPlayers[i].lp_field_18, 0);
+ break;
+ case 1:
+ case 2:
+ sub_81B8D64(gLinkPlayers[i].lp_field_18, 1);
+ break;
+ }
+
+ if (i == var)
+ {
+ gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON1;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON2;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ else if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[var].lp_field_18 & 1))
+ || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[var].lp_field_18 & 1)))
+ {
+ gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON1;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_PLAYER_MON2;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ else
+ {
+ gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToRecordedOpponentBufferRunCommand;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_OPPONENT_MON1;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = IDENTITY_OPPONENT_MON2;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ {
+ gBattleBankFunc[0] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[2] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ gBattleBankFunc[1] = SetBankFuncToRecordedOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[3] = SetBankFuncToRecordedOpponentBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ }
+ else
+ {
+ gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+ }
+ }
+ else
+ {
+ gBattleBankFunc[1] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[3] = SetBankFuncToRecordedPlayerBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_PLAYER_MON2;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ gBattleBankFunc[0] = SetBankFuncToRecordedOpponentBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[2] = SetBankFuncToRecordedOpponentBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_OPPONENT_MON2;
+ }
+ else
+ {
+ gBattleBankFunc[0] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[2] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_OPPONENT_MON2;
+ }
+ }
+ }
+ }
+}
+
+static void SetControllersVariablesInLinkBattle(void)
+{
+ s32 i;
+ u8 multiplayerId;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ {
+ gBattleMainFunc = BeginBattleIntro;
+
+ gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToLinkOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gNoOfAllBanks = 2;
+ }
+ else
+ {
+ gBattleBankFunc[1] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[0] = SetBankFuncToLinkOpponentBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+
+ gNoOfAllBanks = 2;
+ }
+ }
+ else if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ {
+ gBattleMainFunc = BeginBattleIntro;
+
+ gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToLinkOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[2] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+
+ gBattleBankFunc[3] = SetBankFuncToLinkOpponentBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+
+ gNoOfAllBanks = 4;
+ }
+ else
+ {
+ gBattleBankFunc[1] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[0] = SetBankFuncToLinkOpponentBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[3] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_PLAYER_MON2;
+
+ gBattleBankFunc[2] = SetBankFuncToLinkOpponentBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_OPPONENT_MON2;
+
+ gNoOfAllBanks = 4;
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ {
+ gBattleMainFunc = BeginBattleIntro;
+
+ gBattleBankFunc[0] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[2] = SetBankFuncToLinkPartnerBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+
+ gBattleBankFunc[3] = SetBankFuncToOpponentBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+
+ gNoOfAllBanks = 4;
+ }
+ else
+ {
+ gBattleBankFunc[0] = SetBankFuncToLinkPartnerBufferRunCommand;
+ gBanksByIdentity[0] = IDENTITY_PLAYER_MON1;
+
+ gBattleBankFunc[1] = SetBankFuncToLinkOpponentBufferRunCommand;
+ gBanksByIdentity[1] = IDENTITY_OPPONENT_MON1;
+
+ gBattleBankFunc[2] = SetBankFuncToPlayerBufferRunCommand;
+ gBanksByIdentity[2] = IDENTITY_PLAYER_MON2;
+
+ gBattleBankFunc[3] = SetBankFuncToLinkOpponentBufferRunCommand;
+ gBanksByIdentity[3] = IDENTITY_OPPONENT_MON2;
+
+ gNoOfAllBanks = 4;
+ }
+
+ sub_81B8D64(0, 0);
+ sub_81B8D64(1, 0);
+ sub_81B8D64(2, 1);
+ sub_81B8D64(3, 1);
+ gBattlePartyID[0] = 0;
+ gBattlePartyID[1] = 0;
+ gBattlePartyID[2] = 3;
+ gBattlePartyID[3] = 3;
+ }
+ else
+ {
+ multiplayerId = GetMultiplayerId();
+
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ gBattleMainFunc = BeginBattleIntro;
+
+ for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ {
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ sub_81B8D64(gLinkPlayers[i].lp_field_18, 0);
+ break;
+ case 1:
+ case 2:
+ sub_81B8D64(gLinkPlayers[i].lp_field_18, 1);
+ break;
+ }
+
+ if (i == multiplayerId)
+ {
+ gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToPlayerBufferRunCommand;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 2;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ else
+ {
+ if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[multiplayerId].lp_field_18 & 1))
+ || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[multiplayerId].lp_field_18 & 1)))
+ {
+ gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToLinkPartnerBufferRunCommand;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 0;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 2;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ else
+ {
+ gBattleBankFunc[gLinkPlayers[i].lp_field_18] = SetBankFuncToLinkOpponentBufferRunCommand;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 1;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gBanksByIdentity[gLinkPlayers[i].lp_field_18] = 3;
+ gBattlePartyID[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ }
+ }
+
+ gNoOfAllBanks = 4;
+ }
+}
+
+static void SetBattlePartyIds(void)
+{
+ s32 i, j;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ for (j = 0; j < 6; j++)
+ {
+ if (i < 2)
+ {
+ if (GET_BANK_SIDE2(i) == SIDE_PLAYER)
+ {
+ if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0
+ && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_NONE
+ && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
+ && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0)
+ {
+ gBattlePartyID[i] = j;
+ break;
+ }
+ }
+ else
+ {
+ if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0
+ && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE
+ && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
+ && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0)
+ {
+ gBattlePartyID[i] = j;
+ break;
+ }
+ }
+ }
+ else
+ {
+ if (GET_BANK_SIDE2(i) == SIDE_PLAYER)
+ {
+ if (GetMonData(&gPlayerParty[j], MON_DATA_HP) != 0
+ && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES) != SPECIES_NONE // Probably a typo by Game Freak. The rest use SPECIES2.
+ && GetMonData(&gPlayerParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
+ && GetMonData(&gPlayerParty[j], MON_DATA_IS_EGG) == 0
+ && gBattlePartyID[i - 2] != j)
+ {
+ gBattlePartyID[i] = j;
+ break;
+ }
+ }
+ else
+ {
+ if (GetMonData(&gEnemyParty[j], MON_DATA_HP) != 0
+ && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_NONE
+ && GetMonData(&gEnemyParty[j], MON_DATA_SPECIES2) != SPECIES_EGG
+ && GetMonData(&gEnemyParty[j], MON_DATA_IS_EGG) == 0
+ && gBattlePartyID[i - 2] != j)
+ {
+ gBattlePartyID[i] = j;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ gBattlePartyID[1] = 0, gBattlePartyID[3] = 3;
+ }
+}
+
+static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size)
+{
+ s32 i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ PrepareBufferDataTransferLink(bufferId, size, data);
+ }
+ else
+ {
+ switch (bufferId)
+ {
+ case 0:
+ for (i = 0; i < size; i++)
+ {
+ gBattleBufferA[gActiveBank][i] = *data;
+ data++;
+ }
+ break;
+ case 1:
+ for (i = 0; i < size; i++)
+ {
+ gBattleBufferB[gActiveBank][i] = *data;
+ data++;
+ }
+ break;
+ }
+ }
+}
+
+static void CreateTasksForSendRecvLinkBuffers(void)
+{
+ gUnknown_02022D08 = CreateTask(Task_HandleSendLinkBuffersData, 0);
+ gTasks[gUnknown_02022D08].data[11] = 0;
+ gTasks[gUnknown_02022D08].data[12] = 0;
+ gTasks[gUnknown_02022D08].data[13] = 0;
+ gTasks[gUnknown_02022D08].data[14] = 0;
+ gTasks[gUnknown_02022D08].data[15] = 0;
+
+ gUnknown_02022D09 = CreateTask(Task_HandleCopyReceivedLinkBuffersData, 0);
+ gTasks[gUnknown_02022D09].data[12] = 0;
+ gTasks[gUnknown_02022D09].data[13] = 0;
+ gTasks[gUnknown_02022D09].data[14] = 0;
+ gTasks[gUnknown_02022D09].data[15] = 0;
+
+ gUnknown_02022D0A = 0;
+}
+
+enum
+{
+ LINK_BUFF_BUFFER_ID,
+ LINK_BUFF_ACTIVE_BANK,
+ LINK_BUFF_ATTACKER,
+ LINK_BUFF_TARGET,
+ LINK_BUFF_SIZE_LO,
+ LINK_BUFF_SIZE_HI,
+ LINK_BUFF_ABSENT_BANK_FLAGS,
+ LINK_BUFF_EFFECT_BANK,
+ LINK_BUFF_DATA
+};
+
+void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
+{
+ s32 alignedSize;
+ s32 i;
+
+ alignedSize = size - size % 4 + 4;
+ if (gTasks[gUnknown_02022D08].data[14] + alignedSize + LINK_BUFF_DATA + 1 > BATTLE_BUFFER_LINK_SIZE)
+ {
+ gTasks[gUnknown_02022D08].data[12] = gTasks[gUnknown_02022D08].data[14];
+ gTasks[gUnknown_02022D08].data[14] = 0;
+ }
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_BUFFER_ID] = bufferId;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ACTIVE_BANK] = gActiveBank;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ATTACKER] = gBankAttacker;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_TARGET] = gBankTarget;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_LO] = alignedSize;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_ABSENT_BANK_FLAGS] = gAbsentBankFlags;
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_EFFECT_BANK] = gEffectBank;
+
+ for (i = 0; i < size; i++)
+ gLinkBattleSendBuffer[gTasks[gUnknown_02022D08].data[14] + LINK_BUFF_DATA + i] = data[i];
+
+ gTasks[gUnknown_02022D08].data[14] = gTasks[gUnknown_02022D08].data[14] + alignedSize + LINK_BUFF_DATA;
+}
+
+static void Task_HandleSendLinkBuffersData(u8 taskId)
+{
+ u16 var;
+ u16 blockSize;
+
+ switch (gTasks[taskId].data[11])
+ {
+ case 0:
+ gTasks[taskId].data[10] = 100;
+ gTasks[taskId].data[11]++;
+ break;
+ case 1:
+ gTasks[taskId].data[10]--;
+ if (gTasks[taskId].data[10] == 0)
+ gTasks[taskId].data[11]++;
+ break;
+ case 2:
+ if (gLinkVSyncDisabled)
+ {
+ gTasks[taskId].data[11]++;
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ var = 2;
+ else
+ var = (gBattleTypeFlags & BATTLE_TYPE_MULTI) ? 4 : 2;
+
+ if (sub_800ABAC() >= var)
+ {
+ if (sub_800ABBC())
+ {
+ sub_800A620();
+ gTasks[taskId].data[11]++;
+ }
+ else
+ {
+ gTasks[taskId].data[11]++;
+ }
+ }
+ }
+ break;
+ case 3:
+ if (gTasks[taskId].data[15] != gTasks[taskId].data[14])
+ {
+ if (gTasks[taskId].data[13] == 0)
+ {
+ if (gTasks[taskId].data[15] > gTasks[taskId].data[14]
+ && gTasks[taskId].data[15] == gTasks[taskId].data[12])
+ {
+ gTasks[taskId].data[12] = 0;
+ gTasks[taskId].data[15] = 0;
+ }
+ blockSize = (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8)) + LINK_BUFF_DATA;
+ SendBlock(bitmask_all_link_players_but_self(), &gLinkBattleSendBuffer[gTasks[taskId].data[15]], blockSize);
+ gTasks[taskId].data[11]++;
+ }
+ else
+ {
+ gTasks[taskId].data[13]--;
+ break;
+ }
+ }
+ break;
+ case 4:
+ if (sub_800A520())
+ {
+ blockSize = gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleSendBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8);
+ gTasks[taskId].data[13] = 1;
+ gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA;
+ gTasks[taskId].data[11] = 3;
+ }
+ break;
+ case 5:
+ gTasks[taskId].data[13]--;
+ if (gTasks[taskId].data[13] == 0)
+ {
+ gTasks[taskId].data[13] = 1;
+ gTasks[taskId].data[11] = 3;
+ }
+ break;
+ }
+}
+
+// fix me
+void sub_8033648(void)
+{
+ u8 i;
+ s32 j;
+ u16 r6;
+ u8 *recvBuffer;
+ u8 *dest;
+ u8 *src;
+
+ if (gReceivedRemoteLinkPlayers != 0 && (gBattleTypeFlags & BATTLE_TYPE_20))
+ {
+ sub_8011BD0();
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (GetBlockReceivedStatus() & gBitTable[i])
+ {
+ ResetBlockReceivedFlag(i);
+ recvBuffer = (u8 *)gBlockRecvBuffer[i];
+ #ifndef NONMATCHING
+ asm("");
+ recvBuffer = (u8 *)&gBlockRecvBuffer[i];
+ #endif
+ r6 = gBlockRecvBuffer[i][2];
+
+ if (gTasks[gUnknown_02022D09].data[14] + 9 + r6 > 0x1000)
+ {
+ gTasks[gUnknown_02022D09].data[12] = gTasks[gUnknown_02022D09].data[14];
+ gTasks[gUnknown_02022D09].data[14] = 0;
+ }
+
+ dest = &gLinkBattleRecvBuffer[gTasks[gUnknown_02022D09].data[14]];
+ src = recvBuffer;
+
+ for (j = 0; j < r6 + 8; j++)
+ dest[j] = src[j];
+
+ gTasks[gUnknown_02022D09].data[14] = gTasks[gUnknown_02022D09].data[14] + r6 + 8;
+ }
+ }
+ }
+}
+
+static void Task_HandleCopyReceivedLinkBuffersData(u8 taskId)
+{
+ u16 blockSize;
+ u8 bank;
+ u8 var;
+
+ if (gTasks[taskId].data[15] != gTasks[taskId].data[14])
+ {
+ if (gTasks[taskId].data[15] > gTasks[taskId].data[14]
+ && gTasks[taskId].data[15] == gTasks[taskId].data[12])
+ {
+ gTasks[taskId].data[12] = 0;
+ gTasks[taskId].data[15] = 0;
+ }
+ bank = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_ACTIVE_BANK];
+ blockSize = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_LO] | (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_SIZE_HI] << 8);
+
+ switch (gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 0])
+ {
+ case 0:
+ if (gBattleExecBuffer & gBitTable[bank])
+ return;
+
+ memcpy(gBattleBufferA[bank], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 8], blockSize);
+ sub_803F850(bank);
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ {
+ gBankAttacker = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 2];
+ gBankTarget = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 3];
+ gAbsentBankFlags = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 6];
+ gEffectBank = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 7];
+ }
+ break;
+ case 1:
+ memcpy(gBattleBufferB[bank], &gLinkBattleRecvBuffer[gTasks[taskId].data[15] + 8], blockSize);
+ break;
+ case 2:
+ var = gLinkBattleRecvBuffer[gTasks[taskId].data[15] + LINK_BUFF_DATA];
+ gBattleExecBuffer &= ~(gBitTable[bank] << (var * 4));
+ break;
+ }
+
+ gTasks[taskId].data[15] = gTasks[taskId].data[15] + blockSize + LINK_BUFF_DATA;
+ }
+}
+
+void EmitGetMonData(u8 bufferId, u8 arg1, u8 arg2)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_GETMONDATA;
+ gBattleBuffersTransferData[1] = arg1;
+ gBattleBuffersTransferData[2] = arg2;
+ gBattleBuffersTransferData[3] = 0;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitGetRawMonData(u8 bufferId, u8 monId, u8 bytes)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_GETRAWMONDATA;
+ gBattleBuffersTransferData[1] = monId;
+ gBattleBuffersTransferData[2] = bytes;
+ gBattleBuffersTransferData[3] = 0;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitSetMonData(u8 bufferId, u8 request, u8 c, u8 bytes, void *data)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA;
+ gBattleBuffersTransferData[1] = request;
+ gBattleBuffersTransferData[2] = c;
+ for (i = 0; i < bytes; i++)
+ gBattleBuffersTransferData[3 + i] = *(u8*)(data++);
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 3 + bytes);
+}
+
+void EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA;
+ gBattleBuffersTransferData[1] = monId;
+ gBattleBuffersTransferData[2] = bytes;
+ for (i = 0; i < bytes; i++)
+ gBattleBuffersTransferData[3 + i] = *(u8*)(data++);
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, bytes + 3);
+}
+
+void EmitLoadMonSprite(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_LOADMONSPRITE;
+ gBattleBuffersTransferData[1] = 4;
+ gBattleBuffersTransferData[2] = 4;
+ gBattleBuffersTransferData[3] = 4;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_SWITCHINANIM;
+ gBattleBuffersTransferData[1] = partyId;
+ gBattleBuffersTransferData[2] = dontClearSubstituteBit;
+ gBattleBuffersTransferData[3] = 5;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitReturnMonToBall(u8 bufferId, u8 arg1)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL;
+ gBattleBuffersTransferData[1] = arg1;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2);
+}
+
+void EmitDrawTrainerPic(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_DRAWTRAINERPIC;
+ gBattleBuffersTransferData[1] = 7;
+ gBattleBuffersTransferData[2] = 7;
+ gBattleBuffersTransferData[3] = 7;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitTrainerSlide(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDE;
+ gBattleBuffersTransferData[1] = 8;
+ gBattleBuffersTransferData[2] = 8;
+ gBattleBuffersTransferData[3] = 8;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitTrainerSlideBack(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_TRAINERSLIDEBACK;
+ gBattleBuffersTransferData[1] = 9;
+ gBattleBuffersTransferData[2] = 9;
+ gBattleBuffersTransferData[3] = 9;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitFaintAnimation(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_FAINTANIMATION;
+ gBattleBuffersTransferData[1] = 10;
+ gBattleBuffersTransferData[2] = 10;
+ gBattleBuffersTransferData[3] = 10;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd11(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_11;
+ gBattleBuffersTransferData[1] = 11;
+ gBattleBuffersTransferData[2] = 11;
+ gBattleBuffersTransferData[3] = 11;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd12(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_12;
+ gBattleBuffersTransferData[1] = 12;
+ gBattleBuffersTransferData[2] = 12;
+ gBattleBuffersTransferData[3] = 12;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitBallThrow(u8 bufferId, u8 caseId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_BALLTHROW;
+ gBattleBuffersTransferData[1] = caseId;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2);
+}
+
+void EmitPause(u8 bufferId, u8 toWait, void *data)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_PAUSE;
+ gBattleBuffersTransferData[1] = toWait;
+ for (i = 0; i < toWait * 3; i++)
+ gBattleBuffersTransferData[2 + i] = *(u8*)(data++);
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, toWait * 3 + 2);
+}
+
+void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_MOVEANIMATION;
+ gBattleBuffersTransferData[1] = move;
+ gBattleBuffersTransferData[2] = (move & 0xFF00) >> 8;
+ gBattleBuffersTransferData[3] = turnOfMove;
+ gBattleBuffersTransferData[4] = movePower;
+ gBattleBuffersTransferData[5] = (movePower & 0xFF00) >> 8;
+ gBattleBuffersTransferData[6] = dmg;
+ gBattleBuffersTransferData[7] = (dmg & 0x0000FF00) >> 8;
+ gBattleBuffersTransferData[8] = (dmg & 0x00FF0000) >> 16;
+ gBattleBuffersTransferData[9] = (dmg & 0xFF000000) >> 24;
+ gBattleBuffersTransferData[10] = friendship;
+ gBattleBuffersTransferData[11] = multihit;
+ if (WEATHER_HAS_EFFECT2)
+ {
+ gBattleBuffersTransferData[12] = gBattleWeather;
+ gBattleBuffersTransferData[13] = (gBattleWeather & 0xFF00) >> 8;
+ }
+ else
+ {
+ gBattleBuffersTransferData[12] = 0;
+ gBattleBuffersTransferData[13] = 0;
+ }
+ gBattleBuffersTransferData[14] = 0;
+ gBattleBuffersTransferData[15] = 0;
+ memcpy(&gBattleBuffersTransferData[16], disableStructPtr, sizeof(struct DisableStruct));
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 16 + sizeof(struct DisableStruct));
+}
+
+void EmitPrintString(u8 bufferId, u16 stringID)
+{
+ s32 i;
+ struct StringInfoBattle* stringInfo;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRING;
+ gBattleBuffersTransferData[1] = gBattleOutcome;
+ gBattleBuffersTransferData[2] = stringID;
+ gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
+
+ stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
+ stringInfo->currentMove = gCurrentMove;
+ stringInfo->lastMove = gLastUsedMove;
+ stringInfo->lastItem = gLastUsedItem;
+ stringInfo->lastAbility = gLastUsedAbility;
+ stringInfo->scrActive = gBattleScripting.bank;
+ stringInfo->unk1605E = gBattleStruct->field_52;
+ stringInfo->hpScale = gBattleStruct->hpScale;
+ stringInfo->StringBank = gStringBank;
+ stringInfo->moveType = gBattleMoves[gCurrentMove].type;
+
+ for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ stringInfo->abilities[i] = gBattleMons[i].ability;
+ for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
+ {
+ stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
+ stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
+ stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
+ }
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
+}
+
+void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID)
+{
+ s32 i;
+ struct StringInfoBattle* stringInfo;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRINGPLAYERONLY;
+ gBattleBuffersTransferData[1] = 17;
+ gBattleBuffersTransferData[2] = stringID;
+ gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
+
+ stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
+ stringInfo->currentMove = gCurrentMove;
+ stringInfo->lastMove = gLastUsedMove;
+ stringInfo->lastItem = gLastUsedItem;
+ stringInfo->lastAbility = gLastUsedAbility;
+ stringInfo->scrActive = gBattleScripting.bank;
+ stringInfo->unk1605E = gBattleStruct->field_52;
+
+ for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ stringInfo->abilities[i] = gBattleMons[i].ability;
+ for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
+ {
+ stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
+ stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
+ stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
+ }
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
+}
+
+void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION;
+ gBattleBuffersTransferData[1] = arg1;
+ gBattleBuffersTransferData[2] = arg2;
+ gBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd19(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_19;
+ gBattleBuffersTransferData[1] = 19;
+ gBattleBuffersTransferData[2] = 19;
+ gBattleBuffersTransferData[3] = 19;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_CHOOSEMOVE;
+ gBattleBuffersTransferData[1] = isDoubleBattle;
+ gBattleBuffersTransferData[2] = NoPpNumber;
+ gBattleBuffersTransferData[3] = 0;
+ for (i = 0; i < sizeof(*movePpData); i++)
+ gBattleBuffersTransferData[4 + i] = *((u8*)(movePpData) + i);
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(*movePpData) + 4);
+}
+
+void EmitOpenBag(u8 bufferId, u8 *arg1)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_OPENBAG;
+ for (i = 0; i < 3; i++)
+ gBattleBuffersTransferData[1 + i] = arg1[i];
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_CHOOSEPOKEMON;
+ gBattleBuffersTransferData[1] = caseId;
+ gBattleBuffersTransferData[2] = arg2;
+ gBattleBuffersTransferData[3] = abilityId;
+ for (i = 0; i < 3; i++)
+ gBattleBuffersTransferData[4 + i] = arg4[i];
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 8); // but only 7 bytes were written
+}
+
+void EmitCmd23(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_23;
+ gBattleBuffersTransferData[1] = 23;
+ gBattleBuffersTransferData[2] = 23;
+ gBattleBuffersTransferData[3] = 23;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+// why is the argument u16 if it's being cast to s16 anyway?
+void EmitHealthBarUpdate(u8 bufferId, u16 hpValue)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_HEALTHBARUPDATE;
+ gBattleBuffersTransferData[1] = 0;
+ gBattleBuffersTransferData[2] = (s16)hpValue;
+ gBattleBuffersTransferData[3] = ((s16)hpValue & 0xFF00) >> 8;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+// why is the argument u16 if it's being cast to s16 anyway?
+void EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_EXPUPDATE;
+ gBattleBuffersTransferData[1] = partyId;
+ gBattleBuffersTransferData[2] = (s16)expPoints;
+ gBattleBuffersTransferData[3] = ((s16)expPoints & 0xFF00) >> 8;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitStatusIconUpdate(u8 bufferId, u32 status1, u32 status2)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_STATUSICONUPDATE;
+ gBattleBuffersTransferData[1] = status1;
+ gBattleBuffersTransferData[2] = (status1 & 0x0000FF00) >> 8;
+ gBattleBuffersTransferData[3] = (status1 & 0x00FF0000) >> 16;
+ gBattleBuffersTransferData[4] = (status1 & 0xFF000000) >> 24;
+ gBattleBuffersTransferData[5] = status2;
+ gBattleBuffersTransferData[6] = (status2 & 0x0000FF00) >> 8;
+ gBattleBuffersTransferData[7] = (status2 & 0x00FF0000) >> 16;
+ gBattleBuffersTransferData[8] = (status2 & 0xFF000000) >> 24;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 9);
+}
+
+void EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_STATUSANIMATION;
+ gBattleBuffersTransferData[1] = status2;
+ gBattleBuffersTransferData[2] = status;
+ gBattleBuffersTransferData[3] = (status & 0x0000FF00) >> 8;
+ gBattleBuffersTransferData[4] = (status & 0x00FF0000) >> 16;
+ gBattleBuffersTransferData[5] = (status & 0xFF000000) >> 24;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 6);
+}
+
+void EmitStatusXor(u8 bufferId, u8 b)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_STATUSXOR;
+ gBattleBuffersTransferData[1] = b;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2);
+}
+
+void EmitDataTransfer(u8 bufferId, u16 size, void *data)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_DATATRANSFER;
+ gBattleBuffersTransferData[1] = 29;
+ gBattleBuffersTransferData[2] = size;
+ gBattleBuffersTransferData[3] = (size & 0xFF00) >> 8;
+ for (i = 0; i < size; i++)
+ gBattleBuffersTransferData[4 + i] = *(u8*)(data++);
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 4);
+}
+
+void EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_DMA3TRANSFER;
+ gBattleBuffersTransferData[1] = (u32)(dst);
+ gBattleBuffersTransferData[2] = ((u32)(dst) & 0x0000FF00) >> 8;
+ gBattleBuffersTransferData[3] = ((u32)(dst) & 0x00FF0000) >> 16;
+ gBattleBuffersTransferData[4] = ((u32)(dst) & 0xFF000000) >> 24;
+ gBattleBuffersTransferData[5] = size;
+ gBattleBuffersTransferData[6] = (size & 0xFF00) >> 8;
+ for (i = 0; i < size; i++)
+ gBattleBuffersTransferData[7 + i] = *(u8*)(data++);
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 7);
+}
+
+void EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_31;
+ gBattleBuffersTransferData[1] = songId;
+ gBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
+ for (i = 0; i < songId; i++) // ????
+ gBattleBuffersTransferData[3 + i] = *(u8*)(unusedDumbDataParameter++);
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, songId + 3);
+}
+
+void EmitCmd32(u8 bufferId, u16 size, void *data)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_32;
+ gBattleBuffersTransferData[1] = size;
+ gBattleBuffersTransferData[2] = (size & 0xFF00) >> 8;
+ for (i = 0; i < size; i++)
+ gBattleBuffersTransferData[3 + i] = *(u8*)(data++);
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, size + 3);
+}
+
+void EmitCmd33(u8 bufferId, u8 arg1, u16 arg2)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_33;
+ gBattleBuffersTransferData[1] = arg1;
+ gBattleBuffersTransferData[2] = arg2;
+ gBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd34(u8 bufferId, u8 b, u8 *c)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_34;
+ gBattleBuffersTransferData[1] = b;
+ for (i = 0; i < 3; i++)
+ gBattleBuffersTransferData[2 + i] = c[i];
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 5);
+}
+
+void EmitCmd35(u8 bufferId, u16 b)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_35;
+ gBattleBuffersTransferData[1] = b;
+ gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
+ gBattleBuffersTransferData[3] = 0;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd36(u8 bufferId, u16 b)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_36;
+ gBattleBuffersTransferData[1] = b;
+ gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
+ gBattleBuffersTransferData[3] = 0;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd37(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_37;
+ gBattleBuffersTransferData[1] = 37;
+ gBattleBuffersTransferData[2] = 37;
+ gBattleBuffersTransferData[3] = 37;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd38(u8 bufferId, u8 b)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_38;
+ gBattleBuffersTransferData[1] = b;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2);
+}
+
+void EmitCmd39(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_39;
+ gBattleBuffersTransferData[1] = 39;
+ gBattleBuffersTransferData[2] = 39;
+ gBattleBuffersTransferData[3] = 39;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd40(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_40;
+ gBattleBuffersTransferData[1] = 40;
+ gBattleBuffersTransferData[2] = 40;
+ gBattleBuffersTransferData[3] = 40;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitHitAnimation(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_HITANIMATION;
+ gBattleBuffersTransferData[1] = 41;
+ gBattleBuffersTransferData[2] = 41;
+ gBattleBuffersTransferData[3] = 41;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd42(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_42;
+ gBattleBuffersTransferData[1] = 42;
+ gBattleBuffersTransferData[2] = 42;
+ gBattleBuffersTransferData[3] = 42;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitEffectivenessSound(u8 bufferId, u16 songId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND;
+ gBattleBuffersTransferData[1] = songId;
+ gBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
+ gBattleBuffersTransferData[3] = 0;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_PLAYFANFAREORBGM;
+ gBattleBuffersTransferData[1] = songId;
+ gBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
+ gBattleBuffersTransferData[3] = playBGM;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitFaintingCry(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_FAINTINGCRY;
+ gBattleBuffersTransferData[1] = 45;
+ gBattleBuffersTransferData[2] = 45;
+ gBattleBuffersTransferData[3] = 45;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitIntroSlide(u8 bufferId, u8 terrainId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_INTROSLIDE;
+ gBattleBuffersTransferData[1] = terrainId;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2);
+}
+
+void EmitIntroTrainerBallThrow(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_INTROTRAINERBALLTHROW;
+ gBattleBuffersTransferData[1] = 47;
+ gBattleBuffersTransferData[2] = 47;
+ gBattleBuffersTransferData[3] = 47;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2)
+{
+ s32 i;
+
+ gBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
+ gBattleBuffersTransferData[1] = arg2 & 0x7F;
+ gBattleBuffersTransferData[2] = (arg2 & 0x80) >> 7;
+ gBattleBuffersTransferData[3] = 48;
+ for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * 6); i++)
+ gBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus));
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct HpAndStatus) * 6 + 4);
+}
+
+void EmitCmd49(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_49;
+ gBattleBuffersTransferData[1] = 49;
+ gBattleBuffersTransferData[2] = 49;
+ gBattleBuffersTransferData[3] = 49;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitCmd50(u8 bufferId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_50;
+ gBattleBuffersTransferData[1] = 50;
+ gBattleBuffersTransferData[2] = 50;
+ gBattleBuffersTransferData[3] = 50;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_SPRITEINVISIBILITY;
+ gBattleBuffersTransferData[1] = isInvisible;
+ gBattleBuffersTransferData[2] = 51;
+ gBattleBuffersTransferData[3] = 51;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_BATTLEANIMATION;
+ gBattleBuffersTransferData[1] = animationId;
+ gBattleBuffersTransferData[2] = argument;
+ gBattleBuffersTransferData[3] = (argument & 0xFF00) >> 8;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
+}
+
+void EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 arg2)
+{
+ bool8 arg2_ = arg2;
+ gBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG;
+ gBattleBuffersTransferData[1] = arg1;
+
+ if (arg2_)
+ gBattleBuffersTransferData[3] = gBattleBuffersTransferData[2] = sub_81850DC(&gBattleBuffersTransferData[4]);
+ else
+ gBattleBuffersTransferData[3] = gBattleBuffersTransferData[2] = 0;
+
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, gBattleBuffersTransferData[2] + 4);
+}
+
+void EmitResetActionMoveSelection(u8 bufferId, u8 caseId)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_RESETACTIONMOVESELECTION;
+ gBattleBuffersTransferData[1] = caseId;
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 2);
+}
+
+void EmitCmd55(u8 bufferId, u8 arg1)
+{
+ gBattleBuffersTransferData[0] = CONTROLLER_55;
+ gBattleBuffersTransferData[1] = arg1;
+ gBattleBuffersTransferData[2] = gSaveBlock2Ptr->field_CA9_b;
+ gBattleBuffersTransferData[3] = gSaveBlock2Ptr->field_CA9_b;
+ gBattleBuffersTransferData[5] = gBattleBuffersTransferData[4] = sub_81850DC(&gBattleBuffersTransferData[6]);
+ PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, gBattleBuffersTransferData[4] + 6);
+}
diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c
index c0557ac70..5251ee06a 100644
--- a/src/battle_dome_cards.c
+++ b/src/battle_dome_cards.c
@@ -17,7 +17,7 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const union AffineAnimCmd *const gUnknown_082FF618[];
extern const union AffineAnimCmd *const gUnknown_082FF694[];
extern const union AnimCmd *const gUnknown_082FF70C[];
-extern const union AnimCmd *const *const gUnknown_08309AAC[NUM_SPECIES];
+extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[NUM_SPECIES];
extern const union AnimCmd *const *const gUnknown_0830536C[];
extern const u8 gUnknown_0831F578[];
@@ -282,7 +282,7 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y,
images[j].size = 0x800;
}
gUnknown_0203CCEC.tileTag = 0xFFFF;
- gUnknown_0203CCEC.anims = gUnknown_08309AAC[species];
+ gUnknown_0203CCEC.anims = gMonAnimationsSpriteAnimsPtrTable[species];
gUnknown_0203CCEC.images = images;
if (flags2 == 0x01)
{
diff --git a/src/battle_interface.c b/src/battle_interface.c
new file mode 100644
index 000000000..9241db1d9
--- /dev/null
+++ b/src/battle_interface.c
@@ -0,0 +1,2632 @@
+#include "global.h"
+#include "battle.h"
+#include "pokemon.h"
+#include "battle_controllers.h"
+#include "battle_interface.h"
+#include "sprite.h"
+#include "window.h"
+#include "string_util.h"
+#include "text.h"
+#include "sound.h"
+#include "songs.h"
+#include "decompress.h"
+#include "task.h"
+#include "util.h"
+#include "gpu_regs.h"
+#include "battle_message.h"
+#include "species.h"
+#include "pokedex.h"
+#include "palette.h"
+#include "international_string_util.h"
+#include "safari_zone.h"
+#include "battle_anim.h"
+
+enum
+{
+ HEALTH_BAR,
+ EXP_BAR
+};
+
+enum
+{
+ HP_CURRENT,
+ HP_MAX
+};
+
+struct TestingBar
+{
+ s32 maxValue;
+ s32 currValue;
+ s32 field_8;
+ u32 unkC_0:5;
+ u32 unk10;
+};
+
+enum
+{
+ HEALTHBOX_GFX_0,
+ HEALTHBOX_GFX_1,
+ HEALTHBOX_GFX_2,
+ HEALTHBOX_GFX_3,
+ HEALTHBOX_GFX_4,
+ HEALTHBOX_GFX_5,
+ HEALTHBOX_GFX_6,
+ HEALTHBOX_GFX_7,
+ HEALTHBOX_GFX_8,
+ HEALTHBOX_GFX_9,
+ HEALTHBOX_GFX_10,
+ HEALTHBOX_GFX_11,
+ HEALTHBOX_GFX_12,
+ HEALTHBOX_GFX_13,
+ HEALTHBOX_GFX_14,
+ HEALTHBOX_GFX_15,
+ HEALTHBOX_GFX_16,
+ HEALTHBOX_GFX_17,
+ HEALTHBOX_GFX_18,
+ HEALTHBOX_GFX_19,
+ HEALTHBOX_GFX_20,
+ HEALTHBOX_GFX_STATUS_PSN_BANK0,
+ HEALTHBOX_GFX_22,
+ HEALTHBOX_GFX_23,
+ HEALTHBOX_GFX_STATUS_PRZ_BANK0,
+ HEALTHBOX_GFX_25,
+ HEALTHBOX_GFX_26,
+ HEALTHBOX_GFX_STATUS_SLP_BANK0,
+ HEALTHBOX_GFX_28,
+ HEALTHBOX_GFX_29,
+ HEALTHBOX_GFX_STATUS_FRZ_BANK0,
+ HEALTHBOX_GFX_31,
+ HEALTHBOX_GFX_32,
+ HEALTHBOX_GFX_STATUS_BRN_BANK0,
+ HEALTHBOX_GFX_34,
+ HEALTHBOX_GFX_35,
+ HEALTHBOX_GFX_36,
+ HEALTHBOX_GFX_37,
+ HEALTHBOX_GFX_38,
+ HEALTHBOX_GFX_39,
+ HEALTHBOX_GFX_40,
+ HEALTHBOX_GFX_41,
+ HEALTHBOX_GFX_42,
+ HEALTHBOX_GFX_43,
+ HEALTHBOX_GFX_44,
+ HEALTHBOX_GFX_45,
+ HEALTHBOX_GFX_46,
+ HEALTHBOX_GFX_47,
+ HEALTHBOX_GFX_48,
+ HEALTHBOX_GFX_49,
+ HEALTHBOX_GFX_50,
+ HEALTHBOX_GFX_51,
+ HEALTHBOX_GFX_52,
+ HEALTHBOX_GFX_53,
+ HEALTHBOX_GFX_54,
+ HEALTHBOX_GFX_55,
+ HEALTHBOX_GFX_56,
+ HEALTHBOX_GFX_57,
+ HEALTHBOX_GFX_58,
+ HEALTHBOX_GFX_59,
+ HEALTHBOX_GFX_60,
+ HEALTHBOX_GFX_61,
+ HEALTHBOX_GFX_62,
+ HEALTHBOX_GFX_63,
+ HEALTHBOX_GFX_64,
+ HEALTHBOX_GFX_65,
+ HEALTHBOX_GFX_66,
+ HEALTHBOX_GFX_67,
+ HEALTHBOX_GFX_68,
+ HEALTHBOX_GFX_69,
+ HEALTHBOX_GFX_70,
+ HEALTHBOX_GFX_STATUS_PSN_BANK1,
+ HEALTHBOX_GFX_72,
+ HEALTHBOX_GFX_73,
+ HEALTHBOX_GFX_STATUS_PRZ_BANK1,
+ HEALTHBOX_GFX_75,
+ HEALTHBOX_GFX_76,
+ HEALTHBOX_GFX_STATUS_SLP_BANK1,
+ HEALTHBOX_GFX_78,
+ HEALTHBOX_GFX_79,
+ HEALTHBOX_GFX_STATUS_FRZ_BANK1,
+ HEALTHBOX_GFX_81,
+ HEALTHBOX_GFX_82,
+ HEALTHBOX_GFX_STATUS_BRN_BANK1,
+ HEALTHBOX_GFX_84,
+ HEALTHBOX_GFX_85,
+ HEALTHBOX_GFX_STATUS_PSN_BANK2,
+ HEALTHBOX_GFX_87,
+ HEALTHBOX_GFX_88,
+ HEALTHBOX_GFX_STATUS_PRZ_BANK2,
+ HEALTHBOX_GFX_90,
+ HEALTHBOX_GFX_91,
+ HEALTHBOX_GFX_STATUS_SLP_BANK2,
+ HEALTHBOX_GFX_93,
+ HEALTHBOX_GFX_94,
+ HEALTHBOX_GFX_STATUS_FRZ_BANK2,
+ HEALTHBOX_GFX_96,
+ HEALTHBOX_GFX_97,
+ HEALTHBOX_GFX_STATUS_BRN_BANK2,
+ HEALTHBOX_GFX_99,
+ HEALTHBOX_GFX_100,
+ HEALTHBOX_GFX_STATUS_PSN_BANK3,
+ HEALTHBOX_GFX_102,
+ HEALTHBOX_GFX_103,
+ HEALTHBOX_GFX_STATUS_PRZ_BANK3,
+ HEALTHBOX_GFX_105,
+ HEALTHBOX_GFX_106,
+ HEALTHBOX_GFX_STATUS_SLP_BANK3,
+ HEALTHBOX_GFX_108,
+ HEALTHBOX_GFX_109,
+ HEALTHBOX_GFX_STATUS_FRZ_BANK3,
+ HEALTHBOX_GFX_111,
+ HEALTHBOX_GFX_112,
+ HEALTHBOX_GFX_STATUS_BRN_BANK3,
+ HEALTHBOX_GFX_114,
+ HEALTHBOX_GFX_115,
+ HEALTHBOX_GFX_116,
+ HEALTHBOX_GFX_117,
+};
+
+extern u8 gBanksByIdentity[BATTLE_BANKS_COUNT];
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u8 gNoOfAllBanks;
+extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
+
+extern const u8 * const gNatureNamePointers[];
+extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
+
+// strings
+extern const u8 gText_Slash[];
+extern const u8 gText_HighlightDarkGrey[];
+extern const u8 gText_DynColor2[];
+extern const u8 gText_DynColor2Male[];
+extern const u8 gText_DynColor1Female[];
+extern const u8 gText_SafariBalls[];
+extern const u8 gText_SafariBallLeft[];
+
+// graphics
+extern const u8 gBattleInterface_BallStatusBarGfx[];
+extern const u8 gBattleInterface_BallDisplayGfx[];
+extern const u16 gBattleInterface_BallStatusBarPal[];
+extern const u16 gBattleInterface_BallDisplayPal[];
+extern const u8 gHealthboxElementsGfxTable[][32];
+
+// functions
+extern bool8 IsDoubleBattle(void);
+extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str); // menu.h
+extern void LoadBattleBarGfx(u8 arg0);
+
+// this file's functions
+
+static const u8 *GetHealthboxElementGfxPtr(u8 elementId);
+static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId);
+
+static void RemoveWindowOnHealthbox(u32 windowId);
+static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent);
+static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId);
+
+static void sub_8075198(void *dest, u8 *windowTileData, s32 arg2);
+static void sub_80751E4(void *dest, u8 *windowTileData, u32 arg2);
+static void sub_8075170(void *dest, u8 *windowTileData, u32 arg2);
+static void sub_807513C(void *dest, u32 arg1, u32 arg2);
+
+static void sub_8073E08(u8 taskId);
+static void sub_8073F98(u8 taskId);
+static void sub_8073E64(u8 taskId);
+
+static void sub_8072924(struct Sprite *sprite);
+static void sub_80728B4(struct Sprite *sprite);
+static void sub_8074158(struct Sprite *sprite);
+static void sub_8074090(struct Sprite *sprite);
+static void SpriteCB_StatusSummaryBar(struct Sprite *sprite);
+static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite);
+static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite *sprite);
+
+static u8 GetStatusIconForBankId(u8 statusElementId, u8 bank);
+static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4, u16 arg5);
+static u8 GetScaledExpFraction(s32 currValue, s32 arg1, s32 maxValue, u8 scale);
+static void sub_8074B9C(u8 bank, u8 whichBar);
+static u8 sub_8074E8C(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 *arg4, u8 arg5);
+static void sub_8074F88(struct TestingBar *barInfo, s32 *arg1, u16 *arg2);
+
+// const rom data
+static const struct OamData sUnknown_0832C138 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate sHealthboxPlayerSpriteTemplates[2] =
+{
+ {
+ .tileTag = TAG_HEALTHBOX_PLAYER1_TILE,
+ .paletteTag = TAG_HEALTHBOX_PAL,
+ .oam = &sUnknown_0832C138,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ },
+ {
+ .tileTag = TAG_HEALTHBOX_PLAYER2_TILE,
+ .paletteTag = TAG_HEALTHBOX_PAL,
+ .oam = &sUnknown_0832C138,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ }
+};
+
+static const struct SpriteTemplate sHealthboxOpponentSpriteTemplates[2] =
+{
+ {
+ .tileTag = TAG_HEALTHBOX_OPPONENT1_TILE,
+ .paletteTag = TAG_HEALTHBOX_PAL,
+ .oam = &sUnknown_0832C138,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ },
+ {
+ .tileTag = TAG_HEALTHBOX_OPPONENT2_TILE,
+ .paletteTag = TAG_HEALTHBOX_PAL,
+ .oam = &sUnknown_0832C138,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+ }
+};
+
+static const struct SpriteTemplate sHealthboxSafariSpriteTemplate =
+{
+ .tileTag = TAG_HEALTHBOX_SAFARI_TILE,
+ .paletteTag = TAG_HEALTHBOX_PAL,
+ .oam = &sUnknown_0832C138,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct OamData sUnknown_0832C1B8 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate sUnknown_0832C1C0[4] =
+{
+ {
+ .tileTag = 0xd704,
+ .paletteTag = 0xd704,
+ .oam = &sUnknown_0832C1B8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80728B4
+ },
+ {
+ .tileTag = 0xd705,
+ .paletteTag = 0xd704,
+ .oam = &sUnknown_0832C1B8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80728B4
+ },
+ {
+ .tileTag = 0xd706,
+ .paletteTag = 0xd704,
+ .oam = &sUnknown_0832C1B8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80728B4
+ },
+ {
+ .tileTag = 0xd707,
+ .paletteTag = 0xd704,
+ .oam = &sUnknown_0832C1B8,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80728B4
+ }
+};
+
+static const struct Subsprite sUnknown_0832C220[] =
+{
+ {240, 0, 1, 3, 0, 1},
+ {48, 0, 0, 2, 32, 1},
+ {240, 32, 1, 1, 48, 1},
+ {16, 32, 1, 1, 52, 1},
+ {48, 32, 1, 1, 56, 1}
+};
+
+static const struct Subsprite sUnknown_0832C234[] =
+{
+ {240, 0, 1, 3, 64, 1},
+ {48, 0, 0, 2, 96, 1},
+ {240, 32, 1, 1, 112, 1},
+ {16, 32, 1, 1, 116, 1},
+ {48, 32, 1, 1, 120, 1}
+};
+
+static const struct Subsprite sUnknown_0832C248[] =
+{
+ {240, 0, 1, 3, 0, 1},
+ {48, 0, 0, 2, 32, 1}
+};
+
+static const struct Subsprite sUnknown_0832C250[] =
+{
+ {240, 0, 1, 3, 0, 1},
+ {48, 0, 0, 2, 32, 1}
+};
+
+static const struct Subsprite sUnknown_0832C258[] =
+{
+ {240, 0, 1, 1, 0, 1},
+ {16, 0, 1, 1, 4, 1}
+};
+
+static const struct Subsprite sUnknown_0832C260[] =
+{
+ {240, 0, 1, 1, 0, 1},
+ {16, 0, 1, 1, 4, 1},
+ {224, 0, 0, 0, 8, 1}
+};
+
+// unused subsprite table
+static const struct SubspriteTable sUnknown_0832C26C[] =
+{
+ {ARRAY_COUNT(sUnknown_0832C220), sUnknown_0832C220},
+ {ARRAY_COUNT(sUnknown_0832C248), sUnknown_0832C248},
+ {ARRAY_COUNT(sUnknown_0832C234), sUnknown_0832C234},
+ {ARRAY_COUNT(sUnknown_0832C250), sUnknown_0832C250}
+};
+
+static const struct SubspriteTable sUnknown_0832C28C[] =
+{
+ {ARRAY_COUNT(sUnknown_0832C258), sUnknown_0832C258},
+ {ARRAY_COUNT(sUnknown_0832C260), sUnknown_0832C260}
+};
+
+static const struct Subsprite sStatusSummaryBar_Subsprites_0[] =
+{
+ {160, 0, 1, 1, 0, 1},
+ {192, 0, 1, 1, 4, 1},
+ {224, 0, 1, 1, 8, 1},
+ {0, 0, 1, 1, 12, 1}
+};
+
+static const struct Subsprite sUnknown_0832C2AC[] =
+{
+ {160, 0, 1, 1, 0, 1},
+ {192, 0, 1, 1, 4, 1},
+ {224, 0, 1, 1, 8, 1},
+ {0, 0, 1, 1, 8, 1},
+ {32, 0, 1, 1, 8, 1},
+ {64, 0, 1, 1, 12, 1}
+};
+
+static const struct SubspriteTable sStatusSummaryBar_SubspriteTable[] =
+{
+ {ARRAY_COUNT(sStatusSummaryBar_Subsprites_0), sStatusSummaryBar_Subsprites_0}
+};
+
+static const struct SubspriteTable sUnknown_0832C2CC[] =
+{
+ {ARRAY_COUNT(sUnknown_0832C2AC), sUnknown_0832C2AC}
+};
+
+// unused unknown image
+static const u8 sUnknown_0832C2D4[] = INCBIN_U8("graphics/battle_interface/unknown_32C2D4.4bpp");
+
+static const struct CompressedSpriteSheet sStatusSummaryBarSpriteSheet =
+{
+ gBattleInterface_BallStatusBarGfx, 0x200, TAG_STATUS_SUMMARY_BAR_TILE
+};
+
+static const struct SpritePalette sStatusSummaryBarSpritePal =
+{
+ gBattleInterface_BallStatusBarPal, TAG_STATUS_SUMMARY_BAR_PAL
+};
+
+static const struct SpritePalette sStatusSummaryBallsSpritePal =
+{
+ gBattleInterface_BallDisplayPal, TAG_STATUS_SUMMARY_BALLS_PAL
+};
+
+static const struct SpriteSheet sStatusSummaryBallsSpriteSheet =
+{
+ gBattleInterface_BallDisplayGfx, 0x80, TAG_STATUS_SUMMARY_BALLS_TILE
+};
+
+// unused oam data
+static const struct OamData sUnknown_0832C354 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct OamData sOamData_StatusSummaryBalls =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate sStatusSummaryBarSpriteTemplates[2] =
+{
+ {
+ .tileTag = TAG_STATUS_SUMMARY_BAR_TILE,
+ .paletteTag = TAG_STATUS_SUMMARY_BAR_PAL,
+ .oam = &sUnknown_0832C138,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_StatusSummaryBar
+ },
+ {
+ .tileTag = TAG_STATUS_SUMMARY_BAR_TILE,
+ .paletteTag = TAG_STATUS_SUMMARY_BAR_PAL,
+ .oam = &sUnknown_0832C138,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_StatusSummaryBar
+ }
+};
+
+static const struct SpriteTemplate sStatusSummaryBallsSpriteTemplates[2] =
+{
+ {
+ .tileTag = TAG_STATUS_SUMMARY_BALLS_TILE,
+ .paletteTag = TAG_STATUS_SUMMARY_BALLS_PAL,
+ .oam = &sOamData_StatusSummaryBalls,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_StatusSummaryBallsOnBattleStart
+ },
+ {
+ .tileTag = TAG_STATUS_SUMMARY_BALLS_TILE,
+ .paletteTag = TAG_STATUS_SUMMARY_BALLS_PAL,
+ .oam = &sOamData_StatusSummaryBalls,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_StatusSummaryBallsOnBattleStart
+ }
+};
+
+// possibly text
+static const u8 sUnknown_0832C3C4[] =
+{
+ 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x02, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+};
+
+// possibly text
+static const u8 sUnknown_0832C3D8[] =
+{
+ 0xfc, 0x01, 0x01, 0xfc, 0x02, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00,
+};
+
+enum
+{
+ PAL_STATUS_PSN,
+ PAL_STATUS_PAR,
+ PAL_STATUS_SLP,
+ PAL_STATUS_FRZ,
+ PAL_STATUS_BRN
+};
+
+static const u16 sStatusIconPalettes[] =
+{
+ 0x6198, // PAL_STATUS_PSN
+ 0xEF7, // PAL_STATUS_PAR
+ 0x4694, // PAL_STATUS_SLP
+ 0x72D1, // PAL_STATUS_FRZ
+ 0x29DC // PAL_STATUS_BRN
+};
+
+static const struct WindowTemplate sHealthboxWindowTemplate = {0, 0, 0, 8, 2, 0, 0}; // width = 8, height = 2
+
+// code
+
+static s32 DummiedOutFunction(s16 unused1, s16 unused2, s32 unused3)
+{
+ return 9;
+}
+
+#ifdef NONMATCHING
+static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2)
+{
+ s8 i, j;
+ u8 array[4];
+ u8 *arrayPtr;
+ s32 r9, vaaa;
+
+ for (i = 0; i < 4; i++)
+ array[i] = 0;
+
+ i = 3;
+ r9 = -1;
+ arrayPtr = array;
+ while (1)
+ {
+ if (arg0 > 0)
+ {
+ array[i] = arg0 % 10;
+ arg0 = arg0 / 10;
+ i--;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ for (; i > -1; i--)
+ {
+ array[i] = 0xFF;
+ }
+
+ if (arrayPtr[3] == 0xFF)
+ arrayPtr[3] = 0;
+
+ if (arg2 == 0)
+ {
+ for (i = 0, j = 0; i < 4; i++)
+ {
+ if (array[j] == 0xFF)
+ {
+ arg1[j] &= 0xFC00;
+ arg1[j] |= 0x1E;
+
+ arg1[i + 0x20] &= 0xFC00;
+ arg1[i + 0x20] |= 0x1E;
+ }
+ else
+ {
+ arg1[j] &= 0xFC00;
+ arg1[j] |= array[j] + 0x14;
+
+ arg1[i + 0x20] &= 0xFC00;
+ arg1[i + 0x20] |= array[i] + 0x34;
+ }
+ j++;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 4; i++)
+ {
+ if (array[i] == 0xFF)
+ {
+ arg1[i] &= 0xFC00;
+ arg1[i] |= 0x1E;
+
+ arg1[i + 0x20] &= 0xFC00;
+ arg1[i + 0x20] |= 0x1E;
+ }
+ else
+ {
+ arg1[i] &= 0xFC00;
+ arg1[i] |= array[i] + 0x14;
+
+ arg1[i + 0x20] &= 0xFC00;
+ arg1[i + 0x20] |= array[i] + 0x34;
+ }
+ }
+ }
+}
+
+#else
+__attribute__((naked))
+static void sub_8072308(s16 arg0, u16 *arg1, u8 arg2)
+{
+ 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\
+ adds r7, r1, 0\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ mov r10, r2\n\
+ movs r3, 0\n\
+ movs r2, 0\n\
+_08072324:\n\
+ lsls r0, r3, 24\n\
+ asrs r0, 24\n\
+ mov r3, sp\n\
+ adds r1, r3, r0\n\
+ strb r2, [r1]\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0x3\n\
+ ble _08072324\n\
+ movs r3, 0x3\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ mov r9, r0\n\
+ mov r8, sp\n\
+_08072344:\n\
+ lsls r0, r5, 16\n\
+ asrs r6, r0, 16\n\
+ cmp r6, 0\n\
+ ble _08072372\n\
+ lsls r4, r3, 24\n\
+ asrs r4, 24\n\
+ mov r1, sp\n\
+ adds r5, r1, r4\n\
+ adds r0, r6, 0\n\
+ movs r1, 0xA\n\
+ bl __modsi3\n\
+ strb r0, [r5]\n\
+ adds r0, r6, 0\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ subs r4, 0x1\n\
+ lsls r4, 24\n\
+ lsrs r3, r4, 24\n\
+ b _08072344\n\
+_08072372:\n\
+ lsls r1, r3, 24\n\
+ asrs r0, r1, 24\n\
+ cmp r0, r9\n\
+ ble _08072396\n\
+ movs r4, 0xFF\n\
+ movs r3, 0x1\n\
+ negs r3, r3\n\
+_08072380:\n\
+ asrs r2, r1, 24\n\
+ mov r5, sp\n\
+ adds r1, r5, r2\n\
+ ldrb r0, [r1]\n\
+ orrs r0, r4\n\
+ strb r0, [r1]\n\
+ subs r2, 0x1\n\
+ lsls r1, r2, 24\n\
+ asrs r0, r1, 24\n\
+ cmp r0, r3\n\
+ bgt _08072380\n\
+_08072396:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1, 0x3]\n\
+ cmp r0, 0xFF\n\
+ bne _080723A2\n\
+ movs r0, 0\n\
+ strb r0, [r1, 0x3]\n\
+_080723A2:\n\
+ mov r2, r10\n\
+ cmp r2, 0\n\
+ bne _08072432\n\
+ movs r3, 0\n\
+ movs r1, 0\n\
+ movs r6, 0xFC\n\
+ lsls r6, 8\n\
+ movs r5, 0x1E\n\
+ mov r12, r5\n\
+_080723B4:\n\
+ lsls r1, 24\n\
+ asrs r2, r1, 24\n\
+ mov r0, sp\n\
+ adds r5, r0, r2\n\
+ ldrb r0, [r5]\n\
+ mov r8, r1\n\
+ cmp r0, 0xFF\n\
+ bne _080723EA\n\
+ lsls r1, r2, 1\n\
+ adds r1, r7\n\
+ ldrh r2, [r1]\n\
+ adds r0, r6, 0\n\
+ ands r0, r2\n\
+ mov r2, r12\n\
+ orrs r0, r2\n\
+ strh r0, [r1]\n\
+ lsls r3, 24\n\
+ asrs r1, r3, 23\n\
+ adds r1, r7\n\
+ adds r1, 0x40\n\
+ ldrh r2, [r1]\n\
+ adds r0, r6, 0\n\
+ ands r0, r2\n\
+ mov r5, r12\n\
+ orrs r0, r5\n\
+ strh r0, [r1]\n\
+ b _0807241A\n\
+_080723EA:\n\
+ lsls r2, 1\n\
+ adds r2, r7\n\
+ ldrh r0, [r2]\n\
+ adds r1, r6, 0\n\
+ ands r1, r0\n\
+ ldrb r0, [r5]\n\
+ adds r0, 0x14\n\
+ orrs r1, r0\n\
+ strh r1, [r2]\n\
+ lsls r4, r3, 24\n\
+ asrs r3, r4, 24\n\
+ lsls r2, r3, 1\n\
+ adds r2, r7\n\
+ adds r2, 0x40\n\
+ ldrh r0, [r2]\n\
+ adds r1, r6, 0\n\
+ ands r1, r0\n\
+ mov r5, sp\n\
+ adds r0, r5, r3\n\
+ ldrb r0, [r0]\n\
+ adds r0, 0x34\n\
+ orrs r1, r0\n\
+ strh r1, [r2]\n\
+ adds r3, r4, 0\n\
+_0807241A:\n\
+ movs r0, 0x80\n\
+ lsls r0, 17\n\
+ add r0, r8\n\
+ lsrs r1, r0, 24\n\
+ movs r2, 0x80\n\
+ lsls r2, 17\n\
+ adds r0, r3, r2\n\
+ lsrs r3, r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0x3\n\
+ ble _080723B4\n\
+ b _08072496\n\
+_08072432:\n\
+ movs r3, 0\n\
+ movs r4, 0xFC\n\
+ lsls r4, 8\n\
+ movs r6, 0x1E\n\
+_0807243A:\n\
+ lsls r1, r3, 24\n\
+ asrs r2, r1, 24\n\
+ mov r3, sp\n\
+ adds r5, r3, r2\n\
+ ldrb r0, [r5]\n\
+ adds r3, r1, 0\n\
+ cmp r0, 0xFF\n\
+ bne _08072466\n\
+ lsls r1, r2, 1\n\
+ adds r1, r7\n\
+ ldrh r2, [r1]\n\
+ adds r0, r4, 0\n\
+ ands r0, r2\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
+ adds r1, 0x40\n\
+ ldrh r2, [r1]\n\
+ adds r0, r4, 0\n\
+ ands r0, r2\n\
+ orrs r0, r6\n\
+ strh r0, [r1]\n\
+ b _08072488\n\
+_08072466:\n\
+ lsls r2, 1\n\
+ adds r2, r7\n\
+ ldrh r0, [r2]\n\
+ adds r1, r4, 0\n\
+ ands r1, r0\n\
+ ldrb r0, [r5]\n\
+ adds r0, 0x14\n\
+ orrs r1, r0\n\
+ strh r1, [r2]\n\
+ adds r2, 0x40\n\
+ ldrh r0, [r2]\n\
+ adds r1, r4, 0\n\
+ ands r1, r0\n\
+ ldrb r0, [r5]\n\
+ adds r0, 0x34\n\
+ orrs r1, r0\n\
+ strh r1, [r2]\n\
+_08072488:\n\
+ movs r5, 0x80\n\
+ lsls r5, 17\n\
+ adds r0, r3, r5\n\
+ lsrs r3, r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0x3\n\
+ ble _0807243A\n\
+_08072496:\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
+
+void sub_80724A8(s16 arg0, s16 arg1, u16 *arg2)
+{
+ arg2[4] = 0x1E;
+ sub_8072308(arg1, arg2, 0);
+ sub_8072308(arg0, arg2 + 5, 1);
+}
+
+// because the healthbox is too large to fit into one sprite, it is divided into two sprites
+// healthboxSpriteId_1 or healthboxSpriteId refers to the 'main' healthbox
+// healthboxSpriteId_2 refers to the other part
+// there's also one other sprite that appears to be a black square? dont fully understand its role
+
+u8 CreateBankHealthboxSprites(u8 bank)
+{
+ s16 data6 = 0;
+ u8 healthboxSpriteId_1, healthboxSpriteId_2;
+ u8 unkSpriteId;
+ struct Sprite *unkSpritePtr;
+
+ if (!IsDoubleBattle())
+ {
+ if (GetBankSide(bank) == SIDE_PLAYER)
+ {
+ healthboxSpriteId_1 = CreateSprite(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1);
+ healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[0], 240, 160, 1);
+
+ gSprites[healthboxSpriteId_1].oam.shape = 0;
+
+ gSprites[healthboxSpriteId_2].oam.shape = 0;
+ gSprites[healthboxSpriteId_2].oam.tileNum += 64;
+ }
+ else
+ {
+ healthboxSpriteId_1 = CreateSprite(&sHealthboxOpponentSpriteTemplates[0], 240, 160, 1);
+ healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[0], 240, 160, 1);
+
+ gSprites[healthboxSpriteId_2].oam.tileNum += 32;
+
+ data6 = 2;
+ }
+ gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
+ gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1;
+ gSprites[healthboxSpriteId_2].callback = sub_8072924;
+ }
+ else
+ {
+ if (GetBankSide(bank) == SIDE_PLAYER)
+ {
+ healthboxSpriteId_1 = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1);
+ healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1);
+
+ gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
+
+ gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1;
+ gSprites[healthboxSpriteId_2].oam.tileNum += 32;
+ gSprites[healthboxSpriteId_2].callback = sub_8072924;
+
+ data6 = 1;
+ }
+ else
+ {
+ healthboxSpriteId_1 = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1);
+ healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBankIdentity(bank) / 2], 240, 160, 1);
+
+ gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
+
+ gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1;
+ gSprites[healthboxSpriteId_2].oam.tileNum += 32;
+ gSprites[healthboxSpriteId_2].callback = sub_8072924;
+
+ data6 = 2;
+ }
+ }
+
+ unkSpriteId = CreateSpriteAtEnd(&sUnknown_0832C1C0[gBanksByIdentity[bank]], 140, 60, 0);
+ unkSpritePtr = &gSprites[unkSpriteId];
+ SetSubspriteTables(unkSpritePtr, &sUnknown_0832C28C[GetBankSide(bank)]);
+ unkSpritePtr->subspriteMode = 2;
+ unkSpritePtr->oam.priority = 1;
+
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + unkSpritePtr->oam.tileNum * 32), 64);
+
+ gSprites[healthboxSpriteId_1].data5 = unkSpriteId;
+ gSprites[healthboxSpriteId_1].data6 = bank;
+ gSprites[healthboxSpriteId_1].invisible = 1;
+
+ gSprites[healthboxSpriteId_2].invisible = 1;
+
+ unkSpritePtr->data5 = healthboxSpriteId_1;
+ unkSpritePtr->data6 = data6;
+ unkSpritePtr->invisible = 1;
+
+ return healthboxSpriteId_1;
+}
+
+u8 CreateSafariPlayerHealthboxSprites(void)
+{
+ u8 healthboxSpriteId_1, healthboxSpriteId_2;
+
+ healthboxSpriteId_1 = CreateSprite(&sHealthboxSafariSpriteTemplate, 240, 160, 1);
+ healthboxSpriteId_2 = CreateSpriteAtEnd(&sHealthboxSafariSpriteTemplate, 240, 160, 1);
+
+ gSprites[healthboxSpriteId_1].oam.shape = 0;
+ gSprites[healthboxSpriteId_2].oam.shape = 0;
+
+ gSprites[healthboxSpriteId_2].oam.tileNum += 64;
+
+ gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
+ gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1;
+
+ gSprites[healthboxSpriteId_2].callback = sub_8072924;
+
+ return healthboxSpriteId_1;
+}
+
+static const u8 *GetHealthboxElementGfxPtr(u8 elementId)
+{
+ return gHealthboxElementsGfxTable[elementId];
+}
+
+static void sub_80728B4(struct Sprite *sprite)
+{
+ u8 var = sprite->data5;
+
+ switch (sprite->data6)
+ {
+ case 0:
+ sprite->pos1.x = gSprites[var].pos1.x + 16;
+ sprite->pos1.y = gSprites[var].pos1.y;
+ break;
+ case 1:
+ sprite->pos1.x = gSprites[var].pos1.x + 16;
+ sprite->pos1.y = gSprites[var].pos1.y;
+ break;
+ case 2:
+ default:
+ sprite->pos1.x = gSprites[var].pos1.x + 8;
+ sprite->pos1.y = gSprites[var].pos1.y;
+ break;
+ }
+
+ sprite->pos2.x = gSprites[var].pos2.x;
+ sprite->pos2.y = gSprites[var].pos2.y;
+}
+
+static void sub_8072924(struct Sprite *sprite)
+{
+ u8 otherSpriteId = sprite->data5;
+
+ sprite->pos1.x = gSprites[otherSpriteId].pos1.x + 64;
+ sprite->pos1.y = gSprites[otherSpriteId].pos1.y;
+
+ sprite->pos2.x = gSprites[otherSpriteId].pos2.x;
+ sprite->pos2.y = gSprites[otherSpriteId].pos2.y;
+}
+
+void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal, s32 field_C)
+{
+ gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId = healthboxSpriteId;
+ gBattleSpritesDataPtr->battleBars[bank].maxValue = maxVal;
+ gBattleSpritesDataPtr->battleBars[bank].currentValue = currVal;
+ gBattleSpritesDataPtr->battleBars[bank].field_C = field_C;
+ gBattleSpritesDataPtr->battleBars[bank].field_10 = -32768;
+}
+
+void SetHealthboxSpriteInvisible(u8 healthboxSpriteId)
+{
+ gSprites[healthboxSpriteId].invisible = 1;
+ gSprites[gSprites[healthboxSpriteId].data5].invisible = 1;
+ gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = 1;
+}
+
+void SetHealthboxSpriteVisible(u8 healthboxSpriteId)
+{
+ gSprites[healthboxSpriteId].invisible = 0;
+ gSprites[gSprites[healthboxSpriteId].data5].invisible = 0;
+ gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = 0;
+}
+
+static void UpdateSpritePos(u8 spriteId, s16 x, s16 y)
+{
+ gSprites[spriteId].pos1.x = x;
+ gSprites[spriteId].pos1.y = y;
+}
+
+void DestoryHealthboxSprite(u8 healthboxSpriteId)
+{
+ DestroySprite(&gSprites[gSprites[healthboxSpriteId].oam.affineParam]);
+ DestroySprite(&gSprites[gSprites[healthboxSpriteId].data5]);
+ DestroySprite(&gSprites[healthboxSpriteId]);
+}
+
+void DummyBattleInterfaceFunc(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly)
+{
+
+}
+
+void UpdateOamPriorityInAllHealthboxes(u8 priority)
+{
+ s32 i;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ u8 healthboxSpriteId_1 = gHealthBoxesIds[i];
+ u8 healthboxSpriteId_2 = gSprites[gHealthBoxesIds[i]].oam.affineParam;
+ u8 healthboxSpriteId_3 = gSprites[gHealthBoxesIds[i]].data5;
+
+ gSprites[healthboxSpriteId_1].oam.priority = priority;
+ gSprites[healthboxSpriteId_2].oam.priority = priority;
+ gSprites[healthboxSpriteId_3].oam.priority = priority;
+ }
+}
+
+void SetBankHealthboxSpritePos(u8 bank)
+{
+ s16 x = 0, y = 0;
+
+ if (!IsDoubleBattle())
+ {
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ x = 44, y = 30;
+ else
+ x = 158, y = 88;
+ }
+ else
+ {
+ switch (GetBankIdentity(bank))
+ {
+ case IDENTITY_PLAYER_MON1:
+ x = 159, y = 76;
+ break;
+ case IDENTITY_PLAYER_MON2:
+ x = 171, y = 101;
+ break;
+ case IDENTITY_OPPONENT_MON1:
+ x = 44, y = 19;
+ break;
+ case IDENTITY_OPPONENT_MON2:
+ x = 32, y = 44;
+ break;
+ }
+ }
+
+ UpdateSpritePos(gHealthBoxesIds[bank], x, y);
+}
+
+static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ u8 text[16];
+ u32 xPos, var1;
+ void *objVram;
+
+ text[0] = 0xF9;
+ text[1] = 5;
+
+ xPos = (u32) ConvertIntToDecimalStringN(text + 2, lvl, STR_CONV_MODE_LEFT_ALIGN, 3);
+ // Alright, that part was unmatchable. It's basically doing:
+ // xPos = 5 * (3 - (u32)(&text[2]));
+ xPos--;
+ xPos--;
+ xPos -= ((u32)(text));
+ var1 = (3 - xPos);
+ xPos = 4 * var1;
+ xPos += var1;
+
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ {
+ objVram = (void*)(OBJ_VRAM0);
+ if (!IsDoubleBattle())
+ objVram += spriteTileNum + 0x820;
+ else
+ objVram += spriteTileNum + 0x420;
+ }
+ else
+ {
+ objVram = (void*)(OBJ_VRAM0);
+ objVram += spriteTileNum + 0x400;
+ }
+ sub_8075198(objVram, windowTileData, 3);
+ RemoveWindowOnHealthbox(windowId);
+}
+
+void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ u8 text[32];
+ void *objVram;
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER && !IsDoubleBattle())
+ {
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+ if (maxOrCurrent != HP_CURRENT) // singles, max
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 2, &windowId);
+ objVram = (void*)(OBJ_VRAM0);
+ objVram += spriteTileNum + 0xB40;
+ sub_8075170(objVram, windowTileData, 2);
+ RemoveWindowOnHealthbox(windowId);
+ }
+ else // singles, current
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ text[3] = CHAR_SLASH;
+ text[4] = EOS;
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 2, &windowId);
+ objVram = (void*)(OBJ_VRAM0);
+ objVram += spriteTileNum + 0x3E0;
+ sub_8075170(objVram, windowTileData, 1);
+ objVram = (void*)(OBJ_VRAM0);
+ objVram += spriteTileNum + 0xB00;
+ sub_8075170(objVram, windowTileData + 0x20, 2);
+ RemoveWindowOnHealthbox(windowId);
+ }
+
+ }
+ else
+ {
+ u8 bank;
+
+ memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4));
+ bank = gSprites[healthboxSpriteId].data6;
+ if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT)
+ {
+ UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent);
+ }
+ else
+ {
+ u32 var;
+ u8 i;
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ {
+ if (maxOrCurrent == HP_CURRENT)
+ var = 29;
+ else
+ var = 89;
+ }
+ else
+ {
+ if (maxOrCurrent == HP_CURRENT)
+ var = 20;
+ else
+ var = 48;
+ }
+
+ ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text);
+
+ for (i = 0; i < 3; i++)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[i * 64 + 32],
+ (void*)((OBJ_VRAM0) + 32 * (gSprites[healthboxSpriteId].oam.tileNum + var + i)),
+ 0x20);
+ }
+ }
+ }
+}
+
+static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ u8 text[32];
+ void *objVram;
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ {
+ if (gBattleSpritesDataPtr->bankData[gSprites[healthboxSpriteId].data6].hpNumbersNoBars) // don't print text if only bars are visible
+ {
+ spriteTileNum = gSprites[gSprites[healthboxSpriteId].data5].oam.tileNum * 32;
+ objVram = (void*)(OBJ_VRAM0) + spriteTileNum;
+
+ if (maxOrCurrent != HP_CURRENT) // doubles, max hp
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 0, 5, 0, &windowId);
+ sub_8075170((void*)(OBJ_VRAM0) + spriteTileNum + 0xC0, windowTileData, 2);
+ RemoveWindowOnHealthbox(windowId);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116),
+ (void*)(OBJ_VRAM0 + 0x680) + (gSprites[healthboxSpriteId].oam.tileNum * 32),
+ 0x20);
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(text, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ text[3] = CHAR_SLASH;
+ text[4] = EOS;
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, 4, 5, 0, &windowId);
+ sub_807513C(objVram, 0, 3);
+ sub_8075170((void*)(OBJ_VRAM0 + 0x60) + spriteTileNum, windowTileData, 3);
+ RemoveWindowOnHealthbox(windowId);
+ }
+ }
+ }
+ else
+ {
+ u8 bank;
+
+ memcpy(text, sUnknown_0832C3D8, sizeof(sUnknown_0832C3D8));
+ bank = gSprites[healthboxSpriteId].data6;
+
+ if (gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) // don't print text if only bars are visible
+ {
+ u8 var = 4;
+ u8 r7;
+ u8 *txtPtr;
+ u8 i;
+
+ if (maxOrCurrent == HP_CURRENT)
+ var = 0;
+
+ r7 = gSprites[healthboxSpriteId].data5;
+ txtPtr = ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ if (!maxOrCurrent)
+ StringCopy(txtPtr, gText_Slash);
+ RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text);
+
+ for (i = var; i < var + 3; i++)
+ {
+ if (i < 3)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[((i - var) * 64) + 32],
+ (void*)((OBJ_VRAM0) + 32 * (1 + gSprites[r7].oam.tileNum + i)),
+ 0x20);
+ }
+ else
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[((i - var) * 64) + 32],
+ (void*)((OBJ_VRAM0 + 0x20) + 32 * (i + gSprites[r7].oam.tileNum)),
+ 0x20);
+ }
+ }
+
+ if (maxOrCurrent == HP_CURRENT)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[224],
+ (void*)((OBJ_VRAM0) + ((gSprites[r7].oam.tileNum + 4) * 32)),
+ 0x20);
+ CpuFill32(0, (void*)((OBJ_VRAM0) + (gSprites[r7].oam.tileNum * 32)), 0x20);
+ }
+ else
+ {
+ if (GetBankSide(bank) == SIDE_PLAYER) // impossible to reach part, because the bank is from the opponent's side
+ {
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_116),
+ (void*)(OBJ_VRAM0) + ((gSprites[healthboxSpriteId].oam.tileNum + 52) * 32),
+ 0x20);
+ }
+ }
+ }
+ }
+}
+
+static void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon)
+{
+ u8 text[20];
+ s32 j, var2;
+ u8 *fontPixels;
+ u8 i, var, nature, healthboxSpriteId_2;
+
+ memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4));
+ fontPixels = &gMonSpritesGfxPtr->fontPixels[0x520 + (GetBankIdentity(gSprites[healthboxSpriteId].data6) * 384)];
+ var = 5;
+ nature = GetNature(mon);
+ StringCopy(text + 6, gNatureNamePointers[nature]);
+ RenderTextFont9(fontPixels, 9, text);
+
+ for (j = 6, i = 0; i < var; i++, j++)
+ {
+ u8 elementId;
+
+ if ((text[j] >= 55 && text[j] <= 74) || (text[j] >= 135 && text[j] <= 154))
+ elementId = 44;
+ else if ((text[j] >= 75 && text[j] <= 79) || (text[j] >= 155 && text[j] <= 159))
+ elementId = 45;
+ else
+ elementId = 43;
+
+ CpuCopy32(GetHealthboxElementGfxPtr(elementId), fontPixels + (i * 64), 0x20);
+ }
+
+ for (j = 1; j < var + 1; j++)
+ {
+ var2 = (gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32;
+ CpuCopy32(fontPixels, (void*)(OBJ_VRAM0) + (var2), 0x20);
+ fontPixels += 0x20;
+
+ var2 = (8 + gSprites[healthboxSpriteId].oam.tileNum + (j - (j / 8 * 8)) + (j / 8 * 64)) * 32;
+ CpuCopy32(fontPixels, (void*)(OBJ_VRAM0) + (var2), 0x20);
+ fontPixels += 0x20;
+ }
+
+ healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
+ ConvertIntToDecimalStringN(text + 6, gBattleStruct->field_7C, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ ConvertIntToDecimalStringN(text + 9, gBattleStruct->field_7B, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ text[5] = CHAR_SPACE;
+ text[8] = CHAR_SLASH;
+ RenderTextFont9(gMonSpritesGfxPtr->fontPixels, 9, text);
+
+ j = healthboxSpriteId_2; // needed to match for some reason
+ for (j = 0; j < 5; j++)
+ {
+ if (j <= 1)
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[0x40 * j + 0x20],
+ (void*)(OBJ_VRAM0) + (gSprites[healthboxSpriteId_2].oam.tileNum + 2 + j) * 32,
+ 32);
+ }
+ else
+ {
+ CpuCopy32(&gMonSpritesGfxPtr->fontPixels[0x40 * j + 0x20],
+ (void*)(OBJ_VRAM0 + 0xC0) + (j + gSprites[healthboxSpriteId_2].oam.tileNum) * 32,
+ 32);
+ }
+ }
+}
+
+void SwapHpBarsWithHpText(void)
+{
+ s32 i;
+ u8 spriteId;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gSprites[gHealthBoxesIds[i]].callback == SpriteCallbackDummy
+ && GetBankSide(i) != SIDE_OPPONENT
+ && (IsDoubleBattle() || GetBankSide(i) != SIDE_PLAYER))
+ {
+ bool8 noBars;
+
+ gBattleSpritesDataPtr->bankData[i].hpNumbersNoBars ^= 1;
+ noBars = gBattleSpritesDataPtr->bankData[i].hpNumbersNoBars;
+ if (GetBankSide(i) == SIDE_PLAYER)
+ {
+ if (!IsDoubleBattle())
+ continue;
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ continue;
+
+ if (noBars == TRUE) // bars to text
+ {
+ spriteId = gSprites[gHealthBoxesIds[i]].data5;
+
+ CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100);
+ UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_HP), HP_CURRENT);
+ UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_MAX_HP), HP_MAX);
+ }
+ else // text to bars
+ {
+ UpdateStatusIconInHealthbox(gHealthBoxesIds[i]);
+ UpdateHealthboxAttribute(gHealthBoxesIds[i], &gPlayerParty[gBattlePartyID[i]], HEALTHBOX_HEALTH_BAR);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_117), (void*)(OBJ_VRAM0 + 0x680 + gSprites[gHealthBoxesIds[i]].oam.tileNum * 32), 32);
+ }
+ }
+ else
+ {
+ if (noBars == TRUE) // bars to text
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ {
+ sub_80730D4(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]]);
+ }
+ else
+ {
+ spriteId = gSprites[gHealthBoxesIds[i]].data5;
+
+ CpuFill32(0, (void *)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100);
+ UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_HP), HP_CURRENT);
+ UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_MAX_HP), HP_MAX);
+ }
+ }
+ else // text to bars
+ {
+ UpdateStatusIconInHealthbox(gHealthBoxesIds[i]);
+ UpdateHealthboxAttribute(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]], HEALTHBOX_HEALTH_BAR);
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ UpdateHealthboxAttribute(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]], HEALTHBOX_NICK);
+ }
+ }
+ gSprites[gHealthBoxesIds[i]].data7 ^= 1;
+ }
+ }
+}
+
+u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 arg2, bool8 isBattleStart)
+{
+ bool8 isOpponent;
+ s16 bar_X, bar_Y, bar_pos2_X, bar_data0;
+ s32 i, j, var;
+ u8 barSpriteId;
+ u8 ballIconSpritesIds[6];
+ u8 taskId;
+
+ if (!arg2 || GetBankIdentity(bank) != IDENTITY_OPPONENT_MON2)
+ {
+ if (GetBankSide(bank) == SIDE_PLAYER)
+ {
+ isOpponent = FALSE;
+ bar_X = 136, bar_Y = 96;
+ bar_pos2_X = 100;
+ bar_data0 = -5;
+ }
+ else
+ {
+ isOpponent = TRUE;
+
+ if (!arg2 || !IsDoubleBattle())
+ bar_X = 104, bar_Y = 40;
+ else
+ bar_X = 104, bar_Y = 16;
+
+ bar_pos2_X = -100;
+ bar_data0 = 5;
+ }
+ }
+ else
+ {
+ isOpponent = TRUE;
+ bar_X = 104, bar_Y = 40;
+ bar_pos2_X = -100;
+ bar_data0 = 5;
+ }
+
+ LoadCompressedObjectPicUsingHeap(&sStatusSummaryBarSpriteSheet);
+ LoadSpriteSheet(&sStatusSummaryBallsSpriteSheet);
+ LoadSpritePalette(&sStatusSummaryBarSpritePal);
+ LoadSpritePalette(&sStatusSummaryBallsSpritePal);
+
+ barSpriteId = CreateSprite(&sStatusSummaryBarSpriteTemplates[isOpponent], bar_X, bar_Y, 10);
+ SetSubspriteTables(&gSprites[barSpriteId], sStatusSummaryBar_SubspriteTable);
+ gSprites[barSpriteId].pos2.x = bar_pos2_X;
+ gSprites[barSpriteId].data0 = bar_data0;
+
+ if (isOpponent)
+ {
+ gSprites[barSpriteId].pos1.x -= 96;
+ gSprites[barSpriteId].oam.matrixNum = 8;
+ }
+ else
+ {
+ gSprites[barSpriteId].pos1.x += 96;
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ ballIconSpritesIds[i] = CreateSpriteAtEnd(&sStatusSummaryBallsSpriteTemplates[isOpponent], bar_X, bar_Y - 4, 9);
+
+ if (!isBattleStart)
+ gSprites[ballIconSpritesIds[i]].callback = SpriteCB_StatusSummaryBallsOnSwitchout;
+
+ if (!isOpponent)
+ {
+ gSprites[ballIconSpritesIds[i]].pos2.x = 0;
+ gSprites[ballIconSpritesIds[i]].pos2.y = 0;
+ }
+
+ gSprites[ballIconSpritesIds[i]].data0 = barSpriteId;
+
+ if (!isOpponent)
+ {
+ gSprites[ballIconSpritesIds[i]].pos1.x += 10 * i + 24;
+ gSprites[ballIconSpritesIds[i]].data1 = i * 7 + 10;
+ gSprites[ballIconSpritesIds[i]].pos2.x = 120;
+ }
+ else
+ {
+ gSprites[ballIconSpritesIds[i]].pos1.x -= 10 * (5 - i) + 24;
+ gSprites[ballIconSpritesIds[i]].data1 = (6 - i) * 7 + 10;
+ gSprites[ballIconSpritesIds[i]].pos2.x = -120;
+ }
+
+ gSprites[ballIconSpritesIds[i]].data2 = isOpponent;
+ }
+
+ if (GetBankSide(bank) == SIDE_PLAYER)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ for (i = 0; i < 6; i++)
+ {
+ if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 1;
+ gSprites[ballIconSpritesIds[i]].data7 = 1;
+ }
+ else if (partyInfo[i].hp == 0) // fainted mon
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 3;
+ }
+ else if (partyInfo[i].status != 0) // mon with major status
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 2;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0, var = 5, j = 0; j < 6; j++)
+ {
+ if (partyInfo[j].hp == 0xFFFF) // empty slot or an egg
+ {
+ gSprites[ballIconSpritesIds[var]].oam.tileNum += 1;
+ gSprites[ballIconSpritesIds[var]].data7 = 1;
+ var--;
+ continue;
+ }
+ else if (partyInfo[j].hp == 0) // fainted mon
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 3;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_2A0 & gBitTable[j]) // hmm...?
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 3;
+ }
+ else if (partyInfo[j].status != 0) // mon with major status
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 2;
+ }
+ i++;
+ }
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS))
+ {
+ for (var = 5, i = 0; i < 6; i++)
+ {
+ if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg
+ {
+ gSprites[ballIconSpritesIds[var]].oam.tileNum += 1;
+ gSprites[ballIconSpritesIds[var]].data7 = 1;
+ }
+ else if (partyInfo[i].hp == 0) // fainted mon
+ {
+ gSprites[ballIconSpritesIds[var]].oam.tileNum += 3;
+ }
+ else if (partyInfo[i].status != 0) // mon with major status
+ {
+ gSprites[ballIconSpritesIds[var]].oam.tileNum += 2;
+ }
+ var--;
+ }
+ }
+ else
+ {
+ for (var = 0, i = 0, j = 0; j < 6; j++)
+ {
+ if (partyInfo[j].hp == 0xFFFF) // empty slot or an egg
+ {
+ gSprites[ballIconSpritesIds[i]].oam.tileNum += 1;
+ gSprites[ballIconSpritesIds[i]].data7 = 1;
+ i++;
+ continue;
+ }
+ else if (partyInfo[j].hp == 0) // fainted mon
+ {
+ gSprites[ballIconSpritesIds[5 - var]].oam.tileNum += 3;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_2A1 & gBitTable[j]) // hmm...?
+ {
+ gSprites[ballIconSpritesIds[5 - var]].oam.tileNum += 3;
+ }
+ else if (partyInfo[j].status != 0) // mon with major status
+ {
+ gSprites[ballIconSpritesIds[5 - var]].oam.tileNum += 2;
+ }
+ var++;
+ }
+ }
+ }
+
+ taskId = CreateTask(TaskDummy, 5);
+ gTasks[taskId].data[0] = bank;
+ gTasks[taskId].data[1] = barSpriteId;
+
+ for (i = 0; i < 6; i++)
+ gTasks[taskId].data[3 + i] = ballIconSpritesIds[i];
+
+ gTasks[taskId].data[10] = isBattleStart;
+
+ if (isBattleStart)
+ {
+ gBattleSpritesDataPtr->animationData->field_9_x1C++;
+ }
+
+ PlaySE12WithPanning(SE_TB_START, 0);
+ return taskId;
+}
+
+void sub_8073C30(u8 taskId)
+{
+ u8 sp[6];
+ u8 r7;
+ u8 r10;
+ u8 bank;
+ s32 i;
+
+ r7 = gTasks[taskId].data[10];
+ r10 = gTasks[taskId].data[1];
+ bank = gTasks[taskId].data[0];
+
+ for (i = 0; i < 6; i++)
+ sp[i] = gTasks[taskId].data[3 + i];
+
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x3F40);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x10);
+
+ gTasks[taskId].data[15] = 16;
+
+ for (i = 0; i < 6; i++)
+ gSprites[sp[i]].oam.objMode = 1;
+
+ gSprites[r10].oam.objMode = 1;
+
+ if (r7 != 0)
+ {
+ for (i = 0; i < 6; i++)
+ {
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ {
+ gSprites[sp[5 - i]].data1 = 7 * i;
+ gSprites[sp[5 - i]].data3 = 0;
+ gSprites[sp[5 - i]].data4 = 0;
+ gSprites[sp[5 - i]].callback = sub_8074158;
+ }
+ else
+ {
+ gSprites[sp[i]].data1 = 7 * i;
+ gSprites[sp[i]].data3 = 0;
+ gSprites[sp[i]].data4 = 0;
+ gSprites[sp[i]].callback = sub_8074158;
+ }
+ }
+ gSprites[r10].data0 /= 2;
+ gSprites[r10].data1 = 0;
+ gSprites[r10].callback = sub_8074090;
+ SetSubspriteTables(&gSprites[r10], sUnknown_0832C2CC);
+ gTasks[taskId].func = sub_8073E08;
+ }
+ else
+ {
+ gTasks[taskId].func = sub_8073F98;
+ }
+}
+
+static void sub_8073E08(u8 taskId)
+{
+ u16 temp = gTasks[taskId].data[11]++;
+
+ if (!(temp & 1))
+ {
+ gTasks[taskId].data[15]--;
+ if (gTasks[taskId].data[15] < 0)
+ return;
+
+ SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[15]) | ((16 - gTasks[taskId].data[15]) << 8));
+ }
+ if (gTasks[taskId].data[15] == 0)
+ gTasks[taskId].func = sub_8073E64;
+}
+
+static void sub_8073E64(u8 taskId)
+{
+ u8 sp[6];
+ s32 i;
+
+ u8 bank = gTasks[taskId].data[0];
+ gTasks[taskId].data[15]--;
+ if (gTasks[taskId].data[15] == -1)
+ {
+ u8 var = gTasks[taskId].data[1];
+
+ for (i = 0; i < 6; i++)
+ sp[i] = gTasks[taskId].data[3 + i];
+
+ gBattleSpritesDataPtr->animationData->field_9_x1C--;
+ if (!gBattleSpritesDataPtr->animationData->field_9_x1C)
+ {
+ DestroySpriteAndFreeResources(&gSprites[var]);
+ DestroySpriteAndFreeResources(&gSprites[sp[0]]);
+ }
+ else
+ {
+ FreeSpriteOamMatrix(&gSprites[var]);
+ DestroySprite(&gSprites[var]);
+ FreeSpriteOamMatrix(&gSprites[sp[0]]);
+ DestroySprite(&gSprites[sp[0]]);
+ }
+
+ for (i = 1; i < 6; i++)
+ DestroySprite(&gSprites[sp[i]]);
+ }
+ else if (gTasks[taskId].data[15] == -3)
+ {
+ gBattleSpritesDataPtr->healthBoxesData[bank].flag_x1 = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8073F98(u8 taskId)
+{
+ u8 sp[6];
+ s32 i;
+
+ u8 bank = gTasks[taskId].data[0];
+ gTasks[taskId].data[15]--;
+ if (gTasks[taskId].data[15] >= 0)
+ {
+ SetGpuReg(REG_OFFSET_BLDALPHA, (gTasks[taskId].data[15]) | ((16 - gTasks[taskId].data[15]) << 8));
+ }
+ else if (gTasks[taskId].data[15] == -1)
+ {
+ u8 var = gTasks[taskId].data[1];
+
+ for (i = 0; i < 6; i++)
+ sp[i] = gTasks[taskId].data[3 + i];
+
+ DestroySpriteAndFreeResources(&gSprites[var]);
+ DestroySpriteAndFreeResources(&gSprites[sp[0]]);
+
+ for (i = 1; i < 6; i++)
+ DestroySprite(&gSprites[sp[i]]);
+ }
+ else if (gTasks[taskId].data[15] == -3)
+ {
+ gBattleSpritesDataPtr->healthBoxesData[bank].flag_x1 = 0;
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ DestroyTask(taskId);
+ }
+}
+
+static void SpriteCB_StatusSummaryBar(struct Sprite *sprite)
+{
+ if (sprite->pos2.x != 0)
+ sprite->pos2.x += sprite->data0;
+}
+
+static void sub_8074090(struct Sprite *sprite)
+{
+ sprite->data1 += 32;
+ if (sprite->data0 > 0)
+ sprite->pos2.x += sprite->data1 >> 4;
+ else
+ sprite->pos2.x -= sprite->data1 >> 4;
+ sprite->data1 &= 0xF;
+}
+
+static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite)
+{
+ u8 var1;
+ u16 var2;
+ s8 pan;
+
+ if (sprite->data1 > 0)
+ {
+ sprite->data1--;
+ return;
+ }
+
+ var1 = sprite->data2;
+ var2 = sprite->data3;
+ var2 += 56;
+ sprite->data3 = var2 & 0xFFF0;
+
+ if (var1 != 0)
+ {
+ sprite->pos2.x += var2 >> 4;
+ if (sprite->pos2.x > 0)
+ sprite->pos2.x = 0;
+ }
+ else
+ {
+ sprite->pos2.x -= var2 >> 4;
+ if (sprite->pos2.x < 0)
+ sprite->pos2.x = 0;
+ }
+
+ if (sprite->pos2.x == 0)
+ {
+ pan = PAN_SIDE_OPPONENT;
+ if (var1 != 0)
+ pan = PAN_SIDE_PLAYER;
+
+ if (sprite->data7 != 0)
+ PlaySE2WithPanning(SE_TB_KARA, pan);
+ else
+ PlaySE1WithPanning(SE_TB_KON, pan);
+
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void sub_8074158(struct Sprite *sprite)
+{
+ u8 var1;
+ u16 var2;
+
+ if (sprite->data1 > 0)
+ {
+ sprite->data1--;
+ return;
+ }
+ var1 = sprite->data2;
+ var2 = sprite->data3;
+ var2 += 56;
+ sprite->data3 = var2 & 0xFFF0;
+ if (var1 != 0)
+ sprite->pos2.x += var2 >> 4;
+ else
+ sprite->pos2.x -= var2 >> 4;
+ if (sprite->pos2.x + sprite->pos1.x > 248
+ || sprite->pos2.x + sprite->pos1.x < -8)
+ {
+ sprite->invisible = TRUE;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite *sprite)
+{
+ u8 barSpriteId = sprite->data0;
+
+ sprite->pos2.x = gSprites[barSpriteId].pos2.x;
+ sprite->pos2.y = gSprites[barSpriteId].pos2.y;
+}
+
+static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
+{
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ void *ptr;
+ const u8 *genderTxt;
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+ u16 species;
+ u8 gender;
+
+ StringCopy(gDisplayedStringBattle, gText_HighlightDarkGrey);
+ GetMonData(mon, MON_DATA_NICKNAME, nickname);
+ StringGetEnd10(nickname);
+ ptr = StringAppend(gDisplayedStringBattle, nickname);
+
+ gender = GetMonGender(mon);
+ species = GetMonData(mon, MON_DATA_SPECIES);
+
+ if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && StringCompare(nickname, gSpeciesNames[species]) == 0)
+ gender = 100;
+
+ // AddTextPrinterAndCreateWindowOnHealthbox's arguments are the same in all 3 cases.
+ // It's possible they may have been different in early development phases.
+ switch (gender)
+ {
+ default:
+ StringCopy(ptr, gText_DynColor2);
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, 2, &windowId);
+ break;
+ case MON_MALE:
+ StringCopy(ptr, gText_DynColor2Male);
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, 2, &windowId);
+ break;
+ case MON_FEMALE:
+ StringCopy(ptr, gText_DynColor1Female);
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gDisplayedStringBattle, 0, 3, 2, &windowId);
+ break;
+ }
+
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ {
+ sub_8075198((void*)(0x6010040 + spriteTileNum), windowTileData, 6);
+ ptr = (void*)(OBJ_VRAM0);
+ if (!IsDoubleBattle())
+ ptr += spriteTileNum + 0x800;
+ else
+ ptr += spriteTileNum + 0x400;
+ sub_8075198(ptr, windowTileData + 0xC0, 1);
+ }
+ else
+ {
+ sub_8075198((void*)(0x6010020 + spriteTileNum), windowTileData, 7);
+ }
+
+ RemoveWindowOnHealthbox(windowId);
+}
+
+static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
+{
+ u8 bank, healthboxSpriteId_2;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ return;
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ return;
+
+ bank = gSprites[healthboxSpriteId].data6;
+ if (GetBankSide(bank) == SIDE_PLAYER)
+ return;
+ if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
+ return;
+
+ healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
+
+ if (noStatus)
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32);
+ else
+ CpuFill32(0, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32);
+}
+
+static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
+{
+ s32 i;
+ u8 bank, healthboxSpriteId_2;
+ u32 status, pltAdder;
+ const u8 *statusGfxPtr;
+ s16 tileNumAdder;
+ u8 statusPalId;
+
+ bank = gSprites[healthboxSpriteId].data6;
+ healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
+ if (GetBankSide(bank) == SIDE_PLAYER)
+ {
+ status = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_STATUS);
+ if (!IsDoubleBattle())
+ tileNumAdder = 0x1A;
+ else
+ tileNumAdder = 0x12;
+ }
+ else
+ {
+ status = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_STATUS);
+ tileNumAdder = 0x11;
+ }
+
+ if (status & STATUS_SLEEP)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_SLP_BANK0, bank));
+ statusPalId = PAL_STATUS_SLP;
+ }
+ else if (status & STATUS_PSN_ANY)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_PSN_BANK0, bank));
+ statusPalId = PAL_STATUS_PSN;
+ }
+ else if (status & STATUS_BURN)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_BRN_BANK0, bank));
+ statusPalId = PAL_STATUS_BRN;
+ }
+ else if (status & STATUS_FREEZE)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_FRZ_BANK0, bank));
+ statusPalId = PAL_STATUS_FRZ;
+ }
+ else if (status & STATUS_PARALYSIS)
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBankId(HEALTHBOX_GFX_STATUS_PRZ_BANK0, bank));
+ statusPalId = PAL_STATUS_PAR;
+ }
+ else
+ {
+ statusGfxPtr = GetHealthboxElementGfxPtr(HEALTHBOX_GFX_39);
+
+ for (i = 0; i < 3; i++)
+ CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * 32), 32);
+
+ if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars)
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 64);
+
+ TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE);
+ return;
+ }
+
+ pltAdder = gSprites[healthboxSpriteId].oam.paletteNum * 16;
+ pltAdder += bank + 12;
+
+ FillPalette(sStatusIconPalettes[statusPalId], pltAdder + 0x100, 2);
+ CpuCopy16(gPlttBufferUnfaded + 0x100 + pltAdder, (void*)(OBJ_PLTT + pltAdder * 2), 2);
+ CpuCopy32(statusGfxPtr, (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * 32), 96);
+ if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT)
+ {
+ if (!gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars)
+ {
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void*)(OBJ_VRAM0 + gSprites[healthboxSpriteId_2].oam.tileNum * 32), 32);
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 1) * 32), 32);
+ }
+ }
+ TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE);
+}
+
+static u8 GetStatusIconForBankId(u8 statusElementId, u8 bank)
+{
+ u8 ret = statusElementId;
+
+ switch (statusElementId)
+ {
+ case HEALTHBOX_GFX_STATUS_PSN_BANK0:
+ if (bank == 0)
+ ret = HEALTHBOX_GFX_STATUS_PSN_BANK0;
+ else if (bank == 1)
+ ret = HEALTHBOX_GFX_STATUS_PSN_BANK1;
+ else if (bank == 2)
+ ret = HEALTHBOX_GFX_STATUS_PSN_BANK2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_PSN_BANK3;
+ break;
+ case HEALTHBOX_GFX_STATUS_PRZ_BANK0:
+ if (bank == 0)
+ ret = HEALTHBOX_GFX_STATUS_PRZ_BANK0;
+ else if (bank == 1)
+ ret = HEALTHBOX_GFX_STATUS_PRZ_BANK1;
+ else if (bank == 2)
+ ret = HEALTHBOX_GFX_STATUS_PRZ_BANK2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_PRZ_BANK3;
+ break;
+ case HEALTHBOX_GFX_STATUS_SLP_BANK0:
+ if (bank == 0)
+ ret = HEALTHBOX_GFX_STATUS_SLP_BANK0;
+ else if (bank == 1)
+ ret = HEALTHBOX_GFX_STATUS_SLP_BANK1;
+ else if (bank == 2)
+ ret = HEALTHBOX_GFX_STATUS_SLP_BANK2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_SLP_BANK3;
+ break;
+ case HEALTHBOX_GFX_STATUS_FRZ_BANK0:
+ if (bank == 0)
+ ret = HEALTHBOX_GFX_STATUS_FRZ_BANK0;
+ else if (bank == 1)
+ ret = HEALTHBOX_GFX_STATUS_FRZ_BANK1;
+ else if (bank == 2)
+ ret = HEALTHBOX_GFX_STATUS_FRZ_BANK2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_FRZ_BANK3;
+ break;
+ case HEALTHBOX_GFX_STATUS_BRN_BANK0:
+ if (bank == 0)
+ ret = HEALTHBOX_GFX_STATUS_BRN_BANK0;
+ else if (bank == 1)
+ ret = HEALTHBOX_GFX_STATUS_BRN_BANK1;
+ else if (bank == 2)
+ ret = HEALTHBOX_GFX_STATUS_BRN_BANK2;
+ else
+ ret = HEALTHBOX_GFX_STATUS_BRN_BANK3;
+ break;
+ }
+ return ret;
+}
+
+static void UpdateSafariBallsTextOnHealthbox(u8 healthboxSpriteId)
+{
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(gText_SafariBalls, 0, 3, 2, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+ sub_8075198((void*)(OBJ_VRAM0 + 0x40) + spriteTileNum, windowTileData, 6);
+ sub_8075198((void*)(OBJ_VRAM0 + 0x800) + spriteTileNum, windowTileData + 0xC0, 2);
+ RemoveWindowOnHealthbox(windowId);
+}
+
+static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId)
+{
+ u8 text[16];
+ u8 *txtPtr;
+ u32 windowId, spriteTileNum;
+ u8 *windowTileData;
+
+ txtPtr = StringCopy(text, gText_SafariBallLeft);
+ ConvertIntToDecimalStringN(txtPtr, gNumSafariBalls, STR_CONV_MODE_LEFT_ALIGN, 2);
+
+ windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, GetStringRightAlignXOffset(0, text, 0x2F), 3, 2, &windowId);
+ spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
+ sub_80751E4((void*)(OBJ_VRAM0 + 0x2C0) + spriteTileNum, windowTileData, 2);
+ sub_80751E4((void*)(OBJ_VRAM0 + 0xA00) + spriteTileNum, windowTileData + 0x40, 4);
+ RemoveWindowOnHealthbox(windowId);
+}
+
+void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId)
+{
+ s32 maxHp, currHp;
+ u8 bank = gSprites[healthboxSpriteId].data6;
+
+ if (elementId == HEALTHBOX_ALL && !IsDoubleBattle())
+ GetBankSide(bank); // pointless function call
+
+ if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ {
+ u8 isDoubles;
+
+ if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL)
+ UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL));
+ if (elementId == HEALTHBOX_CURRENT_HP || elementId == HEALTHBOX_ALL)
+ UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_HP), HP_CURRENT);
+ if (elementId == HEALTHBOX_MAX_HP || elementId == HEALTHBOX_ALL)
+ UpdateHpTextInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_MAX_HP), HP_MAX);
+ if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL)
+ {
+ LoadBattleBarGfx(0);
+ maxHp = GetMonData(mon, MON_DATA_MAX_HP);
+ currHp = GetMonData(mon, MON_DATA_HP);
+ SetBattleBarStruct(bank, healthboxSpriteId, maxHp, currHp, 0);
+ sub_8074AA0(bank, healthboxSpriteId, HEALTH_BAR, 0);
+ }
+ isDoubles = IsDoubleBattle();
+ if (!isDoubles && (elementId == HEALTHBOX_EXP_BAR || elementId == HEALTHBOX_ALL))
+ {
+ u16 species;
+ u32 exp, currLevelExp;
+ s32 currExpBarValue, maxExpBarValue;
+ u8 level;
+
+ LoadBattleBarGfx(3);
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ level = GetMonData(mon, MON_DATA_LEVEL);
+ exp = GetMonData(mon, MON_DATA_EXP);
+ currLevelExp = gExperienceTables[gBaseStats[species].growthRate][level];
+ currExpBarValue = exp - currLevelExp;
+ maxExpBarValue = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLevelExp;
+ SetBattleBarStruct(bank, healthboxSpriteId, maxExpBarValue, currExpBarValue, isDoubles);
+ sub_8074AA0(bank, healthboxSpriteId, EXP_BAR, 0);
+ }
+ if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL)
+ UpdateNickInHealthbox(healthboxSpriteId, mon);
+ if (elementId == HEALTHBOX_STATUS_ICON || elementId == HEALTHBOX_ALL)
+ UpdateStatusIconInHealthbox(healthboxSpriteId);
+ if (elementId == HEALTHBOX_SAFARI_ALL_TEXT)
+ UpdateSafariBallsTextOnHealthbox(healthboxSpriteId);
+ if (elementId == HEALTHBOX_SAFARI_ALL_TEXT || elementId == HEALTHBOX_SAFARI_BALLS_TEXT)
+ UpdateLeftNoOfBallsTextOnHealthbox(healthboxSpriteId);
+ }
+ else
+ {
+ if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL)
+ UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL));
+ if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL)
+ {
+ LoadBattleBarGfx(0);
+ maxHp = GetMonData(mon, MON_DATA_MAX_HP);
+ currHp = GetMonData(mon, MON_DATA_HP);
+ SetBattleBarStruct(bank, healthboxSpriteId, maxHp, currHp, 0);
+ sub_8074AA0(bank, healthboxSpriteId, HEALTH_BAR, 0);
+ }
+ if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL)
+ UpdateNickInHealthbox(healthboxSpriteId, mon);
+ if (elementId == HEALTHBOX_STATUS_ICON || elementId == HEALTHBOX_ALL)
+ UpdateStatusIconInHealthbox(healthboxSpriteId);
+ }
+}
+
+s32 sub_8074AA0(u8 bank, u8 healthboxSpriteId, u8 whichBar, u8 arg3)
+{
+ s32 var;
+
+ if (whichBar == HEALTH_BAR) // health bar
+ {
+ var = sub_8074DB8(gBattleSpritesDataPtr->battleBars[bank].maxValue,
+ gBattleSpritesDataPtr->battleBars[bank].currentValue,
+ gBattleSpritesDataPtr->battleBars[bank].field_C,
+ &gBattleSpritesDataPtr->battleBars[bank].field_10,
+ 6, 1);
+ }
+ else // exp bar
+ {
+ u16 expFraction = GetScaledExpFraction(gBattleSpritesDataPtr->battleBars[bank].currentValue,
+ gBattleSpritesDataPtr->battleBars[bank].field_C,
+ gBattleSpritesDataPtr->battleBars[bank].maxValue, 8);
+ if (expFraction == 0)
+ expFraction = 1;
+ expFraction = abs(gBattleSpritesDataPtr->battleBars[bank].field_C / expFraction);
+
+ var = sub_8074DB8(gBattleSpritesDataPtr->battleBars[bank].maxValue,
+ gBattleSpritesDataPtr->battleBars[bank].currentValue,
+ gBattleSpritesDataPtr->battleBars[bank].field_C,
+ &gBattleSpritesDataPtr->battleBars[bank].field_10,
+ 8, expFraction);
+ }
+
+ if (whichBar == EXP_BAR || (whichBar == HEALTH_BAR && !gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars))
+ sub_8074B9C(bank, whichBar);
+
+ if (var == -1)
+ gBattleSpritesDataPtr->battleBars[bank].field_10 = 0;
+
+ return var;
+}
+
+static void sub_8074B9C(u8 bank, u8 whichBar)
+{
+ u8 array[7];
+ u8 subRet, level;
+ u8 barElementId;
+ u8 i;
+
+ switch (whichBar)
+ {
+ case HEALTH_BAR:
+ subRet = sub_8074E8C(gBattleSpritesDataPtr->battleBars[bank].maxValue,
+ gBattleSpritesDataPtr->battleBars[bank].currentValue,
+ gBattleSpritesDataPtr->battleBars[bank].field_C,
+ &gBattleSpritesDataPtr->battleBars[bank].field_10,
+ array, 6);
+ barElementId = 3;
+ if (subRet <= 0x18)
+ {
+ barElementId = 0x38;
+ if (subRet > 9)
+ barElementId = 0x2F;
+ }
+ for (i = 0; i < 6; i++)
+ {
+ u8 healthboxSpriteId_2 = gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].data5;
+ if (i < 2)
+ CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
+ (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 2 + i) * 32), 32);
+ else
+ CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
+ (void*)(OBJ_VRAM0 + 64 + (i + gSprites[healthboxSpriteId_2].oam.tileNum) * 32), 32);
+ }
+ break;
+ case EXP_BAR:
+ sub_8074E8C(gBattleSpritesDataPtr->battleBars[bank].maxValue,
+ gBattleSpritesDataPtr->battleBars[bank].currentValue,
+ gBattleSpritesDataPtr->battleBars[bank].field_C,
+ &gBattleSpritesDataPtr->battleBars[bank].field_10,
+ array, 8);
+ level = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_LEVEL);
+ if (level == MAX_MON_LEVEL)
+ {
+ for (i = 0; i < 8; i++)
+ array[i] = 0;
+ }
+ for (i = 0; i < 8; i++)
+ {
+ if (i < 4)
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
+ (void*)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].oam.tileNum + 0x24 + i) * 32), 32);
+ else
+ CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
+ (void*)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].oam.tileNum) * 32), 32);
+ }
+ break;
+ }
+}
+
+static s32 sub_8074DB8(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 arg4, u16 arg5)
+{
+ s32 r6;
+ s32 ret;
+ arg4 <<= 3;
+
+ if (*arg3 == -32768)
+ {
+ if (maxValue < arg4)
+ *arg3 = currValue << 8;
+ else
+ *arg3 = currValue;
+ }
+
+ currValue -= arg2;
+ if (currValue < 0)
+ currValue = 0;
+ else if (currValue > maxValue)
+ currValue = maxValue;
+
+ if (maxValue < arg4)
+ {
+ s32 var = *arg3 >> 8;
+
+ r6 = *arg3;
+ if (currValue == var && (r6 & 0xFF) == 0)
+ return -1;
+ }
+ else
+ {
+ r6 = *arg3;
+ if (currValue == r6)
+ return -1;
+ }
+
+ if (maxValue < arg4)
+ {
+ s32 var = (maxValue << 8) / arg4;
+
+ if (arg2 < 0)
+ {
+ *arg3 = r6 + var;
+ ret = *arg3 >> 8;
+ if (ret >= currValue)
+ {
+ *arg3 = currValue << 8;
+ ret = currValue;
+ }
+ }
+ else
+ {
+ *arg3 = r6 - var;
+ ret = *arg3 >> 8;
+ if ((*arg3 & 0xFF) > 0)
+ ret++;
+ if (ret <= currValue)
+ {
+ *arg3 = currValue << 8;
+ ret = currValue;
+ }
+ }
+ }
+ else
+ {
+ if (arg2 < 0)
+ {
+ *arg3 += arg5;
+ if (*arg3 > currValue)
+ *arg3 = currValue;
+ ret = *arg3;
+ }
+ else
+ {
+ *arg3 -= arg5;
+ if (*arg3 < currValue)
+ *arg3 = currValue;
+ ret = *arg3;
+ }
+ }
+
+ return ret;
+}
+
+static u8 sub_8074E8C(s32 maxValue, s32 currValue, s32 arg2, s32 *arg3, u8 *arg4, u8 arg5)
+{
+ s32 r5 = currValue - arg2;
+ u8 ret;
+ u8 i;
+ u8 r2;
+
+ if (r5 < 0)
+ r5 = 0;
+ else if (r5 > maxValue)
+ r5 = maxValue;
+
+ ret = arg5 << 3;
+
+ for (i = 0; i < arg5; i++)
+ arg4[i] = 0;
+
+ if (maxValue < ret)
+ r2 = (*arg3 * ret / maxValue) >> 8;
+ else
+ r2 = *arg3 * ret / maxValue;
+
+ ret = r2;
+
+ if (ret == 0 && r5 > 0)
+ {
+ arg4[0] = 1;
+ ret = 1;
+ }
+ else
+ {
+ for (i = 0; i < arg5; i++)
+ {
+ if (r2 >= 8)
+ {
+ arg4[i] = 8;
+ }
+ else
+ {
+ arg4[i] = r2;
+ break;
+ }
+ r2 -= 8;
+ }
+ }
+
+ return ret;
+}
+
+static s16 sub_8074F28(struct TestingBar *barInfo, s32 *arg1, u16 *arg2, s32 arg3)
+{
+ s16 ret, var;
+
+ ret = sub_8074DB8(barInfo->maxValue,
+ barInfo->currValue,
+ barInfo->field_8,
+ arg1, 6, 1);
+ sub_8074F88(barInfo, arg1, arg2);
+
+ if (barInfo->maxValue < 0x30)
+ var = *arg1 >> 8;
+ else
+ var = *arg1;
+
+ DummiedOutFunction(barInfo->maxValue, var, arg3);
+
+ return ret;
+}
+
+static void sub_8074F88(struct TestingBar *barInfo, s32 *arg1, u16 *arg2)
+{
+ u8 sp8[6];
+ u16 sp10[6];
+ u8 i;
+
+ sub_8074E8C(barInfo->maxValue, barInfo->currValue,
+ barInfo->field_8, arg1, sp8, 6);
+
+ for (i = 0; i < 6; i++)
+ sp10[i] = (barInfo->unkC_0 << 12) | (barInfo->unk10 + sp8[i]);
+
+ CpuCopy16(sp10, arg2, sizeof(sp10));
+}
+
+static u8 GetScaledExpFraction(s32 currValue, s32 arg1, s32 maxValue, u8 scale)
+{
+ s32 r5, result;
+ s8 r4, r0;
+
+ scale *= 8;
+ r5 = currValue - arg1;
+
+ if (r5 < 0)
+ r5 = 0;
+ else if (r5 > maxValue)
+ r5 = maxValue;
+
+ r4 = currValue * scale / maxValue;
+ r0 = r5 * scale / maxValue;
+ result = r4 - r0;
+
+ return abs(result);
+}
+
+u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale)
+{
+ u8 result = hp * scale / maxhp;
+
+ if (result == 0 && hp > 0)
+ return 1;
+
+ return result;
+}
+
+u8 GetHPBarLevel(s16 hp, s16 maxhp)
+{
+ s32 result;
+
+ if (hp == maxhp)
+ {
+ result = 4;
+ }
+ else
+ {
+ u8 fraction = GetScaledHPFraction(hp, maxhp, 48);
+ if (fraction > 24)
+ result = 3;
+ else if (fraction > 9)
+ result = 2;
+ else if (fraction > 0)
+ result = 1;
+ else
+ result = 0;
+ }
+
+ return result;
+}
+
+static u8* AddTextPrinterAndCreateWindowOnHealthbox(const u8 *str, u32 x, u32 y, u32 arg3, u32 *windowId)
+{
+ u16 winId;
+ struct TextColor color;
+ struct WindowTemplate winTemplate = sHealthboxWindowTemplate;
+
+ winId = AddWindow(&winTemplate);
+ FillWindowPixelBuffer(winId, (arg3 << 4) | (arg3));
+
+ color.fgColor = arg3;
+ color.bgColor = 1;
+ color.shadowColor = 3;
+
+ AddTextPrinterParametrized2(winId, 0, x, y, 0, 0, &color, -1, str);
+
+ *windowId = winId;
+ return (u8*)(GetWindowAttribute(winId, WINDOW_TILE_DATA));
+}
+
+static void RemoveWindowOnHealthbox(u32 windowId)
+{
+ RemoveWindow(windowId);
+}
+
+static void sub_807513C(void *dest, u32 arg1, u32 arg2)
+{
+ CpuFill32(0x11111111 * arg1, dest, arg2 * 32);
+}
+
+static void sub_8075170(void *dest, u8 *windowTileData, u32 arg2)
+{
+ CpuCopy32(windowTileData + 256, dest, arg2 * 32);
+}
+
+static void sub_8075198(void *dest, u8 *windowTileData, s32 arg2)
+{
+ CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32);
+
+ if (arg2 > 0)
+ {
+ do
+ {
+ CpuCopy32(windowTileData + 20, dest + 20, 12);
+ dest += 32, windowTileData+= 32;
+ arg2--;
+ } while (arg2 != 0);
+ }
+}
+
+static void sub_80751E4(void *dest, u8 *windowTileData, u32 arg2)
+{
+ CpuCopy32(windowTileData, dest, arg2 * 32);
+ CpuCopy32(windowTileData + 256, dest + 256, arg2 * 32);
+}
diff --git a/src/battle_message.c b/src/battle_message.c
new file mode 100644
index 000000000..aeff721d6
--- /dev/null
+++ b/src/battle_message.c
@@ -0,0 +1,2333 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_message.h"
+#include "battle_string_ids.h"
+#include "moves.h"
+#include "text.h"
+#include "string_util.h"
+#include "items.h"
+#include "event_data.h"
+#include "link.h"
+#include "item.h"
+#include "window.h"
+#include "palette.h"
+#include "battle_controllers.h"
+
+extern u16 gLastUsedItem;
+extern u8 gLastUsedAbility;
+extern u8 gActiveBank;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8 gStringBank;
+extern u8 gEffectBank;
+extern u8 gAbilitiesPerBank[BATTLE_BANKS_COUNT];
+extern u32 gBattleTypeFlags;
+extern u16 gTrainerBattleOpponent_A;
+extern u16 gTrainerBattleOpponent_B;
+extern u16 gPartnerTrainerId;
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
+extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
+extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT];
+extern u8 gUnknown_0203C7B4;
+extern struct StringInfoBattle *gStringInfo;
+
+extern const u8 gMoveNames[LAST_MOVE_INDEX + 1][13];
+extern const u8 gAbilityNames[][13];
+extern const u8 gTrainerClassNames[][13];
+extern const u8 gTypeNames[][7];
+extern const u16 gUnknown_08D85620[];
+
+// strings
+extern const u8 gText_PkmnBoxSomeonesPCFull[];
+extern const u8 gText_PkmnBoxLanettesPCFull[];
+extern const u8 gText_PkmnTransferredSomeonesPC[];
+extern const u8 gText_PkmnTransferredLanettesPC[];
+
+extern u16 sub_8068BB0(void); // pokemon_1
+extern u8 sub_81A4D00(void); // battle_frontier_2
+extern u8 GetFrontierOpponentClass(u16 trainerId); // battle_tower
+extern u8 sub_81D5530(u16 trainerId); // pokenav
+extern u8 GetEreaderTrainerClassId(void); // battle_tower
+extern void sub_81A4D50(u8 *txtPtr); // battle_frontier_2
+extern void sub_81D5554(u8 *txtPtr, u16 trainerId); // pokenav
+extern void GetEreaderTrainerName(u8 *txtPtr);
+extern void sub_81A36D0(u8 arg0, u16 trainerId); // battle_frontier_2
+extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav
+extern const u8* GetTrainer1LoseText(void); // battle_setup
+extern const u8* GetTrainer2LoseText(void); // battle_setup
+extern void GetFrontierTrainerName(u8 *dst, u16 trainerId);
+extern s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, const u8 *str, s32 totalWidth, s16 letterSpacing);
+extern u8 sub_8185FC4(void);
+extern u8 sav2_get_text_speed(void);
+
+// this file's functions
+static void sub_814F8F8(u8 *textPtr);
+static void sub_814F950(u8 *dst);
+static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst);
+
+// ewram variables
+EWRAM_DATA u8 gDisplayedStringBattle[300] = {0};
+EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0};
+EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0};
+EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0};
+
+// const rom data
+// todo: make some of those names less vague: attacker/target vs pkmn, etc.
+
+const u8 gText_Trainer1LoseText[] = _("{B_TRAINER1_LOSE_TEXT}");
+const u8 gText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_BUFF3} EXP. Points!\p");
+const u8 gText_EmptyString4[] = _("");
+const u8 gText_ABoosted[] = _(" a boosted");
+const u8 gText_PkmnGrewToLv[] = _("{B_BUFF1} grew to\nLV. {B_BUFF2}!{UNKNOWN_A}\p");
+const u8 gText_PkmnLearnedMove[] = _("{B_BUFF1} learned\n{B_BUFF2}!{UNKNOWN_A}\p");
+const u8 gText_TryToLearnMove1[] = _("{B_BUFF1} is trying to\nlearn {B_BUFF2}.\p");
+const u8 gText_TryToLearnMove2[] = _("But, {B_BUFF1} can’t learn\nmore than four moves.\p");
+const u8 gText_TryToLearnMove3[] = _("Delete a move to make\nroom for {B_BUFF2}?");
+const u8 gText_PkmnForgotMove[] = _("{B_BUFF1} forgot\n{B_BUFF2}.\p");
+const u8 gText_StopLearningMove[] = _("{PAUSE 32}Stop learning\n{B_BUFF2}?");
+const u8 gText_DidNotLearnMove[] = _("{B_BUFF1} did not learn\n{B_BUFF2}.\p");
+const u8 gText_UseNextPkmn[] = _("Use next POKéMON?");
+const u8 gText_AttackMissed[] = _("{B_ATK_NAME_WITH_PREFIX}’s\nattack missed!");
+const u8 gText_PkmnProtectedItself[] = _("{B_DEF_NAME_WITH_PREFIX}\nprotected itself!");
+const u8 gText_AvoidedDamage[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\ndamage with {B_DEF_ABILITY}!");
+const u8 gText_PkmnMakesGroundMiss[] = _("{B_DEF_NAME_WITH_PREFIX} makes GROUND\nmoves miss with {B_DEF_ABILITY}!");
+const u8 gText_PkmnAvoidedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\nthe attack!");
+const u8 gText_ItDoesntAffect[] = _("It doesn’t affect\n{B_DEF_NAME_WITH_PREFIX}…");
+const u8 gText_AttackerFainted[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p");
+const u8 gText_TargetFainted[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p");
+const u8 gText_PlayerGotMoney[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p");
+const u8 gText_PlayerWhiteout[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p");
+const u8 gText_PlayerWhiteout2[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}");
+const u8 gText_PreventsEscape[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p");
+const u8 gText_CantEscape2[] = _("Can’t escape!\p");
+const u8 gText_AttackerCantEscape[] = _("{B_ATK_NAME_WITH_PREFIX} can’t escape!");
+const u8 gText_HitXTimes[] = _("Hit {B_BUFF1} time(s)!");
+const u8 gText_PkmnFellAsleep[] = _("{B_EFF_NAME_WITH_PREFIX}\nfell asleep!");
+const u8 gText_PkmnMadeSleep[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!");
+const u8 gText_PkmnAlreadyAsleep[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready asleep!");
+const u8 gText_PkmnAlreadyAsleep2[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!");
+const u8 gText_PkmnWasntAffected[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn’t affected!");
+const u8 gText_PkmnWasPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!");
+const u8 gText_PkmnPoisonedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnHurtByPoison[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!");
+const u8 gText_PkmnAlreadyPoisoned[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned.");
+const u8 gText_PkmnBadlyPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!");
+const u8 gText_PkmnEnergyDrained[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!");
+const u8 gText_PkmnWasBurned[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!");
+const u8 gText_PkmnBurnedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnHurtByBurn[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!");
+const u8 gText_PkmnAlreadyHasBurn[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn.");
+const u8 gText_PkmnWasFrozen[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!");
+const u8 gText_PkmnFrozenBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!");
+const u8 gText_PkmnIsFrozen[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen solid!");
+const u8 gText_PkmnWasDefrosted[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!");
+const u8 gText_PkmnWasDefrosted2[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!");
+const u8 gText_PkmnWasDefrostedBy[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!");
+const u8 gText_PkmnWasParalyzed[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!");
+const u8 gText_PkmnWasParalyzedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!");
+const u8 gText_PkmnIsParalyzed[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt can’t move!");
+const u8 gText_PkmnIsAlreadyParalyzed[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready paralyzed!");
+const u8 gText_PkmnHealedParalysis[] = _("{B_DEF_NAME_WITH_PREFIX} was\nhealed of paralysis!");
+const u8 gText_PkmnDreamEaten[] = _("{B_DEF_NAME_WITH_PREFIX}’s\ndream was eaten!");
+const u8 gText_StatsWontIncrease[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\nwon’t go higher!");
+const u8 gText_StatsWontDecrease[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\nwon’t go lower!");
+const u8 gText_TeamStoppedWorking[] = _("Your team’s {B_BUFF1}\nstopped working!");
+const u8 gText_FoeStoppedWorking[] = _("The foe’s {B_BUFF1}\nstopped working!");
+const u8 gText_PkmnIsConfused[] = _("{B_ATK_NAME_WITH_PREFIX} is\nconfused!");
+const u8 gText_PkmnHealedConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} snapped\nout of confusion!");
+const u8 gText_PkmnWasConfused[] = _("{B_EFF_NAME_WITH_PREFIX} became\nconfused!");
+const u8 gText_PkmnAlreadyConfused[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready confused!");
+const u8 gText_PkmnFellInLove[] = _("{B_DEF_NAME_WITH_PREFIX}\nfell in love!");
+const u8 gText_PkmnInLove[] = _("{B_ATK_NAME_WITH_PREFIX} is in love\nwith {B_SCR_ACTIVE_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnImmobilizedByLove[] = _("{B_ATK_NAME_WITH_PREFIX} is\nimmobilized by love!");
+const u8 gText_PkmnBlownAway[] = _("{B_DEF_NAME_WITH_PREFIX} was\nblown away!");
+const u8 gText_PkmnChangedType[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto the {B_BUFF1} type!");
+const u8 gText_PkmnFlinched[] = _("{B_ATK_NAME_WITH_PREFIX} flinched!");
+const u8 gText_PkmnRegainedHealth[] = _("{B_DEF_NAME_WITH_PREFIX} regained\nhealth!");
+const u8 gText_PkmnHPFull[] = _("{B_DEF_NAME_WITH_PREFIX}’s\nHP is full!");
+const u8 gText_PkmnRaisedSpDef[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised SP. DEF!");
+const u8 gText_PkmnRaisedSpDefALittle[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised SP. DEF a little!");
+const u8 gText_PkmnRaisedDef[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised DEFENSE!");
+const u8 gText_PkmnRaisedDefALittle[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised DEFENSE a little!");
+const u8 gText_PkmnCoveredByVeil[] = _("{B_ATK_PREFIX2}’s party is covered\nby a veil!");
+const u8 gText_PkmnUsedSafeguard[] = _("{B_DEF_NAME_WITH_PREFIX}’s party is protected\nby SAFEGUARD!");
+const u8 gText_PkmnSafeguardExpired[] = _("{B_ATK_PREFIX3}’s party is no longer\nprotected by SAFEGUARD!");
+const u8 gText_PkmnWentToSleep[] = _("{B_ATK_NAME_WITH_PREFIX} went\nto sleep!");
+const u8 gText_PkmnSleptHealthy[] = _("{B_ATK_NAME_WITH_PREFIX} slept and\nbecame healthy!");
+const u8 gText_PkmnWhippedWhirlwind[] = _("{B_ATK_NAME_WITH_PREFIX} whipped\nup a whirlwind!");
+const u8 gText_PkmnTookSunlight[] = _("{B_ATK_NAME_WITH_PREFIX} took\nin sunlight!");
+const u8 gText_PkmnLoweredHead[] = _("{B_ATK_NAME_WITH_PREFIX} lowered\nits head!");
+const u8 gText_PkmnIsGlowing[] = _("{B_ATK_NAME_WITH_PREFIX} is glowing!");
+const u8 gText_PkmnFlewHigh[] = _("{B_ATK_NAME_WITH_PREFIX} flew\nup high!");
+const u8 gText_PkmnDugHole[] = _("{B_ATK_NAME_WITH_PREFIX} dug a hole!");
+const u8 gText_PkmnHidUnderwater[] = _("{B_ATK_NAME_WITH_PREFIX} hid\nunderwater!");
+const u8 gText_PkmnSprangUp[] = _("{B_ATK_NAME_WITH_PREFIX} sprang up!");
+const u8 gText_PkmnSqueezedByBind[] = _("{B_DEF_NAME_WITH_PREFIX} was squeezed by\n{B_ATK_NAME_WITH_PREFIX}’s BIND!");
+const u8 gText_PkmnTrappedInVortex[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nin the vortex!");
+const u8 gText_PkmnTrappedBySandTomb[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nby SAND TOMB!");
+const u8 gText_PkmnWrappedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n{B_ATK_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnClamped[] = _("{B_ATK_NAME_WITH_PREFIX} CLAMPED\n{B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnHurtBy[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby {B_BUFF1}!");
+const u8 gText_PkmnFreedFrom[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom {B_BUFF1}!");
+const u8 gText_PkmnCrashed[] = _("{B_ATK_NAME_WITH_PREFIX} kept going\nand crashed!");
+const u8 gText_PkmnShroudedInMist[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!");
+const u8 gText_PkmnProtectedByMist[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!");
+const u8 gText_PkmnGettingPumped[] = _("{B_ATK_NAME_WITH_PREFIX} is getting\npumped!");
+const u8 gText_PkmnHitWithRecoil[] = _("{B_ATK_NAME_WITH_PREFIX} is hit\nwith recoil!");
+const u8 gText_PkmnProtectedItself2[] = _("{B_ATK_NAME_WITH_PREFIX} protected\nitself!");
+const u8 gText_PkmnBuffetedBySandstorm[] = _("{B_ATK_NAME_WITH_PREFIX} is buffeted\nby the sandstorm!");
+const u8 gText_PkmnPeltedByHail[] = _("{B_ATK_NAME_WITH_PREFIX} is pelted\nby HAIL!");
+const u8 gText_PkmnsXWoreOff[] = _("{B_ATK_PREFIX1}’s {B_BUFF1}\nwore off!");
+const u8 gText_PkmnSeeded[] = _("{B_DEF_NAME_WITH_PREFIX} was seeded!");
+const u8 gText_PkmnEvadedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} evaded\nthe attack!");
+const u8 gText_PkmnSappedByLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX}’s health is\nsapped by LEECH SEED!");
+const u8 gText_PkmnFastAsleep[] = _("{B_ATK_NAME_WITH_PREFIX} is fast\nasleep.");
+const u8 gText_PkmnWokeUp[] = _("{B_ATK_NAME_WITH_PREFIX} woke up!");
+const u8 gText_PkmnUproarKeptAwake[] = _("But {B_SCR_ACTIVE_NAME_WITH_PREFIX}’s UPROAR\nkept it awake!");
+const u8 gText_PkmnWokeUpInUproar[] = _("{B_ATK_NAME_WITH_PREFIX} woke up\nin the UPROAR!");
+const u8 gText_PkmnCausedUproar[] = _("{B_ATK_NAME_WITH_PREFIX} caused\nan UPROAR!");
+const u8 gText_PkmnMakingUproar[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!");
+const u8 gText_PkmnCalmedDown[] = _("{B_ATK_NAME_WITH_PREFIX} calmed down.");
+const u8 gText_PkmnCantSleepInUproar[] = _("But {B_DEF_NAME_WITH_PREFIX} can’t\nsleep in an UPROAR!");
+const u8 gText_PkmnStockpiled[] = _("{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n{B_BUFF1}!");
+const u8 gText_PkmnCantStockpile[] = _("{B_ATK_NAME_WITH_PREFIX} can’t\nSTOCKPILE any more!");
+const u8 gText_PkmnCantSleepInUproar2[] = _("But {B_DEF_NAME_WITH_PREFIX} can’t\nsleep in an UPROAR!");
+const u8 gText_UproarKeptPkmnAwake[] = _("But the UPROAR kept\n{B_DEF_NAME_WITH_PREFIX} awake!");
+const u8 gText_PkmnStayedAwakeUsing[] = _("{B_DEF_NAME_WITH_PREFIX} stayed awake\nusing its {B_DEF_ABILITY}!");
+const u8 gText_PkmnStoringEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} is storing\nenergy!");
+const u8 gText_PkmnUnleashedEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} unleashed\nenergy!");
+const u8 gText_PkmnFatigueConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} became\nconfused due to fatigue!");
+const u8 gText_PkmnPickedUpItem[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p");
+const u8 gText_PkmnUnaffected[] = _("{B_DEF_NAME_WITH_PREFIX} is\nunaffected!");
+const u8 gText_PkmnTransformedInto[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto {B_BUFF1}!");
+const u8 gText_PkmnMadeSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} made\na SUBSTITUTE!");
+const u8 gText_PkmnHasSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} already\nhas a SUBSTITUTE!");
+const u8 gText_SubstituteDamaged[] = _("The SUBSTITUTE took damage\nfor {B_DEF_NAME_WITH_PREFIX}!\p");
+const u8 gText_PkmnSubstituteFaded[] = _("{B_DEF_NAME_WITH_PREFIX}’s\nSUBSTITUTE faded!\p");
+const u8 gText_PkmnMustRecharge[] = _("{B_ATK_NAME_WITH_PREFIX} must\nrecharge!");
+const u8 gText_PkmnRageBuilding[] = _("{B_DEF_NAME_WITH_PREFIX}’s RAGE\nis building!");
+const u8 gText_PkmnMoveWasDisabled[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\nwas disabled!");
+const u8 gText_PkmnMoveDisabledNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is disabled\nno more!");
+const u8 gText_PkmnGotEncore[] = _("{B_DEF_NAME_WITH_PREFIX} got\nan ENCORE!");
+const u8 gText_PkmnEncoreEnded[] = _("{B_ATK_NAME_WITH_PREFIX}’s ENCORE\nended!");
+const u8 gText_PkmnTookAim[] = _("{B_ATK_NAME_WITH_PREFIX} took aim\nat {B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnSketchedMove[] = _("{B_ATK_NAME_WITH_PREFIX} SKETCHED\n{B_BUFF1}!");
+const u8 gText_PkmnTryingToTakeFoe[] = _("{B_ATK_NAME_WITH_PREFIX} is trying\nto take its foe with it!");
+const u8 gText_PkmnTookFoe[] = _("{B_DEF_NAME_WITH_PREFIX} took\n{B_ATK_NAME_WITH_PREFIX} with it!");
+const u8 gText_PkmnReducedPP[] = _("Reduced {B_DEF_NAME_WITH_PREFIX}’s\n{B_BUFF1} by {B_BUFF2}!");
+const u8 gText_PkmnStoleItem[] = _("{B_ATK_NAME_WITH_PREFIX} stole\n{B_DEF_NAME_WITH_PREFIX}’s {B_LAST_ITEM}!");
+const u8 gText_TargetCantEscapeNow[] = _("{B_DEF_NAME_WITH_PREFIX} can’t\nescape now!");
+const u8 gText_PkmnFellIntoNightmare[] = _("{B_DEF_NAME_WITH_PREFIX} fell into\na NIGHTMARE!");
+const u8 gText_PkmnLockedInNightmare[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!");
+const u8 gText_PkmnLaidCurse[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnAfflictedByCurse[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!");
+const u8 gText_SpikesScattered[] = _("SPIKES were scattered all around\nthe opponent’s side!");
+const u8 gText_PkmnHurtBySpikes[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!");
+const u8 gText_PkmnIdentified[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnPerishCountFell[] = _("{B_ATK_NAME_WITH_PREFIX}’s PERISH count\nfell to {B_BUFF1}!");
+const u8 gText_PkmnBracedItself[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!");
+const u8 gText_PkmnEnduredHit[] = _("{B_DEF_NAME_WITH_PREFIX} ENDURED\nthe hit!");
+const u8 gText_MagnitudeStrength[] = _("MAGNITUDE {B_BUFF1}!");
+const u8 gText_PkmnCutHPMaxedAttack[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP\nand maximized ATTACK!");
+const u8 gText_PkmnCopiedStatChanges[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}’s stat changes!");
+const u8 gText_PkmnGotFree[] = _("{B_ATK_NAME_WITH_PREFIX} got free of\n{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}!");
+const u8 gText_PkmnShedLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX} shed\nLEECH SEED!");
+const u8 gText_PkmnBlewAwaySpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSPIKES!");
+const u8 gText_PkmnFledFromBattle[] = _("{B_ATK_NAME_WITH_PREFIX} fled from\nbattle!");
+const u8 gText_PkmnForesawAttack[] = _("{B_ATK_NAME_WITH_PREFIX} foresaw\nan attack!");
+const u8 gText_PkmnTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX} took the\n{B_BUFF1} attack!");
+const u8 gText_PkmnChoseXAsDestiny[] = _("{B_ATK_NAME_WITH_PREFIX} chose\n{B_CURRENT_MOVE} as its destiny!");
+const u8 gText_PkmnAttack[] = _("{B_BUFF1}’s attack!");
+const u8 gText_PkmnCenterAttention[] = _("{B_ATK_NAME_WITH_PREFIX} became the\ncenter of attention!");
+const u8 gText_PkmnChargingPower[] = _("{B_ATK_NAME_WITH_PREFIX} began\ncharging power!");
+const u8 gText_NaturePowerTurnedInto[] = _("NATURE POWER turned into\n{B_CURRENT_MOVE}!");
+const u8 gText_PkmnStatusNormal[] = _("{B_ATK_NAME_WITH_PREFIX}’s status\nreturned to normal!");
+const u8 gText_PkmnSubjectedToTorment[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto TORMENT!");
+const u8 gText_PkmnTighteningFocus[] = _("{B_ATK_NAME_WITH_PREFIX} is tightening\nits focus!");
+const u8 gText_PkmnFellForTaunt[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe TAUNT!");
+const u8 gText_PkmnReadyToHelp[] = _("{B_ATK_NAME_WITH_PREFIX} is ready to\nhelp {B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnSwitchedItems[] = _("{B_ATK_NAME_WITH_PREFIX} switched\nitems with its opponent!");
+const u8 gText_PkmnObtainedX[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.");
+const u8 gText_PkmnObtainedX2[] = _("{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}.");
+const u8 gText_PkmnObtainedXYObtainedZ[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.\p{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}.");
+const u8 gText_PkmnCopiedFoe[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}!");
+const u8 gText_PkmnMadeWish[] = _("{B_ATK_NAME_WITH_PREFIX} made a WISH!");
+const u8 gText_PkmnWishCameTrue[] = _("{B_BUFF1}’s WISH\ncame true!");
+const u8 gText_PkmnPlantedRoots[] = _("{B_ATK_NAME_WITH_PREFIX} planted its roots!");
+const u8 gText_PkmnAbsorbedNutrients[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nnutrients with its roots!");
+const u8 gText_PkmnAnchoredItself[] = _("{B_DEF_NAME_WITH_PREFIX} anchored\nitself with its roots!");
+const u8 gText_PkmnWasMadeDrowsy[] = _("{B_ATK_NAME_WITH_PREFIX} made\n{B_DEF_NAME_WITH_PREFIX} drowsy!");
+const u8 gText_PkmnKnockedOff[] = _("{B_ATK_NAME_WITH_PREFIX} knocked off\n{B_DEF_NAME_WITH_PREFIX}’s {B_LAST_ITEM}!");
+const u8 gText_PkmnSwappedAbilities[] = _("{B_ATK_NAME_WITH_PREFIX} swapped abilities\nwith its opponent!");
+const u8 gText_PkmnSealedOpponentMove[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent’s move(s)!");
+const u8 gText_PkmnWantsGrudge[] = _("{B_ATK_NAME_WITH_PREFIX} wants the\nopponent to bear a GRUDGE!");
+const u8 gText_PkmnLostPPGrudge[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1} lost\nall its PP due to the GRUDGE!");
+const u8 gText_PkmnShroudedItself[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!");
+const u8 gText_PkmnMoveBounced[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_CURRENT_MOVE}\nwas bounced back by MAGIC COAT!");
+const u8 gText_PkmnWaitsForTarget[] = _("{B_ATK_NAME_WITH_PREFIX} waits for a target\nto make a move!");
+const u8 gText_PkmnSnatchedMove[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s move!");
+const u8 gText_ElectricityWeakened[] = _("Electricity’s power was\nweakened!");
+const u8 gText_FireWeakened[] = _("Fire’s power was\nweakened!");
+const u8 gText_XFoundOneY[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_LAST_ITEM}!");
+const u8 gText_SoothingAroma[] = _("A soothing aroma wafted\nthrough the area!");
+const u8 gText_ItemsCantBeUsedNow[] = _("Items can’t be used now.{PAUSE 64}");
+const u8 gText_ForXCommaYZ[] = _("For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}");
+const u8 gText_PkmnUsedXToGetPumped[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to get pumped!");
+const u8 gText_PkmnLostFocus[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldn’t move!");
+const u8 gText_PkmnWasDraggedOut[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p");
+const u8 gText_TheWallShattered[] = _("The wall shattered!");
+const u8 gText_ButNoEffect[] = _("But it had no effect!");
+const u8 gText_PkmnHasNoMovesLeft[] = _("{B_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p");
+const u8 gText_PkmnMoveIsDisabled[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_CURRENT_MOVE}\nis disabled!\p");
+const u8 gText_PkmnCantUseMoveTorment[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can’t use the same\nmove in a row due to the TORMENT!\p");
+const u8 gText_PkmnCantUseMoveTaunt[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can’t use\n{B_CURRENT_MOVE} after the TAUNT!\p");
+const u8 gText_PkmnCantUseMoveSealed[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can’t use the\nsealed {B_CURRENT_MOVE}!\p");
+const u8 gText_PkmnMadeItRain[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it rain!");
+const u8 gText_PkmnRaisedSpeed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!");
+const u8 gText_PkmnProtectedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was protected\nby {B_DEF_ABILITY}!");
+const u8 gText_PkmnPreventsUsage[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents {B_ATK_NAME_WITH_PREFIX}\lfrom using {B_CURRENT_MOVE}!");
+const u8 gText_PkmnRestoredHPUsing[] = _("{B_DEF_NAME_WITH_PREFIX} restored HP\nusing its {B_DEF_ABILITY}!");
+const u8 gText_PkmnsXMadeYUseless[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} useless!");
+const u8 gText_PkmnChangedTypeWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade it the {B_BUFF1} type!");
+const u8 gText_PkmnPreventsParalysisWith[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents paralysis!");
+const u8 gText_PkmnPreventsRomanceWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents romance!");
+const u8 gText_PkmnPreventsPoisoningWith[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents poisoning!");
+const u8 gText_PkmnPreventsConfusionWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents confusion!");
+const u8 gText_PkmnRaisedFirePowerWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nraised its FIRE power!");
+const u8 gText_PkmnAnchorsItselfWith[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!");
+const u8 gText_PkmnCutsAttackWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}’s ATTACK!");
+const u8 gText_PkmnPreventsStatLossWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!");
+const u8 gText_PkmnHurtsWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnTraced[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}’s {B_BUFF2}!");
+const u8 gText_PkmnsXPreventsBurns[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_EFF_ABILITY}\nprevents burns!");
+const u8 gText_PkmnsXBlocksY[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!");
+const u8 gText_PkmnsXBlocksY2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!");
+const u8 gText_PkmnsXRestoredHPALittle2[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_ATK_ABILITY}\nrestored its HP a little!");
+const u8 gText_PkmnsXWhippedUpSandstorm[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!");
+const u8 gText_PkmnsXIntensifiedSun[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nintensified the sun’s rays!");
+const u8 gText_PkmnsXPreventsYLoss[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!");
+const u8 gText_PkmnsXInfatuatedY[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\ninfatuated {B_ATK_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnsXMadeYIneffective[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} ineffective!");
+const u8 gText_PkmnsXCuredYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!");
+const u8 gText_ItSuckedLiquidOoze[] = _("It sucked up the\nLIQUID OOZE!");
+const u8 gText_PkmnTransformed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!");
+const u8 gText_PkmnsXTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\ntook the attack!");
+const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}’s {B_LAST_ABILITY}\nprevents switching!\p");
+const u8 gText_PreventedFromWorking[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}’s\l{B_BUFF1} from working!");
+const u8 gText_PkmnsXMadeItIneffective[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!");
+const u8 gText_PkmnsXPreventsFlinching[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_EFF_ABILITY}\nprevents flinching!");
+const u8 gText_PkmnsXPreventsYsZ[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_ATK_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}’s\l{B_DEF_ABILITY} from working!");
+const u8 gText_PkmnsXCuredItsYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!");
+const u8 gText_PkmnsXHadNoEffectOnY[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!");
+const u8 gText_StatSharply[] = _("sharply ");
+const u8 gText_StatRose[] = _("rose!");
+const u8 gText_StatHarshly[] = _("harshly ");
+const u8 gText_StatFell[] = _("fell!");
+const u8 gText_PkmnsStatChanged[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}");
+const u8 gText_PkmnsStatChanged2[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}");
+const u8 gText_UsingXTheYOfZN[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}");
+const u8 gText_PkmnsStatChanged3[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}");
+const u8 gText_PkmnsStatChanged4[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}");
+const u8 gText_StatsWontIncrease2[] = _("{B_ATK_NAME_WITH_PREFIX}’s stats won’t\ngo any higher!");
+const u8 gText_StatsWontDecrease2[] = _("{B_DEF_NAME_WITH_PREFIX}’s stats won’t\ngo any lower!");
+const u8 gText_CriticalHit[] = _("A critical hit!");
+const u8 gText_OneHitKO[] = _("It’s a one-hit KO!");
+const u8 gText_123Poof[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof!\p");
+const u8 gText_AndEllipsis[] = _("And…\p");
+const u8 gText_HMMovesCantBeForgotten[] = _("HM moves can’t be\nforgotten now.\p");
+const u8 gText_NotVeryEffective[] = _("It’s not very effective…");
+const u8 gText_SuperEffective[] = _("It’s super effective!");
+const u8 gText_GotAwaySafely[] = _("{PLAY_SE 0x0011}Got away safely!\p");
+const u8 gText_PkmnFledUsingIts[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p");
+const u8 gText_PkmnFledUsing[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p");
+const u8 gText_WildPkmnFled[] = _("{PLAY_SE 0x0011}Wild {B_BUFF1} fled!");
+const u8 gText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_20}!");
+const u8 gText_TwoLinkTrainersDefeated[] = _("Player beat {B_20}\nand {B_21}!");
+const u8 gText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_20}!");
+const u8 gText_PlayerLostToTwo[] = _("Player lost to {B_20}\nand {B_21}!");
+const u8 gText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_20}!");
+const u8 gText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_20} and {B_21}!");
+const u8 gText_WildFled[] = _("{PLAY_SE 0x0011}{B_20} fled!");
+const u8 gText_TwoWildFled[] = _("{PLAY_SE 0x0011}{B_20} and\n{B_21} fled!");
+const u8 gText_NoRunningFromTrainers[] = _("No! There’s no running\nfrom a TRAINER battle!\p");
+const u8 gText_CantEscape[] = _("Can’t escape!\p");
+const u8 gText_DontLeaveBirch[] = _("PROF. BIRCH: Don’t leave me like this!\p");
+const u8 gText_ButNothingHappened[] = _("But nothing happened!");
+const u8 gText_ButItFailed[] = _("But it failed!");
+const u8 gText_ItHurtConfusion[] = _("It hurt itself in its\nconfusion!");
+const u8 gText_MirrorMoveFailed[] = _("The MIRROR MOVE failed!");
+const u8 gText_StartedToRain[] = _("It started to rain!");
+const u8 gText_DownpourStarted[] = _("A downpour started!");
+const u8 gText_RainContinues[] = _("Rain continues to fall.");
+const u8 gText_DownpourContinues[] = _("The downpour continues.");
+const u8 gText_RainStopped[] = _("The rain stopped.");
+const u8 gText_SandstormBrewed[] = _("A sandstorm brewed!");
+const u8 gText_SandstormRages[] = _("The sandstorm rages.");
+const u8 gText_SandstormSubsided[] = _("The sandstorm subsided.");
+const u8 gText_SunlightGotBright[] = _("The sunlight got bright!");
+const u8 gText_SunlightStrong[] = _("The sunlight is strong.");
+const u8 gText_SunlightFaded[] = _("The sunlight faded.");
+const u8 gText_StartedHail[] = _("It started to hail!");
+const u8 gText_HailContinues[] = _("Hail continues to fall.");
+const u8 gText_HailStopped[] = _("The hail stopped.");
+const u8 gText_FailedToSpitUp[] = _("But it failed to SPIT UP\na thing!");
+const u8 gText_FailedToSwallow[] = _("But it failed to SWALLOW\na thing!");
+const u8 gText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!");
+const u8 gText_StatChangesGone[] = _("All stat changes were\neliminated!");
+const u8 gText_CoinsScattered[] = _("Coins scattered everywhere!");
+const u8 gText_TooWeakForSubstitute[] = _("It was too weak to make\na SUBSTITUTE!");
+const u8 gText_SharedPain[] = _("The battlers shared\ntheir pain!");
+const u8 gText_BellChimed[] = _("A bell chimed!");
+const u8 gText_FaintInThree[] = _("All affected POKéMON will\nfaint in three turns!");
+const u8 gText_NoPPLeft[] = _("There’s no PP left for\nthis move!\p");
+const u8 gText_ButNoPPLeft[] = _("But there was no PP left\nfor the move!");
+const u8 gText_PkmnIgnoresAsleep[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders while asleep!");
+const u8 gText_PkmnIgnoredOrders[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders!");
+const u8 gText_PkmnBeganToNap[] = _("{B_ATK_NAME_WITH_PREFIX} began to nap!");
+const u8 gText_PkmnLoafing[] = _("{B_ATK_NAME_WITH_PREFIX} is\nloafing around!");
+const u8 gText_PkmnWontObey[] = _("{B_ATK_NAME_WITH_PREFIX} won’t\nobey!");
+const u8 gText_PkmnTurnedAway[] = _("{B_ATK_NAME_WITH_PREFIX} turned away!");
+const u8 gText_PkmnPretendNotNotice[] = _("{B_ATK_NAME_WITH_PREFIX} pretended\nnot to notice!");
+const u8 gText_EnemyAboutToSwitchPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\nabout to use {B_BUFF2}.\pWill {B_PLAYER_NAME} change\nPOKéMON?");
+const u8 gText_PkmnLearnedMove2[] = _("{B_ATK_NAME_WITH_PREFIX} learned\n{B_BUFF1}!");
+const u8 gText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p");
+const u8 gText_CreptCloser[] = _("{B_PLAYER_NAME} crept closer to\n{B_OPPONENT_MON1_NAME}!");
+const u8 gText_CantGetCloser[] = _("{B_PLAYER_NAME} can’t get any closer!");
+const u8 gText_PkmnWatchingCarefully[] = _("{B_OPPONENT_MON1_NAME} is watching\ncarefully!");
+const u8 gText_PkmnCuriousAboutX[] = _("{B_OPPONENT_MON1_NAME} is curious about\nthe {B_BUFF1}!");
+const u8 gText_PkmnEnthralledByX[] = _("{B_OPPONENT_MON1_NAME} is enthralled by\nthe {B_BUFF1}!");
+const u8 gText_PkmnIgnoredX[] = _("{B_OPPONENT_MON1_NAME} completely ignored\nthe {B_BUFF1}!");
+const u8 gText_ThrewPokeblockAtPkmn[] = _("{B_PLAYER_NAME} threw a {POKEBLOCK}\nat the {B_OPPONENT_MON1_NAME}!");
+const u8 gText_OutOfSafariBalls[] = _("{PLAY_SE 0x0049}ANNOUNCER: You’re out of\nSAFARI BALLS! Game over!\p");
+const u8 gText_OpponentMon1Appeared[] = _("{B_OPPONENT_MON1_NAME} appeared!\p");
+const u8 gText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
+const u8 gText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
+const u8 gText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}");
+const u8 gText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p");
+const u8 gText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p");
+const u8 gText_LinkTrainerWantsToBattle[] = _("{B_20}\nwants to battle!");
+const u8 gText_TwoLinkTrainersWantToBattle[] = _("{B_20} and {B_21}\nwant to battle!");
+const u8 gText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!");
+const u8 gText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!");
+const u8 gText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!");
+const u8 gText_LinkTrainerSentOutPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME}!");
+const u8 gText_LinkTrainerSentOutTwoPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!");
+const u8 gText_TwoLinkTrainersSentOutPkmn[] = _("{B_20} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_21} sent out {B_LINK_OPPONENT_MON2_NAME}!");
+const u8 gText_LinkTrainerSentOutPkmn2[] = _("{B_20} sent out\n{B_BUFF1}!");
+const u8 gText_LinkTrainerMultiSentOutPkmn[] = _("{B_22} sent out\n{B_BUFF1}!");
+const u8 gText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!");
+const u8 gText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!");
+const u8 gText_GoPkmn2[] = _("Go! {B_BUFF1}!");
+const u8 gText_DoItPkmn[] = _("Do it! {B_BUFF1}!");
+const u8 gText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!");
+const u8 gText_YourFoesWeakGetEmPkmn[] = _("Your foe’s weak!\nGet ’em, {B_BUFF1}!");
+const u8 gText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_1F} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!");
+const u8 gText_PkmnThatsEnough[] = _("{B_BUFF1}, that’s enough!\nCome back!");
+const u8 gText_PkmnComeBack[] = _("{B_BUFF1}, come back!");
+const u8 gText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!");
+const u8 gText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!");
+const u8 gText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!");
+const u8 gText_LinkTrainer1WithdrewPkmn[] = _("{B_20} withdrew\n{B_BUFF1}!");
+const u8 gText_LinkTrainer2WithdrewPkmn[] = _("{B_22} withdrew\n{B_BUFF1}!");
+const u8 gText_WildPkmnPrefix[] = _("Wild ");
+const u8 gText_FoePkmnPrefix[] = _("Foe ");
+const u8 gText_EmptyString8[] = _( "");
+const u8 gText_FoePkmnPrefix2[] = _("Foe");
+const u8 gText_AllyPkmnPrefix[] = _("Ally");
+const u8 gText_FoePkmnPrefix3[] = _("Foe");
+const u8 gText_AllyPkmnPrefix2[] = _("Ally");
+const u8 gText_FoePkmnPrefix4[] = _("Foe");
+const u8 gText_AllyPkmnPrefix3[] = _("Ally");
+const u8 gText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF2}");
+const u8 gText_ExclamationMark[] = _("!");
+const u8 gText_ExclamationMark2[] = _("!");
+const u8 gText_ExclamationMark3[] = _("!");
+const u8 gText_ExclamationMark4[] = _("!");
+const u8 gText_ExclamationMark5[] = _("!");
+const u8 gText_HP2[] = _("HP");
+const u8 gText_Attack2[] = _("ATTACK");
+const u8 gText_Defense2[] = _("DEFENSE");
+const u8 gText_Speed[] = _("SPEED");
+const u8 gText_SpAtk2[] = _("SP. ATK");
+const u8 gText_SpDef2[] = _("SP. DEF");
+const u8 gText_Accuracy[] = _("accuracy");
+const u8 gText_Evasiveness[] = _("evasiveness");
+
+const u8 * const gStatNamesTable[] =
+{
+ gText_HP2, gText_Attack2, gText_Defense2,
+ gText_Speed, gText_SpAtk2, gText_SpDef2,
+ gText_Accuracy, gText_Evasiveness
+};
+
+const u8 gText_PokeblockWasTooSpicy[] = _("was too spicy!");
+const u8 gText_PokeblockWasTooDry[] = _("was too dry!");
+const u8 gText_PokeblockWasTooSweet[] = _("was too sweet!");
+const u8 gText_PokeblockWasTooBitter[] = _("was too bitter!");
+const u8 gText_PokeblockWasTooSour[] = _("was too sour!");
+
+const u8 * const gPokeblockWasTooXStringTable[] =
+{
+ gText_PokeblockWasTooSpicy, gText_PokeblockWasTooDry,
+ gText_PokeblockWasTooSweet, gText_PokeblockWasTooBitter,
+ gText_PokeblockWasTooSour
+};
+
+const u8 gText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!");
+const u8 gText_WallyUsedItem[] = _("WALLY used\n{B_LAST_ITEM}!");
+const u8 gText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!");
+const u8 gText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!");
+const u8 gText_DontBeAThief[] = _("Don’t be a thief!");
+const u8 gText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can’t be caught!");
+const u8 gText_YouMissedPkmn[] = _("You missed the POKéMON!");
+const u8 gText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!");
+const u8 gText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!");
+const u8 gText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!");
+const u8 gText_ShootSoClose[] = _("Shoot!\nIt was so close, too!");
+const u8 gText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}\p");
+const u8 gText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}{PAUSE 127}");
+const u8 gText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?");
+const u8 gText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC.");
+const u8 gText_Someones[] = _("someone’s");
+const u8 gText_Lanettes[] = _("LANETTE’s");
+const u8 gText_PkmnDataAddedToDex[] = _("{B_OPPONENT_MON1_NAME}’s data was\nadded to the POKéDEX.\p");
+const u8 gText_ItIsRaining[] = _("It is raining.");
+const u8 gText_SandstormIsRaging[] = _("A sandstorm is raging.");
+const u8 gText_BoxIsFull[] = _("The BOX is full!\nYou can’t catch any more!\p");
+const u8 gText_EnigmaBerry[] = _("ENIGMA BERRY");
+const u8 gText_BerrySuffix[] = _(" BERRY");
+const u8 gText_PkmnsItemCuredParalysis[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured paralysis!");
+const u8 gText_PkmnsItemCuredPoison[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured poison!");
+const u8 gText_PkmnsItemHealedBurn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nhealed its burn!");
+const u8 gText_PkmnsItemDefrostedIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ndefrosted it!");
+const u8 gText_PkmnsItemWokeIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nwoke it from its sleep!");
+const u8 gText_PkmnsItemSnappedOut[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nsnapped it out of confusion!");
+const u8 gText_PkmnsItemCuredProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!");
+const u8 gText_PkmnsItemNormalizedStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nnormalized its status!");
+const u8 gText_PkmnsItemRestoredHealth[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored health!");
+const u8 gText_PkmnsItemRestoredPP[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored {B_BUFF1}’s PP!");
+const u8 gText_PkmnsItemRestoredStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its status!");
+const u8 gText_PkmnsItemRestoredHPALittle[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its HP a little!");
+const u8 gText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM} allows the\nuse of only {B_CURRENT_MOVE}!\p");
+const u8 gText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!");
+const u8 gText_EmptyString3[] = _("");
+const u8 gText_YouThrowABallNowRight[] = _("You throw a BALL now, right?\nI… I’ll do my best!");
+
+// early declaration of strings
+const u8 gText_PkmnIncapableOfPower[];
+const u8 gText_GlintAppearsInEye[];
+const u8 gText_PkmnGettingIntoPosition[];
+const u8 gText_PkmnBeganGrowlingDeeply[];
+const u8 gText_PkmnEagerForMore[];
+const u8 gText_DefeatedOpponentByReferee[];
+const u8 gText_LostToOpponentByReferee[];
+const u8 gText_TiedOpponentByReferee[];
+const u8 gText_QuestionForfeitMatch[];
+const u8 gText_ForfeitedMatch[];
+const u8 gText_Trainer1WinText[];
+const u8 gText_Trainer2WinText[];
+const u8 gText_TwoInGameTrainersDefeated[];
+const u8 gText_Trainer2LoseText[];
+
+const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] =
+{
+ gText_Trainer1LoseText,
+ gText_PkmnGainedEXP,
+ gText_PkmnGrewToLv,
+ gText_PkmnLearnedMove,
+ gText_TryToLearnMove1,
+ gText_TryToLearnMove2,
+ gText_TryToLearnMove3,
+ gText_PkmnForgotMove,
+ gText_StopLearningMove,
+ gText_DidNotLearnMove,
+ gText_PkmnLearnedMove2,
+ gText_AttackMissed,
+ gText_PkmnProtectedItself,
+ gText_StatsWontIncrease2,
+ gText_AvoidedDamage,
+ gText_ItDoesntAffect,
+ gText_AttackerFainted,
+ gText_TargetFainted,
+ gText_PlayerGotMoney,
+ gText_PlayerWhiteout,
+ gText_PlayerWhiteout2,
+ gText_PreventsEscape,
+ gText_HitXTimes,
+ gText_PkmnFellAsleep,
+ gText_PkmnMadeSleep,
+ gText_PkmnAlreadyAsleep,
+ gText_PkmnAlreadyAsleep2,
+ gText_PkmnWasntAffected,
+ gText_PkmnWasPoisoned,
+ gText_PkmnPoisonedBy,
+ gText_PkmnHurtByPoison,
+ gText_PkmnAlreadyPoisoned,
+ gText_PkmnBadlyPoisoned,
+ gText_PkmnEnergyDrained,
+ gText_PkmnWasBurned,
+ gText_PkmnBurnedBy,
+ gText_PkmnHurtByBurn,
+ gText_PkmnWasFrozen,
+ gText_PkmnFrozenBy,
+ gText_PkmnIsFrozen,
+ gText_PkmnWasDefrosted,
+ gText_PkmnWasDefrosted2,
+ gText_PkmnWasDefrostedBy,
+ gText_PkmnWasParalyzed,
+ gText_PkmnWasParalyzedBy,
+ gText_PkmnIsParalyzed,
+ gText_PkmnIsAlreadyParalyzed,
+ gText_PkmnHealedParalysis,
+ gText_PkmnDreamEaten,
+ gText_StatsWontIncrease,
+ gText_StatsWontDecrease,
+ gText_TeamStoppedWorking,
+ gText_FoeStoppedWorking,
+ gText_PkmnIsConfused,
+ gText_PkmnHealedConfusion,
+ gText_PkmnWasConfused,
+ gText_PkmnAlreadyConfused,
+ gText_PkmnFellInLove,
+ gText_PkmnInLove,
+ gText_PkmnImmobilizedByLove,
+ gText_PkmnBlownAway,
+ gText_PkmnChangedType,
+ gText_PkmnFlinched,
+ gText_PkmnRegainedHealth,
+ gText_PkmnHPFull,
+ gText_PkmnRaisedSpDef,
+ gText_PkmnRaisedDef,
+ gText_PkmnCoveredByVeil,
+ gText_PkmnUsedSafeguard,
+ gText_PkmnSafeguardExpired,
+ gText_PkmnWentToSleep,
+ gText_PkmnSleptHealthy,
+ gText_PkmnWhippedWhirlwind,
+ gText_PkmnTookSunlight,
+ gText_PkmnLoweredHead,
+ gText_PkmnIsGlowing,
+ gText_PkmnFlewHigh,
+ gText_PkmnDugHole,
+ gText_PkmnSqueezedByBind,
+ gText_PkmnTrappedInVortex,
+ gText_PkmnWrappedBy,
+ gText_PkmnClamped,
+ gText_PkmnHurtBy,
+ gText_PkmnFreedFrom,
+ gText_PkmnCrashed,
+ gText_PkmnShroudedInMist,
+ gText_PkmnProtectedByMist,
+ gText_PkmnGettingPumped,
+ gText_PkmnHitWithRecoil,
+ gText_PkmnProtectedItself2,
+ gText_PkmnBuffetedBySandstorm,
+ gText_PkmnPeltedByHail,
+ gText_PkmnSeeded,
+ gText_PkmnEvadedAttack,
+ gText_PkmnSappedByLeechSeed,
+ gText_PkmnFastAsleep,
+ gText_PkmnWokeUp,
+ gText_PkmnUproarKeptAwake,
+ gText_PkmnWokeUpInUproar,
+ gText_PkmnCausedUproar,
+ gText_PkmnMakingUproar,
+ gText_PkmnCalmedDown,
+ gText_PkmnCantSleepInUproar,
+ gText_PkmnStockpiled,
+ gText_PkmnCantStockpile,
+ gText_PkmnCantSleepInUproar2,
+ gText_UproarKeptPkmnAwake,
+ gText_PkmnStayedAwakeUsing,
+ gText_PkmnStoringEnergy,
+ gText_PkmnUnleashedEnergy,
+ gText_PkmnFatigueConfusion,
+ gText_PkmnPickedUpItem,
+ gText_PkmnUnaffected,
+ gText_PkmnTransformedInto,
+ gText_PkmnMadeSubstitute,
+ gText_PkmnHasSubstitute,
+ gText_SubstituteDamaged,
+ gText_PkmnSubstituteFaded,
+ gText_PkmnMustRecharge,
+ gText_PkmnRageBuilding,
+ gText_PkmnMoveWasDisabled,
+ gText_PkmnMoveIsDisabled,
+ gText_PkmnMoveDisabledNoMore,
+ gText_PkmnGotEncore,
+ gText_PkmnEncoreEnded,
+ gText_PkmnTookAim,
+ gText_PkmnSketchedMove,
+ gText_PkmnTryingToTakeFoe,
+ gText_PkmnTookFoe,
+ gText_PkmnReducedPP,
+ gText_PkmnStoleItem,
+ gText_TargetCantEscapeNow,
+ gText_PkmnFellIntoNightmare,
+ gText_PkmnLockedInNightmare,
+ gText_PkmnLaidCurse,
+ gText_PkmnAfflictedByCurse,
+ gText_SpikesScattered,
+ gText_PkmnHurtBySpikes,
+ gText_PkmnIdentified,
+ gText_PkmnPerishCountFell,
+ gText_PkmnBracedItself,
+ gText_PkmnEnduredHit,
+ gText_MagnitudeStrength,
+ gText_PkmnCutHPMaxedAttack,
+ gText_PkmnCopiedStatChanges,
+ gText_PkmnGotFree,
+ gText_PkmnShedLeechSeed,
+ gText_PkmnBlewAwaySpikes,
+ gText_PkmnFledFromBattle,
+ gText_PkmnForesawAttack,
+ gText_PkmnTookAttack,
+ gText_PkmnAttack,
+ gText_PkmnCenterAttention,
+ gText_PkmnChargingPower,
+ gText_NaturePowerTurnedInto,
+ gText_PkmnStatusNormal,
+ gText_PkmnHasNoMovesLeft,
+ gText_PkmnSubjectedToTorment,
+ gText_PkmnCantUseMoveTorment,
+ gText_PkmnTighteningFocus,
+ gText_PkmnFellForTaunt,
+ gText_PkmnCantUseMoveTaunt,
+ gText_PkmnReadyToHelp,
+ gText_PkmnSwitchedItems,
+ gText_PkmnCopiedFoe,
+ gText_PkmnMadeWish,
+ gText_PkmnWishCameTrue,
+ gText_PkmnPlantedRoots,
+ gText_PkmnAbsorbedNutrients,
+ gText_PkmnAnchoredItself,
+ gText_PkmnWasMadeDrowsy,
+ gText_PkmnKnockedOff,
+ gText_PkmnSwappedAbilities,
+ gText_PkmnSealedOpponentMove,
+ gText_PkmnCantUseMoveSealed,
+ gText_PkmnWantsGrudge,
+ gText_PkmnLostPPGrudge,
+ gText_PkmnShroudedItself,
+ gText_PkmnMoveBounced,
+ gText_PkmnWaitsForTarget,
+ gText_PkmnSnatchedMove,
+ gText_PkmnMadeItRain,
+ gText_PkmnRaisedSpeed,
+ gText_PkmnProtectedBy,
+ gText_PkmnPreventsUsage,
+ gText_PkmnRestoredHPUsing,
+ gText_PkmnChangedTypeWith,
+ gText_PkmnPreventsParalysisWith,
+ gText_PkmnPreventsRomanceWith,
+ gText_PkmnPreventsPoisoningWith,
+ gText_PkmnPreventsConfusionWith,
+ gText_PkmnRaisedFirePowerWith,
+ gText_PkmnAnchorsItselfWith,
+ gText_PkmnCutsAttackWith,
+ gText_PkmnPreventsStatLossWith,
+ gText_PkmnHurtsWith,
+ gText_PkmnTraced,
+ gText_StatSharply,
+ gText_StatRose,
+ gText_StatHarshly,
+ gText_StatFell,
+ gText_PkmnsStatChanged,
+ gText_PkmnsStatChanged2,
+ gText_PkmnsStatChanged3,
+ gText_PkmnsStatChanged4,
+ gText_CriticalHit,
+ gText_OneHitKO,
+ gText_123Poof,
+ gText_AndEllipsis,
+ gText_NotVeryEffective,
+ gText_SuperEffective,
+ gText_GotAwaySafely,
+ gText_WildPkmnFled,
+ gText_NoRunningFromTrainers,
+ gText_CantEscape,
+ gText_DontLeaveBirch,
+ gText_ButNothingHappened,
+ gText_ButItFailed,
+ gText_ItHurtConfusion,
+ gText_MirrorMoveFailed,
+ gText_StartedToRain,
+ gText_DownpourStarted,
+ gText_RainContinues,
+ gText_DownpourContinues,
+ gText_RainStopped,
+ gText_SandstormBrewed,
+ gText_SandstormRages,
+ gText_SandstormSubsided,
+ gText_SunlightGotBright,
+ gText_SunlightStrong,
+ gText_SunlightFaded,
+ gText_StartedHail,
+ gText_HailContinues,
+ gText_HailStopped,
+ gText_FailedToSpitUp,
+ gText_FailedToSwallow,
+ gText_WindBecameHeatWave,
+ gText_StatChangesGone,
+ gText_CoinsScattered,
+ gText_TooWeakForSubstitute,
+ gText_SharedPain,
+ gText_BellChimed,
+ gText_FaintInThree,
+ gText_NoPPLeft,
+ gText_ButNoPPLeft,
+ gText_PlayerUsedItem,
+ gText_WallyUsedItem,
+ gText_TrainerBlockedBall,
+ gText_DontBeAThief,
+ gText_ItDodgedBall,
+ gText_YouMissedPkmn,
+ gText_PkmnBrokeFree,
+ gText_ItAppearedCaught,
+ gText_AarghAlmostHadIt,
+ gText_ShootSoClose,
+ gText_GotchaPkmnCaught,
+ gText_GotchaPkmnCaught2,
+ gText_GiveNicknameCaptured,
+ gText_PkmnSentToPC,
+ gText_PkmnDataAddedToDex,
+ gText_ItIsRaining,
+ gText_SandstormIsRaging,
+ gText_CantEscape2,
+ gText_PkmnIgnoresAsleep,
+ gText_PkmnIgnoredOrders,
+ gText_PkmnBeganToNap,
+ gText_PkmnLoafing,
+ gText_PkmnWontObey,
+ gText_PkmnTurnedAway,
+ gText_PkmnPretendNotNotice,
+ gText_EnemyAboutToSwitchPkmn,
+ gText_CreptCloser,
+ gText_CantGetCloser,
+ gText_PkmnWatchingCarefully,
+ gText_PkmnCuriousAboutX,
+ gText_PkmnEnthralledByX,
+ gText_PkmnIgnoredX,
+ gText_ThrewPokeblockAtPkmn,
+ gText_OutOfSafariBalls,
+ gText_PkmnsItemCuredParalysis,
+ gText_PkmnsItemCuredPoison,
+ gText_PkmnsItemHealedBurn,
+ gText_PkmnsItemDefrostedIt,
+ gText_PkmnsItemWokeIt,
+ gText_PkmnsItemSnappedOut,
+ gText_PkmnsItemCuredProblem,
+ gText_PkmnsItemRestoredHealth,
+ gText_PkmnsItemRestoredPP,
+ gText_PkmnsItemRestoredStatus,
+ gText_PkmnsItemRestoredHPALittle,
+ gText_ItemAllowsOnlyYMove,
+ gText_PkmnHungOnWithX,
+ gText_EmptyString3,
+ gText_PkmnsXPreventsBurns,
+ gText_PkmnsXBlocksY,
+ gText_PkmnsXRestoredHPALittle2,
+ gText_PkmnsXWhippedUpSandstorm,
+ gText_PkmnsXPreventsYLoss,
+ gText_PkmnsXInfatuatedY,
+ gText_PkmnsXMadeYIneffective,
+ gText_PkmnsXCuredYProblem,
+ gText_ItSuckedLiquidOoze,
+ gText_PkmnTransformed,
+ gText_ElectricityWeakened,
+ gText_FireWeakened,
+ gText_PkmnHidUnderwater,
+ gText_PkmnSprangUp,
+ gText_HMMovesCantBeForgotten,
+ gText_XFoundOneY,
+ gText_PlayerDefeatedLinkTrainerTrainer1,
+ gText_SoothingAroma,
+ gText_ItemsCantBeUsedNow,
+ gText_ForXCommaYZ,
+ gText_UsingXTheYOfZN,
+ gText_PkmnUsedXToGetPumped,
+ gText_PkmnsXMadeYUseless,
+ gText_PkmnTrappedBySandTomb,
+ gText_EmptyString4,
+ gText_ABoosted,
+ gText_PkmnsXIntensifiedSun,
+ gText_PkmnMakesGroundMiss,
+ gText_YouThrowABallNowRight,
+ gText_PkmnsXTookAttack,
+ gText_PkmnChoseXAsDestiny,
+ gText_PkmnLostFocus,
+ gText_UseNextPkmn,
+ gText_PkmnFledUsingIts,
+ gText_PkmnFledUsing,
+ gText_PkmnWasDraggedOut,
+ gText_PreventedFromWorking,
+ gText_PkmnsItemNormalizedStatus,
+ gText_Trainer1UsedItem,
+ gText_BoxIsFull,
+ gText_PkmnAvoidedAttack,
+ gText_PkmnsXMadeItIneffective,
+ gText_PkmnsXPreventsFlinching,
+ gText_PkmnAlreadyHasBurn,
+ gText_StatsWontDecrease2,
+ gText_PkmnsXBlocksY2,
+ gText_PkmnsXWoreOff,
+ gText_PkmnRaisedDefALittle,
+ gText_PkmnRaisedSpDefALittle,
+ gText_TheWallShattered,
+ gText_PkmnsXPreventsYsZ,
+ gText_PkmnsXCuredItsYProblem,
+ gText_AttackerCantEscape,
+ gText_PkmnObtainedX,
+ gText_PkmnObtainedX2,
+ gText_PkmnObtainedXYObtainedZ,
+ gText_ButNoEffect,
+ gText_PkmnsXHadNoEffectOnY,
+ gText_TwoInGameTrainersDefeated,
+ gText_Trainer2LoseText,
+ gText_PkmnIncapableOfPower,
+ gText_GlintAppearsInEye,
+ gText_PkmnGettingIntoPosition,
+ gText_PkmnBeganGrowlingDeeply,
+ gText_PkmnEagerForMore,
+ gText_DefeatedOpponentByReferee,
+ gText_LostToOpponentByReferee,
+ gText_TiedOpponentByReferee,
+ gText_QuestionForfeitMatch,
+ gText_ForfeitedMatch,
+ gText_PkmnTransferredSomeonesPC,
+ gText_PkmnTransferredLanettesPC,
+ gText_PkmnBoxSomeonesPCFull,
+ gText_PkmnBoxLanettesPCFull,
+ gText_Trainer1WinText,
+ gText_Trainer2WinText,
+};
+
+const u16 gMissStringIds[] =
+{
+ STRINGID_ATTACKMISSED, STRINGID_PKMNPROTECTEDITSELF,
+ STRINGID_PKMNAVOIDEDATTACK, STRINGID_AVOIDEDDAMAGE,
+ STRINGID_PKMNMAKESGROUNDMISS
+};
+
+const u16 gNoEscapeStringIds[] =
+{
+ STRINGID_CANTESCAPE, STRINGID_DONTLEAVEBIRCH, STRINGID_PREVENTSESCAPE,
+ STRINGID_CANTESCAPE2, STRINGID_ATTACKERCANTESCAPE
+};
+
+const u16 gMoveWeatherChangeStringIds[] =
+{
+ STRINGID_STARTEDTORAIN, STRINGID_DOWNPOURSTARTED, STRINGID_BUTITFAILED,
+ STRINGID_SANDSTORMBREWED, STRINGID_SUNLIGHTGOTBRIGHT, STRINGID_STARTEDHAIL
+};
+
+const u16 gSandStormHailContinuesStringIds[] =
+{
+ STRINGID_SANDSTORMRAGES, STRINGID_HAILCONTINUES
+};
+
+const u16 gSandStormHailDmgStringIds[] =
+{
+ STRINGID_PKMNBUFFETEDBYSANDSTORM, STRINGID_PKMNPELTEDBYHAIL
+};
+
+// todo once battlescripts are dumped
+const u16 gTooLazyToSplitThemStringIds[] =
+{
+ STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED, STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES,
+ STRINGID_RAINSTOPPED, STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF,
+ STRINGID_BUTITFAILED, STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF,
+ STRINGID_PKMNRAISEDDEFALITTLE, STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE,
+ STRINGID_PKMNCOVEREDBYVEIL, STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK,
+ STRINGID_ITDOESNTAFFECT, STRINGID_PKMNSAPPEDBYLEECHSEED, STRINGID_ITSUCKEDLIQUIDOOZE,
+ STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY, STRINGID_PKMNMAKINGUPROAR,
+ STRINGID_PKMNCALMEDDOWN, STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE,
+ STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR, STRINGID_FAILEDTOSWALLOW,
+ STRINGID_PKMNHPFULL, STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE,
+ STRINGID_PKMNSTAYEDAWAKEUSING, STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2,
+ STRINGID_STATSWONTINCREASE, STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN,
+ STRINGID_PKMNUSEDXTOGETPUMPED, STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4,
+ STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3, STRINGID_PKMNWHIPPEDWHIRLWIND,
+ STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING,
+ STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER,
+ STRINGID_PKMNSPRANGUP, STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY,
+ STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX,
+ STRINGID_PKMNTRAPPEDBYSANDTOMB, STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED,
+ STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED, STRINGID_PKMNTRANSFORMEDINTO,
+ STRINGID_BUTITFAILED, STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE,
+ STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY, STRINGID_PKMNWASPARALYZED,
+ STRINGID_PKMNWASPARALYZEDBY, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP,
+ STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY, STRINGID_PKMNWASFROZEN,
+ STRINGID_PKMNFROZENBY, STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY,
+ STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED, STRINGID_PKMNFELLINLOVE,
+ STRINGID_PKMNSXINFATUATEDY, STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE,
+ STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED, STRINGID_BELLCHIMED,
+ STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED,
+ STRINGID_SOOTHINGAROMA, STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY,
+ STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT,
+ STRINGID_SHOOTSOCLOSE, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+ STRINGID_SANDSTORMISRAGING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+ STRINGID_ITISRAINING, STRINGID_SUNLIGHTSTRONG, STRINGID_ITISRAINING,
+ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_PKMNLOAFING,
+ STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY, STRINGID_PKMNPRETENDNOTNOTICE,
+ STRINGID_PKMNINCAPABLEOFPOWER, STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER,
+ STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX,
+ STRINGID_PKMNSITEMSNAPPEDOUT, STRINGID_PKMNSITEMCUREDPARALYSIS, STRINGID_PKMNSITEMDEFROSTEDIT,
+ STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT,
+ STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS, STRINGID_PKMNSXPREVENTSBURNS,
+ STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPARALYSISWITH,
+ STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPOISONINGWITH,
+ STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNOBTAINEDX,
+ STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ, STRINGID_PKMNRAISEDFIREPOWERWITH,
+ STRINGID_PKMNSXMADEYINEFFECTIVE, STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC,
+ STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL,
+};
+
+const u16 gTrappingMoves[] =
+{
+ MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, 0xFFFF
+};
+
+const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!");
+const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{UNKNOWN_A}\p");
+const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p");
+const u8 gText_EllipsisQuestionMark[] = _("……?\p");
+const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_ACTIVE_NAME_WITH_PREFIX} do?");
+const u8 gText_WhatWillPkmnDo2[] = _("What will\n{B_PLAYER_NAME} do?");
+const u8 gText_WhatWillWallyDo[] = _("What will\nWALLY do?");
+const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…");
+const u8 gText_BattleMenu[] = _("FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN");
+const u8 gText_SafariZoneMenu[] = _("BALL{CLEAR_TO 56}{POKEBLOCK}\nGO NEAR{CLEAR_TO 56}RUN");
+const u8 gText_MoveInterfacePP[] = _("PP ");
+const u8 gText_MoveInterfaceType[] = _("TYPE/");
+const u8 gText_MoveInterfacePpType[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}PP\nTYPE/");
+const u8 gText_MoveInterfaceDynamicColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}");
+const u8 gText_WhichMoveToForget4[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Which move should\nbe forgotten?");
+const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Yes\nNo");
+const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Switch\nwhich?");
+const u8 gText_BattleSwitchWhich2[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}");
+const u8 gText_BattleSwitchWhich3[] = _("{UP_ARROW}");
+const u8 gText_BattleSwitchWhich4[] = _("{ESCAPE 4}");
+const u8 gText_BattleSwitchWhich5[] = _("-");
+
+const u8 gText_HP[] = _("HP");
+const u8 gText_Attack[] = _("ATTACK");
+const u8 gText_Defense[] = _("DEFENSE");
+const u8 gText_SpAtk[] = _("SP. ATK");
+const u8 gText_SpDef[] = _("SP. DEF");
+
+const u8 * const gStatNamesTable2[] =
+{
+ gText_HP, gText_SpAtk, gText_Attack,
+ gText_SpDef, gText_Defense, gText_Speed
+};
+
+const u8 gText_SafariBalls[] = _("{HIGHLIGHT DARK_GREY}SAFARI BALLS");
+const u8 gText_SafariBallLeft[] = _("{HIGHLIGHT DARK_GREY}Left: $" "{HIGHLIGHT DARK_GREY}");const u8 gText_Sleep[] = _( "sleep");const u8 gText_Poison[] = _( "poison");const u8 gText_Burn[] = _( "burn");const u8 gText_Paralysis[] = _( "paralysis");const u8 gText_Ice[] = _( "ice");const u8 gText_Confusion[] = _( "confusion");const u8 gText_Love[] = _( "love");
+const u8 gText_SpaceAndSpace[] = _(" and ");
+const u8 gText_CommaSpace[] = _(", ");
+const u8 gText_Space2[] = _(" ");
+const u8 gText_ScrollTextUp[] = _("\l");
+const u8 gText_NewLine[] = _("\n");
+const u8 gText_Are[] = _("are");
+const u8 gText_Are2[] = _("are");
+const u8 gText_BadEgg[] = _("Bad EGG");
+const u8 gText_BattleWallyName[] = _("WALLY");
+const u8 gText_Win[] = _("{HIGHLIGHT TRANSPARENT}Win");
+const u8 gText_Loss[] = _("{HIGHLIGHT TRANSPARENT}Loss");
+const u8 gText_Draw[] = _("{HIGHLIGHT TRANSPARENT}Draw");
+const u8 gText_SpaceIs[] = _(" is");
+const u8 gText_ApostropheS[] = _("’s");
+
+const u8 gText_UnknownMoveTypes[][17] =
+{
+ _("a NORMAL move"),
+ _("a FIGHTING move"),
+ _("a FLYING move"),
+ _("a POISON move"),
+ _("a GROUND move"),
+ _("a ROCK move"),
+ _("a BUG move"),
+ _("a GHOST move"),
+ _("a STEEL move"),
+ _("a ??? move"),
+ _("a FIRE move"),
+ _("a WATER move"),
+ _("a GRASS move"),
+ _("an ELECTRIC move"),
+ _("a PSYCHIC move"),
+ _("an ICE move"),
+ _("a DRAGON move"),
+ _("a DARK move")
+};
+
+const u8 gText_BattleTourney[] = _("BATTLE TOURNEY");
+const u8 gText_Round1[] = _("Round 1");
+const u8 gText_Round2[] = _("Round 2");
+const u8 gText_Semifinal[] = _("Semifinal");
+const u8 gText_Final[] = _("Final");
+
+const u8 * const gRoundsStringTable[] =
+{
+ gText_Round1,
+ gText_Round2,
+ gText_Semifinal,
+ gText_Final
+};
+
+const u8 gText_TheGreatNewHope[] = _("The great new hope!\p");
+const u8 gText_WillChampinshipDreamComeTrue[] = _("Will the championship dream come true?!\p");
+const u8 gText_AFormerChampion[] = _("A former CHAMPION!\p");
+const u8 gText_ThePreviousChampion[] = _("The previous CHAMPION!\p");
+const u8 gText_TheUnbeatenChampion[] = _("The unbeaten CHAMPION!\p");
+const u8 gText_PlayerMon1Name[] = _("{B_PLAYER_MON1_NAME}");
+const u8 gText_Vs[] = _("VS");
+const u8 gText_OpponentMon1Name[] = _("{B_OPPONENT_MON1_NAME}");
+const u8 gText_Mind[] = _("Mind");
+const u8 gText_Skill[] = _("Skill");
+const u8 gText_Body[] = _("Body");
+const u8 gText_Judgement[] = _("{B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2}");
+const u8 gText_TwoTrainersSentPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!\p{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_OPPONENT_MON2_NAME}!");
+const u8 gText_Trainer2SentOutPkmn[] = _("{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_BUFF1}!");
+const u8 gText_TwoTrainersWantToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwant to battle!\p");
+const u8 gText_InGamePartnerSentOutZGoN[] = _("{B_PARTNER_CLASS} {B_PARTNER_NAME} sent\nout {B_PLAYER_MON2_NAME}!\lGo, {B_PLAYER_MON1_NAME}!");
+const u8 gText_TwoInGameTrainersDefeated[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwere defeated!\p");
+const u8 gText_Trainer2LoseText[] = _("{B_TRAINER2_LOSE_TEXT}");
+const u8 gText_PkmnIncapableOfPower[] = _("{B_ATK_NAME_WITH_PREFIX} appears incapable\nof using its power!");
+const u8 gText_GlintAppearsInEye[] = _("A glint appears in\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s eyes!");
+const u8 gText_PkmnGettingIntoPosition[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is getting into\nposition!");
+const u8 gText_PkmnBeganGrowlingDeeply[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} began growling deeply!");
+const u8 gText_PkmnEagerForMore[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is eager for more!");
+
+const u16 gUnknown_085CCF0A[] =
+{
+ 0x016E, 0x016F, 0x0170, 0x0171
+};
+
+const u8 gText_RefIfNothingIsDecided[] = _("REFEREE: If nothing is decided in\n3 turns, we will go to judging!");
+const u8 gText_RefThatsIt[] = _("REFEREE: That’s it! We will now go to\njudging to determine the winner!");
+const u8 gText_RefJudgeMind[] = _("REFEREE: Judging category 1, Mind!\nThe POKéMON showing the most guts!\p");
+const u8 gText_RefJudgeSkill[] = _("REFEREE: Judging category 2, Skill!\nThe POKéMON using moves the best!\p");
+const u8 gText_RefJudgeBody[] = _("REFEREE: Judging category 3, Body!\nThe POKéMON with the most vitality!\p");
+const u8 gText_RefJudgement1[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_PLAYER_NAME}’s {B_PLAYER_MON1_NAME}!\p");
+const u8 gText_RefJudgement2[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_TRAINER1_NAME}’s {B_OPPONENT_MON1_NAME}!\p");
+const u8 gText_RefJudgement3[] = _("REFEREE: Judgment: 3 to 3!\nWe have a draw!\p");
+const u8 gText_DefeatedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} defeated the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE’s decision!");
+const u8 gText_LostToOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} lost to the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE’s decision!");
+const u8 gText_TiedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} tied the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE’s decision!");
+const u8 gText_RefCommenceBattle[] = _("REFEREE: {B_PLAYER_MON1_NAME} VS {B_OPPONENT_MON1_NAME}!\nCommence battling!");
+
+const u8 * const gRefereeStringsTable[] =
+{
+ gText_RefIfNothingIsDecided,
+ gText_RefThatsIt,
+ gText_RefJudgeMind,
+ gText_RefJudgeSkill,
+ gText_RefJudgeBody,
+ gText_RefJudgement1,
+ gText_RefJudgement2,
+ gText_RefJudgement3,
+ gText_RefCommenceBattle,
+};
+
+const u8 gText_QuestionForfeitMatch[] = _("Would you like to forfeit the match\nand quit now?");
+const u8 gText_ForfeitedMatch[] = _("{B_PLAYER_NAME} forfeited the match!");
+const u8 gText_Trainer1WinText[] = _("{B_TRAINER1_WIN_TEXT}");
+const u8 gText_Trainer2WinText[] = _("{B_TRAINER2_WIN_TEXT}");
+const u8 gText_Trainer1Fled[] = _( "{PLAY_SE 0x0011}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!");
+const u8 gText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!");
+const u8 gText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!");
+const u8 gText_RecordBattleToPass[] = _("Would you like to record your battle\non your FRONTIER PASS?");
+const u8 gText_BattleRecordedOnPass[] = _("{B_PLAYER_NAME}’s battle result was recorded\non the FRONTIER PASS.");
+const u8 gText_LinkTrainerWantsToBattlePause[] = _("{B_20}\nwants to battle!{PAUSE 49}");
+const u8 gText_TwoLinkTrainersWantToBattlePause[] = _("{B_20} and {B_21}\nwant to battle!{PAUSE 49}");
+
+static const u16 sUnknownMoveTable[] =
+{
+ MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_GROWTH,
+ MOVE_HARDEN, MOVE_MINIMIZE, MOVE_SMOKESCREEN,
+ MOVE_WITHDRAW, MOVE_DEFENSE_CURL, MOVE_EGG_BOMB,
+ MOVE_SMOG, MOVE_BONE_CLUB, MOVE_FLASH, MOVE_SPLASH,
+ MOVE_ACID_ARMOR, MOVE_BONEMERANG, MOVE_REST, MOVE_SHARPEN,
+ MOVE_SUBSTITUTE, MOVE_MIND_READER, MOVE_SNORE,
+ MOVE_PROTECT, MOVE_SPIKES, MOVE_ENDURE, MOVE_ROLLOUT,
+ MOVE_SWAGGER, MOVE_SLEEP_TALK, MOVE_HIDDEN_POWER,
+ MOVE_PSYCH_UP, MOVE_EXTREME_SPEED, MOVE_FOLLOW_ME,
+ MOVE_TRICK, MOVE_ASSIST, MOVE_INGRAIN, MOVE_KNOCK_OFF,
+ MOVE_CAMOUFLAGE, MOVE_ASTONISH, MOVE_ODOR_SLEUTH,
+ MOVE_GRASS_WHISTLE, MOVE_SHEER_COLD, MOVE_MUDDY_WATER,
+ MOVE_IRON_DEFENSE, MOVE_BOUNCE, MOVE_NONE,
+
+ MOVE_TELEPORT, MOVE_RECOVER, MOVE_BIDE, MOVE_AMNESIA,
+ MOVE_FLAIL, MOVE_TAUNT, MOVE_BULK_UP, MOVE_NONE,
+
+ MOVE_MEDITATE, MOVE_AGILITY, MOVE_MIMIC, MOVE_DOUBLE_TEAM,
+ MOVE_BARRAGE, MOVE_TRANSFORM, MOVE_STRUGGLE, MOVE_SCARY_FACE,
+ MOVE_CHARGE, MOVE_WISH, MOVE_BRICK_BREAK, MOVE_YAWN,
+ MOVE_FEATHER_DANCE, MOVE_TEETER_DANCE, MOVE_MUD_SPORT,
+ MOVE_FAKE_TEARS, MOVE_WATER_SPORT, MOVE_CALM_MIND, MOVE_NONE,
+
+ MOVE_POUND, MOVE_SCRATCH, MOVE_VICE_GRIP,
+ MOVE_WING_ATTACK, MOVE_FLY, MOVE_BIND, MOVE_SLAM,
+ MOVE_HORN_ATTACK, MOVE_WRAP, MOVE_THRASH, MOVE_TAIL_WHIP,
+ MOVE_LEER, MOVE_BITE, MOVE_GROWL, MOVE_ROAR,
+ MOVE_SING, MOVE_PECK, MOVE_ABSORB, MOVE_STRING_SHOT,
+ MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_DIG, MOVE_TOXIC,
+ MOVE_SCREECH, MOVE_METRONOME, MOVE_LICK, MOVE_CLAMP,
+ MOVE_CONSTRICT, MOVE_POISON_GAS, MOVE_BUBBLE,
+ MOVE_SLASH, MOVE_SPIDER_WEB, MOVE_NIGHTMARE, MOVE_CURSE,
+ MOVE_FORESIGHT, MOVE_CHARM, MOVE_ATTRACT, MOVE_ROCK_SMASH,
+ MOVE_UPROAR, MOVE_SPIT_UP, MOVE_SWALLOW, MOVE_TORMENT,
+ MOVE_FLATTER, MOVE_ROLE_PLAY, MOVE_ENDEAVOR, MOVE_TICKLE,
+ MOVE_COVET, MOVE_NONE
+};
+
+static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS, EOS, 0, 0};
+
+static const u8 gUnknown_085CD42C[] =
+{
+ 0xFF, 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0xF, 0x6, 0x0, 0x0, 0xFF, 0x1,
+ 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, 0xF, 0x6, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0,
+ 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0,
+ 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD,
+ 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE,
+ 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF,
+ 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0,
+ 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE,
+ 0x1, 0x2, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0, 0xEE, 0x7, 0x0,
+ 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0,
+ 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0,
+ 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD,
+ 0xE, 0xF, 0x0, 0x0, 0x0, 0x1, 0x20, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2,
+ 0x0, 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0,
+ 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0,
+ 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE,
+ 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1,
+ 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0xFF,
+ 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x1, 0x0,
+ 0x0, 0x0, 0x1, 0x0, 0x6, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0,
+ 0x6, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x6, 0x0, 0x0
+};
+
+static const u8 gUnknown_085CD54C[] =
+{
+ 0xFF, 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0xF, 0x6, 0x0, 0x0, 0xFF, 0x1,
+ 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, 0xF, 0x6, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0,
+ 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0,
+ 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD,
+ 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE,
+ 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF,
+ 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0,
+ 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE,
+ 0x1, 0x2, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0, 0xEE, 0x7, 0x0,
+ 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0,
+ 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0,
+ 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD,
+ 0xE, 0xF, 0x0, 0x0, 0x0, 0x1, 0x20, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2,
+ 0x0, 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x1, 0xE, 0xF, 0x0,
+ 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0,
+ 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE,
+ 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1,
+ 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0xFF,
+ 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0xFF, 0x1,
+ 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0x11, 0x1, 0x0, 0x1, 0x0, 0x0,
+ 0x1, 0x2, 0x1, 0x3, 0x0, 0x0
+};
+
+static const u8 * const gUnknown_085CD660[] =
+{
+ gUnknown_085CD42C, gUnknown_085CD54C
+};
+
+static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0};
+
+void BufferStringBattle(u16 stringID)
+{
+ s32 i;
+ const u8* stringPtr = NULL;
+
+ gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]);
+ gLastUsedItem = gStringInfo->lastItem;
+ gLastUsedAbility = gStringInfo->lastAbility;
+ gBattleScripting.bank = gStringInfo->scrActive;
+ *(&gBattleStruct->field_52) = gStringInfo->unk1605E;
+ *(&gBattleStruct->hpScale) = gStringInfo->hpScale;
+ gStringBank = gStringInfo->StringBank;
+ *(&gBattleStruct->stringMoveType) = gStringInfo->moveType;
+
+ for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ {
+ gAbilitiesPerBank[i] = gStringInfo->abilities[i];
+ }
+ for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
+ {
+ gBattleTextBuff1[i] = gStringInfo->textBuffs[0][i];
+ gBattleTextBuff2[i] = gStringInfo->textBuffs[1][i];
+ gBattleTextBuff3[i] = gStringInfo->textBuffs[2][i];
+ }
+
+ switch (stringID)
+ {
+ case STRINGID_INTROMSG: // first battle msg
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ {
+ stringPtr = gText_TwoTrainersWantToBattle;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ stringPtr = gText_TwoLinkTrainersWantToBattlePause;
+ else
+ stringPtr = gText_TwoLinkTrainersWantToBattle;
+ }
+ else
+ {
+ if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ stringPtr = gText_Trainer1WantsToBattle;
+ else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ stringPtr = gText_LinkTrainerWantsToBattlePause;
+ else
+ stringPtr = gText_LinkTrainerWantsToBattle;
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ stringPtr = gText_TwoTrainersWantToBattle;
+ else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ stringPtr = gText_TwoTrainersWantToBattle;
+ else
+ stringPtr = gText_Trainer1WantsToBattle;
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
+ stringPtr = gText_WildPkmnAppeared2;
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles
+ stringPtr = gText_TwoWildPkmnAppeared;
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ stringPtr = gText_WildPkmnAppearedPause;
+ else
+ stringPtr = gText_WildPkmnAppeared;
+ }
+ break;
+ case STRINGID_INTROSENDOUT: // poke first send-out
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ stringPtr = gText_InGamePartnerSentOutZGoN;
+ else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ stringPtr = gText_GoTwoPkmn;
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_LinkPartnerSentOutPkmnGoPkmn;
+ else
+ stringPtr = gText_GoTwoPkmn;
+ }
+ else
+ {
+ stringPtr = gText_GoPkmn;
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ stringPtr = gText_TwoTrainersSentPkmn;
+ else if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ stringPtr = gText_TwoTrainersSentPkmn;
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_TwoLinkTrainersSentOutPkmn;
+ else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ stringPtr = gText_LinkTrainerSentOutTwoPkmn;
+ else
+ stringPtr = gText_Trainer1SentOutTwoPkmn;
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
+ stringPtr = gText_Trainer1SentOutPkmn;
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ stringPtr = gText_Trainer1SentOutPkmn;
+ else
+ stringPtr = gText_LinkTrainerSentOutPkmn;
+ }
+ }
+ break;
+ case STRINGID_RETURNMON: // sending poke to ball msg
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ if (*(&gBattleStruct->hpScale) == 0)
+ stringPtr = gText_PkmnThatsEnough;
+ else if (*(&gBattleStruct->hpScale) == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ stringPtr = gText_PkmnComeBack;
+ else if (*(&gBattleStruct->hpScale) == 2)
+ stringPtr = gText_PkmnOkComeBack;
+ else
+ stringPtr = gText_PkmnGoodComeBack;
+ }
+ else
+ {
+ if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_800 || gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_LinkTrainer2WithdrewPkmn;
+ else
+ stringPtr = gText_LinkTrainer1WithdrewPkmn;
+ }
+ else
+ {
+ stringPtr = gText_Trainer1WithdrewPkmn;
+ }
+ }
+ break;
+ case STRINGID_SWITCHINMON: // switch-in msg
+ if (GetBankSide(gBattleScripting.bank) == SIDE_PLAYER)
+ {
+ if (*(&gBattleStruct->hpScale) == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ stringPtr = gText_GoPkmn2;
+ else if (*(&gBattleStruct->hpScale) == 1)
+ stringPtr = gText_DoItPkmn;
+ else if (*(&gBattleStruct->hpScale) == 2)
+ stringPtr = gText_GoForItPkmn;
+ else
+ stringPtr = gText_YourFoesWeakGetEmPkmn;
+ }
+ else
+ {
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ {
+ if (gBattleScripting.bank == 1)
+ stringPtr = gText_Trainer1SentOutPkmn2;
+ else
+ stringPtr = gText_Trainer2SentOutPkmn;
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_LinkTrainerMultiSentOutPkmn;
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ stringPtr = gText_Trainer1SentOutPkmn2;
+ else
+ stringPtr = gText_LinkTrainerSentOutPkmn2;
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ {
+ if (gBattleScripting.bank == 1)
+ stringPtr = gText_Trainer1SentOutPkmn2;
+ else
+ stringPtr = gText_Trainer2SentOutPkmn;
+ }
+ else
+ {
+ stringPtr = gText_Trainer1SentOutPkmn2;
+ }
+ }
+ }
+ break;
+ case STRINGID_USEDMOVE: // pokemon used a move msg
+ sub_814F8F8(gBattleTextBuff1); // buff1 doesn't appear in the string, leftover from japanese move names?
+
+ if (gStringInfo->currentMove > LAST_MOVE_INDEX)
+ StringCopy(gBattleTextBuff2, gText_UnknownMoveTypes[*(&gBattleStruct->stringMoveType)]);
+ else
+ StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]);
+
+ sub_814F950(gBattleTextBuff2);
+ stringPtr = gText_AttackerUsedX;
+ break;
+ case STRINGID_BATTLEEND: // battle end
+ if (gBattleTextBuff1[0] & BATTLE_OUTCOME_BIT_x80)
+ {
+ gBattleTextBuff1[0] &= ~(BATTLE_OUTCOME_BIT_x80);
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT && gBattleTextBuff1[0] != BATTLE_DREW)
+ gBattleTextBuff1[0] ^= (BATTLE_LOST | BATTLE_WON);
+
+ if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW)
+ stringPtr = gText_GotAwaySafely;
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_TwoWildFled;
+ else
+ stringPtr = gText_WildFled;
+ }
+ else
+ {
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT && gBattleTextBuff1[0] != BATTLE_DREW)
+ gBattleTextBuff1[0] ^= (BATTLE_LOST | BATTLE_WON);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ stringPtr = gText_TwoInGameTrainersDefeated;
+ else
+ stringPtr = gText_TwoLinkTrainersDefeated;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gText_PlayerLostToTwo;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gText_PlayerBattledToDrawVsTwo;
+ break;
+ }
+ }
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ stringPtr = gText_PlayerDefeatedLinkTrainerTrainer1;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gText_PlayerLostAgainstTrainer1;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gText_PlayerBattledToDrawTrainer1;
+ break;
+ }
+ }
+ else
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ stringPtr = gText_PlayerDefeatedLinkTrainer;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gText_PlayerLostAgainstLinkTrainer;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gText_PlayerBattledToDrawLinkTrainer;
+ break;
+ }
+ }
+ }
+ break;
+ default: // load a string from the table
+ if (stringID >= BATTLESTRINGS_COUNT + BATTLESTRINGS_ID_ADDER)
+ {
+ gDisplayedStringBattle[0] = EOS;
+ return;
+ }
+ else
+ {
+ stringPtr = gBattleStringsTable[stringID - BATTLESTRINGS_ID_ADDER];
+ }
+ break;
+ }
+
+ BattleStringExpandPlaceholdersToDisplayedString(stringPtr);
+}
+
+u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src)
+{
+ BattleStringExpandPlaceholders(src, gDisplayedStringBattle);
+}
+
+static const u8* TryGetStatusString(u8* src)
+{
+ u32 i;
+ u8 status[8];
+ u32 chars1, chars2;
+ u8* statusPtr;
+
+ memcpy(status, sDummyWeirdStatusString, 8);
+
+ statusPtr = status;
+ for (i = 0; i < 8; i++)
+ {
+ if (*src == EOS)
+ break;
+ *statusPtr = *src;
+ src++;
+ statusPtr++;
+ }
+
+ chars1 = *(u32*)(&status[0]);
+ chars2 = *(u32*)(&status[4]);
+
+ for (i = 0; i < ARRAY_COUNT(gStatusConditionStringsTable); i++)
+ {
+ if (chars1 == *(u32*)(&gStatusConditionStringsTable[i][0][0])
+ && chars2 == *(u32*)(&gStatusConditionStringsTable[i][0][4]))
+ return gStatusConditionStringsTable[i][1];
+ }
+ return NULL;
+}
+
+#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
+ if (GetBankSide(bank) != SIDE_PLAYER) \
+ { \
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
+ toCpy = gText_FoePkmnPrefix; \
+ else \
+ toCpy = gText_WildPkmnPrefix; \
+ while (*toCpy != EOS) \
+ { \
+ dst[dstID] = *toCpy; \
+ dstID++; \
+ toCpy++; \
+ } \
+ GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
+ } \
+ else \
+ { \
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
+ } \
+ StringGetEnd10(text); \
+ toCpy = text;
+
+u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
+{
+ u32 dstID = 0; // if they used dstID, why not use srcID as well?
+ const u8* toCpy = NULL;
+ u8 text[30];
+ u8 multiplayerID;
+ s32 i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ multiplayerID = gUnknown_0203C7B4;
+ else
+ multiplayerID = GetMultiplayerId();
+
+ while (*src != EOS)
+ {
+ if (*src == PLACEHOLDER_BEGIN)
+ {
+ src++;
+ switch (*src)
+ {
+ case B_TXT_BUFF1:
+ if (gBattleTextBuff1[0] == B_BUFF_PLACEHOLDER_BEGIN)
+ {
+ ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gStringVar1);
+ toCpy = gStringVar1;
+ }
+ else
+ {
+ toCpy = TryGetStatusString(gBattleTextBuff1);
+ if (toCpy == NULL)
+ toCpy = gBattleTextBuff1;
+ }
+ break;
+ case B_TXT_BUFF2:
+ if (gBattleTextBuff2[0] == B_BUFF_PLACEHOLDER_BEGIN)
+ {
+ ExpandBattleTextBuffPlaceholders(gBattleTextBuff2, gStringVar2);
+ toCpy = gStringVar2;
+ }
+ else
+ toCpy = gBattleTextBuff2;
+ break;
+ case B_TXT_BUFF3:
+ if (gBattleTextBuff3[0] == B_BUFF_PLACEHOLDER_BEGIN)
+ {
+ ExpandBattleTextBuffPlaceholders(gBattleTextBuff3, gStringVar3);
+ toCpy = gStringVar3;
+ }
+ else
+ toCpy = gBattleTextBuff3;
+ break;
+ case B_TXT_COPY_VAR_1:
+ toCpy = gStringVar1;
+ break;
+ case B_TXT_COPY_VAR_2:
+ toCpy = gStringVar2;
+ break;
+ case B_TXT_COPY_VAR_3:
+ toCpy = gStringVar3;
+ break;
+ case B_TXT_PLAYER_MON1_NAME: // first player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(IDENTITY_PLAYER_MON1)]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(IDENTITY_OPPONENT_MON1)]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_PLAYER_MON2_NAME: // second player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(IDENTITY_PLAYER_MON2)]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(IDENTITY_OPPONENT_MON2)]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // attacker name with prefix, only bank 0/1
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker,
+ gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker))])
+ break;
+ case B_TXT_ATK_PARTNER_NAME: // attacker partner name
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker)) + 2]], MON_DATA_NICKNAME, text);
+ else
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker)) + 2]], MON_DATA_NICKNAME, text);
+
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker])
+ break;
+ case B_TXT_DEF_NAME_WITH_PREFIX: // target name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget])
+ break;
+ case B_TXT_EFF_NAME_WITH_PREFIX: // effect bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank])
+ break;
+ case B_TXT_ACTIVE_NAME_WITH_PREFIX: // active bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank])
+ break;
+ case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBattleScripting.bank, gBattlePartyID[gBattleScripting.bank])
+ break;
+ case B_TXT_CURRENT_MOVE: // current move name
+ if (gStringInfo->currentMove > LAST_MOVE_INDEX)
+ toCpy = gText_UnknownMoveTypes[gBattleStruct->stringMoveType];
+ else
+ toCpy = gMoveNames[gStringInfo->currentMove];
+ break;
+ case B_TXT_LAST_MOVE: // last used move name
+ if (gStringInfo->lastMove > LAST_MOVE_INDEX)
+ toCpy = gText_UnknownMoveTypes[gBattleStruct->stringMoveType];
+ else
+ toCpy = gMoveNames[gStringInfo->lastMove];
+ break;
+ case B_TXT_LAST_ITEM: // last used item
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (gLastUsedItem == ITEM_ENIGMA_BERRY)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ if ((gBattleScripting.multiplayerId != 0 && (gStringBank & BIT_SIDE))
+ || (gBattleScripting.multiplayerId == 0 && !(gStringBank & BIT_SIDE)))
+ {
+ StringCopy(text, gEnigmaBerries[gStringBank].name);
+ StringAppend(text, gText_BerrySuffix);
+ toCpy = text;
+ }
+ else
+ {
+ toCpy = gText_EnigmaBerry;
+ }
+ }
+ else
+ {
+ if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBank)
+ {
+ StringCopy(text, gEnigmaBerries[gStringBank].name);
+ StringAppend(text, gText_BerrySuffix);
+ toCpy = text;
+ }
+ else
+ toCpy = gText_EnigmaBerry;
+ }
+ }
+ else
+ {
+ CopyItemName(gLastUsedItem, text);
+ toCpy = text;
+ }
+ }
+ else
+ {
+ CopyItemName(gLastUsedItem, text);
+ toCpy = text;
+ }
+ break;
+ case B_TXT_LAST_ABILITY: // last used ability
+ toCpy = gAbilityNames[gLastUsedAbility];
+ break;
+ case B_TXT_ATK_ABILITY: // attacker ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]];
+ break;
+ case B_TXT_DEF_ABILITY: // target ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]];
+ break;
+ case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBattleScripting.bank]];
+ break;
+ case B_TXT_EFF_ABILITY: // effect bank ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]];
+ break;
+ case B_TXT_TRAINER1_CLASS: // trainer class name
+ if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
+ toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ toCpy = gTrainerClassNames[sub_8068BB0()];
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE)
+ toCpy = gTrainerClassNames[sub_81A4D00()];
+ else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ toCpy = gTrainerClassNames[GetFrontierOpponentClass(gTrainerBattleOpponent_A)];
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ toCpy = gTrainerClassNames[sub_81D5530(gTrainerBattleOpponent_A)];
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ toCpy = gTrainerClassNames[GetEreaderTrainerClassId()];
+ else
+ toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_A].trainerClass];
+ break;
+ case B_TXT_TRAINER1_NAME: // trainer1 name
+ if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
+ {
+ for (i = 0; i < (s32) ARRAY_COUNT(gBattleResources->secretBase->trainerName); i++)
+ text[i] = gBattleResources->secretBase->trainerName[i];
+ text[i] = EOS;
+ ConvertInternationalString(text, gBattleResources->secretBase->language);
+ toCpy = text;
+ }
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ {
+ toCpy = gLinkPlayers[multiplayerID ^ BIT_SIDE].name;
+ }
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE)
+ {
+ sub_81A4D50(text);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ GetFrontierTrainerName(text, gTrainerBattleOpponent_A);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D5554(text, gTrainerBattleOpponent_A);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ {
+ GetEreaderTrainerName(text);
+ toCpy = text;
+ }
+ else
+ {
+ toCpy = gTrainers[gTrainerBattleOpponent_A].trainerName;
+ }
+ break;
+ case B_TXT_1E: // link player name?
+ toCpy = gLinkPlayers[multiplayerID].name;
+ break;
+ case B_TXT_1F: // link partner name?
+ toCpy = gLinkPlayers[sub_806D864(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case B_TXT_20: // link opponent 1 name?
+ toCpy = gLinkPlayers[sub_806D864(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case B_TXT_21: // link opponent 2 name?
+ toCpy = gLinkPlayers[sub_806D864(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case B_TXT_22: // link scripting active name
+ toCpy = gLinkPlayers[sub_806D864(gBattleScripting.bank)].name;
+ break;
+ case B_TXT_PLAYER_NAME: // player name
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ toCpy = gLinkPlayers[0].name;
+ else
+ toCpy = gSaveBlock2Ptr->playerName;
+ break;
+ case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ sub_81A36D0(2, gTrainerBattleOpponent_A);
+ toCpy = gStringVar4;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D572C(4, gTrainerBattleOpponent_A);
+ toCpy = gStringVar4;
+ }
+ else
+ {
+ toCpy = GetTrainer1LoseText();
+ }
+ break;
+ case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ sub_81A36D0(1, gTrainerBattleOpponent_A);
+ toCpy = gStringVar4;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D572C(3, gTrainerBattleOpponent_A);
+ toCpy = gStringVar4;
+ }
+ break;
+ case B_TXT_26: // ?
+ HANDLE_NICKNAME_STRING_CASE(gBattleScripting.bank, *(&gBattleStruct->field_52))
+ break;
+ case B_TXT_PC_CREATOR_NAME: // lanette pc
+ if (FlagGet(SYS_PC_LANETTE))
+ toCpy = gText_Lanettes;
+ else
+ toCpy = gText_Someones;
+ break;
+ case B_TXT_ATK_PREFIX2:
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix2;
+ else
+ toCpy = gText_FoePkmnPrefix3;
+ break;
+ case B_TXT_DEF_PREFIX2:
+ if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix2;
+ else
+ toCpy = gText_FoePkmnPrefix3;
+ break;
+ case B_TXT_ATK_PREFIX1:
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix;
+ else
+ toCpy = gText_FoePkmnPrefix2;
+ break;
+ case B_TXT_DEF_PREFIX1:
+ if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix;
+ else
+ toCpy = gText_FoePkmnPrefix2;
+ break;
+ case B_TXT_ATK_PREFIX3:
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix3;
+ else
+ toCpy = gText_FoePkmnPrefix4;
+ break;
+ case B_TXT_DEF_PREFIX3:
+ if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix3;
+ else
+ toCpy = gText_FoePkmnPrefix4;
+ break;
+ case B_TXT_TRAINER2_CLASS:
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ toCpy = gTrainerClassNames[GetFrontierOpponentClass(gTrainerBattleOpponent_B)];
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ toCpy = gTrainerClassNames[sub_81D5530(gTrainerBattleOpponent_B)];
+ else
+ toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_B].trainerClass];
+ break;
+ case B_TXT_TRAINER2_NAME:
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ GetFrontierTrainerName(text, gTrainerBattleOpponent_B);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D5554(text, gTrainerBattleOpponent_B);
+ toCpy = text;
+ }
+ else
+ {
+ toCpy = gTrainers[gTrainerBattleOpponent_B].trainerName;
+ }
+ break;
+ case B_TXT_TRAINER2_LOSE_TEXT:
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ sub_81A36D0(2, gTrainerBattleOpponent_B);
+ toCpy = gStringVar4;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D572C(4, gTrainerBattleOpponent_B);
+ toCpy = gStringVar4;
+ }
+ else
+ {
+ toCpy = GetTrainer2LoseText();
+ }
+ break;
+ case B_TXT_TRAINER2_WIN_TEXT:
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ sub_81A36D0(1, gTrainerBattleOpponent_B);
+ toCpy = gStringVar4;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D572C(3, gTrainerBattleOpponent_B);
+ toCpy = gStringVar4;
+ }
+ break;
+ case B_TXT_PARTNER_CLASS:
+ toCpy = gTrainerClassNames[GetFrontierOpponentClass(gPartnerTrainerId)];
+ break;
+ case B_TXT_PARTNER_NAME:
+ GetFrontierTrainerName(text, gPartnerTrainerId);
+ toCpy = text;
+ break;
+ }
+
+ // missing if (toCpy != NULL) check
+ while (*toCpy != EOS)
+ {
+ dst[dstID] = *toCpy;
+ dstID++;
+ toCpy++;
+ }
+ if (*src == B_TXT_TRAINER1_LOSE_TEXT || *src == B_TXT_TRAINER2_LOSE_TEXT
+ || *src == B_TXT_TRAINER1_WIN_TEXT || *src == B_TXT_TRAINER2_WIN_TEXT)
+ {
+ dst[dstID] = EXT_CTRL_CODE_BEGIN;
+ dstID++;
+ dst[dstID] = 9;
+ dstID++;
+ }
+ }
+ else
+ {
+ dst[dstID] = *src;
+ dstID++;
+ }
+ src++;
+ }
+
+ dst[dstID] = *src;
+ dstID++;
+
+ return dstID;
+}
+
+// TODO: move these to a general header like util.h
+#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
+
+static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
+{
+ u32 srcID = 1;
+ u32 value = 0;
+ u8 text[12];
+ u16 hword;
+
+ *dst = EOS;
+ while (src[srcID] != B_BUFF_EOS)
+ {
+ switch (src[srcID])
+ {
+ case B_BUFF_STRING: // battle string
+ hword = ByteRead16(&src[srcID + 1]);
+ StringAppend(dst, gBattleStringsTable[hword - BATTLESTRINGS_ID_ADDER]);
+ srcID += 3;
+ break;
+ case B_BUFF_NUMBER: // int to string
+ switch (src[srcID + 1])
+ {
+ case 1:
+ value = src[srcID + 3];
+ break;
+ case 2:
+ value = ByteRead16(&src[srcID + 3]);
+ break;
+ case 4:
+ value = ByteRead32(&src[srcID + 3]);
+ break;
+ }
+ ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]);
+ srcID += src[srcID + 1] + 3;
+ break;
+ case B_BUFF_MOVE: // move name
+ StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]);
+ srcID += 3;
+ break;
+ case B_BUFF_TYPE: // type name
+ StringAppend(dst, gTypeNames[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix
+ if (GetBankSide(src[srcID + 1]) == SIDE_PLAYER)
+ {
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ StringAppend(dst, gText_FoePkmnPrefix);
+ else
+ StringAppend(dst, gText_WildPkmnPrefix);
+
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ }
+ StringGetEnd10(text);
+ StringAppend(dst, text);
+ srcID += 3;
+ break;
+ case B_BUFF_STAT: // stats
+ StringAppend(dst, gStatNamesTable[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case B_BUFF_SPECIES: // species name
+ GetSpeciesName(dst, ByteRead16(&src[srcID + 1]));
+ srcID += 3;
+ break;
+ case B_BUFF_MON_NICK: // poke nick without prefix
+ if (GetBankSide(src[srcID + 1]) == SIDE_PLAYER)
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
+ else
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
+ StringGetEnd10(dst);
+ srcID += 3;
+ break;
+ case B_BUFF_NEGATIVE_FLAVOUR: // flavour table
+ StringAppend(dst, gPokeblockWasTooXStringTable[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case B_BUFF_ABILITY: // ability names
+ StringAppend(dst, gAbilityNames[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case B_BUFF_ITEM: // item name
+ hword = ByteRead16(&src[srcID + 1]);
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (hword == ITEM_ENIGMA_BERRY)
+ {
+ if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBank)
+ {
+ StringCopy(dst, gEnigmaBerries[gStringBank].name);
+ StringAppend(dst, gText_BerrySuffix);
+ }
+ else
+ StringAppend(dst, gText_EnigmaBerry);
+ }
+ else
+ CopyItemName(hword, dst);
+ }
+ else
+ CopyItemName(hword, dst);
+ srcID += 3;
+ break;
+ }
+ }
+}
+
+static void sub_814F8F8(u8* textBuff)
+{
+ s32 counter = 0;
+ u32 i = 0;
+
+ while (counter != 4)
+ {
+ if (sUnknownMoveTable[i] == MOVE_NONE)
+ counter++;
+ if (sUnknownMoveTable[i++] == gStringInfo->currentMove)
+ break;
+ }
+
+ if (counter >= 0)
+ {
+ if (counter <= 2)
+ StringCopy(textBuff, gText_SpaceIs); // is
+ else if (counter <= 4)
+ StringCopy(textBuff, gText_ApostropheS); // 's
+ }
+}
+
+static void sub_814F950(u8* dst)
+{
+ s32 counter = 0;
+ s32 i = 0;
+
+ while (*dst != EOS)
+ dst++;
+
+ while (counter != 4)
+ {
+ if (sUnknownMoveTable[i] == MOVE_NONE)
+ counter++;
+ if (sUnknownMoveTable[i++] == gStringInfo->currentMove)
+ break;
+ }
+
+ switch (counter)
+ {
+ case 0:
+ StringCopy(dst, gText_ExclamationMark);
+ break;
+ case 1:
+ StringCopy(dst, gText_ExclamationMark2);
+ break;
+ case 2:
+ StringCopy(dst, gText_ExclamationMark3);
+ break;
+ case 3:
+ StringCopy(dst, gText_ExclamationMark4);
+ break;
+ case 4:
+ StringCopy(dst, gText_ExclamationMark5);
+ break;
+ }
+}
+
+void sub_814F9EC(const u8 *text, u8 arg1)
+{
+ const u8 *r8 = gUnknown_085CD660[gBattleScripting.field_24];
+ bool32 r9;
+ struct TextSubPrinter textSubPrinter;
+ u8 speed;
+
+ if (arg1 & 0x80)
+ {
+ arg1 &= ~(0x80);
+ r9 = FALSE;
+ }
+ else
+ {
+ FillWindowPixelBuffer(arg1, r8[12 * arg1]);
+ r9 = TRUE;
+ }
+
+ textSubPrinter.current_text_offset = text;
+ textSubPrinter.windowId = arg1;
+ textSubPrinter.fontId = r8[(12 * arg1) + 1];
+ textSubPrinter.x = r8[(12 * arg1) + 2];
+ textSubPrinter.y = r8[(12 * arg1) + 3];
+ textSubPrinter.currentX = textSubPrinter.x;
+ textSubPrinter.currentY = textSubPrinter.y;
+ textSubPrinter.letterSpacing = r8[(12 * arg1) + 4];
+ textSubPrinter.lineSpacing = r8[(12 * arg1) + 5];
+ textSubPrinter.fontColor_l = 0;
+ textSubPrinter.fontColor_h = r8[(12 * arg1) + 7];
+ textSubPrinter.bgColor = r8[(12 * arg1) + 8];
+ textSubPrinter.shadowColor = r8[(12 * arg1) + 9];
+
+ if (textSubPrinter.x == 0xFF)
+ {
+ s32 var2;
+ u32 var = sub_80397C4(gBattleScripting.field_24, arg1);
+ var2 = GetStringCenterAlignXOffsetWithLetterSpacing(textSubPrinter.fontId, textSubPrinter.current_text_offset, var, textSubPrinter.letterSpacing);
+ textSubPrinter.x = textSubPrinter.currentX = var2;
+ }
+
+ if (arg1 == 0x16)
+ gTextFlags.flag_1 = 0;
+ else
+ gTextFlags.flag_1 = 1;
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED))
+ gTextFlags.flag_2 = 1;
+ else
+ gTextFlags.flag_2 = 0;
+
+ if (arg1 == 0 || arg1 == 0x16)
+ {
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ speed = 1;
+ else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ speed = sRecordedBattleTextSpeeds[sub_8185FC4()];
+ else
+ speed = sav2_get_text_speed();
+
+ gTextFlags.flag_0 = 1;
+ }
+ else
+ {
+ speed = r8[(12 * arg1) + 6];
+ gTextFlags.flag_0 = 0;
+ }
+
+ AddTextPrinter(&textSubPrinter, speed, NULL);
+
+ if (r9)
+ {
+ PutWindowTilemap(arg1);
+ CopyWindowToVram(arg1, 3);
+ }
+}
+
+void SetPpNumbersPaletteInMoveSelection(void)
+{
+ struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
+ const u16 *palPtr = gUnknown_08D85620;
+ u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBank]],
+ chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBank]]);
+
+ gPlttBufferUnfaded[92] = palPtr[(var * 2) + 0];
+ gPlttBufferUnfaded[91] = palPtr[(var * 2) + 1];
+
+ CpuCopy16(&gPlttBufferUnfaded[92], &gPlttBufferFaded[92], sizeof(u16));
+ CpuCopy16(&gPlttBufferUnfaded[91], &gPlttBufferFaded[91], sizeof(u16));
+}
+
+u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp)
+{
+ if (maxPp == currentPp)
+ {
+ return 3;
+ }
+ else if (maxPp <= 2)
+ {
+ if (currentPp > 1)
+ return 3;
+ else
+ return 2 - currentPp;
+ }
+ else if (maxPp <= 7)
+ {
+ if (currentPp > 2)
+ return 3;
+ else
+ return 2 - currentPp;
+ }
+ else
+ {
+ if (currentPp == 0)
+ return 2;
+ if (currentPp <= maxPp / 4)
+ return 1;
+ if (currentPp > maxPp / 2)
+ return 3;
+ }
+
+ return 0;
+}
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
new file mode 100644
index 000000000..28357d984
--- /dev/null
+++ b/src/battle_script_commands.c
@@ -0,0 +1,11415 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_move_effects.h"
+#include "battle_message.h"
+#include "battle_ai_script_commands.h"
+#include "moves.h"
+#include "abilities.h"
+#include "item.h"
+#include "items.h"
+#include "hold_effects.h"
+#include "util.h"
+#include "pokemon.h"
+#include "calculate_base_damage.h"
+#include "rng.h"
+#include "battle_controllers.h"
+#include "species.h"
+#include "songs.h"
+#include "text.h"
+#include "sound.h"
+#include "pokedex.h"
+#include "recorded_battle.h"
+#include "window.h"
+#include "reshow_battle_screen.h"
+#include "main.h"
+#include "palette.h"
+#include "money.h"
+#include "bg.h"
+#include "string_util.h"
+#include "pokemon_icon.h"
+#include "pokemon_item_effects.h"
+#include "m4a.h"
+#include "mail.h"
+#include "event_data.h"
+#include "pokemon_storage_system.h"
+#include "task.h"
+#include "naming_screen.h"
+#include "battle_string_ids.h"
+
+// variables
+
+extern u8 gCritMultiplier;
+extern s32 gBattleMoveDamage;
+extern u32 gStatuses3[BATTLE_BANKS_COUNT];
+extern u32 gBattleTypeFlags;
+extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
+extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
+extern u8 gActiveBank;
+extern u32 gBattleExecBuffer;
+extern u8 gNoOfAllBanks;
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT];
+extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT];
+extern u16 gCurrentMove;
+extern u8 gLastUsedAbility;
+extern u16 gBattleWeather;
+extern u8 gStringBank;
+extern u8 gEffectBank;
+extern u8 gAbsentBankFlags;
+extern u8 gMultiHitCounter;
+extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
+extern u16 gSideAffecting[2];
+extern u16 gPauseCounterBattle;
+extern u16 gPaydayMoney;
+extern u16 gRandomTurnNumber;
+extern u8 gBattleOutcome;
+extern u8 gBattleTerrain;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern const u8* gBattlescriptCurrInstr;
+extern u8 gCurrMovePos;
+extern u8 gCurrentActionFuncId;
+extern u32 gHitMarker;
+extern u8 gBattleMoveFlags;
+extern u8 gBattleCommunication[];
+extern u16 gUnknown_02024250[4];
+extern u16 gUnknown_02024258[4];
+extern u16 gUnknown_02024260[4];
+extern u8 gUnknown_02024270[4];
+extern u8 gStringBank;
+extern u16 gDynamicBasePower;
+extern u16 gLastUsedItem;
+extern u16 gBattleMovePower;
+extern s32 gHpDealt;
+extern s32 gTakenDmg[BATTLE_BANKS_COUNT];
+extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT];
+extern u8 gSentPokesToOpponent[2];
+extern u8 gBank1;
+extern u16 gExpShareExp;
+extern u8 gLeveledUpInBattle;
+extern void (*gBattleMainFunc)(void);
+extern u8 gPlayerPartyCount;
+extern u16 gMoveToLearn;
+extern u16 gRandomMove;
+extern u8 gBankInMenu;
+extern u8 gActionForBanks[BATTLE_BANKS_COUNT];
+extern u8 gCurrentTurnActionNumber;
+extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
+extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
+extern u16 gPartnerTrainerId;
+extern u16 gLastUsedMove;
+extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT];
+extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
+extern u16 gTrainerBattleOpponent_A;
+extern u16 gTrainerBattleOpponent_B;
+extern u8 gUnknown_020241E9;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_BG3_X;
+extern struct MusicPlayerInfo gMPlay_BGM;
+
+struct TrainerMoney
+{
+ u8 classId;
+ u8 value;
+};
+
+extern const struct BattleMove gBattleMoves[];
+extern const struct BaseStats gBaseStats[];
+extern const u8 gTypeEffectiveness[];
+extern const u16 gMissStringIds[];
+extern const u16 gTrappingMoves[];
+extern const struct TrainerMoney gTrainerMoneyTable[];
+extern const u8* const gBattleScriptsForMoveEffects[];
+
+// functions
+extern void sub_81A5718(u8 bank); // battle frontier 2
+extern void sub_81A56B4(void); // battle frontier 2
+extern void sub_81BFA38(struct Pokemon* party, u8 monPartyId, u8 monCount, void (*callback)(void), u16 move); // pokemon summary screen
+extern u8 sub_81C1B94(void); // pokemon summary screen
+extern void IncrementGameStat(u8 statId); // rom_4
+extern void sub_81D388C(struct Pokemon* mon, void* statStoreLocation); // pokenav.s
+extern void sub_81D3640(u8 arg0, void* statStoreLocation1, void* statStoreLocation2, u8 arg3, u8 arg4, u8 arg5); // pokenav.s
+extern void sub_81D3784(u8 arg0, void* statStoreLocation1, u8 arg2, u8 arg3, u8 arg4); // pokenav.s
+extern u8* GetMonNickname(struct Pokemon* mon, u8* dst); // party_menu
+extern u8 sub_81A5258(u8* arg0); // battle frontier 2
+extern void sub_81A5BF8(void); // battle frontier 2
+extern void sub_81A5D44(void); // battle frontier 2
+extern void sub_81B8E80(u8 bank, u8, u8); // party menu
+extern bool8 sub_81B1250(void); // ?
+extern u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale); // battle interface
+extern bool8 InBattlePike(void);
+extern bool8 InBattlePyramid(void);
+extern u16 GetBattlePyramidPickupItemId(void);
+extern u8 sav1_map_get_light_level(void);
+extern u8 sub_813B21C(void);
+extern u16 get_unknown_box_id(void);
+extern void sub_80356D0(void);
+
+// BattleScripts
+extern const u8 BattleScript_MoveEnd[];
+extern const u8 BattleScript_NoPPForMove[];
+extern const u8 BattleScript_MagicCoatBounce[];
+extern const u8 BattleScript_TookAttack[];
+extern const u8 BattleScript_SnatchedMove[];
+extern const u8 BattleScript_Pausex20[];
+extern const u8 BattleScript_SubstituteFade[];
+extern const u8 BattleScript_HangedOnMsg[];
+extern const u8 BattleScript_OneHitKOMsg[];
+extern const u8 BattleScript_EnduredMsg[];
+extern const u8 BattleScript_PSNPrevention[];
+extern const u8 BattleScript_BRNPrevention[];
+extern const u8 BattleScript_PRLZPrevention[];
+extern const u8 BattleScript_FlinchPrevention[];
+extern const u8 BattleScript_StatUp[];
+extern const u8 BattleScript_StatDown[];
+extern const u8 BattleScript_NoItemSteal[];
+extern const u8 BattleScript_ItemSteal[];
+extern const u8 BattleScript_RapidSpinAway[];
+extern const u8 BattleScript_TargetPRLZHeal[];
+extern const u8 BattleScript_KnockedOff[];
+extern const u8 BattleScript_StickyHoldActivates[];
+extern const u8 BattleScript_AllStatsUp[];
+extern const u8 BattleScript_AtkDefDown[];
+extern const u8 BattleScript_SAtkDown2[];
+extern const u8 BattleScript_LevelUp[];
+extern const u8 BattleScript_WrapFree[];
+extern const u8 BattleScript_LeechSeedFree[];
+extern const u8 BattleScript_SpikesFree[];
+extern const u8 BattleScript_ButItFailed[];
+extern const u8 BattleScript_ObliviousPreventsAttraction[];
+extern const u8 BattleScript_MistProtected[];
+extern const u8 BattleScript_AbilityNoStatLoss[];
+extern const u8 BattleScript_AbilityNoSpecificStatLoss[];
+extern const u8 BattleScript_TrainerBallBlock[];
+extern const u8 BattleScript_WallyBallThrow[];
+extern const u8 BattleScript_SuccessBallThrow[];
+extern const u8 BattleScript_ShakeBallThrow[];
+extern const u8 BattleScript_FaintAttacker[];
+extern const u8 BattleScript_FaintTarget[];
+extern const u8 BattleScript_DestinyBondTakesLife[];
+extern const u8 BattleScript_GrudgeTakesPp[];
+extern const u8 BattleScript_RageIsBuilding[];
+extern const u8 BattleScript_DefrostedViaFireMove[];
+extern const u8 gUnknown_082DB87D[];
+extern const u8 gUnknown_082DAE90[];
+extern const u8 gUnknown_082DAE59[];
+extern const u8 gUnknown_082DAEC7[];
+extern const u8 BattleScript_MoveEffectSleep[];
+extern const u8 BattleScript_MoveEffectPoison[];
+extern const u8 BattleScript_MoveEffectBurn[];
+extern const u8 BattleScript_MoveEffectFreeze[];
+extern const u8 BattleScript_MoveEffectParalysis[];
+extern const u8 BattleScript_MoveEffectToxic[];
+extern const u8 BattleScript_MoveEffectConfusion[];
+extern const u8 BattleScript_MoveEffectUproar[];
+extern const u8 BattleScript_MoveEffectPayDay[];
+extern const u8 BattleScript_MoveEffectWrap[];
+extern const u8 BattleScript_MoveEffectRecoil33[];
+extern const u8 BattleScript_DampStopsExplosion[];
+extern const u8 BattleScript_MistProtected[];
+extern const u8 BattleScript_AbilityNoStatLoss[];
+extern const u8 BattleScript_AbilityNoSpecificStatLoss[];
+extern const u8 BattleScript_ButItFailed[];
+extern const u8 gUnknown_082DADD8[];
+extern const u8 BattleScript_PrintPayDayMoneyString[];
+extern const u8 BattleScript_SturdyPreventsOHKO[];
+extern const u8 BattleScript_ObliviousPreventsAttraction[];
+extern const u8 BattleScript_PauseEffectivenessSoundResultMsgEndMove[];
+extern const u8 BattleScript_CastformChange[];
+extern const u8 BattleScript_TrainerBallBlock[];
+extern const u8 BattleScript_WallyBallThrow[];
+extern const u8 BattleScript_SuccessBallThrow[];
+extern const u8 BattleScript_ShakeBallThrow[];
+extern const u8 BattleScript_PresentDamageTarget[];
+extern const u8 BattleScript_AlreadyAtFullHp[];
+extern const u8 BattleScript_PresentHealTarget[];
+extern const u8 BattleScript_WrapFree[];
+extern const u8 BattleScript_LeechSeedFree[];
+extern const u8 BattleScript_SpikesFree[];
+
+// strings
+extern const u8 gText_BattleYesNoChoice[];
+
+// read via orr
+#define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
+#define BSScriptRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#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 TARGET_PROTECT_AFFECTED ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
+
+#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)))
+
+// this file's functions
+static bool8 IsTwoTurnsMove(u16 move);
+static void DestinyBondFlagUpdate(void);
+static u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
+static void CheckWonderGuardAndLevitate(void);
+static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr);
+static bool32 IsMonGettingExpSentOut(void);
+static void sub_804F17C(void);
+static bool8 sub_804F1CC(void);
+static void sub_804F100(void);
+static void sub_804F144(void);
+static bool8 sub_804F344(void);
+static void PutMonIconOnLvlUpBox(void);
+static void PutLevelAndGenderOnLvlUpBox(void);
+
+static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite);
+
+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_seteffectwithchance(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_end_selection_script(void);
+static void atk45_playanimation(void);
+static void atk46_playanimation2(void);
+static void atk47_setgraphicalstatchangevalues(void);
+static void atk48_playstatchangeanimation(void);
+static void atk49_moveend(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_fanfare(void);
+static void atk56_fainting_cry(void);
+static void atk57(void);
+static void atk58_return_to_ball(void);
+static void atk59_learnmove_inbattle(void);
+static void atk5A_yesnoboxlearnmove(void);
+static void atk5B_yesnoboxstoplearningmove(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_draw_party_status_summary(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_yesnobox(void);
+static void atk68_80246A0(void);
+static void atk69_dmg_adjustment3(void);
+static void atk6A_removeitem(void);
+static void atk6B_atknameinbuff1(void);
+static void atk6C_draw_lvlupbox(void);
+static void atk6D_reset_sentpokes_value(void);
+static void atk6E_set_atk_to_player0(void);
+static void atk6F_set_visible(void);
+static void atk70_record_last_used_ability(void);
+static void atk71_buffer_move_to_learn(void);
+static void atk72_jump_if_run_attempt_success(void);
+static void atk73_hp_thresholds(void);
+static void atk74_hp_thresholds2(void);
+static void atk75_item_effect_on_opponent(void);
+static void atk76_various(void);
+static void atk77_set_protect_like(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_trymirrormove(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_init_multihit_string(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_damagetohalftargethp(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_mimicattackcopy(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_rapidspinfree(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_setsemiinvulnerablebit(void);
+static void atkC6_clearsemiinvulnerablebit(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_jumpifhasnohp(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);
+static void atkEF_pokeball_catch_calculation(void);
+static void atkF0_give_caught_mon(void);
+static void atkF1_set_caught_mon_dex_flags(void);
+static void atkF2_display_dex_info(void);
+static void atkF3_nickname_caught_poke(void);
+static void atkF4_subattackerhpbydmg(void);
+static void atkF5_removeattackerstatus1(void);
+static void atkF6_action_finished(void);
+static void atkF7_turn_finished(void);
+static void atkF8_trainer_slide_back(void);
+
+void (* const gBattleScriptingCommandsTable[])(void) =
+{
+ 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_seteffectwithchance,
+ 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_end_selection_script,
+ atk45_playanimation,
+ atk46_playanimation2,
+ atk47_setgraphicalstatchangevalues,
+ atk48_playstatchangeanimation,
+ atk49_moveend,
+ 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_fanfare,
+ atk56_fainting_cry,
+ atk57,
+ atk58_return_to_ball,
+ atk59_learnmove_inbattle,
+ atk5A_yesnoboxlearnmove,
+ atk5B_yesnoboxstoplearningmove,
+ atk5C_hitanimation,
+ atk5D_getmoneyreward,
+ atk5E_8025A70,
+ atk5F_8025B24,
+ atk60_increment_gamestat,
+ atk61_draw_party_status_summary,
+ atk62_08025C6C,
+ atk63_jumptorandomattack,
+ atk64_statusanimation,
+ atk65_status2animation,
+ atk66_chosenstatusanimation,
+ atk67_yesnobox,
+ atk68_80246A0,
+ atk69_dmg_adjustment3,
+ atk6A_removeitem,
+ atk6B_atknameinbuff1,
+ atk6C_draw_lvlupbox,
+ atk6D_reset_sentpokes_value,
+ atk6E_set_atk_to_player0,
+ atk6F_set_visible,
+ atk70_record_last_used_ability,
+ atk71_buffer_move_to_learn,
+ atk72_jump_if_run_attempt_success,
+ atk73_hp_thresholds,
+ atk74_hp_thresholds2,
+ atk75_item_effect_on_opponent,
+ atk76_various,
+ atk77_set_protect_like,
+ atk78_faintifabilitynotdamp,
+ atk79_setatkhptozero,
+ atk7A_jumpwhiletargetvalid,
+ atk7B_healhalfHP_if_possible,
+ atk7C_trymirrormove,
+ 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_init_multihit_string,
+ atk8F_forcerandomswitch,
+ atk90_conversion_type_change,
+ atk91_givepaydaymoney,
+ atk92_setlightscreen,
+ atk93_ko_move,
+ atk94_damagetohalftargethp,
+ atk95_setsandstorm,
+ atk96_weatherdamage,
+ atk97_try_infatuation,
+ atk98_status_icon_update,
+ atk99_setmist,
+ atk9A_set_focusenergy,
+ atk9B_transformdataexecution,
+ atk9C_set_substitute,
+ atk9D_mimicattackcopy,
+ 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_rapidspinfree,
+ atkBF_set_defense_curl,
+ atkC0_recoverbasedonsunlight,
+ atkC1_hidden_power,
+ atkC2_selectnexttarget,
+ atkC3_setfutureattack,
+ atkC4_beat_up,
+ atkC5_setsemiinvulnerablebit,
+ atkC6_clearsemiinvulnerablebit,
+ 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_jumpifhasnohp,
+ 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_give_caught_mon,
+ atkF1_set_caught_mon_dex_flags,
+ atkF2_display_dex_info,
+ atkF3_nickname_caught_poke,
+ atkF4_subattackerhpbydmg,
+ atkF5_removeattackerstatus1,
+ atkF6_action_finished,
+ atkF7_turn_finished,
+ atkF8_trainer_slide_back
+};
+
+struct StatFractions
+{
+ u8 dividend;
+ u8 divisor;
+};
+
+static const struct StatFractions sAccuracyStageRatios[] =
+{
+ { 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 sCriticalHitChance[] = {16, 8, 4, 3, 2};
+
+static const u32 sStatusFlagsForMoveEffects[] =
+{
+ 0x00000000,
+ STATUS_SLEEP,
+ STATUS_POISON,
+ STATUS_BURN,
+ STATUS_FREEZE,
+ STATUS_PARALYSIS,
+ STATUS_TOXIC_POISON,
+ STATUS2_CONFUSION,
+ STATUS2_FLINCHED,
+ 0x00000000,
+ STATUS2_UPROAR,
+ 0x00000000,
+ STATUS2_MULTIPLETURNS,
+ STATUS2_WRAPPED,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ STATUS2_RECHARGE,
+ 0x00000000,
+ 0x00000000,
+ STATUS2_ESCAPE_PREVENTION,
+ 0x08000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ STATUS2_LOCK_CONFUSE,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000
+};
+
+static const u8* const sMoveEffectBS_Ptrs[] =
+{
+ BattleScript_MoveEffectSleep, // 0
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_SLEEP
+ BattleScript_MoveEffectPoison, // MOVE_EFFECT_POISON
+ BattleScript_MoveEffectBurn, // MOVE_EFFECT_BURN
+ BattleScript_MoveEffectFreeze, // MOVE_EFFECT_FREEZE
+ BattleScript_MoveEffectParalysis, // MOVE_EFFECT_PARALYSIS
+ BattleScript_MoveEffectToxic, // MOVE_EFFECT_TOXIC
+ BattleScript_MoveEffectConfusion, // MOVE_EFFECT_CONFUSION
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_FLINCH
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_TRI_ATTACK
+ BattleScript_MoveEffectUproar, // MOVE_EFFECT_UPROAR
+ BattleScript_MoveEffectPayDay, // MOVE_EFFECT_PAYDAY
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_CHARGING
+ BattleScript_MoveEffectWrap, // MOVE_EFFECT_WRAP
+ BattleScript_MoveEffectRecoil33, // MOVE_EFFECT_RECOIL_25
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_ATK_PLUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_DEF_PLUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_SPD_PLUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_SP_ATK_PLUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_SP_DEF_PLUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_ACC_PLUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_EVS_PLUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_ATK_MINUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_DEF_MINUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_SPD_MINUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_SP_ATK_MINUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_SP_DEF_MINUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_ACC_MINUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_EVS_MINUS_1
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_RECHARGE
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_RAGE
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_STEAL_ITEM
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_PREVENT_ESCAPE
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_NIGHTMARE
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_ALL_STATS_UP
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_RAPIDSPIN
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_REMOVE_PARALYSIS
+ BattleScript_MoveEffectSleep, // MOVE_EFFECT_ATK_DEF_DOWN
+ BattleScript_MoveEffectRecoil33, // MOVE_EFFECT_RECOIL_33_PARALYSIS
+};
+
+static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, 0x3F};
+
+static const u16 sUnknown_0831C2C8[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal");
+static const u8 sUnknown_0831C2E8[] = INCBIN_U8("graphics/battle_interface/unk_battlebox.4bpp.lz");
+
+// unused
+static const u8 sRubyLevelUpStatBoxStats[] =
+{
+ MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK,
+ MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED
+};
+
+#define MON_ICON_LVLUP_BOX_TAG 0xD75A
+
+static const struct OamData sOamData_MonIconOnLvlUpBox =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox =
+{
+ .tileTag = MON_ICON_LVLUP_BOX_TAG,
+ .paletteTag = MON_ICON_LVLUP_BOX_TAG,
+ .oam = &sOamData_MonIconOnLvlUpBox,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_MonIconOnLvlUpBox
+};
+
+static const u16 sProtectSuccessRates[] = {USHRT_MAX, USHRT_MAX / 2, USHRT_MAX / 4, USHRT_MAX / 8};
+
+#define MIMIC_FORBIDDEN_END 0xFFFE
+#define METRONOME_FORBIDDEN_END 0xFFFF
+#define ASSIST_FORBIDDEN_END 0xFFFF
+
+static const u16 sMovesForbiddenToCopy[] =
+{
+ MOVE_METRONOME,
+ MOVE_STRUGGLE,
+ MOVE_SKETCH,
+ MOVE_MIMIC,
+ MIMIC_FORBIDDEN_END,
+ 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,
+ METRONOME_FORBIDDEN_END
+};
+
+static const u8 sFlailHpScaleToPowerTable[] =
+{
+ 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
+};
+
+// format: min. weight (hectograms), base power
+static const u16 sWeightToDamageTable[] =
+{
+ 100, 20,
+ 250, 40,
+ 500, 60,
+ 1000, 80,
+ 2000, 100,
+ 0xFFFF, 0xFFFF
+};
+
+static const u16 sPickupItems[] =
+{
+ ITEM_POTION,
+ ITEM_ANTIDOTE,
+ ITEM_SUPER_POTION,
+ ITEM_GREAT_BALL,
+ ITEM_REPEL,
+ ITEM_ESCAPE_ROPE,
+ ITEM_X_ATTACK,
+ ITEM_FULL_HEAL,
+ ITEM_ULTRA_BALL,
+ ITEM_HYPER_POTION,
+ ITEM_RARE_CANDY,
+ ITEM_PROTEIN,
+ ITEM_REVIVE,
+ ITEM_HP_UP,
+ ITEM_FULL_RESTORE,
+ ITEM_MAX_REVIVE,
+ ITEM_PP_UP,
+ ITEM_MAX_ELIXIR,
+};
+
+static const u16 sRarePickupItems[] =
+{
+ ITEM_HYPER_POTION,
+ ITEM_NUGGET,
+ ITEM_KINGS_ROCK,
+ ITEM_FULL_RESTORE,
+ ITEM_ETHER,
+ ITEM_WHITE_HERB,
+ ITEM_TM44,
+ ITEM_ELIXIR,
+ ITEM_TM01,
+ ITEM_LEFTOVERS,
+ ITEM_TM26,
+};
+
+static const u8 sPickupProbabilities[] =
+{
+ 30, 40, 50, 60, 70, 80, 90, 94, 98
+};
+
+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
+};
+
+// could be a 2d array or a struct
+const ALIGNED(4) u8 gUnknown_0831C494[] =
+{
+ 0x3d, 0x44, 0x3d, 0x44, 0x14, 0x2d, 0x54, 0x5c,
+ 0x46, 0x55, 0x20, 0x5c, 0x26, 0x45, 0x46, 0x55,
+ 0x14, 0x5a, 0x46, 0x5c, 0x1e, 0x32, 0x20, 0x5a,
+ 0x38, 0x4e, 0x38, 0x4e, 0x19, 0x28, 0x4b, 0x5a,
+ 0x45, 0x4b, 0x1c, 0x53, 0x23, 0x2d, 0x1d, 0x23,
+ 0x3e, 0x48, 0x1e, 0x32, 0x3a, 0x5f, 0x58, 0x5e,
+ 0x22, 0x2d, 0x1d, 0x28, 0x23, 0x28, 0x23, 0x5f,
+ 0x38, 0x4e, 0x38, 0x4e, 0x23, 0x50, 0x22, 0x5e,
+ 0x2c, 0x5e, 0x22, 0x28, 0x38, 0x4e, 0x38, 0x4e,
+ 0x1e, 0x58, 0x1e, 0x58, 0x1e, 0x2b, 0x1b, 0x21,
+ 0x28, 0x5a, 0x19, 0x57, 0x12, 0x58, 0x5a, 0x5f,
+ 0x58, 0x5e, 0x16, 0x2a, 0x2a, 0x5c, 0x2a, 0x2f,
+ 0x38, 0x4e, 0x38, 0x4e
+};
+
+static const u8 sUnknown_0831C4F8[] =
+{
+ 0x03, 0x00, 0x01, 0x00, 0x00, 0x01, 0x03, 0x00,
+ 0x01, 0x02, 0x02, 0x00, 0x03, 0x01, 0x03, 0x01,
+ 0x02, 0x03, 0x03, 0x02, 0x01, 0x00, 0x02, 0x02,
+ 0x03, 0x00, 0x00, 0x00
+};
+
+static void atk00_attackcanceler(void)
+{
+ s32 i;
+
+ if (gBattleOutcome != 0)
+ {
+ gCurrentActionFuncId = ACTION_FINISHED;
+ return;
+ }
+ if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
+ {
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ gBattlescriptCurrInstr = BattleScript_MoveEnd;
+ return;
+ }
+ if (AtkCanceller_UnableToUseMove())
+ return;
+ if (AbilityBattleEffects(ABILITYEFFECT_MOVES_BLOCK, 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))
+ {
+ i = IsPokeDisobedient(); // why use the 'i' variable...?
+ switch (i)
+ {
+ case 0:
+ break;
+ case 2:
+ gHitMarker |= HITMARKER_OBEYS;
+ return;
+ default:
+ 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;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_MagicCoatBounce;
+ return;
+ }
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if ((gProtectStructs[gBanksByTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
+ {
+ PressurePPLose(gBankAttacker, gBanksByTurnOrder[i], MOVE_SNATCH);
+ gProtectStructs[gBanksByTurnOrder[i]].stealMove = 0;
+ gBattleScripting.bank = gBanksByTurnOrder[i];
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_SnatchedMove;
+ return;
+ }
+ }
+
+ if (gSpecialStatuses[gBankTarget].lightningRodRedirected)
+ {
+ gSpecialStatuses[gBankTarget].lightningRodRedirected = 0;
+ gLastUsedAbility = ABILITY_LIGHTNING_ROD;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_TookAttack;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ else if (TARGET_PROTECT_AFFECTED
+ && (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;
+ gUnknown_02024250[gBankTarget] = 0;
+ gUnknown_02024258[gBankTarget] = 0;
+ gBattleCommunication[6] = 1;
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void JumpIfMoveFailed(u8 adder, u16 move)
+{
+ const void* BS_ptr = gBattlescriptCurrInstr + adder;
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ {
+ gUnknown_02024250[gBankTarget] = 0;
+ gUnknown_02024258[gBankTarget] = 0;
+ BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ DestinyBondFlagUpdate();
+ if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBankTarget, 0, 0, move))
+ return;
+ }
+ gBattlescriptCurrInstr = BS_ptr;
+}
+
+static void atk40_jump_if_move_affected_by_protect(void)
+{
+ if (TARGET_PROTECT_AFFECTED)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(5, 0);
+ gBattleCommunication[6] = 1;
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+bool8 JumpIfMoveAffectedByProtect(u16 move)
+{
+ bool8 affected = FALSE;
+ if (TARGET_PROTECT_AFFECTED)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(7, move);
+ gBattleCommunication[6] = 1;
+ affected = TRUE;
+ }
+ return affected;
+}
+
+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, moveAcc, holdEffect, quality;
+ s8 buff;
+ u16 calc;
+
+ if (move == 0)
+ move = gCurrentMove;
+
+ GET_MOVE_TYPE(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 = sAccuracyStageRatios[buff].dividend * moveAcc;
+ calc /= sAccuracyStageRatios[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)
+ {
+ holdEffect = gEnigmaBerries[gBankTarget].holdEffect;
+ quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (holdEffect == 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 == MOVE_TARGET_BOTH || gBattleMoves[move].target == MOVE_TARGET_FOES_AND_ALLY))
+ gBattleCommunication[6] = 2;
+ else
+ gBattleCommunication[6] = 0;
+
+ CheckWonderGuardAndLevitate();
+ }
+ JumpIfMoveFailed(7, move);
+ }
+}
+
+static void atk02_attackstring(void)
+{
+ if (gBattleExecBuffer)
+ return;
+ if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED)))
+ {
+ PrepareStringBattle(STRINGID_USEDMOVE, gBankAttacker);
+ gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED;
+ }
+ gBattlescriptCurrInstr++;
+ gBattleCommunication[MSG_DISPLAY] = 0;
+}
+
+static void atk03_ppreduce(void)
+{
+ s32 ppToDeduct = 1;
+
+ if (gBattleExecBuffer)
+ return;
+
+ if (!gSpecialStatuses[gBankAttacker].flag20)
+ {
+ switch (gBattleMoves[gCurrentMove].target)
+ {
+ case MOVE_TARGET_FOES_AND_ALLY:
+ ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0);
+ break;
+ case MOVE_TARGET_BOTH:
+ case MOVE_TARGET_OPPONENTS_FIELD:
+ ppToDeduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_PRESSURE, 0, 0);
+ break;
+ default:
+ if (gBankAttacker != gBankTarget && gBattleMons[gBankTarget].ability == ABILITY_PRESSURE)
+ ppToDeduct++;
+ break;
+ }
+ }
+
+ if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBankAttacker].pp[gCurrMovePos])
+ {
+ gProtectStructs[gBankAttacker].notFirstStrike = 1;
+
+ if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > ppToDeduct)
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] -= ppToDeduct;
+ else
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = 0;
+
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
+ && !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos]))
+ {
+ gActiveBank = gBankAttacker;
+ EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]);
+ MarkBufferBankForExecution(gBankAttacker);
+ }
+ }
+
+ gHitMarker &= ~(HITMARKER_NO_PPDEDUCT);
+ gBattlescriptCurrInstr++;
+}
+
+static void atk04_critcalc(void)
+{
+ u8 holdEffect;
+ u16 item, critChance;
+
+ item = gBattleMons[gBankAttacker].item;
+
+ if (item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[gBankAttacker].holdEffect;
+ else
+ holdEffect = ItemId_GetHoldEffect(item);
+
+ gStringBank = gBankAttacker;
+
+ critChance = 2 * ((gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) != 0)
+ + (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL)
+ + (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK)
+ + (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK)
+ + (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL)
+ + (holdEffect == HOLD_EFFECT_SCOPE_LENS)
+ + 2 * (holdEffect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBankAttacker].species == SPECIES_CHANSEY)
+ + 2 * (holdEffect == HOLD_EFFECT_STICK && gBattleMons[gBankAttacker].species == SPECIES_FARFETCHD);
+
+ if (critChance > 4)
+ critChance = 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() % sCriticalHitChance[critChance]))
+ gCritMultiplier = 2;
+ else
+ gCritMultiplier = 1;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk05_damagecalc1(void)
+{
+ u16 sideStatus = gSideAffecting[GET_BANK_SIDE(gBankTarget)];
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ sideStatus, gDynamicBasePower,
+ gBattleStruct->dynamicMoveType, gBankAttacker, gBankTarget);
+ gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleScripting.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 sideStatus = gSideAffecting[GET_BANK_SIDE(bankDef)];
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[bankAtk], &gBattleMons[bankDef], gCurrentMove,
+ sideStatus, gDynamicBasePower,
+ gBattleStruct->dynamicMoveType, bankAtk, bankDef);
+ gDynamicBasePower = 0;
+ gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * gBattleScripting.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 TYPE_MUL_NO_EFFECT:
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ break;
+ case TYPE_MUL_NOT_EFFECTIVE:
+ if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ else
+ gBattleMoveFlags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ }
+ break;
+ case TYPE_MUL_SUPER_EFFECTIVE:
+ if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
+ gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ else
+ gBattleMoveFlags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ break;
+ }
+}
+
+#define TYPE_FORESIGHT 0xFE
+#define TYPE_ENDTABLE 0xFF
+
+static void atk06_typecalc(void)
+{
+ s32 i = 0;
+ u8 moveType;
+
+ if (gCurrentMove == MOVE_STRUGGLE)
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
+
+ GET_MOVE_TYPE(gCurrentMove, moveType);
+
+ // check stab
+ if (gBattleMons[gBankAttacker].type1 == moveType || gBattleMons[gBankAttacker].type2 == moveType)
+ {
+ gBattleMoveDamage = gBattleMoveDamage * 15;
+ gBattleMoveDamage = gBattleMoveDamage / 10;
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ {
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ gUnknown_02024250[gBankTarget] = 0;
+ gUnknown_02024258[gBankTarget] = 0;
+ gBattleCommunication[6] = moveType;
+ 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] == moveType)
+ {
+ // 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;
+ gUnknown_02024250[gBankTarget] = 0;
+ gUnknown_02024258[gBankTarget] = 0;
+ gBattleCommunication[6] = 3;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ gProtectStructs[gBankAttacker].targetNotAffected = 1;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void CheckWonderGuardAndLevitate(void)
+{
+ u8 flags = 0;
+ s32 i = 0;
+ u8 moveType;
+
+ if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power)
+ return;
+
+ GET_MOVE_TYPE(gCurrentMove, moveType);
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ {
+ gLastUsedAbility = ABILITY_LEVITATE;
+ gBattleCommunication[6] = moveType;
+ RecordAbilityBattle(gBankTarget, ABILITY_LEVITATE);
+ return;
+ }
+
+ while (gTypeEffectiveness[i] != TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ break;
+ i += 3;
+ continue;
+ }
+ if (gTypeEffectiveness[i] == moveType)
+ {
+ // check no effect
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 0)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gProtectStructs[gBankAttacker].targetNotAffected = 1;
+ }
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 &&
+ gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 &&
+ gTypeEffectiveness[i + 2] == TYPE_MUL_NO_EFFECT)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gProtectStructs[gBankAttacker].targetNotAffected = 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] == TYPE_MUL_SUPER_EFFECTIVE)
+ 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] == TYPE_MUL_NOT_EFFECTIVE)
+ flags |= 2;
+ }
+ i += 3;
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2)
+ {
+ if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power)
+ {
+ gLastUsedAbility = ABILITY_WONDER_GUARD;
+ gBattleCommunication[6] = 3;
+ RecordAbilityBattle(gBankTarget, ABILITY_WONDER_GUARD);
+ }
+ }
+}
+
+static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) // same as ModulateDmgByType except different arguments
+{
+ gBattleMoveDamage = gBattleMoveDamage * multiplier / 10;
+ if (gBattleMoveDamage == 0 && multiplier != 0)
+ gBattleMoveDamage = 1;
+
+ switch (multiplier)
+ {
+ case TYPE_MUL_NO_EFFECT:
+ *flags |= MOVESTATUS_NOTAFFECTED;
+ *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ break;
+ case TYPE_MUL_NOT_EFFECTIVE:
+ if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ {
+ if (*flags & MOVESTATUS_SUPEREFFECTIVE)
+ *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ else
+ *flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ }
+ break;
+ case TYPE_MUL_SUPER_EFFECTIVE:
+ if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ {
+ if (*flags & MOVESTATUS_NOTVERYEFFECTIVE)
+ *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ else
+ *flags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ break;
+ }
+}
+
+u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef)
+{
+ s32 i = 0;
+ u8 flags = 0;
+ u8 moveType;
+
+ if (move == MOVE_STRUGGLE)
+ return 0;
+
+ moveType = gBattleMoves[move].type;
+
+ // check stab
+ if (gBattleMons[bankAtk].type1 == moveType || gBattleMons[bankAtk].type2 == moveType)
+ {
+ gBattleMoveDamage = gBattleMoveDamage * 15;
+ gBattleMoveDamage = gBattleMoveDamage / 10;
+ }
+
+ if (gBattleMons[bankDef].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ {
+ flags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ }
+ else
+ {
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ if (gBattleMons[bankDef].status2 & STATUS2_FORESIGHT)
+ break;
+ i += 3;
+ continue;
+ }
+
+ else if (gTypeEffectiveness[i] == moveType)
+ {
+ // check type1
+ if (gTypeEffectiveness[i + 1] == gBattleMons[bankDef].type1)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ // check type2
+ if (gTypeEffectiveness[i + 1] == gBattleMons[bankDef].type2 &&
+ gBattleMons[bankDef].type1 != gBattleMons[bankDef].type2)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ }
+ i += 3;
+ }
+ }
+
+ if (gBattleMons[bankDef].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_MISSED)
+ && AttacksThisTurn(bankAtk, move) == 2
+ && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ && gBattleMoves[move].power)
+ {
+ flags |= MOVESTATUS_MISSED;
+ }
+ return flags;
+}
+
+u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility)
+{
+ s32 i = 0;
+ u8 flags = 0;
+ u8 type1 = gBaseStats[targetSpecies].type1, type2 = gBaseStats[targetSpecies].type2;
+ u8 moveType;
+
+ if (move == MOVE_STRUGGLE)
+ return 0;
+
+ moveType = gBattleMoves[move].type;
+
+ if (targetAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ {
+ flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED;
+ }
+ else
+ {
+ while (gTypeEffectiveness[i] != TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ i += 3;
+ continue;
+ }
+ if (gTypeEffectiveness[i] == moveType)
+ {
+ // check type1
+ if (gTypeEffectiveness[i + 1] == type1)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ // check type2
+ if (gTypeEffectiveness[i + 1] == type2 && type1 != type2)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ }
+ i += 3;
+ }
+ }
+ if (targetAbility == 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;
+ }
+}
+
+static void Unused_ApplyRandomDmgMultiplier(void)
+{
+ ApplyRandomDmgMultiplier();
+}
+
+static void atk07_dmg_adjustment(void)
+{
+ u8 holdEffect, quality;
+
+ ApplyRandomDmgMultiplier();
+
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ {
+ holdEffect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemEffectBattle(gBankTarget, holdEffect);
+ 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;
+ }
+ else if (gSpecialStatuses[gBankTarget].focusBanded)
+ {
+ gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ }
+
+ END:
+ gBattlescriptCurrInstr++;
+}
+
+static void atk08_dmg_adjustment2(void) // The same as 0x7 except it doesn't check for false swipe move effect.
+{
+ u8 holdEffect, quality;
+
+ ApplyRandomDmgMultiplier();
+
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ {
+ holdEffect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemEffectBattle(gBankTarget, holdEffect);
+ 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;
+ }
+ else 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))
+ {
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_Pausex20;
+ gBattleScripting.animTurn++;
+ gBattleScripting.animTargetsHit++;
+ }
+ else
+ {
+ if ((gBattleMoves[gCurrentMove].target & MOVE_TARGET_BOTH
+ || gBattleMoves[gCurrentMove].target & MOVE_TARGET_FOES_AND_ALLY
+ || gBattleMoves[gCurrentMove].target & MOVE_TARGET_DEPENDS)
+ && gBattleScripting.animTargetsHit)
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ u8 multihit;
+
+ gActiveBank = gBankAttacker;
+
+ if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ multihit = gMultiHitCounter;
+ else if (gMultiHitCounter != 0 && gMultiHitCounter != 1)
+ {
+ if (gBattleMons[gBankTarget].hp <= gBattleMoveDamage)
+ multihit = 1;
+ else
+ multihit = gMultiHitCounter;
+ }
+ else
+ multihit = gMultiHitCounter;
+
+ EmitMoveAnimation(0, gCurrentMove, gBattleScripting.animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker], multihit);
+ gBattleScripting.animTurn += 1;
+ gBattleScripting.animTargetsHit += 1;
+ MarkBufferBankForExecution(gBankAttacker);
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ BattleScriptPush(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))
+ {
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
+ {
+ PrepareStringBattle(STRINGID_SUBSTITUTEDAMAGED, gActiveBank);
+ }
+ else
+ {
+ s16 healthValue;
+
+ s32 currDmg = gBattleMoveDamage;
+ s32 maxPossibleDmgValue = 10000; // not present in R/S, ensures that huge damage values don't change sign
+
+ if (currDmg <= maxPossibleDmgValue)
+ healthValue = currDmg;
+ else
+ healthValue = maxPossibleDmgValue;
+
+ EmitHealthBarUpdate(0, healthValue);
+ MarkBufferBankForExecution(gActiveBank);
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER && gBattleMoveDamage > 0)
+ gBattleResults.unk5_0 = 1;
+ }
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk0C_datahpupdate(void)
+{
+ u32 moveType;
+
+ if (gBattleExecBuffer)
+ return;
+
+ if (gBattleStruct->dynamicMoveType == 0)
+ moveType = gBattleMoves[gCurrentMove].type;
+ else if (!(gBattleStruct->dynamicMoveType & 0x40))
+ moveType = gBattleStruct->dynamicMoveType & 0x3F;
+ else
+ moveType = gBattleMoves[gCurrentMove].type;
+
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ gActiveBank = GetBattleBank(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;
+ gHpDealt = gBattleMoveDamage;
+ }
+ else
+ {
+ if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBank].moveturnLostHP = gDisableStructs[gActiveBank].substituteHP;
+ gHpDealt = gDisableStructs[gActiveBank].substituteHP;
+ gDisableStructs[gActiveBank].substituteHP = 0;
+ }
+ // check substitute fading
+ if (gDisableStructs[gActiveBank].substituteHP == 0)
+ {
+ gBattlescriptCurrInstr += 2;
+ BattleScriptPushCursor();
+ 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 (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ gTakenDmgBanks[gActiveBank] = gBankAttacker;
+ else
+ gTakenDmgBanks[gActiveBank] = gBankTarget;
+ }
+
+ if (gBattleMons[gActiveBank].hp > gBattleMoveDamage)
+ {
+ gBattleMons[gActiveBank].hp -= gBattleMoveDamage;
+ gHpDealt = gBattleMoveDamage;
+ }
+ else
+ {
+ gHpDealt = gBattleMons[gActiveBank].hp;
+ gBattleMons[gActiveBank].hp = 0;
+ }
+
+ if (!gSpecialStatuses[gActiveBank].moveturnLostHP && !(gHitMarker & HITMARKER_x100000))
+ gSpecialStatuses[gActiveBank].moveturnLostHP = gHpDealt;
+
+ if (moveType <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
+ {
+ gProtectStructs[gActiveBank].physicalDmg = gHpDealt;
+ gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHpDealt;
+ if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ {
+ gProtectStructs[gActiveBank].physicalBank = gBankAttacker;
+ gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker;
+ }
+ else
+ {
+ gProtectStructs[gActiveBank].physicalBank = gBankTarget;
+ gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankTarget;
+ }
+ }
+ else if (moveType > 8 && !(gHitMarker & HITMARKER_x100000))
+ {
+ gProtectStructs[gActiveBank].specialDmg = gHpDealt;
+ gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHpDealt;
+ if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ {
+ gProtectStructs[gActiveBank].specialBank = gBankAttacker;
+ gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker;
+ }
+ else
+ {
+ gProtectStructs[gActiveBank].specialBank = gBankTarget;
+ gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankTarget;
+ }
+ }
+ }
+ gHitMarker &= ~(HITMARKER_x100000);
+ EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ else
+ {
+ gActiveBank = GetBattleBank(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(STRINGID_CRITICALHIT, gBankAttacker);
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atk0E_effectiveness_sound(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = gBankTarget;
+ if (!(gBattleMoveFlags & MOVESTATUS_MISSED))
+ {
+ switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED)))
+ {
+ case MOVESTATUS_SUPEREFFECTIVE:
+ EmitEffectivenessSound(0, SE_KOUKA_H);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case MOVESTATUS_NOTVERYEFFECTIVE:
+ EmitEffectivenessSound(0, SE_KOUKA_L);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case MOVESTATUS_NOTAFFECTED:
+ case MOVESTATUS_FAILED:
+ // no sound
+ break;
+ case MOVESTATUS_ENDURED:
+ case MOVESTATUS_ONEHITKO:
+ case MOVESTATUS_HUNGON:
+ default:
+ if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ {
+ EmitEffectivenessSound(0, SE_KOUKA_H);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
+ {
+ EmitEffectivenessSound(0, SE_KOUKA_L);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)))
+ {
+ EmitEffectivenessSound(0, SE_KOUKA_M);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ break;
+ }
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk0F_resultmessage(void)
+{
+ u32 stringId = 0;
+
+ if (gBattleExecBuffer)
+ return;
+
+ if (gBattleMoveFlags & MOVESTATUS_MISSED && (!(gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) || gBattleCommunication[6] > 2))
+ {
+ stringId = gMissStringIds[gBattleCommunication[6]];
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+ else
+ {
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED)))
+ {
+ case MOVESTATUS_SUPEREFFECTIVE:
+ stringId = STRINGID_SUPEREFFECTIVE;
+ break;
+ case MOVESTATUS_NOTVERYEFFECTIVE:
+ stringId = STRINGID_NOTVERYEFFECTIVE;
+ break;
+ case MOVESTATUS_ONEHITKO:
+ stringId = STRINGID_ONEHITKO;
+ break;
+ case MOVESTATUS_ENDURED:
+ stringId = STRINGID_PKMNENDUREDHIT;
+ break;
+ case MOVESTATUS_FAILED:
+ stringId = STRINGID_BUTITFAILED;
+ break;
+ case MOVESTATUS_NOTAFFECTED:
+ stringId = STRINGID_ITDOESNTAFFECT;
+ break;
+ case MOVESTATUS_HUNGON:
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ gStringBank = gBankTarget;
+ gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
+ return;
+ default:
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ {
+ stringId = STRINGID_ITDOESNTAFFECT;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO)
+ {
+ gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO);
+ gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE);
+ gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_OneHitKOMsg;
+ return;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_ENDURED)
+ {
+ gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_EnduredMsg;
+ return;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_HUNGON)
+ {
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ gStringBank = gBankTarget;
+ gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
+ return;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_FAILED)
+ {
+ stringId = STRINGID_BUTITFAILED;
+ }
+ else
+ {
+ gBattleCommunication[MSG_DISPLAY] = 0;
+ }
+ }
+ }
+
+ if (stringId)
+ PrepareStringBattle(stringId, 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 toWait = BS2ScriptRead16(gBattlescriptCurrInstr + 1);
+ if (++gPauseCounterBattle >= toWait)
+ {
+ gPauseCounterBattle = 0;
+ gBattlescriptCurrInstr += 3;
+ gBattleCommunication[MSG_DISPLAY] = 0;
+ }
+ }
+ }
+}
+
+static void atk13_printfromtable(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ const u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ ptr += gBattleCommunication[MULTISTRING_CHOOSER];
+
+ PrepareStringBattle(*ptr, gBankAttacker);
+
+ gBattlescriptCurrInstr += 5;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+}
+
+static void atk14_printfromtable_playeronly(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ const u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ ptr += gBattleCommunication[MULTISTRING_CHOOSER];
+
+ gActiveBank = gBankAttacker;
+ EmitPrintStringPlayerOnly(0, *ptr);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 5;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+}
+
+u8 BankGetTurnOrder(u8 bank)
+{
+ s32 i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBanksByTurnOrder[i] == bank)
+ break;
+ }
+ return i;
+}
+
+#define INCREMENT_RESET_RETURN \
+{ \
+ gBattlescriptCurrInstr++; \
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0; \
+ return; \
+}
+
+#define RESET_RETURN \
+{ \
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0; \
+ return; \
+}
+
+void SetMoveEffect(bool8 primary, u8 certain)
+{
+ bool32 statusChanged = FALSE;
+ u8 affectsUser = 0; // 0x40 otherwise
+ bool32 noSunCanFreeze = TRUE;
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] & MOVE_EFFECT_AFFECTS_USER)
+ {
+ gEffectBank = gBankAttacker; // bank that effects get applied on
+ gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_AFFECTS_USER);
+ affectsUser = MOVE_EFFECT_AFFECTS_USER;
+ gBattleScripting.bank = gBankTarget; // theoretically the attacker
+ }
+ else
+ {
+ gEffectBank = gBankTarget;
+ gBattleScripting.bank = gBankAttacker;
+ }
+
+ if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9)
+ INCREMENT_RESET_RETURN
+
+ if (gSideAffecting[GET_BANK_SIDE(gEffectBank)] & SIDE_STATUS_SAFEGUARD && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ && !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 7)
+ INCREMENT_RESET_RETURN
+
+ if (gBattleMons[gEffectBank].hp == 0
+ && gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_PAYDAY
+ && gBattleCommunication[MOVE_EFFECT_BYTE] != MOVE_EFFECT_STEAL_ITEM)
+ INCREMENT_RESET_RETURN
+
+ if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && affectsUser != MOVE_EFFECT_AFFECTS_USER)
+ INCREMENT_RESET_RETURN
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) // status change
+ {
+ switch (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ {
+ case STATUS_SLEEP:
+ // check active uproar
+ if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF)
+ {
+ for (gActiveBank = 0;
+ gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR);
+ gActiveBank++)
+ {}
+ }
+ else
+ gActiveBank = gNoOfAllBanks;
+
+ if (gBattleMons[gEffectBank].status1)
+ break;
+ if (gActiveBank != gNoOfAllBanks)
+ break;
+ if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT)
+ break;
+ if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA)
+ break;
+
+ CancelMultiTurnMoves(gEffectBank);
+ statusChanged = TRUE;
+ break;
+ case STATUS_POISON:
+ if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY
+ && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
+ {
+ gLastUsedAbility = ABILITY_IMMUNITY;
+ RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY);
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_PSNPrevention;
+
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ RESET_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 == TRUE || certain == MOVE_EFFECT_CERTAIN))
+ {
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_PSNPrevention;
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ RESET_RETURN
+ }
+ if (gBattleMons[gEffectBank].type1 == TYPE_POISON)
+ break;
+ if (gBattleMons[gEffectBank].type2 == TYPE_POISON)
+ break;
+ if (gBattleMons[gEffectBank].type1 == TYPE_STEEL)
+ break;
+ if (gBattleMons[gEffectBank].type2 == TYPE_STEEL)
+ break;
+ if (gBattleMons[gEffectBank].status1)
+ break;
+ if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY)
+ break;
+
+ statusChanged = TRUE;
+ break;
+ case STATUS_BURN:
+ if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL
+ && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
+ {
+ gLastUsedAbility = ABILITY_WATER_VEIL;
+ RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL);
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_BRNPrevention;
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ RESET_RETURN
+ }
+ if ((gBattleMons[gEffectBank].type1 == TYPE_FIRE
+ || gBattleMons[gEffectBank].type2 == TYPE_FIRE)
+ && (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
+ {
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_BRNPrevention;
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ RESET_RETURN
+ }
+ if (gBattleMons[gEffectBank].type1 == TYPE_FIRE)
+ break;
+ if (gBattleMons[gEffectBank].type2 == TYPE_FIRE)
+ break;
+ if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL)
+ break;
+ if (gBattleMons[gEffectBank].status1)
+ break;
+
+ statusChanged = TRUE;
+ break;
+ case STATUS_FREEZE:
+ if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY)
+ noSunCanFreeze = FALSE;
+ if (gBattleMons[gEffectBank].type1 == TYPE_ICE)
+ break;
+ if (gBattleMons[gEffectBank].type2 == TYPE_ICE)
+ break;
+ if (gBattleMons[gEffectBank].status1)
+ break;
+ if (noSunCanFreeze == 0)
+ break;
+ if (gBattleMons[gEffectBank].ability == ABILITY_MAGMA_ARMOR)
+ break;
+
+ CancelMultiTurnMoves(gEffectBank);
+ statusChanged = TRUE;
+ break;
+ case STATUS_PARALYSIS:
+ if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER)
+ {
+ if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)
+ {
+ gLastUsedAbility = ABILITY_LIMBER;
+ RecordAbilityBattle(gEffectBank, ABILITY_LIMBER);
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_PRLZPrevention;
+
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ RESET_RETURN
+ }
+ else
+ break;
+ }
+ if (gBattleMons[gEffectBank].status1)
+ break;
+
+ statusChanged = TRUE;
+ break;
+ case STATUS_TOXIC_POISON:
+ if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == TRUE || certain == MOVE_EFFECT_CERTAIN))
+ {
+ gLastUsedAbility = ABILITY_IMMUNITY;
+ RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY);
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_PSNPrevention;
+
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ RESET_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 == TRUE || certain == MOVE_EFFECT_CERTAIN))
+ {
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_PSNPrevention;
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ RESET_RETURN
+ }
+ if (gBattleMons[gEffectBank].status1)
+ break;
+ if (gBattleMons[gEffectBank].type1 != TYPE_POISON
+ && gBattleMons[gEffectBank].type2 != TYPE_POISON
+ && gBattleMons[gEffectBank].type1 != TYPE_STEEL
+ && gBattleMons[gEffectBank].type2 != TYPE_STEEL)
+ {
+ if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY)
+ break;
+
+ // It's redundant, because at this point we know the status1 value is 0.
+ gBattleMons[gEffectBank].status1 &= ~(STATUS_TOXIC_POISON);
+ gBattleMons[gEffectBank].status1 &= ~(STATUS_POISON);
+ statusChanged = TRUE;
+ break;
+ }
+ else
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ }
+ break;
+ }
+ if (statusChanged == TRUE)
+ {
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+
+ if (sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP)
+ gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2);
+ else
+ gBattleMons[gEffectBank].status1 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+
+ gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+
+ gActiveBank = gEffectBank;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+
+ // for synchronize
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_POISON
+ || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_TOXIC
+ || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_PARALYSIS
+ || gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN)
+ {
+ u8* synchronizeEffect = &gBattleStruct->synchronizeMoveEffect;
+ *synchronizeEffect = gBattleCommunication[MOVE_EFFECT_BYTE];
+ gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT;
+ }
+ return;
+ }
+ else if (statusChanged == FALSE)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ gBattlescriptCurrInstr++;
+ return;
+ }
+ return;
+ }
+ else
+ {
+ if (gBattleMons[gEffectBank].status2 & sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ u8 side;
+ switch (gBattleCommunication[MOVE_EFFECT_BYTE])
+ {
+ case MOVE_EFFECT_CONFUSION:
+ if (gBattleMons[gEffectBank].ability == ABILITY_OWN_TEMPO
+ || gBattleMons[gEffectBank].status2 & STATUS2_CONFUSION)
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleMons[gEffectBank].status2 |= (((Random()) % 0x4)) + 2;
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ }
+ break;
+ case MOVE_EFFECT_FLINCH:
+ if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS)
+ {
+ if (primary == TRUE || certain == MOVE_EFFECT_CERTAIN)
+ {
+ gLastUsedAbility = ABILITY_INNER_FOCUS;
+ RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS);
+ gBattlescriptCurrInstr = BattleScript_FlinchPrevention;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+ }
+ else
+ {
+ if (BankGetTurnOrder(gEffectBank) > gCurrentTurnActionNumber)
+ gBattleMons[gEffectBank].status2 |= sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ case MOVE_EFFECT_UPROAR:
+ if (!(gBattleMons[gEffectBank].status2 & STATUS2_UPROAR))
+ {
+
+ gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBank] = gCurrentMove;
+ gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4;
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ case MOVE_EFFECT_PAYDAY:
+ if (GET_BANK_SIDE(gBankAttacker) == SIDE_PLAYER)
+ {
+ u16 PayDay = gPaydayMoney;
+ gPaydayMoney += (gBattleMons[gBankAttacker].level * 5);
+ if (PayDay > gPaydayMoney)
+ gPaydayMoney = 0xFFFF;
+ }
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case MOVE_EFFECT_TRI_ATTACK:
+ if (gBattleMons[gEffectBank].status1)
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3;
+ SetMoveEffect(FALSE, 0);
+ }
+ break;
+ case MOVE_EFFECT_CHARGING:
+ gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBank] = gCurrentMove;
+ gProtectStructs[gEffectBank].chargingTurn = 1;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_WRAP:
+ if (gBattleMons[gEffectBank].status2 & STATUS2_WRAPPED)
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 3) << 0xD;
+
+ *(gBattleStruct->wrappedMove + gEffectBank * 2 + 0) = gCurrentMove;
+ *(gBattleStruct->wrappedMove + gEffectBank * 2 + 1) = gCurrentMove >> 8;
+ *(gBattleStruct->wrappedBy + gEffectBank) = gBankAttacker;
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+
+ for (gBattleCommunication[MULTISTRING_CHOOSER] = 0; ; gBattleCommunication[MULTISTRING_CHOOSER]++)
+ {
+ if (gBattleCommunication[MULTISTRING_CHOOSER] > 4)
+ break;
+ if (gTrappingMoves[gBattleCommunication[MULTISTRING_CHOOSER]] == gCurrentMove)
+ break;
+ }
+ }
+ break;
+ case MOVE_EFFECT_RECOIL_25: // 25% recoil
+ gBattleMoveDamage = (gHpDealt) / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case MOVE_EFFECT_ATK_PLUS_1:
+ case MOVE_EFFECT_DEF_PLUS_1:
+ case MOVE_EFFECT_SPD_PLUS_1:
+ case MOVE_EFFECT_SP_ATK_PLUS_1:
+ case MOVE_EFFECT_SP_DEF_PLUS_1:
+ case MOVE_EFFECT_ACC_PLUS_1:
+ case MOVE_EFFECT_EVS_PLUS_1:
+ if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1),
+ gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_PLUS_1 + 1,
+ affectsUser, 0))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ gBattleScripting.animArg2 = 0;
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_StatUp;
+ }
+ break;
+ case MOVE_EFFECT_ATK_MINUS_1:
+ case MOVE_EFFECT_DEF_MINUS_1:
+ case MOVE_EFFECT_SPD_MINUS_1:
+ case MOVE_EFFECT_SP_ATK_MINUS_1:
+ case MOVE_EFFECT_SP_DEF_MINUS_1:
+ case MOVE_EFFECT_ACC_MINUS_1:
+ case MOVE_EFFECT_EVS_MINUS_1:
+ if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(1) | STAT_BUFF_NEGATIVE,
+ gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_MINUS_1 + 1,
+ affectsUser, 0))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ gBattleScripting.animArg2 = 0;
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_StatDown;
+ }
+ break;
+ case MOVE_EFFECT_ATK_PLUS_2:
+ case MOVE_EFFECT_DEF_PLUS_2:
+ case MOVE_EFFECT_SPD_PLUS_2:
+ case MOVE_EFFECT_SP_ATK_PLUS_2:
+ case MOVE_EFFECT_SP_DEF_PLUS_2:
+ case MOVE_EFFECT_ACC_PLUS_2:
+ case MOVE_EFFECT_EVS_PLUS_2:
+ if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2),
+ gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_PLUS_2 + 1,
+ affectsUser, 0))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ gBattleScripting.animArg2 = 0;
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_StatUp;
+ }
+ break;
+ case MOVE_EFFECT_ATK_MINUS_2:
+ case MOVE_EFFECT_DEF_MINUS_2:
+ case MOVE_EFFECT_SPD_MINUS_2:
+ case MOVE_EFFECT_SP_ATK_MINUS_2:
+ case MOVE_EFFECT_SP_DEF_MINUS_2:
+ case MOVE_EFFECT_ACC_MINUS_2:
+ case MOVE_EFFECT_EVS_MINUS_2:
+ if (ChangeStatBuffs(SET_STAT_BUFF_VALUE(2) | STAT_BUFF_NEGATIVE,
+ gBattleCommunication[MOVE_EFFECT_BYTE] - MOVE_EFFECT_ATK_MINUS_2 + 1,
+ affectsUser, 0))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleScripting.animArg1 = gBattleCommunication[MOVE_EFFECT_BYTE] & ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ gBattleScripting.animArg2 = 0;
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_StatDown;
+ }
+ break;
+ case MOVE_EFFECT_RECHARGE:
+ gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE;
+ gDisableStructs[gEffectBank].rechargeCounter = 2;
+ gLockedMoves[gEffectBank] = gCurrentMove;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_RAGE:
+ gBattleMons[gBankAttacker].status2 |= STATUS2_RAGE;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_STEAL_ITEM:
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ gBattlescriptCurrInstr++;
+ break;
+ }
+
+ side = GetBankSide(gBankAttacker);
+ if (GetBankSide(gBankAttacker) == SIDE_OPPONENT
+ && !(gBattleTypeFlags &
+ (BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_LINK
+ | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_SECRET_BASE)))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else if (!(gBattleTypeFlags &
+ (BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_LINK
+ | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_SECRET_BASE))
+ && (gWishFutureKnock.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]]))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else if (gBattleMons[gBankTarget].item
+ && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD)
+ {
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_NoItemSteal;
+
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ else if (gBattleMons[gBankAttacker].item != 0
+ || gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY
+ || IS_ITEM_MAIL(gBattleMons[gBankTarget].item)
+ || gBattleMons[gBankTarget].item == 0)
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ u16* changedItem = &gBattleStruct->changedItems[gBankAttacker];
+ gLastUsedItem = *changedItem = gBattleMons[gBankTarget].item;
+ gBattleMons[gBankTarget].item = 0;
+
+ gActiveBank = gBankAttacker;
+ EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
+ MarkBufferBankForExecution(gBankAttacker);
+
+ gActiveBank = gBankTarget;
+ EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item);
+ MarkBufferBankForExecution(gBankTarget);
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_ItemSteal;
+
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 1) = 0;
+ }
+
+ }
+ break;
+ case MOVE_EFFECT_PREVENT_ESCAPE:
+ gBattleMons[gBankTarget].status2 |= STATUS2_ESCAPE_PREVENTION;
+ gDisableStructs[gBankTarget].bankPreventingEscape = gBankAttacker;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_NIGHTMARE:
+ gBattleMons[gBankTarget].status2 |= STATUS2_NIGHTMARE;
+ gBattlescriptCurrInstr++;
+ break;
+ case MOVE_EFFECT_ALL_STATS_UP:
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_AllStatsUp;
+ break;
+ case MOVE_EFFECT_RAPIDSPIN:
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_RapidSpinAway;
+ break;
+ case MOVE_EFFECT_REMOVE_PARALYSIS: // Smelling salts
+ if (!(gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS))
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS);
+
+ gActiveBank = gBankTarget;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
+ }
+ break;
+ case MOVE_EFFECT_ATK_DEF_DOWN: // SuperPower
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_AtkDefDown;
+ break;
+ case MOVE_EFFECT_RECOIL_33_PARALYSIS: // Volt Tackle
+ gBattleMoveDamage = gHpDealt / 3;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case MOVE_EFFECT_THRASH:
+ if (gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE)
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gEffectBank] = gCurrentMove;
+ gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA);
+ }
+ break;
+ case MOVE_EFFECT_KNOCK_OFF:
+ if (gBattleMons[gEffectBank].ability == ABILITY_STICKY_HOLD)
+ {
+ if (gBattleMons[gEffectBank].item == 0)
+ {
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gLastUsedAbility = ABILITY_STICKY_HOLD;
+ gBattlescriptCurrInstr = BattleScript_StickyHoldActivates;
+ RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD);
+ }
+ break;
+ }
+ if (gBattleMons[gEffectBank].item)
+ {
+ side = GetBankSide(gEffectBank);
+
+ gLastUsedItem = gBattleMons[gEffectBank].item;
+ gBattleMons[gEffectBank].item = 0;
+ gWishFutureKnock.knockedOffPokes[side] |= gBitTable[gBattlePartyID[gEffectBank]];
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_KnockedOff;
+
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gEffectBank]) + 1) = 0;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ case MOVE_EFFECT_SP_ATK_TWO_DOWN: // Overheat
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_SAtkDown2;
+ break;
+ }
+ }
+ }
+
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+}
+
+static void atk15_seteffectwithchance(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] & MOVE_EFFECT_CERTAIN
+ && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(MOVE_EFFECT_CERTAIN);
+ SetMoveEffect(0, MOVE_EFFECT_CERTAIN);
+ }
+ else if (Random() % 100 < percentChance
+ && gBattleCommunication[MOVE_EFFECT_BYTE]
+ && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (percentChance >= 100)
+ SetMoveEffect(0, MOVE_EFFECT_CERTAIN);
+ else
+ SetMoveEffect(0, 0);
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ gBattleScripting.field_16 = 0;
+}
+
+static void atk16_seteffectprimary(void)
+{
+ SetMoveEffect(TRUE, 0);
+}
+
+static void atk17_seteffectsecondary(void)
+{
+ SetMoveEffect(FALSE, 0);
+}
+
+static void atk18_status_effect_clear(void)
+{
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] <= MOVE_EFFECT_TOXIC)
+ gBattleMons[gActiveBank].status1 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+ else
+ gBattleMons[gActiveBank].status2 &= (~sStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ gBattlescriptCurrInstr += 2;
+ gBattleScripting.field_16 = 0;
+}
+
+static void atk19_faint_pokemon(void)
+{
+ const u8 *BS_ptr;
+
+ if (gBattlescriptCurrInstr[2] != 0)
+ {
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ {
+ BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 3);
+
+ BattleScriptPop();
+ gBattlescriptCurrInstr = BS_ptr;
+ gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 7;
+ }
+ }
+ else
+ {
+ u8 bank;
+
+ if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER)
+ {
+ gActiveBank = gBankAttacker;
+ bank = gBankTarget;
+ BS_ptr = BattleScript_FaintAttacker;
+ }
+ else
+ {
+ gActiveBank = gBankTarget;
+ bank = gBankAttacker;
+ BS_ptr = BattleScript_FaintTarget;
+ }
+ if (!(gAbsentBankFlags & gBitTable[gActiveBank])
+ && gBattleMons[gActiveBank].hp == 0)
+ {
+ gHitMarker |= HITMARKER_FAINTED(gActiveBank);
+ BattleScriptPush(gBattlescriptCurrInstr + 7);
+ gBattlescriptCurrInstr = BS_ptr;
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ gHitMarker |= HITMARKER_x400000;
+ if (gBattleResults.playerFaintCounter < 0xFF)
+ gBattleResults.playerFaintCounter++;
+ AdjustFriendshipOnBattleFaint(gActiveBank);
+ }
+ else
+ {
+ if (gBattleResults.opponentFaintCounter < 0xFF)
+ gBattleResults.opponentFaintCounter++;
+ gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES, NULL);
+ }
+ if ((gHitMarker & HITMARKER_DESTINYBOND) && gBattleMons[gBankAttacker].hp != 0)
+ {
+ gHitMarker &= ~(HITMARKER_DESTINYBOND);
+ BattleScriptPush(gBattlescriptCurrInstr);
+ gBattleMoveDamage = gBattleMons[bank].hp;
+ gBattlescriptCurrInstr = BattleScript_DestinyBondTakesLife;
+ }
+ if ((gStatuses3[gBankTarget] & STATUS3_GRUDGE)
+ && !(gHitMarker & HITMARKER_GRUDGE)
+ && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)
+ && gBattleMons[gBankAttacker].hp != 0
+ && gCurrentMove != MOVE_STRUGGLE)
+ {
+ u8 moveIndex = *(gBattleStruct->chosenMovePositions + gBankAttacker);
+
+ gBattleMons[gBankAttacker].pp[moveIndex] = 0;
+ BattleScriptPush(gBattlescriptCurrInstr);
+ gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp;
+ gActiveBank = gBankAttacker;
+ EmitSetMonData(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBank].pp[moveIndex]);
+ MarkBufferBankForExecution(gActiveBank);
+
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBankAttacker].moves[moveIndex])
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 7;
+ }
+ }
+}
+
+static void atk1A_faint_animation(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ EmitFaintAnimation(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk1B_faint_effects_clear(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[gActiveBank].hp == 0)
+ {
+ gBattleMons[gActiveBank].status1 = 0;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+
+ FaintClearSetData(); // Effects like attractions, trapping, etc.
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk1C_jumpifstatus(void)
+{
+ u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
+ const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
+
+ if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp)
+ gBattlescriptCurrInstr = jumpPtr;
+ else
+ gBattlescriptCurrInstr += 10;
+}
+
+static void atk1D_jumpifstatus2(void)
+{
+ u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
+ const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
+
+ if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp)
+ gBattlescriptCurrInstr = jumpPtr;
+ else
+ gBattlescriptCurrInstr += 10;
+}
+
+static void atk1E_jumpifability(void)
+{
+ u8 bank;
+ u8 ability = gBattlescriptCurrInstr[2];
+ const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
+
+ if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER_SIDE)
+ {
+ bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBankAttacker, ability, 0, 0);
+ if (bank)
+ {
+ gLastUsedAbility = ability;
+ gBattlescriptCurrInstr = jumpPtr;
+ RecordAbilityBattle(bank - 1, gLastUsedAbility);
+ gBattleScripting.field_15 = bank - 1;
+ }
+ else
+ gBattlescriptCurrInstr += 7;
+ }
+ else if (gBattlescriptCurrInstr[1] == BS_GET_NOT_ATTACKER_SIDE)
+ {
+ bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBankAttacker, ability, 0, 0);
+ if (bank)
+ {
+ gLastUsedAbility = ability;
+ gBattlescriptCurrInstr = jumpPtr;
+ RecordAbilityBattle(bank - 1, gLastUsedAbility);
+ gBattleScripting.field_15 = bank - 1;
+ }
+ else
+ gBattlescriptCurrInstr += 7;
+ }
+ else
+ {
+ bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ if (gBattleMons[bank].ability == ability)
+ {
+ gLastUsedAbility = ability;
+ gBattlescriptCurrInstr = jumpPtr;
+ RecordAbilityBattle(bank, gLastUsedAbility);
+ gBattleScripting.field_15 = bank;
+ }
+ else
+ gBattlescriptCurrInstr += 7;
+ }
+}
+
+static void atk1F_jumpifsideaffecting(void)
+{
+ u8 side;
+ u16 flags;
+ const u8* jumpPtr;
+
+ if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER)
+ side = GET_BANK_SIDE(gBankAttacker);
+ else
+ side = GET_BANK_SIDE(gBankTarget);
+
+ flags = BS2ScriptRead16(gBattlescriptCurrInstr + 2);
+ jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 4);
+
+ if (gSideAffecting[side] & flags)
+ gBattlescriptCurrInstr = jumpPtr;
+ else
+ gBattlescriptCurrInstr += 8;
+}
+
+static void atk20_jumpifstat(void)
+{
+ u8 ret = 0;
+ u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 value = gBattleMons[bank].statStages[gBattlescriptCurrInstr[3]];
+
+ switch (gBattlescriptCurrInstr[2])
+ {
+ case CMP_EQUAL:
+ if (value == gBattlescriptCurrInstr[4])
+ ret++;
+ break;
+ case CMP_NOT_EQUAL:
+ if (value != gBattlescriptCurrInstr[4])
+ ret++;
+ break;
+ case CMP_GREATER_THAN:
+ if (value > gBattlescriptCurrInstr[4])
+ ret++;
+ break;
+ case CMP_LESS_THAN:
+ if (value < gBattlescriptCurrInstr[4])
+ ret++;
+ break;
+ case CMP_COMMON_BITS:
+ if (value & gBattlescriptCurrInstr[4])
+ ret++;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(value & gBattlescriptCurrInstr[4]))
+ ret++;
+ break;
+ }
+
+ if (ret)
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ else
+ gBattlescriptCurrInstr += 9;
+}
+
+static void atk21_jumpifstatus3(void)
+{
+ u32 flags;
+ const u8* jumpPtr;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
+ jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7);
+
+ if (gBattlescriptCurrInstr[6])
+ {
+ if ((gStatuses3[gActiveBank] & flags) != 0)
+ gBattlescriptCurrInstr += 11;
+ else
+ gBattlescriptCurrInstr = jumpPtr;
+ }
+ else
+ {
+ if ((gStatuses3[gActiveBank] & flags) != 0)
+ gBattlescriptCurrInstr = jumpPtr;
+ else
+ gBattlescriptCurrInstr += 11;
+ }
+}
+
+static void atk22_jumpiftype(void)
+{
+ u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ u8 type = gBattlescriptCurrInstr[2];
+ const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
+
+ if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type)
+ gBattlescriptCurrInstr = jumpPtr;
+ else
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk23_getexp(void)
+{
+ u16 item;
+ s32 i; // also used as stringId
+ u8 holdEffect;
+ s32 sentIn;
+
+ s32 viaExpShare = 0;
+ u16* exp = &gBattleStruct->expValue;
+
+ gBank1 = GetBattleBank(gBattlescriptCurrInstr[1]);
+ sentIn = gSentPokesToOpponent[(gBank1 & 2) >> 1];
+
+ switch (gBattleScripting.atk23_state)
+ {
+ case 0: // check if should receive exp at all
+ if (GetBankSide(gBank1) != SIDE_OPPONENT || (gBattleTypeFlags &
+ (BATTLE_TYPE_LINK
+ | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_x4000000
+ | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_SAFARI
+ | BATTLE_TYPE_BATTLE_TOWER
+ | BATTLE_TYPE_EREADER_TRAINER)))
+ {
+ gBattleScripting.atk23_state = 6; // goto last case
+ }
+ else
+ {
+ gBattleScripting.atk23_state++;
+ gBattleStruct->field_DF |= gBitTable[gBattlePartyID[gBank1]];
+ }
+ break;
+ case 1: // calculate experience points to redistribute
+ {
+ u16 calculatedExp;
+ s32 viaSentIn;
+
+ for (viaSentIn = 0, i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == SPECIES_NONE || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ continue;
+ if (gBitTable[i] & sentIn)
+ viaSentIn++;
+
+ item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+
+ if (item == ITEM_ENIGMA_BERRY)
+ holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
+ else
+ holdEffect = ItemId_GetHoldEffect(item);
+
+ if (holdEffect == HOLD_EFFECT_EXP_SHARE)
+ viaExpShare++;
+ }
+
+ calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7;
+
+ if (viaExpShare) // at least one mon is getting exp via exp share
+ {
+ *exp = calculatedExp / 2 / viaSentIn;
+ if (*exp == 0)
+ *exp = 1;
+
+ gExpShareExp = calculatedExp / 2 / viaExpShare;
+ if (gExpShareExp == 0)
+ gExpShareExp = 1;
+ }
+ else
+ {
+ *exp = calculatedExp / viaSentIn;
+ if (*exp == 0)
+ *exp = 1;
+ gExpShareExp = 0;
+ }
+
+ gBattleScripting.atk23_state++;
+ gBattleStruct->expGetterId = 0;
+ gBattleStruct->sentInPokes = sentIn;
+ }
+ // fall through
+ case 2: // set exp value to the poke in expgetter_id and print message
+ if (gBattleExecBuffer == 0)
+ {
+ item = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HELD_ITEM);
+
+ if (item == ITEM_ENIGMA_BERRY)
+ holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect;
+ else
+ holdEffect = ItemId_GetHoldEffect(item);
+
+ if (holdEffect != HOLD_EFFECT_EXP_SHARE && !(gBattleStruct->sentInPokes & 1))
+ {
+ *(&gBattleStruct->sentInPokes) >>= 1;
+ gBattleScripting.atk23_state = 5;
+ gBattleMoveDamage = 0; // used for exp
+ }
+ else if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL) == MAX_MON_LEVEL)
+ {
+ *(&gBattleStruct->sentInPokes) >>= 1;
+ gBattleScripting.atk23_state = 5;
+ gBattleMoveDamage = 0; // used for exp
+ }
+ else
+ {
+ // music change in wild battle after fainting a poke
+ if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !gBattleStruct->wildVictorySong)
+ {
+ BattleMusicStop();
+ PlayBGM(0x161);
+ gBattleStruct->wildVictorySong++;
+ }
+
+ if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP))
+ {
+ if (gBattleStruct->sentInPokes & 1)
+ gBattleMoveDamage = *exp;
+ else
+ gBattleMoveDamage = 0;
+
+ if (holdEffect == HOLD_EFFECT_EXP_SHARE)
+ gBattleMoveDamage += gExpShareExp;
+ if (holdEffect == HOLD_EFFECT_LUCKY_EGG)
+ gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
+
+ if (IsTradedMon(&gPlayerParty[gBattleStruct->expGetterId]))
+ {
+ // check if the pokemon doesn't belong to the player
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gBattleStruct->expGetterId >= 3)
+ {
+ i = 0x149;
+ }
+ else
+ {
+ gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
+ i = 0x14A;
+ }
+ }
+ else
+ {
+ i = 0x149;
+ }
+
+ // get exp getter bank
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (!(gBattlePartyID[2] != gBattleStruct->expGetterId) && !(gAbsentBankFlags & gBitTable[2]))
+ gBattleStruct->expGetterBank = 2;
+ else
+ {
+ if (!(gAbsentBankFlags & gBitTable[0]))
+ gBattleStruct->expGetterBank = 0;
+ else
+ gBattleStruct->expGetterBank = 2;
+ }
+ }
+ else
+ gBattleStruct->expGetterBank = 0;
+
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattleStruct->expGetterBank, gBattleStruct->expGetterId)
+
+ // buffer 'gained' or 'gained a boosted'
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, i)
+
+ PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage)
+
+ PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBank);
+ MonGainEVs(&gPlayerParty[gBattleStruct->expGetterId], gBattleMons[gBank1].species);
+ }
+ gBattleStruct->sentInPokes >>= 1;
+ gBattleScripting.atk23_state++;
+ }
+ }
+ break;
+ case 3: // Set stats and give exp
+ if (gBattleExecBuffer == 0)
+ {
+ gBattleBufferB[gBattleStruct->expGetterBank][0] = 0;
+ if (GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP) && GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL) != MAX_MON_LEVEL)
+ {
+ BATTLE_LVLUP_STATS->hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP);
+ BATTLE_LVLUP_STATS->atk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK);
+ BATTLE_LVLUP_STATS->def = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF);
+ BATTLE_LVLUP_STATS->spd = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
+ BATTLE_LVLUP_STATS->spAtk = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK);
+ BATTLE_LVLUP_STATS->spDef = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF);
+
+ gActiveBank = gBattleStruct->expGetterBank;
+ EmitExpUpdate(0, gBattleStruct->expGetterId, gBattleMoveDamage);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattleScripting.atk23_state++;
+ }
+ break;
+ case 4: // lvl up if necessary
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = gBattleStruct->expGetterBank;
+ if (gBattleBufferB[gActiveBank][0] == 0x21 && gBattleBufferB[gActiveBank][1] == 0xB)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId)
+ sub_805E990(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattleStruct->expGetterId)
+
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL))
+
+ BattleScriptPushCursor();
+ gLeveledUpInBattle |= gBitTable[gBattleStruct->expGetterId];
+ gBattlescriptCurrInstr = BattleScript_LevelUp;
+ gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8));
+ AdjustFriendship(&gPlayerParty[gBattleStruct->expGetterId], 0);
+
+ // update battle mon structure after level up
+ if (gBattlePartyID[0] == gBattleStruct->expGetterId && gBattleMons[0].hp)
+ {
+ gBattleMons[0].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL);
+ gBattleMons[0].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP);
+ gBattleMons[0].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP);
+ gBattleMons[0].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK);
+ gBattleMons[0].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF);
+ // Why is this duplicated?
+ gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
+ gBattleMons[0].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
+
+ gBattleMons[0].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK);
+ gBattleMons[0].spDefense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPDEF);
+ }
+ // What is else if?
+ if (gBattlePartyID[2] == gBattleStruct->expGetterId && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gBattleMons[2].level = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL);
+ gBattleMons[2].hp = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_HP);
+ gBattleMons[2].maxHP = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MAX_HP);
+ gBattleMons[2].attack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_ATK);
+ gBattleMons[2].defense = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_DEF);
+ // Duplicated again, but this time there's no Sp Defense
+ gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
+ gBattleMons[2].speed = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPEED);
+
+ gBattleMons[2].spAttack = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPATK);
+ }
+ gBattleScripting.atk23_state = 5;
+ }
+ else
+ {
+ gBattleMoveDamage = 0;
+ gBattleScripting.atk23_state = 5;
+ }
+ }
+ break;
+ case 5: // looper increment
+ if (gBattleMoveDamage) // there is exp to give, goto case 3 that gives exp
+ gBattleScripting.atk23_state = 3;
+ else
+ {
+ gBattleStruct->expGetterId++;
+ if (gBattleStruct->expGetterId <= 5)
+ gBattleScripting.atk23_state = 2; // loop again
+ else
+ gBattleScripting.atk23_state = 6; // we're done
+ }
+ break;
+ case 6: // increment instruction
+ if (gBattleExecBuffer == 0)
+ {
+ // not sure why gf clears the item and ability here
+ gBattleMons[gBank1].item = 0;
+ gBattleMons[gBank1].ability = 0;
+ gBattlescriptCurrInstr += 2;
+ }
+ break;
+ }
+}
+
+#ifdef NONMATCHING
+static void atk24(void)
+{
+ u16 HP_count = 0;
+ s32 i;
+
+ if (gBattleExecBuffer)
+ return;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId == STEVEN_PARTNER_ID)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ }
+ }
+ else
+ {
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)
+ && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->field_2A0 & gBitTable[i])))
+ {
+ 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)
+ && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->field_2A1 & gBitTable[i])))
+ {
+ HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP);
+ }
+ }
+
+ if (HP_count == 0)
+ gBattleOutcome |= BATTLE_WON;
+
+ if (gBattleOutcome == 0 && (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
+ {
+ s32 foundPlayer;
+ s32 foundOpponent;
+
+ // Impossible to decompile loops.
+ for (foundPlayer = 0, i = 0; i < gNoOfAllBanks; i += 2)
+ {
+ if (HITMARKER_UNK(i) & gHitMarker && !gSpecialStatuses[i].flag40)
+ foundPlayer++;
+ }
+
+ for (foundOpponent = 0, i = 1; i < gNoOfAllBanks; i += 2)
+ {
+ if (HITMARKER_UNK(i) & gHitMarker && !gSpecialStatuses[i].flag40)
+ foundOpponent++;
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (foundOpponent + foundPlayer > 1)
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ if (foundOpponent != 0 && foundPlayer != 0)
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 5;
+ }
+}
+#else
+__attribute__((naked))
+static void atk24(void)
+{
+ asm("\n\
+ .syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ movs r6, 0\n\
+ ldr r0, =gBattleExecBuffer\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0804ACE2\n\
+ b _0804AF22\n\
+ _0804ACE2:\n\
+ ldr r0, =gBattleTypeFlags\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 15\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0804AD48\n\
+ ldr r0, =gPartnerTrainerId\n\
+ ldrh r1, [r0]\n\
+ ldr r0, =0x00000c03\n\
+ cmp r1, r0\n\
+ bne _0804AD48\n\
+ movs r5, 0\n\
+ _0804ACFC:\n\
+ movs r0, 0x64\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, =gPlayerParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0804AD2C\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0804AD2C\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\
+ _0804AD2C:\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x2\n\
+ ble _0804ACFC\n\
+ b _0804ADA8\n\
+ .pool\n\
+ _0804AD48:\n\
+ movs r5, 0\n\
+ _0804AD4A:\n\
+ movs r0, 0x64\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, =gPlayerParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0804ADA2\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0804ADA2\n\
+ ldr r0, =gBattleTypeFlags\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 11\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0804AD94\n\
+ ldr r0, =gBattleStruct\n\
+ ldr r0, [r0]\n\
+ movs r1, 0xA8\n\
+ lsls r1, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ ldr r2, =gBitTable\n\
+ lsls r0, r5, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0804ADA2\n\
+ _0804AD94:\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\
+ _0804ADA2:\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x5\n\
+ ble _0804AD4A\n\
+ _0804ADA8:\n\
+ cmp r6, 0\n\
+ bne _0804ADB6\n\
+ ldr r0, =gBattleOutcome\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x2\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ _0804ADB6:\n\
+ movs r6, 0\n\
+ movs r5, 0\n\
+ _0804ADBA:\n\
+ movs r0, 0x64\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, =gEnemyParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0804AE10\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _0804AE10\n\
+ ldr r0, =gBattleTypeFlags\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 11\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0804AE02\n\
+ ldr r0, =gBattleStruct\n\
+ ldr r0, [r0]\n\
+ ldr r1, =0x000002a1\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ ldr r2, =gBitTable\n\
+ lsls r0, r5, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0804AE10\n\
+ _0804AE02:\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\
+ _0804AE10:\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x5\n\
+ ble _0804ADBA\n\
+ ldr r2, =gBattleOutcome\n\
+ cmp r6, 0\n\
+ bne _0804AE24\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ _0804AE24:\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0\n\
+ bne _0804AF1A\n\
+ ldr r0, =gBattleTypeFlags\n\
+ ldr r1, [r0]\n\
+ ldr r2, =0x02000002\n\
+ ands r1, r2\n\
+ mov r8, r0\n\
+ cmp r1, 0\n\
+ beq _0804AF1A\n\
+ movs r3, 0\n\
+ movs r5, 0\n\
+ ldr r0, =gNoOfAllBanks\n\
+ ldrb r1, [r0]\n\
+ mov r12, r0\n\
+ ldr r7, =gBattlescriptCurrInstr\n\
+ cmp r3, r1\n\
+ bge _0804AE70\n\
+ ldr r0, =gHitMarker\n\
+ movs r6, 0x80\n\
+ lsls r6, 21\n\
+ ldr r4, [r0]\n\
+ adds r2, r1, 0\n\
+ ldr r1, =gSpecialStatuses\n\
+ _0804AE54:\n\
+ adds r0, r6, 0\n\
+ lsls r0, r5\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ beq _0804AE68\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _0804AE68\n\
+ adds r3, 0x1\n\
+ _0804AE68:\n\
+ adds r1, 0x28\n\
+ adds r5, 0x2\n\
+ cmp r5, r2\n\
+ blt _0804AE54\n\
+ _0804AE70:\n\
+ movs r2, 0\n\
+ movs r5, 0x1\n\
+ mov r4, r12\n\
+ ldrb r1, [r4]\n\
+ cmp r5, r1\n\
+ bge _0804AEAA\n\
+ ldr r0, =gHitMarker\n\
+ movs r4, 0x80\n\
+ lsls r4, 21\n\
+ mov r12, r4\n\
+ ldr r6, [r0]\n\
+ ldr r0, =gSpecialStatuses\n\
+ adds r4, r1, 0\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x14\n\
+ _0804AE8E:\n\
+ mov r0, r12\n\
+ lsls r0, r5\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _0804AEA2\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _0804AEA2\n\
+ adds r2, 0x1\n\
+ _0804AEA2:\n\
+ adds r1, 0x28\n\
+ adds r5, 0x2\n\
+ cmp r5, r4\n\
+ blt _0804AE8E\n\
+ _0804AEAA:\n\
+ mov r1, r8\n\
+ ldr r0, [r1]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0804AEF0\n\
+ adds r0, r2, r3\n\
+ cmp r0, 0x1\n\
+ bgt _0804AEF8\n\
+ b _0804AF12\n\
+ .pool\n\
+ _0804AEF0:\n\
+ cmp r2, 0\n\
+ beq _0804AF12\n\
+ cmp r3, 0\n\
+ beq _0804AF12\n\
+ _0804AEF8:\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 _0804AF22\n\
+ _0804AF12:\n\
+ ldr r0, [r7]\n\
+ adds r0, 0x5\n\
+ str r0, [r7]\n\
+ b _0804AF22\n\
+ _0804AF1A:\n\
+ ldr r1, =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ _0804AF22:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+static void MoveValuesCleanUp(void)
+{
+ gBattleMoveFlags = 0;
+ gBattleScripting.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 = 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 = gBattlescriptCurrInstr[1];
+ const u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ u8 value = gBattlescriptCurrInstr[6];
+ const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7);
+
+ gBattlescriptCurrInstr += 11;
+
+ switch (caseID)
+ {
+ case CMP_EQUAL:
+ if (*memByte == value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_NOT_EQUAL:
+ if (*memByte != value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_GREATER_THAN:
+ if (*memByte > value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_LESS_THAN:
+ if (*memByte < value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_COMMON_BITS:
+ if (*memByte & value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(*memByte & value))
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ }
+}
+
+static void atk2A_jumpifhalfword(void)
+{
+ u8 caseID = gBattlescriptCurrInstr[1];
+ const u16* memHword = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 6);
+ const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 8);
+
+ gBattlescriptCurrInstr += 12;
+
+ switch (caseID)
+ {
+ case CMP_EQUAL:
+ if (*memHword == value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_NOT_EQUAL:
+ if (*memHword != value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_GREATER_THAN:
+ if (*memHword > value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_LESS_THAN:
+ if (*memHword < value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_COMMON_BITS:
+ if (*memHword & value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(*memHword & value))
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ }
+}
+
+static void atk2B_jumpifword(void)
+{
+ u8 caseID = gBattlescriptCurrInstr[1];
+ const u32* memWord = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ u32 value = BSScriptRead32(gBattlescriptCurrInstr + 6);
+ const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10);
+
+ gBattlescriptCurrInstr += 14;
+
+ switch (caseID)
+ {
+ case CMP_EQUAL:
+ if (*memWord == value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_NOT_EQUAL:
+ if (*memWord != value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_GREATER_THAN:
+ if (*memWord > value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_LESS_THAN:
+ if (*memWord < value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_COMMON_BITS:
+ if (*memWord & value)
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(*memWord & value))
+ gBattlescriptCurrInstr = jumpPtr;
+ break;
+ }
+}
+
+static void atk2C_jumpifarrayequal(void)
+{
+ const u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ const u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ u32 size = gBattlescriptCurrInstr[9];
+ const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10);
+
+ u8 i;
+ for (i = 0; i < size; i++)
+ {
+ if (*mem1 != *mem2)
+ {
+ gBattlescriptCurrInstr += 14;
+ break;
+ }
+ mem1++, mem2++;
+ }
+
+ if (i == size)
+ gBattlescriptCurrInstr = jumpPtr;
+}
+
+static void atk2D_jumpifarraynotequal(void)
+{
+ u8 equalBytes = 0;
+ const u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ const u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ u32 size = gBattlescriptCurrInstr[9];
+ const u8* jumpPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10);
+
+ u8 i;
+ for (i = 0; i < size; i++)
+ {
+ if (*mem1 == *mem2)
+ {
+ equalBytes++;
+ }
+ mem1++, mem2++;
+ }
+
+ if (equalBytes != size)
+ gBattlescriptCurrInstr = jumpPtr;
+ else
+ gBattlescriptCurrInstr += 14;
+}
+
+static void atk2E_setbyte(void)
+{
+ u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *memByte = gBattlescriptCurrInstr[5];
+
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk2F_addbyte(void)
+{
+ u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *memByte += gBattlescriptCurrInstr[5];
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk30_subbyte(void)
+{
+ u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *memByte -= gBattlescriptCurrInstr[5];
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk31_copyarray(void)
+{
+ u8* dest = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ const u8* src = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ s32 size = gBattlescriptCurrInstr[9];
+
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ dest[i] = src[i];
+ }
+
+ gBattlescriptCurrInstr += 10;
+}
+
+static void atk32_copyarray_withindex(void)
+{
+ u8* dest = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ const u8* src = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ const u8* index = BS2ScriptReadPtr(gBattlescriptCurrInstr + 9);
+ s32 size = gBattlescriptCurrInstr[13];
+
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ dest[i] = src[i + *index];
+ }
+
+ gBattlescriptCurrInstr += 14;
+}
+
+static void atk33_orbyte(void)
+{
+ u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *memByte |= gBattlescriptCurrInstr[5];
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk34_orhalfword(void)
+{
+ u16* memHword = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5);
+
+ *memHword |= val;
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk35_orword(void)
+{
+ u32* memWord = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5);
+
+ *memWord |= val;
+ gBattlescriptCurrInstr += 9;
+}
+
+static void atk36_bicbyte(void)
+{
+ u8* memByte = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *memByte &= ~(gBattlescriptCurrInstr[5]);
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk37_bichalfword(void)
+{
+ u16* memHword = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5);
+
+ *memHword &= ~val;
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk38_bicword(void)
+{
+ u32* memWord = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5);
+
+ *memWord &= ~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 (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ gActiveBank = gBankTarget;
+ else
+ gActiveBank = gBankAttacker;
+
+ EmitHealthBarUpdate(0, gBattleMoveDamage);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk3C_return(void)
+{
+ BattleScriptPop();
+}
+
+static void atk3D_end(void)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ sub_81A5718(gBankAttacker);
+
+ gBattleMoveFlags = 0;
+ gActiveBank = 0;
+ gCurrentActionFuncId = 0xB;
+}
+
+static void atk3E_end2(void)
+{
+ gActiveBank = 0;
+ gCurrentActionFuncId = 0xB;
+}
+
+static void atk3F_end3(void) // pops the main function stack
+{
+ BattleScriptPop();
+ if (BATTLE_CALLBACKS_STACK->size)
+ BATTLE_CALLBACKS_STACK->size--;
+ gBattleMainFunc = BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size];
+}
+
+static void atk41_call(void)
+{
+ BattleScriptPush(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atk42_jumpiftype2(void)
+{
+ u8 bank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ if (gBattlescriptCurrInstr[2] == gBattleMons[bank].type1 || gBattlescriptCurrInstr[2] == gBattleMons[bank].type2)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 3);
+ else
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk43_jumpifabilitypresent(void)
+{
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, gBattlescriptCurrInstr[1], 0, 0))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk44_end_selection_script(void)
+{
+ *(gBankAttacker + gBattleStruct->selectionScriptFinished) = TRUE;
+}
+
+static void atk45_playanimation(void)
+{
+ const u16* argumentPtr;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
+
+ if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE
+ || gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
+ || gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE)
+ {
+ EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 7;
+ }
+ else if (gHitMarker & HITMARKER_NO_ANIMATIONS)
+ {
+ BattleScriptPush(gBattlescriptCurrInstr + 7);
+ gBattlescriptCurrInstr = BattleScript_Pausex20;
+ }
+ else if (gBattlescriptCurrInstr[2] == B_ANIM_RAIN_CONTINUES
+ || gBattlescriptCurrInstr[2] == B_ANIM_SUN_CONTINUES
+ || gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES
+ || gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES)
+ {
+ EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 7;
+ }
+ else if (gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
+ {
+ gBattlescriptCurrInstr += 7;
+ }
+ else
+ {
+ EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 7;
+ }
+}
+
+static void atk46_playanimation2(void) // animation Id is stored in the first pointer
+{
+ const u16* argumentPtr;
+ const u8* animationIdPtr;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ animationIdPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ argumentPtr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
+
+ if (*animationIdPtr == B_ANIM_STATS_CHANGE
+ || *animationIdPtr == B_ANIM_SNATCH_MOVE
+ || *animationIdPtr == B_ANIM_SUBSTITUTE_FADE)
+ {
+ EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 10;
+ }
+ else if (gHitMarker & HITMARKER_NO_ANIMATIONS)
+ {
+ gBattlescriptCurrInstr += 10;
+ }
+ else if (*animationIdPtr == B_ANIM_RAIN_CONTINUES
+ || *animationIdPtr == B_ANIM_SUN_CONTINUES
+ || *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES
+ || *animationIdPtr == B_ANIM_HAIL_CONTINUES)
+ {
+ EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 10;
+ }
+ else if (gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
+ {
+ gBattlescriptCurrInstr += 10;
+ }
+ else
+ {
+ EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 10;
+ }
+}
+
+static void atk47_setgraphicalstatchangevalues(void)
+{
+ u8 value = 0;
+ switch (gBattleScripting.statChanger & 0xF0)
+ {
+ case 0x10: // +1
+ value = 0xF;
+ break;
+ case 0x20: // +2
+ value = 0x27;
+ break;
+ case 0x90: // -1
+ value = 0x16;
+ break;
+ case 0xA0: // -2
+ value = 0x2E;
+ break;
+ }
+ gBattleScripting.animArg1 = (gBattleScripting.statChanger & 0xF) + value - 1;
+ gBattleScripting.animArg2 = 0;
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NONMATCHING
+static void atk48_playstatchangeanimation(void)
+{
+ u32 currStat = 0;
+ s16 statAnimId = 0;
+ s16 checkingStatAnimId = 0;
+ s32 changeableStats = 0;
+ u32 statsToCheck = 0;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ statsToCheck = gBattlescriptCurrInstr[2];
+
+ if (gBattlescriptCurrInstr[3] & ATK48_STAT_NEGATIVE) // goes down
+ {
+ checkingStatAnimId = (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) ? 0x2D : 0x15;
+ while (statsToCheck != 0)
+ {
+ if (statsToCheck & 1)
+ {
+ if (!(gBattlescriptCurrInstr[3] & ATK48_LOWER_FAIL_CHECK))
+ {
+ if (gBattleMons[gActiveBank].statStages[currStat] > 0)
+ {
+ statAnimId = checkingStatAnimId;
+ changeableStats++;
+ }
+ }
+ else if (!gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer
+ && gBattleMons[gActiveBank].ability != ABILITY_CLEAR_BODY
+ && gBattleMons[gActiveBank].ability != ABILITY_WHITE_SMOKE
+ && !(gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && currStat == STAT_STAGE_ACC)
+ && !(gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && currStat == STAT_STAGE_ATK))
+ {
+ if (gBattleMons[gActiveBank].statStages[currStat] > 0)
+ {
+ statAnimId = checkingStatAnimId;
+ changeableStats++;
+ }
+ }
+ }
+ statsToCheck >>= 1, checkingStatAnimId++, currStat++;
+ }
+
+ if (changeableStats > 1) // more than one stat, so the color is gray
+ {
+ if (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO)
+ statAnimId = 0x3A;
+ else
+ statAnimId = 0x39;
+ }
+ }
+ else // goes up
+ {
+ checkingStatAnimId = (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO) ? 0x26 : 0xE;
+ while (statsToCheck != 0)
+ {
+ if (statsToCheck & 1 && gBattleMons[gActiveBank].statStages[currStat] < 0xC)
+ {
+ statAnimId = checkingStatAnimId;
+ changeableStats++;
+ }
+ statsToCheck >>= 1, checkingStatAnimId += 1, currStat++;
+ }
+
+ if (changeableStats > 1) // more than one stat, so the color is gray
+ {
+ if (gBattlescriptCurrInstr[3] & ATK48_STAT_BY_TWO)
+ statAnimId = 0x38;
+ else
+ statAnimId = 0x37;
+ }
+ }
+
+ if (gBattlescriptCurrInstr[3] & ATK48_BIT_x4 && changeableStats < 2)
+ {
+ gBattlescriptCurrInstr += 4;
+ }
+ else if (changeableStats != 0 && gBattleScripting.field_1B == 0)
+ {
+ EmitBattleAnimation(0, B_ANIM_STATS_CHANGE, statAnimId);
+ MarkBufferBankForExecution(gActiveBank);
+ if (gBattlescriptCurrInstr[3] & ATK48_BIT_x4 && changeableStats > 1)
+ gBattleScripting.field_1B = 1;
+ gBattlescriptCurrInstr += 4;
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 4;
+ }
+}
+#else
+__attribute__((naked))
+static void atk48_playstatchangeanimation(void)
+{
+ asm("\n\
+ .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, =gBattlescriptCurrInstr\n\
+ ldr r0, [r5]\n\
+ ldrb r0, [r0, 0x1]\n\
+ str r3, [sp]\n\
+ bl GetBattleBank\n\
+ ldr r2, =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 _0804BAEC\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0x15\n\
+ cmp r0, 0\n\
+ beq _0804BA18\n\
+ movs r1, 0x2D\n\
+_0804BA18:\n\
+ cmp r4, 0\n\
+ beq _0804BAC0\n\
+ movs r0, 0x1\n\
+ mov r10, r0\n\
+ ldr r0, =gBattleMons + 0x18\n\
+ mov r9, r0\n\
+ lsls r5, r1, 16\n\
+_0804BA26:\n\
+ adds r0, r4, 0\n\
+ mov r1, r10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0804BAB2\n\
+ ldr r0, =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0804BA58\n\
+ ldr r0, =gActiveBank\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r7, r0\n\
+ b _0804BAA0\n\
+ .pool\n\
+_0804BA58:\n\
+ ldr r6, =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, =gSideTimers\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x4]\n\
+ ldr r3, [sp]\n\
+ cmp r0, 0\n\
+ bne _0804BAB2\n\
+ ldr r0, =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 _0804BAB2\n\
+ cmp r0, 0x49\n\
+ beq _0804BAB2\n\
+ cmp r0, 0x33\n\
+ bne _0804BA96\n\
+ cmp r7, 0x6\n\
+ beq _0804BAB2\n\
+_0804BA96:\n\
+ cmp r0, 0x34\n\
+ bne _0804BA9E\n\
+ cmp r7, 0x1\n\
+ beq _0804BAB2\n\
+_0804BA9E:\n\
+ adds r0, r7, r2\n\
+_0804BAA0:\n\
+ add r0, r9\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0\n\
+ ble _0804BAB2\n\
+ lsrs r0, r5, 16\n\
+ mov r8, r0\n\
+ adds r3, 0x1\n\
+_0804BAB2:\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 _0804BA26\n\
+_0804BAC0:\n\
+ ldr r0, =gBattlescriptCurrInstr\n\
+ mov r9, r0\n\
+ cmp r3, 0x1\n\
+ ble _0804BB4E\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 _0804BB4E\n\
+ movs r0, 0x3A\n\
+ b _0804BB4C\n\
+ .pool\n\
+_0804BAEC:\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0xE\n\
+ cmp r0, 0\n\
+ beq _0804BAF8\n\
+ movs r1, 0x26\n\
+_0804BAF8:\n\
+ mov r9, r5\n\
+ cmp r4, 0\n\
+ beq _0804BB34\n\
+ ldr r6, =gBattleMons + 0x18\n\
+ adds r5, r2, 0\n\
+ lsls r2, r1, 16\n\
+_0804BB04:\n\
+ movs r0, 0x1\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ beq _0804BB26\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 _0804BB26\n\
+ lsrs r1, r2, 16\n\
+ mov r8, r1\n\
+ adds r3, 0x1\n\
+_0804BB26:\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 _0804BB04\n\
+_0804BB34:\n\
+ cmp r3, 0x1\n\
+ ble _0804BB4E\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 _0804BB4E\n\
+ movs r0, 0x38\n\
+_0804BB4C:\n\
+ mov r8, r0\n\
+_0804BB4E:\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 _0804BB6C\n\
+ cmp r3, 0x1\n\
+ bgt _0804BB6C\n\
+ adds r0, r2, 0x4\n\
+ mov r1, r9\n\
+ b _0804BBBA\n\
+ .pool\n\
+_0804BB6C:\n\
+ cmp r3, 0\n\
+ beq _0804BBB4\n\
+ ldr r4, =gBattleScripting\n\
+ ldrb r0, [r4, 0x1B]\n\
+ cmp r0, 0\n\
+ bne _0804BBB4\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ mov r2, r8\n\
+ str r3, [sp]\n\
+ bl EmitBattleAnimation\n\
+ ldr r0, =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, =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 _0804BBA4\n\
+ cmp r3, 0x1\n\
+ ble _0804BBA4\n\
+ movs r0, 0x1\n\
+ strb r0, [r4, 0x1B]\n\
+_0804BBA4:\n\
+ ldr r1, =gBattlescriptCurrInstr\n\
+ b _0804BBB6\n\
+ .pool\n\
+_0804BBB4:\n\
+ mov r1, r9\n\
+_0804BBB6:\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x4\n\
+_0804BBBA:\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
+
+#define ATK49_LAST_CASE 17
+
+static void atk49_moveend(void)
+{
+ s32 i;
+ bool32 effect;
+ u8 moveType;
+ u8 holdEffectAtk;
+ u16 *choicedMoveAtk;
+ u8 arg1, arg2;
+ u16 lastMove;
+
+ effect = FALSE;
+
+ if (gLastUsedMove == 0xFFFF)
+ lastMove = 0;
+ else
+ lastMove = gLastUsedMove;
+
+ arg1 = gBattlescriptCurrInstr[1];
+ arg2 = gBattlescriptCurrInstr[2];
+
+ if (gBattleMons[gBankAttacker].item == ITEM_ENIGMA_BERRY)
+ holdEffectAtk = gEnigmaBerries[gBankAttacker].holdEffect;
+ else
+ holdEffectAtk = ItemId_GetHoldEffect(gBattleMons[gBankAttacker].item);
+
+ choicedMoveAtk = &gBattleStruct->choicedMove[gBankAttacker];
+
+ GET_MOVE_TYPE(gCurrentMove, moveType);
+
+ do
+ {
+ switch (gBattleScripting.atk49_state)
+ {
+ case 0: // rage check
+ if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE
+ && gBattleMons[gBankTarget].hp != 0 && 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]++;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_RageIsBuilding;
+ effect = TRUE;
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case 1: // defrosting check
+ if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE
+ && gBattleMons[gBankTarget].hp != 0 && gBankAttacker != gBankTarget
+ && gSpecialStatuses[gBankTarget].moveturnLostHP_special
+ && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && moveType == TYPE_FIRE)
+ {
+ gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE);
+ gActiveBank = gBankTarget;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove;
+ effect = TRUE;
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case 2: // target synchronize
+ if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBankTarget, 0, 0, 0))
+ effect = TRUE;
+ gBattleScripting.atk49_state++;
+ break;
+ case 3: // contact abilities
+ if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBankTarget, 0, 0, 0))
+ effect = TRUE;
+ gBattleScripting.atk49_state++;
+ break;
+ case 4: // status immunities
+ if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0))
+ effect = TRUE; // it loops through all banks, so we increment after its done with all banks
+ else
+ gBattleScripting.atk49_state++;
+ break;
+ case 5: // attacker synchronize
+ if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBankAttacker, 0, 0, 0))
+ effect = TRUE;
+ gBattleScripting.atk49_state++;
+ break;
+ case 6: // update choice band move
+ if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND
+ || gLastUsedMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF))
+ goto LOOP;
+ if (gLastUsedMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED))
+ {
+ gBattleScripting.atk49_state++;
+ break;
+ }
+ *choicedMoveAtk = gLastUsedMove;
+ LOOP:
+ {
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankAttacker].moves[i] == *choicedMoveAtk)
+ break;
+ }
+ if (i == 4)
+ *choicedMoveAtk = 0;
+
+ gBattleScripting.atk49_state++;
+ }
+ break;
+ case 7: // changed held items
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ u16* changedItem = &gBattleStruct->changedItems[i];
+ if (*changedItem != 0)
+ {
+ gBattleMons[i].item = *changedItem;
+ *changedItem = 0;
+ }
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case 11: // item effects for all banks
+ if (ItemBattleEffects(3, 0, FALSE))
+ effect = TRUE;
+ else
+ gBattleScripting.atk49_state++;
+ break;
+ case 12: // king's rock and shell bell
+ if (ItemBattleEffects(4, 0, FALSE))
+ effect = TRUE;
+ gBattleScripting.atk49_state++;
+ break;
+ case 8: // make attacker sprite invisible
+ if (gStatuses3[gBankAttacker] & (STATUS3_SEMI_INVULNERABLE)
+ && gHitMarker & HITMARKER_NO_ANIMATIONS)
+ {
+ gActiveBank = gBankAttacker;
+ EmitSpriteInvisibility(0, TRUE);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleScripting.atk49_state++;
+ return;
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case 9: // make attacker sprite visible
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT
+ || !(gStatuses3[gBankAttacker] & (STATUS3_SEMI_INVULNERABLE))
+ || WasUnableToUseMove(gBankAttacker))
+ {
+ gActiveBank = gBankAttacker;
+ EmitSpriteInvisibility(0, FALSE);
+ MarkBufferBankForExecution(gActiveBank);
+ gStatuses3[gBankAttacker] &= ~(STATUS3_SEMI_INVULNERABLE);
+ gSpecialStatuses[gBankAttacker].restoredBankSprite = 1;
+ gBattleScripting.atk49_state++;
+ return;
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case 10: // make target sprite visible
+ if (!gSpecialStatuses[gBankTarget].restoredBankSprite && gBankTarget < gNoOfAllBanks
+ && !(gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE))
+ {
+ gActiveBank = gBankTarget;
+ EmitSpriteInvisibility(0, FALSE);
+ MarkBufferBankForExecution(gActiveBank);
+ gStatuses3[gBankTarget] &= ~(STATUS3_SEMI_INVULNERABLE);
+ gBattleScripting.atk49_state++;
+ return;
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case 13: // update substitute
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gDisableStructs[i].substituteHP == 0)
+ gBattleMons[i].status2 &= ~(STATUS2_SUBSTITUTE);
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case 14: // This case looks interesting, although I am not certain what it does. Probably fine tunes edge cases.
+ if (gHitMarker & HITMARKER_PURSUIT_TRAP)
+ {
+ gActiveBank = gBankAttacker;
+ gBankAttacker = gBankTarget;
+ gBankTarget = gActiveBank;
+ gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
+ }
+ if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED)
+ {
+ gUnknownMovesUsedByBanks[gBankAttacker] = gLastUsedMove;
+ }
+ if (!(gAbsentBankFlags & gBitTable[gBankAttacker])
+ && !(gBattleStruct->field_91 & gBitTable[gBankAttacker])
+ && gBattleMoves[lastMove].effect != EFFECT_BATON_PASS)
+ {
+ if (gHitMarker & HITMARKER_OBEYS)
+ {
+ gLastUsedMovesByBanks[gBankAttacker] = gLastUsedMove;
+ gUnknown_02024260[gBankAttacker] = gCurrentMove;
+ }
+ else
+ {
+ gLastUsedMovesByBanks[gBankAttacker] = 0xFFFF;
+ gUnknown_02024260[gBankAttacker] = 0xFFFF;
+ }
+
+ if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget)))
+ gUnknown_02024270[gBankTarget] = gBankAttacker;
+
+ if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (gLastUsedMove == 0xFFFF)
+ {
+ gUnknown_02024250[gBankTarget] = gLastUsedMove;
+ }
+ else
+ {
+ gUnknown_02024250[gBankTarget] = gCurrentMove;
+ GET_MOVE_TYPE(gCurrentMove, gUnknown_02024258[gBankTarget]);
+ }
+ }
+ else
+ {
+ gUnknown_02024250[gBankTarget] = 0xFFFF;
+ }
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case 15: // mirror move
+ if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker])
+ && gBattleMoves[lastMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS
+ && gBankAttacker != gBankTarget && !(gHitMarker & HITMARKER_FAINTED(gBankTarget))
+ && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ u8 target, attacker;
+
+ *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gLastUsedMove;
+ *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gLastUsedMove >> 8;
+
+ target = gBankTarget;
+ attacker = gBankAttacker;
+ *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gLastUsedMove;
+
+ target = gBankTarget;
+ attacker = gBankAttacker;
+ *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gLastUsedMove >> 8;
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case 16: //
+ if (!(gHitMarker & HITMARKER_UNABLE_TO_USE_MOVE) && gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && !gProtectStructs[gBankAttacker].chargingTurn && gBattleMoves[gCurrentMove].target == MOVE_TARGET_BOTH
+ && !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
+ {
+ u8 bank = GetBankByIdentity(GetBankIdentity(gBankTarget) ^ BIT_MON);
+ if (gBattleMons[bank].hp != 0)
+ {
+ gBankTarget = bank;
+ gHitMarker |= HITMARKER_NO_ATTACKSTRING;
+ gBattleScripting.atk49_state = 0;
+ MoveValuesCleanUp();
+ BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]);
+ gBattlescriptCurrInstr = gUnknown_082DB87D;
+ return;
+ }
+ else
+ {
+ gHitMarker |= HITMARKER_NO_ATTACKSTRING;
+ }
+ }
+ gBattleScripting.atk49_state++;
+ break;
+ case ATK49_LAST_CASE:
+ break;
+ }
+
+ if (arg1 == 1 && effect == FALSE)
+ gBattleScripting.atk49_state = ATK49_LAST_CASE;
+ if (arg1 == 2 && arg2 == gBattleScripting.atk49_state)
+ gBattleScripting.atk49_state = ATK49_LAST_CASE;
+
+ } while (gBattleScripting.atk49_state != ATK49_LAST_CASE && effect == FALSE);
+
+ if (gBattleScripting.atk49_state == ATK49_LAST_CASE && effect == FALSE)
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk4A_typecalc2(void)
+{
+ u8 flags = 0;
+ s32 i = 0;
+ u8 moveType = gBattleMoves[gCurrentMove].type;
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ {
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ gUnknown_02024250[gBankTarget] = 0;
+ gBattleCommunication[6] = moveType;
+ 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] == moveType)
+ {
+ // 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;
+ gUnknown_02024250[gBankTarget] = 0;
+ gBattleCommunication[6] = 3;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ gProtectStructs[gBankAttacker].targetNotAffected = 1;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk4B_return_atk_to_ball(void)
+{
+ gActiveBank = gBankAttacker;
+ if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank)))
+ {
+ EmitReturnMonToBall(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk4C_copy_poke_data(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ gBattlePartyID[gActiveBank] = *(gBattleStruct->field_5C + gActiveBank);
+
+ EmitGetMonData(0, 0, gBitTable[gBattlePartyID[gActiveBank]]);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk4D_switch_data_update(void)
+{
+ struct BattlePokemon oldData;
+ s32 i;
+ u8 *monData;
+
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(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
+ i = GetBankSide(gActiveBank);
+ if (gWishFutureKnock.knockedOffPokes[i] & 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;
+ }
+
+ SwitchInClearSetData();
+
+ if (gBattleTypeFlags & BATTLE_TYPE_PALACE && gBattleMons[gActiveBank].maxHP / 2 >= gBattleMons[gActiveBank].hp
+ && gBattleMons[gActiveBank].hp != 0 && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP))
+ {
+ gBattleStruct->field_92 |= gBitTable[gActiveBank];
+ }
+
+ gBattleScripting.bank = gActiveBank;
+ gBattleTextBuff1[0] = PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = 7;
+ gBattleTextBuff1[2] = gActiveBank;
+ gBattleTextBuff1[3] = gBattlePartyID[gActiveBank];
+ gBattleTextBuff1[4] = EOS;
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk4E_switchin_anim(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT
+ && !(gBattleTypeFlags & (BATTLE_TYPE_LINK
+ | BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_x2000000
+ | BATTLE_TYPE_x4000000
+ | BATTLE_TYPE_FRONTIER)))
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), FLAG_SET_SEEN, gBattleMons[gActiveBank].personality);
+
+ gAbsentBankFlags &= ~(gBitTable[gActiveBank]);
+
+ EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], gBattlescriptCurrInstr[2]);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 3;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ sub_81A56B4();
+}
+
+static void atk4F_jump_if_cannot_switch(void)
+{
+ s32 val = 0;
+ s32 compareVar = 0;
+ struct Pokemon *party = NULL;
+ s32 r7 = 0;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1] & ~(ATK4F_DONT_CHECK_STATUSES));
+
+ if (!(gBattlescriptCurrInstr[1] & ATK4F_DONT_CHECK_STATUSES)
+ && ((gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ || (gStatuses3[gActiveBank] & STATUS3_ROOTED)))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ {
+ #ifndef NONMATCHING
+ asm("":::"r5");
+ #endif // NONMATCHING
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ party = gEnemyParty;
+ else
+ party = gPlayerParty;
+
+ val = 0;
+ if (2 & gActiveBank)
+ val = 3;
+
+ for (compareVar = val + 3; val < compareVar; 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 == compareVar)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ {
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ party = gPlayerParty;
+
+ val = 0;
+ if (sub_806D82C(sub_806D864(gActiveBank)) == TRUE)
+ val = 3;
+ }
+ else
+ {
+ party = gEnemyParty;
+
+ if (gActiveBank == 1)
+ val = 0;
+ else
+ val = 3;
+ }
+ }
+ else
+ {
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ party = gEnemyParty;
+ else
+ party = gPlayerParty;
+
+
+ val = 0;
+ if (sub_806D82C(sub_806D864(gActiveBank)) == TRUE)
+ val = 3;
+ }
+
+ for (compareVar = val + 3; val < compareVar; 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 == compareVar)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS && GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ {
+ party = gEnemyParty;
+
+ val = 0;
+ if (gActiveBank == 3)
+ val = 3;
+
+ for (compareVar = val + 3; val < compareVar; 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 == compareVar)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ }
+ else
+ {
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
+ {
+ r7 = GetBankByIdentity(1);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ compareVar = GetBankByIdentity(3);
+ else
+ compareVar = r7;
+
+ party = gEnemyParty;
+ }
+ else
+ {
+ r7 = GetBankByIdentity(0);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ compareVar = GetBankByIdentity(2);
+ else
+ compareVar = 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[compareVar])
+ break;
+ }
+
+ if (val == 6)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ }
+}
+
+static void sub_804CF10(u8 arg0)
+{
+ *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank];
+ *(gBattleStruct->field_5C + gActiveBank) = 6;
+ gBattleStruct->field_93 &= ~(gBitTable[gActiveBank]);
+
+ EmitChoosePokemon(0, 1, arg0, 0, gBattleStruct->field_60[gActiveBank]);
+ MarkBufferBankForExecution(gActiveBank);
+}
+
+static void atk50_openpartyscreen(void)
+{
+ u32 flags;
+ u8 hitmarkerFaintBits;
+ u8 bank;
+ const u8 *jumpPtr;
+
+ bank = 0;
+ flags = 0;
+ jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+
+ if (gBattlescriptCurrInstr[1] == 5)
+ {
+ if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ {
+ if (sub_80423F4(gActiveBank, 6, 6))
+ {
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!gSpecialStatuses[gActiveBank].flag40)
+ {
+ sub_804CF10(6);
+ gSpecialStatuses[gActiveBank].flag40 = 1;
+ }
+ }
+ else
+ {
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ u8 flag40_0, flag40_1, flag40_2, flag40_3;
+
+ hitmarkerFaintBits = gHitMarker >> 0x1C;
+
+ if (gBitTable[0] & hitmarkerFaintBits)
+ {
+ gActiveBank = 0;
+ if (sub_80423F4(0, 6, 6))
+ {
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ EmitCmd42(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!gSpecialStatuses[gActiveBank].flag40)
+ {
+ sub_804CF10(gBattleStruct->field_5C[2]);
+ gSpecialStatuses[gActiveBank].flag40 = 1;
+ }
+ else
+ {
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ flags |= 1;
+ }
+ }
+ if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits))
+ {
+ gActiveBank = 2;
+ if (sub_80423F4(2, 6, 6))
+ {
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ EmitCmd42(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!gSpecialStatuses[gActiveBank].flag40)
+ {
+ sub_804CF10(gBattleStruct->field_5C[0]);
+ gSpecialStatuses[gActiveBank].flag40 = 1;
+ }
+ else if (!(flags & 1))
+ {
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ if (gBitTable[1] & hitmarkerFaintBits)
+ {
+ gActiveBank = 1;
+ if (sub_80423F4(1, 6, 6))
+ {
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ EmitCmd42(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!gSpecialStatuses[gActiveBank].flag40)
+ {
+ sub_804CF10(gBattleStruct->field_5C[3]);
+ gSpecialStatuses[gActiveBank].flag40 = 1;
+ }
+ else
+ {
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ flags |= 2;
+ }
+ }
+ if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits))
+ {
+ gActiveBank = 3;
+ if (sub_80423F4(3, 6, 6))
+ {
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ EmitCmd42(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!gSpecialStatuses[gActiveBank].flag40)
+ {
+ sub_804CF10(gBattleStruct->field_5C[1]);
+ gSpecialStatuses[gActiveBank].flag40 = 1;
+ }
+ else if (!(flags & 2))
+ {
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+
+ flag40_0 = gSpecialStatuses[0].flag40;
+ if (!flag40_0)
+ {
+ flag40_2 = gSpecialStatuses[2].flag40;
+ if (!flag40_2 && hitmarkerFaintBits != 0)
+ {
+ if (gAbsentBankFlags & gBitTable[0])
+ gActiveBank = 2;
+ else
+ gActiveBank = 0;
+
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+
+ }
+ flag40_1 = gSpecialStatuses[1].flag40;
+ if (!flag40_1)
+ {
+ flag40_3 = gSpecialStatuses[3].flag40;
+ if (!flag40_3 && hitmarkerFaintBits != 0)
+ {
+ if (gAbsentBankFlags & gBitTable[1])
+ gActiveBank = 3;
+ else
+ gActiveBank = 1;
+
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ }
+ gBattlescriptCurrInstr += 6;
+ }
+ else if (gBattlescriptCurrInstr[1] == 6)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ hitmarkerFaintBits = gHitMarker >> 0x1C;
+ if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits)
+ {
+ gActiveBank = 2;
+ if (sub_80423F4(2, gBattleBufferB[0][1], 6))
+ {
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ EmitCmd42(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!gSpecialStatuses[gActiveBank].flag40)
+ {
+ sub_804CF10(gBattleStruct->field_5C[0]);
+ gSpecialStatuses[gActiveBank].flag40 = 1;
+ }
+ }
+ if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1])
+ {
+ gActiveBank = 3;
+ if (sub_80423F4(3, gBattleBufferB[1][1], 6))
+ {
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ EmitCmd42(0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!gSpecialStatuses[gActiveBank].flag40)
+ {
+ sub_804CF10(gBattleStruct->field_5C[1]);
+ gSpecialStatuses[gActiveBank].flag40 = 1;
+ }
+ }
+ gBattlescriptCurrInstr += 6;
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 6;
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 6;
+ }
+
+ hitmarkerFaintBits = gHitMarker >> 0x1C;
+
+ gBank1 = 0;
+ while (1)
+ {
+ if (gBitTable[gBank1] & hitmarkerFaintBits)
+ break;
+ if (gBank1 >= gNoOfAllBanks)
+ break;
+ gBank1++;
+ }
+
+ if (gBank1 == gNoOfAllBanks)
+ gBattlescriptCurrInstr = jumpPtr;
+ }
+ else
+ {
+ if (gBattlescriptCurrInstr[1] & 0x80)
+ hitmarkerFaintBits = 0; // used here as the caseId for the EmitChoose function
+ else
+ hitmarkerFaintBits = 1;
+
+ bank = GetBattleBank(gBattlescriptCurrInstr[1] & ~(0x80));
+ if (gSpecialStatuses[bank].flag40)
+ {
+ gBattlescriptCurrInstr += 6;
+ }
+ else if (sub_80423F4(bank, 6, 6))
+ {
+ gActiveBank = bank;
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ gBattlescriptCurrInstr = jumpPtr;
+ }
+ else
+ {
+ gActiveBank = bank;
+ *(gBattleStruct->field_58 + gActiveBank) = gBattlePartyID[gActiveBank];
+ *(gBattleStruct->field_5C + gActiveBank) = 6;
+ gBattleStruct->field_93 &= ~(gBitTable[gActiveBank]);
+
+ EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->field_5C + (gActiveBank ^ 2)), 0, gBattleStruct->field_60[gActiveBank]);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 6;
+
+ if (GetBankIdentity(gActiveBank) == 0 && gBattleResults.playerSwitchesCounter < 0xFF)
+ gBattleResults.playerSwitchesCounter++;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (gActiveBank != bank)
+ {
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ }
+ else
+ {
+ gActiveBank = GetBankByIdentity(GetBankIdentity(bank) ^ BIT_SIDE);
+ if (gAbsentBankFlags & gBitTable[gActiveBank])
+ gActiveBank ^= BIT_MON;
+
+ EmitLinkStandbyMsg(0, 2, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ }
+}
+
+static void atk51_switch_handle_order(void)
+{
+ s32 i;
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ switch (gBattlescriptCurrInstr[2])
+ {
+ case 0:
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleBufferB[i][0] == 0x22)
+ {
+ *(gBattleStruct->field_5C + i) = gBattleBufferB[i][1];
+ if (!(gBattleStruct->field_93 & gBitTable[i]))
+ {
+ RecordedBattle_SetBankAction(i, gBattleBufferB[i][1]);
+ gBattleStruct->field_93 |= gBitTable[i];
+ }
+ }
+ }
+ break;
+ case 1:
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ sub_803BDA0(gActiveBank);
+ break;
+ case 2:
+ if (!(gBattleStruct->field_93 & gBitTable[gActiveBank]))
+ {
+ RecordedBattle_SetBankAction(gActiveBank, gBattleBufferB[gActiveBank][1]);
+ gBattleStruct->field_93 |= gBitTable[gActiveBank];
+ }
+ // fall through
+ case 3:
+ gBattleCommunication[0] = gBattleBufferB[gActiveBank][1];
+ *(gBattleStruct->field_5C + gActiveBank) = gBattleBufferB[gActiveBank][1];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF;
+ *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0);
+ *(gActiveBank * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBank][3];
+
+ *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0);
+ *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4;
+ *((gActiveBank ^ BIT_MON) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBank][3];
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ {
+ sub_80571DC(gActiveBank, *(gBattleStruct->field_5C + gActiveBank));
+ }
+ else
+ {
+ sub_803BDA0(gActiveBank);
+ }
+
+ PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBankAttacker].species)
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff2, gActiveBank, gBattleBufferB[gActiveBank][1])
+
+ break;
+ }
+
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk52_switch_in_effects(void)
+{
+ s32 i;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ sub_803FA70(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;
+
+ gBattleMons[gActiveBank].status2 &= ~(STATUS2_DESTINY_BOND);
+ gHitMarker &= ~(HITMARKER_DESTINYBOND);
+
+ spikesDmg = (5 - gSideTimers[GetBankSide(gActiveBank)].spikesAmount) * 2;
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / (spikesDmg);
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+
+ gBattleScripting.bank = gActiveBank;
+ BattleScriptPushCursor();
+
+ if (gBattlescriptCurrInstr[1] == 0)
+ gBattlescriptCurrInstr = gUnknown_082DAE90;
+ else if (gBattlescriptCurrInstr[1] == 1)
+ gBattlescriptCurrInstr = gUnknown_082DAE59;
+ else
+ gBattlescriptCurrInstr = gUnknown_082DAEC7;
+ }
+ else
+ {
+ if (gBattleMons[gActiveBank].ability == ABILITY_TRUANT && !gDisableStructs[gActiveBank].truantUnknownBit)
+ gDisableStructs[gActiveBank].truantCounter = 1;
+
+ gDisableStructs[gActiveBank].truantUnknownBit = 0;
+
+ if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gActiveBank, 0, 0, 0) == 0 &&
+ ItemBattleEffects(0, gActiveBank, 0) == 0)
+ {
+ gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBanksByTurnOrder[i] == gActiveBank)
+ gActionsByTurnOrder[i] = ACTION_CANCEL_PARTNER;
+ }
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ u16* hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBankSide(i)];
+ *hpOnSwitchout = gBattleMons[i].hp;
+ }
+
+ if (gBattlescriptCurrInstr[1] == 5)
+ {
+ u32 hitmarkerFaintBits = gHitMarker >> 0x1C;
+
+ gBank1++;
+ while (1)
+ {
+ if (hitmarkerFaintBits & gBitTable[gBank1] && !(gAbsentBankFlags & gBitTable[gBank1]))
+ break;
+ if (gBank1 >= gNoOfAllBanks)
+ break;
+ gBank1++;
+ }
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+ }
+}
+
+static void atk53_trainer_slide(void)
+{
+ gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[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_fanfare(void)
+{
+ gActiveBank = gBankAttacker;
+ EmitPlayFanfareOrBGM(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), FALSE);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk56_fainting_cry(void)
+{
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ EmitFaintingCry(0);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk57(void)
+{
+ gActiveBank = GetBankByIdentity(0);
+ EmitCmd55(0, gBattleOutcome);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 1;
+}
+
+static void atk58_return_to_ball(void)
+{
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ EmitReturnMonToBall(0, 1);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk59_learnmove_inbattle(void)
+{
+ const u8* jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ const u8* jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
+
+ u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], gBattlescriptCurrInstr[9]);
+ while (ret == 0xFFFE)
+ ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], 0);
+
+ if (ret == 0)
+ {
+ gBattlescriptCurrInstr = jumpPtr2;
+ }
+ else if (ret == 0xFFFF)
+ {
+ gBattlescriptCurrInstr += 10;
+ }
+ else
+ {
+ gActiveBank = GetBankByIdentity(0);
+
+ if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
+ && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ {
+ GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ gActiveBank = GetBankByIdentity(2);
+ if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
+ && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ {
+ GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ }
+ }
+
+ gBattlescriptCurrInstr = jumpPtr1;
+ }
+}
+
+static void atk5A_yesnoboxlearnmove(void)
+{
+ gActiveBank = 0;
+
+ switch (gBattleScripting.learnMoveState)
+ {
+ case 0:
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 0);
+ sub_814F9EC(gText_BattleYesNoChoice, 0xC);
+ gBattleScripting.learnMoveState++;
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateCursorAt(0);
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateCursorAt(0);
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateCursorAt(1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[1] == 0)
+ {
+ sub_8056A3C(0x18, 0x8, 0x1D, 0xD, 1);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBattleScripting.learnMoveState++;
+ }
+ else
+ {
+ gBattleScripting.learnMoveState = 5;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattleScripting.learnMoveState = 5;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ sub_81BFA38(gPlayerParty, gBattleStruct->expGetterId, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
+ gBattleScripting.learnMoveState++;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2)
+ {
+ gBattleScripting.learnMoveState++;
+ }
+ break;
+ case 4:
+ if (!gPaletteFade.active && gMain.callback2 == BattleMainCB2)
+ {
+ u8 movePosition = sub_81C1B94();
+ if (movePosition == 4)
+ {
+ gBattleScripting.learnMoveState = 5;
+ }
+ else
+ {
+ u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MOVE1 + movePosition);
+ if (IsHMMove2(moveId))
+ {
+ PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, gActiveBank);
+ gBattleScripting.learnMoveState = 6;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ PREPARE_MOVE_BUFFER(gBattleTextBuff2, moveId)
+
+ RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterId], movePosition);
+ SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterId], gMoveToLearn, movePosition);
+
+ if (gBattlePartyID[0] == gBattleStruct->expGetterId
+ && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[0].unk18_b & gBitTable[movePosition]))
+ {
+ RemoveBattleMonPPBonus(&gBattleMons[0], movePosition);
+ SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, movePosition);
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && gBattlePartyID[2] == gBattleStruct->expGetterId
+ && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[2].unk18_b & gBitTable[movePosition]))
+ {
+ RemoveBattleMonPPBonus(&gBattleMons[2], movePosition);
+ SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, movePosition);
+ }
+ }
+ }
+ }
+ break;
+ case 5:
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 1);
+ gBattlescriptCurrInstr += 5;
+ break;
+ case 6:
+ if (gBattleExecBuffer == 0)
+ {
+ gBattleScripting.learnMoveState = 2;
+ }
+ break;
+ }
+}
+
+static void atk5B_yesnoboxstoplearningmove(void)
+{
+ switch (gBattleScripting.learnMoveState)
+ {
+ case 0:
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 0);
+ sub_814F9EC(gText_BattleYesNoChoice, 0xC);
+ gBattleScripting.learnMoveState++;
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateCursorAt(0);
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateCursorAt(0);
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateCursorAt(1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+
+ if (gBattleCommunication[1] != 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+
+ sub_8056A3C(0x18, 0x8, 0x1D, 0xD, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ sub_8056A3C(0x18, 0x8, 0x1D, 0xD, 1);
+ }
+ break;
+ }
+}
+
+static void atk5C_hitanimation(void)
+{
+ gActiveBank = GetBattleBank(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;
+ }
+}
+
+static u32 GetTrainerMoneyToGive(u16 trainerId)
+{
+ u32 i = 0;
+ u32 lastMonLevel = 0;
+ u32 moneyReward = 0;
+
+ if (trainerId == SECRET_BASE_OPPONENT)
+ {
+ moneyReward = 20 * gBattleResources->secretBase->partyLevels[0] * gBattleStruct->moneyMultiplier;
+ }
+ else
+ {
+ switch (gTrainers[trainerId].partyFlags)
+ {
+ case 0:
+ {
+ const struct TrainerMonNoItemDefaultMoves *party = gTrainers[trainerId].party.NoItemDefaultMoves;
+ lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
+ }
+ break;
+ case PARTY_FLAG_CUSTOM_MOVES:
+ {
+ const struct TrainerMonNoItemCustomMoves *party = gTrainers[trainerId].party.NoItemCustomMoves;
+ lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
+ }
+ break;
+ case PARTY_FLAG_HAS_ITEM:
+ {
+ const struct TrainerMonItemDefaultMoves *party = gTrainers[trainerId].party.ItemDefaultMoves;
+ lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
+ }
+ break;
+ case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM:
+ {
+ const struct TrainerMonItemCustomMoves *party = gTrainers[trainerId].party.ItemCustomMoves;
+ lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
+ }
+ break;
+ }
+
+ for (; gTrainerMoneyTable[i].classId != 0xFF; i++)
+ {
+ if (gTrainerMoneyTable[i].classId == gTrainers[trainerId].trainerClass)
+ break;
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * gTrainerMoneyTable[i].value;
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * 2 * gTrainerMoneyTable[i].value;
+ else
+ moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * gTrainerMoneyTable[i].value;
+ }
+
+ return moneyReward;
+}
+
+static void atk5D_getmoneyreward(void)
+{
+ u32 moneyReward = GetTrainerMoneyToGive(gTrainerBattleOpponent_A);
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ moneyReward += GetTrainerMoneyToGive(gTrainerBattleOpponent_B);
+
+ AddMoney(&gSaveBlock1Ptr->money, moneyReward);
+
+ PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff1, 5, moneyReward)
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk5E_8025A70(void)
+{
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleCommunication[0]++;
+ break;
+ case 1:
+ if (gBattleExecBuffer == 0)
+ {
+ s32 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;
+
+ if (gHitMarker & HITMARKER_PURSUIT_TRAP)
+ gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
+ else
+ gHitMarker |= HITMARKER_PURSUIT_TRAP;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk60_increment_gamestat(void)
+{
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ IncrementGameStat(gBattlescriptCurrInstr[1]);
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk61_draw_party_status_summary(void)
+{
+ s32 i;
+ struct Pokemon* party;
+ struct HpAndStatus hpStatuses[6];
+
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE
+ || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ hpStatuses[i].hp = 0xFFFF;
+ hpStatuses[i].status = 0;
+ }
+ else
+ {
+ hpStatuses[i].hp = GetMonData(&party[i], MON_DATA_HP);
+ hpStatuses[i].status = GetMonData(&party[i], MON_DATA_STATUS);
+ }
+ }
+
+ EmitDrawPartyStatusSummary(0, hpStatuses, 1);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk62_08025C6C(void)
+{
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ EmitCmd49(0);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk63_jumptorandomattack(void)
+{
+ if (gBattlescriptCurrInstr[1] != 0)
+ gCurrentMove = gRandomMove;
+ else
+ gLastUsedMove = gCurrentMove = gRandomMove;
+
+ gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
+}
+
+static void atk64_statusanimation(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
+ && gDisableStructs[gActiveBank].substituteHP == 0
+ && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ EmitStatusAnimation(0, FALSE, gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk65_status2animation(void)
+{
+ u32 wantedToAnimate;
+
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ wantedToAnimate = BSScriptRead32(gBattlescriptCurrInstr + 2);
+ if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
+ && gDisableStructs[gActiveBank].substituteHP == 0
+ && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ EmitStatusAnimation(0, TRUE, gBattleMons[gActiveBank].status2 & wantedToAnimate);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 6;
+ }
+}
+
+static void atk66_chosenstatusanimation(void)
+{
+ u32 wantedStatus;
+
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ wantedStatus = BSScriptRead32(gBattlescriptCurrInstr + 3);
+ if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE)
+ && gDisableStructs[gActiveBank].substituteHP == 0
+ && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ EmitStatusAnimation(0, gBattlescriptCurrInstr[2], wantedStatus);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 7;
+ }
+}
+
+static void atk67_yesnobox(void)
+{
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 0);
+ sub_814F9EC(gText_BattleYesNoChoice, 0xC);
+ gBattleCommunication[0]++;
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateCursorAt(0);
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateCursorAt(0);
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateCursorAt(1);
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ PlaySE(SE_SELECT);
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 1);
+ gBattlescriptCurrInstr++;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 1);
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ }
+}
+
+static void atk68_80246A0(void)
+{
+ s32 i;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ gActionsByTurnOrder[i] = ACTION_CANCEL_PARTNER;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk69_dmg_adjustment3(void) // The same as 0x7, except there's no random damage multiplier.
+{
+ u8 holdEffect, quality;
+
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ {
+ holdEffect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemEffectBattle(gBankTarget, holdEffect);
+ 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;
+ }
+ else if (gSpecialStatuses[gBankTarget].focusBanded)
+ {
+ gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ }
+
+ END:
+ gBattlescriptCurrInstr++;
+}
+
+static void atk6A_removeitem(void)
+{
+ u16* usedHeldItem;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBank];
+ *usedHeldItem = gBattleMons[gActiveBank].item;
+ gBattleMons[gActiveBank].item = 0;
+
+ EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk6B_atknameinbuff1(void)
+{
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBankAttacker, gBattlePartyID[gBankAttacker])
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk6C_draw_lvlupbox(void)
+{
+ if (gBattleScripting.atk6C_state == 0)
+ {
+ if (IsMonGettingExpSentOut())
+ gBattleScripting.atk6C_state = 3;
+ else
+ gBattleScripting.atk6C_state = 1;
+ }
+
+ switch (gBattleScripting.atk6C_state)
+ {
+ case 1:
+ gBattle_BG2_Y = 0x60;
+ SetBgAttribute(2, BG_CTRL_ATTR_MOSAIC, 0);
+ ShowBg(2);
+ sub_804F17C();
+ gBattleScripting.atk6C_state = 2;
+ break;
+ case 2:
+ if (!sub_804F1CC())
+ gBattleScripting.atk6C_state = 3;
+ break;
+ case 3:
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0x100;
+ SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 1);
+ SetBgAttribute(1, BG_CTRL_ATTR_MOSAIC, 0);
+ ShowBg(0);
+ ShowBg(1);
+ sub_8056A3C(0x12, 7, 0x1D, 0x13, 0x80);
+ gBattleScripting.atk6C_state = 4;
+ break;
+ case 4:
+ sub_804F100();
+ PutWindowTilemap(13);
+ CopyWindowToVram(13, 3);
+ gBattleScripting.atk6C_state++;
+ break;
+ case 5:
+ case 7:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ gBattle_BG1_Y = 0;
+ gBattleScripting.atk6C_state++;
+ }
+ break;
+ case 6:
+ if (gMain.newKeys != 0)
+ {
+ PlaySE(SE_SELECT);
+ sub_804F144();
+ CopyWindowToVram(13, 2);
+ gBattleScripting.atk6C_state++;
+ }
+ break;
+ case 8:
+ if (gMain.newKeys != 0)
+ {
+ PlaySE(SE_SELECT);
+ sub_8056A3C(0x12, 7, 0x1D, 0x13, 0x81);
+ gBattleScripting.atk6C_state++;
+ }
+ break;
+ case 9:
+ if (!sub_804F344())
+ {
+ ClearWindowTilemap(14);
+ CopyWindowToVram(14, 1);
+
+ ClearWindowTilemap(13);
+ CopyWindowToVram(13, 1);
+
+ SetBgAttribute(2, BG_CTRL_ATTR_MOSAIC, 2);
+ ShowBg(2);
+
+ gBattleScripting.atk6C_state = 10;
+ }
+ break;
+ case 10:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ SetBgAttribute(0, BG_CTRL_ATTR_MOSAIC, 0);
+ SetBgAttribute(1, BG_CTRL_ATTR_MOSAIC, 1);
+ ShowBg(0);
+ ShowBg(1);
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ }
+}
+
+static void sub_804F100(void)
+{
+ struct StatsArray currentStats;
+
+ sub_81D388C(&gPlayerParty[gBattleStruct->expGetterId], &currentStats);
+ sub_81D3640(0xD, gBattleResources->statsBeforeLvlUp, &currentStats, 0xE, 0xD, 0xF);
+}
+
+static void sub_804F144(void)
+{
+ struct StatsArray currentStats;
+
+ sub_81D388C(&gPlayerParty[gBattleStruct->expGetterId], &currentStats);
+ sub_81D3784(0xD, &currentStats, 0xE, 0xD, 0xF);
+}
+
+static void sub_804F17C(void)
+{
+ gBattle_BG2_Y = 0;
+ gBattle_BG2_X = 0x1A0;
+
+ LoadPalette(sUnknown_0831C2C8, 0x60, 0x20);
+ CopyToWindowPixelBuffer(14, sUnknown_0831C2E8, 0, 0);
+ PutWindowTilemap(14);
+ CopyWindowToVram(14, 3);
+
+ PutMonIconOnLvlUpBox();
+}
+
+static bool8 sub_804F1CC(void)
+{
+ if (IsDma3ManagerBusyWithBgCopy())
+ return TRUE;
+
+ if (gBattle_BG2_X == 0x200)
+ return FALSE;
+
+ if (gBattle_BG2_X == 0x1A0)
+ PutLevelAndGenderOnLvlUpBox();
+
+ gBattle_BG2_X += 8;
+ if (gBattle_BG2_X >= 0x200)
+ gBattle_BG2_X = 0x200;
+
+ return (gBattle_BG2_X != 0x200);
+}
+
+static void PutLevelAndGenderOnLvlUpBox(void)
+{
+ u16 monLevel;
+ u8 monGender;
+ struct TextSubPrinter subPrinter;
+ u8 *txtPtr;
+ u32 var;
+
+ monLevel = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_LEVEL);
+ monGender = GetMonGender(&gPlayerParty[gBattleStruct->expGetterId]);
+ GetMonNickname(&gPlayerParty[gBattleStruct->expGetterId], gStringVar4);
+
+ subPrinter.current_text_offset = gStringVar4;
+ subPrinter.windowId = 14;
+ subPrinter.fontId = 0;
+ subPrinter.x = 32;
+ subPrinter.y = 0;
+ subPrinter.currentX = 32;
+ subPrinter.currentY = 0;
+ subPrinter.letterSpacing = 0;
+ subPrinter.lineSpacing = 0;
+ subPrinter.fontColor_l = TEXT_COLOR_TRANSPARENT;
+ subPrinter.fontColor_h = TEXT_COLOR_WHITE;
+ subPrinter.bgColor = TEXT_COLOR_TRANSPARENT;
+ subPrinter.shadowColor = TEXT_COLOR_DARK_GREY;
+
+ AddTextPrinter(&subPrinter, 0xFF, NULL);
+
+ txtPtr = gStringVar4;
+ gStringVar4[0] = CHAR_SPECIAL_F9;
+ txtPtr++;
+ txtPtr[0] = 5;
+ txtPtr++;
+
+ var = (u32)(txtPtr);
+ txtPtr = ConvertIntToDecimalStringN(txtPtr, monLevel, STR_CONV_MODE_LEFT_ALIGN, 3);
+ var = (u32)(txtPtr) - var;
+ txtPtr = StringFill(txtPtr, 0x77, 4 - var);
+
+ if (monGender != MON_GENDERLESS)
+ {
+ if (monGender == MON_MALE)
+ {
+ txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xC);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xD);
+ *(txtPtr++) = CHAR_MALE;
+ }
+ else
+ {
+ txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xE);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xF);
+ *(txtPtr++) = CHAR_FEMALE;
+ }
+ *(txtPtr++) = EOS;
+ }
+
+ subPrinter.y = 10;
+ subPrinter.currentY = 10;
+ AddTextPrinter(&subPrinter, 0xFF, NULL);
+
+ CopyWindowToVram(14, 2);
+}
+
+static bool8 sub_804F344(void)
+{
+ if (gBattle_BG2_X == 0x1A0)
+ return FALSE;
+
+ if (gBattle_BG2_X - 16 < 0x1A0)
+ gBattle_BG2_X = 0x1A0;
+ else
+ gBattle_BG2_X -= 16;
+
+ return (gBattle_BG2_X != 0x1A0);
+}
+
+#define sDestroy data0
+#define sSavedLvlUpBoxXPosition data1
+
+static void PutMonIconOnLvlUpBox(void)
+{
+ u8 spriteId;
+ const u16* iconPal;
+ struct SpriteSheet iconSheet;
+ struct SpritePalette iconPalSheet;
+
+ u16 species = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_SPECIES);
+ u32 personality = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_PERSONALITY);
+
+ const u8* iconPtr = GetMonIconPtr(species, personality, 1);
+ iconSheet.data = iconPtr;
+ iconSheet.size = 0x200;
+ iconSheet.tag = MON_ICON_LVLUP_BOX_TAG;
+
+ iconPal = GetValidMonIconPalettePtr(species);
+ iconPalSheet.data = iconPal;
+ iconPalSheet.tag = MON_ICON_LVLUP_BOX_TAG;
+
+ LoadSpriteSheet(&iconSheet);
+ LoadSpritePalette(&iconPalSheet);
+
+ spriteId = CreateSprite(&sSpriteTemplate_MonIconOnLvlUpBox, 256, 10, 0);
+ gSprites[spriteId].sDestroy = FALSE;
+ gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X;
+}
+
+static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
+{
+ sprite->pos2.x = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X;
+
+ if (sprite->pos2.x != 0)
+ {
+ sprite->sDestroy = TRUE;
+ }
+ else if (sprite->sDestroy)
+ {
+ DestroySprite(sprite);
+ FreeSpriteTilesByTag(MON_ICON_LVLUP_BOX_TAG);
+ FreeSpritePaletteByTag(MON_ICON_LVLUP_BOX_TAG);
+ }
+}
+
+#undef sDestroy
+#undef sSavedLvlUpBoxXPosition
+
+static bool32 IsMonGettingExpSentOut(void)
+{
+ if (gBattlePartyID[0] == gBattleStruct->expGetterId)
+ return TRUE;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == gBattleStruct->expGetterId)
+ return TRUE;
+
+ return FALSE;
+}
+
+static void atk6D_reset_sentpokes_value(void)
+{
+ ResetSentPokesToOpponentValue();
+ gBattlescriptCurrInstr++;
+}
+
+static void atk6E_set_atk_to_player0(void)
+{
+ gBankAttacker = GetBankByIdentity(0);
+ gBattlescriptCurrInstr++;
+}
+
+static void atk6F_set_visible(void)
+{
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ EmitSpriteInvisibility(0, FALSE);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk70_record_last_used_ability(void)
+{
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gBattlescriptCurrInstr += 1; // UB: Should be + 2, one byte for command and one byte for bank argument.
+}
+
+void BufferMoveToLearnIntoBattleTextBuff2(void)
+{
+ PREPARE_MOVE_BUFFER(gBattleTextBuff2, gMoveToLearn);
+}
+
+static void atk71_buffer_move_to_learn(void)
+{
+ BufferMoveToLearnIntoBattleTextBuff2();
+ gBattlescriptCurrInstr++;
+}
+
+static void atk72_jump_if_run_attempt_success(void)
+{
+ if (TryRunFromBattle(gBank1))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atk73_hp_thresholds(void)
+{
+ u8 opposingBank;
+ s32 result;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ opposingBank = gActiveBank ^ BIT_SIDE;
+
+ result = gBattleMons[opposingBank].hp * 100 / gBattleMons[opposingBank].maxHP;
+ if (result == 0)
+ result = 1;
+
+ if (result > 69 || !gBattleMons[opposingBank].hp)
+ gBattleStruct->hpScale = 0;
+ else if (result > 39)
+ gBattleStruct->hpScale = 1;
+ else if (result > 9)
+ gBattleStruct->hpScale = 2;
+ else
+ gBattleStruct->hpScale = 3;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk74_hp_thresholds2(void)
+{
+ u8 opposingBank;
+ s32 result;
+ u8 hpSwitchout;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+ opposingBank = gActiveBank ^ BIT_SIDE;
+ hpSwitchout = *(gBattleStruct->hpOnSwitchout + GetBankSide(opposingBank));
+ result = (hpSwitchout - gBattleMons[opposingBank].hp) * 100 / hpSwitchout;
+
+ if (gBattleMons[opposingBank].hp >= hpSwitchout)
+ gBattleStruct->hpScale = 0;
+ else if (result <= 29)
+ gBattleStruct->hpScale = 1;
+ else if (result <= 69)
+ gBattleStruct->hpScale = 2;
+ else
+ gBattleStruct->hpScale = 3;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk75_item_effect_on_opponent(void)
+{
+ gBankInMenu = gBankAttacker;
+ ExecuteTableBasedItemEffect(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1);
+
+ gBattlescriptCurrInstr += 1;
+}
+
+static void atk76_various(void)
+{
+ u8 side;
+ s32 i;
+
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ switch (gBattlescriptCurrInstr[2])
+ {
+ case VARIOUS_CANCEL_MULTI_TURN_MOVES:
+ CancelMultiTurnMoves(gActiveBank);
+ break;
+ case VARIOUS_SET_MAGIC_COAT_TARGET:
+ gBankAttacker = gBankTarget;
+ side = GetBankSide(gBankAttacker) ^ 1;
+ if (gSideTimers[side].followmeTimer != 0 && gBattleMons[gSideTimers[side].followmeTarget].hp != 0)
+ gBankTarget = gSideTimers[side].followmeTarget;
+ else
+ gBankTarget = gActiveBank;
+ break;
+ case VARIOUS_CAN_RUN_FROM_BATTLE:
+ gBattleCommunication[0] = IsRunningFromBattleImpossible();
+ break;
+ case VARIOUS_GET_MOVE_TARGET:
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ break;
+ case 4:
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ gBattleCommunication[0] = 1;
+ else
+ gBattleCommunication[0] = 0;
+ break;
+ case VARIOUS_RESET_INTIMIDATE_TRACE_BITS:
+ gSpecialStatuses[gActiveBank].intimidatedPoke = 0;
+ gSpecialStatuses[gActiveBank].traced = 0;
+ break;
+ case VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP:
+ if (gBattlePartyID[0] == gBattleStruct->expGetterId || gBattlePartyID[2] == gBattleStruct->expGetterId)
+ {
+ u16 *choicedMove;
+
+ if (gBattlePartyID[0] == gBattleStruct->expGetterId)
+ gActiveBank = 0;
+ else
+ gActiveBank = 2;
+
+ choicedMove = &gBattleStruct->choicedMove[gActiveBank];
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gActiveBank].moves[i] == *choicedMove)
+ break;
+ }
+ if (i == 4)
+ *choicedMove = 0;
+ }
+ break;
+ case 7:
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE))
+ && gBattleTypeFlags & BATTLE_TYPE_TRAINER
+ && gBattleMons[0].hp != 0
+ && gBattleMons[1].hp != 0)
+ {
+ gHitMarker &= ~(HITMARKER_x400000);
+ }
+ break;
+ case 8:
+ gBattleCommunication[0] = 0;
+ gBattleScripting.bank = gActiveBank = gBattleCommunication[1];
+ if (!(gBattleStruct->field_92 & gBitTable[gActiveBank])
+ && gBattleMons[gActiveBank].maxHP / 2 >= gBattleMons[gActiveBank].hp
+ && gBattleMons[gActiveBank].hp != 0
+ && !(gBattleMons[gActiveBank].status1 & STATUS_SLEEP))
+ {
+ gBattleStruct->field_92 |= gBitTable[gActiveBank];
+ gBattleCommunication[0] = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = sUnknown_0831C4F8[GetNatureFromPersonality(gBattleMons[gActiveBank].personality)];
+ }
+ break;
+ case 9:
+ i = sub_81A5258(gBattleCommunication);
+ if (i == 0)
+ return;
+
+ gBattleCommunication[1] = i;
+ break;
+ case 10:
+ gBattleMons[1].hp = 0;
+ gHitMarker |= HITMARKER_FAINTED(1);
+ gBattleStruct->field_2A1 |= gBitTable[gBattlePartyID[1]];
+ gDisableStructs[1].truantUnknownBit = 1;
+ break;
+ case 11:
+ gBattleMons[0].hp = 0;
+ gHitMarker |= HITMARKER_FAINTED(0);
+ gHitMarker |= HITMARKER_x400000;
+ gBattleStruct->field_2A0 |= gBitTable[gBattlePartyID[0]];
+ gDisableStructs[0].truantUnknownBit = 1;
+ break;
+ case 12:
+ gBattleMons[0].hp = 0;
+ gBattleMons[1].hp = 0;
+ gHitMarker |= HITMARKER_FAINTED(0);
+ gHitMarker |= HITMARKER_FAINTED(1);
+ gHitMarker |= HITMARKER_x400000;
+ gBattleStruct->field_2A0 |= gBitTable[gBattlePartyID[0]];
+ gBattleStruct->field_2A1 |= gBitTable[gBattlePartyID[1]];
+ gDisableStructs[0].truantUnknownBit = 1;
+ gDisableStructs[1].truantUnknownBit = 1;
+ break;
+ case 13:
+ EmitCmd19(0);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case 14:
+ sub_81A5BF8();
+ break;
+ case 15:
+ sub_81A5D44();
+ break;
+ case 16:
+ BattleStringExpandPlaceholdersToDisplayedString(gRefereeStringsTable[gBattlescriptCurrInstr[1]]);
+ sub_814F9EC(gDisplayedStringBattle, 0x16);
+ break;
+ case 17:
+ if (IsTextPrinterActive(0x16))
+ return;
+ break;
+ case VARIOUS_WAIT_CRY:
+ if (!IsCryFinished())
+ return;
+ break;
+ case VARIOUS_RETURN_OPPONENT_MON1:
+ gActiveBank = 1;
+ if (gBattleMons[gActiveBank].hp != 0)
+ {
+ EmitReturnMonToBall(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ break;
+ case VARIOUS_RETURN_OPPONENT_MON2:
+ if (gNoOfAllBanks > 3)
+ {
+ gActiveBank = 3;
+ if (gBattleMons[gActiveBank].hp != 0)
+ {
+ EmitReturnMonToBall(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ break;
+ case 21:
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x55);
+ break;
+ case 22:
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ break;
+ case 23:
+ gBattleStruct->field_2A2 |= gBitTable[gActiveBank];
+ break;
+ case 24:
+ if (sub_805725C(gActiveBank))
+ return;
+ break;
+ case VARIOUS_SET_TELEPORT_OUTCOME:
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ gBattleOutcome = BATTLE_PLAYER_TELEPORTED;
+ else
+ gBattleOutcome = BATTLE_OPPONENT_TELEPORTED;
+ break;
+ case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC:
+ EmitPlayFanfareOrBGM(0, BGM_KACHI1, TRUE);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ }
+
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk77_set_protect_like(void) // protect and endure
+{
+ bool8 notLastTurn = TRUE;
+ u16 lastMove = gUnknown_02024260[gBankAttacker];
+
+ if (lastMove != MOVE_PROTECT && lastMove != MOVE_DETECT && lastMove != MOVE_ENDURE)
+ gDisableStructs[gBankAttacker].protectUses = 0;
+
+ if (gCurrentTurnActionNumber == (gNoOfAllBanks - 1))
+ notLastTurn = FALSE;
+
+ if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] >= Random() && notLastTurn)
+ {
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT)
+ {
+ gProtectStructs[gBankAttacker].protected = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE)
+ {
+ 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 = BattleScript_DampStopsExplosion;
+ }
+}
+
+static void atk79_setatkhptozero(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = gBankAttacker;
+ gBattleMons[gActiveBank].hp = 0;
+ EmitSetMonData(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.
+{
+ const u8* jumpPtr = 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 = jumpPtr;
+ }
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atk7B_healhalfHP_if_possible(void)
+{
+ const u8* failPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (gBattlescriptCurrInstr[5] == BS_GET_ATTACKER)
+ gBankTarget = gBankAttacker;
+
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+
+ if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ gBattlescriptCurrInstr = failPtr;
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk7C_trymirrormove(void)
+{
+ s32 validMovesCount;
+ s32 i;
+ u16 move;
+ u16 movesArray[4];
+
+ for (i = 0; i < 3; i++)
+ movesArray[i] = 0;
+
+ for (validMovesCount = 0, i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (i != gBankAttacker)
+ {
+ move = *(i * 2 + gBankAttacker * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0)
+ | (*(i * 2 + gBankAttacker * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) << 8);
+
+ if (move != 0 && move != 0xFFFF)
+ {
+ movesArray[validMovesCount] = move;
+ validMovesCount++;
+ }
+ }
+ }
+
+ move = *(gBattleStruct->mirrorMoves + gBankAttacker * 2 + 0)
+ | (*(gBattleStruct->mirrorMoves + gBankAttacker * 2 + 1) << 8);
+
+ if (move != 0 && move != 0xFFFF)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = move;
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
+ }
+ else if (validMovesCount)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ i = Random() % validMovesCount;
+ gCurrentMove = movesArray[i];
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[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[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_REFLECT)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_REFLECT;
+ gSideTimers[GET_BANK_SIDE(gBankAttacker)].reflectTimer = 5;
+ gSideTimers[GET_BANK_SIDE(gBankAttacker)].reflectBank = gBankAttacker;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 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 (gBattlescriptCurrInstr[1])
+ {
+ case ATK80_DMG_CHANGE_SIGN:
+ gBattleMoveDamage *= -1;
+ break;
+ case ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP:
+ gBattleMoveDamage /= 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if ((gBattleMons[gBankTarget].maxHP / 2) < gBattleMoveDamage)
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ break;
+ case ATK80_DMG_DOUBLED:
+ gBattleMoveDamage *= 2;
+ break;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk81_setrest(void)
+{
+ const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ gActiveBank = gBankTarget = gBankAttacker;
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1);
+
+ if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ {
+ gBattlescriptCurrInstr = failJump;
+ }
+ else
+ {
+ if (gBattleMons[gBankTarget].status1 & ((u8)(~STATUS_SLEEP)))
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+
+ gBattleMons[gBankTarget].status1 = 3;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk82_jumpifnotfirstturn(void)
+{
+ const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (gDisableStructs[gBankAttacker].isFirstTurn)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = failJump;
+}
+
+static void atk83_nop(void)
+{
+ gBattlescriptCurrInstr++;
+}
+
+bool8 UproarWakeUpCheck(u8 bank)
+{
+ s32 i;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF)
+ continue;
+
+ gBattleScripting.bank = i;
+
+ if (gBankTarget == 0xFF)
+ gBankTarget = i;
+ else if (gBankTarget == i)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+
+ break;
+ }
+
+ if (i == gNoOfAllBanks)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static void atk84_jump_if_cant_sleep(void)
+{
+ const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (UproarWakeUpCheck(gBankTarget))
+ {
+ gBattlescriptCurrInstr = jumpPtr;
+ }
+ else if (gBattleMons[gBankTarget].ability == ABILITY_INSOMNIA
+ || gBattleMons[gBankTarget].ability == ABILITY_VITAL_SPIRIT)
+ {
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattlescriptCurrInstr = jumpPtr;
+ 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++;
+
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gBankAttacker].stockpileCounter)
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk86_stockpiletobasedamage(void)
+{
+ const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ if (gDisableStructs[gBankAttacker].stockpileCounter == 0)
+ {
+ gBattlescriptCurrInstr = jumpPtr;
+ }
+ else
+ {
+ if (gBattleCommunication[6] != 1)
+ {
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ gSideAffecting[GET_BANK_SIDE(gBankTarget)], 0,
+ 0, gBankAttacker, gBankTarget)
+ * gDisableStructs[gBankAttacker].stockpileCounter;
+ gBattleScripting.animTurn = gDisableStructs[gBankAttacker].stockpileCounter;
+
+ if (gProtectStructs[gBankAttacker].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+ }
+
+ gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk87_stockpiletohpheal(void)
+{
+ const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (gDisableStructs[gBankAttacker].stockpileCounter == 0)
+ {
+ gBattlescriptCurrInstr = jumpPtr;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else if (gBattleMons[gBankAttacker].maxHP == gBattleMons[gBankAttacker].hp)
+ {
+ gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattlescriptCurrInstr = jumpPtr;
+ gBankTarget = gBankAttacker;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / (1 << (3 - gDisableStructs[gBankAttacker].stockpileCounter));
+
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+
+ gBattleScripting.animTurn = gDisableStructs[gBankAttacker].stockpileCounter;
+ gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattlescriptCurrInstr += 5;
+ gBankTarget = gBankAttacker;
+ }
+}
+
+static void atk88_negativedamage(void)
+{
+ gBattleMoveDamage = -(gHpDealt / 2);
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = -1;
+
+ gBattlescriptCurrInstr++;
+}
+
+static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr)
+{
+ bool8 certain = 0;
+ bool8 notProtectAffected = FALSE;
+ u32 index;
+
+ if (flags & MOVE_EFFECT_AFFECTS_USER)
+ gActiveBank = gBankAttacker;
+ else
+ gActiveBank = gBankTarget;
+
+ flags &= ~(MOVE_EFFECT_AFFECTS_USER);
+
+ if (flags & MOVE_EFFECT_CERTAIN)
+ certain++;
+ flags &= ~(MOVE_EFFECT_CERTAIN);
+
+ if (flags & STAT_CHANGE_NOT_PROTECT_AFFECTED)
+ notProtectAffected++;
+ flags &= ~(STAT_CHANGE_NOT_PROTECT_AFFECTED);
+
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, statId)
+
+ if ((statValue << 0x18) < 0) // stat decrease
+ {
+ if (gSideTimers[GET_BANK_SIDE(gActiveBank)].mistTimer
+ && !certain && gCurrentMove != MOVE_CURSE)
+ {
+ if (flags == STAT_CHANGE_BS_PTR)
+ {
+ if (gSpecialStatuses[gActiveBank].statLowered)
+ {
+ gBattlescriptCurrInstr = BS_ptr;
+ }
+ else
+ {
+ BattleScriptPush(BS_ptr);
+ gBattleScripting.bank = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_MistProtected;
+ gSpecialStatuses[gActiveBank].statLowered = 1;
+ }
+ }
+ return STAT_CHANGE_DIDNT_WORK;
+ }
+ else if (gCurrentMove != MOVE_CURSE
+ && notProtectAffected != TRUE && JumpIfMoveAffectedByProtect(0))
+ {
+ gBattlescriptCurrInstr = BattleScript_ButItFailed;
+ return STAT_CHANGE_DIDNT_WORK;
+ }
+ else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY
+ || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE)
+ && !certain && gCurrentMove != MOVE_CURSE)
+ {
+ if (flags == STAT_CHANGE_BS_PTR)
+ {
+ if (gSpecialStatuses[gActiveBank].statLowered)
+ {
+ gBattlescriptCurrInstr = BS_ptr;
+ }
+ else
+ {
+ BattleScriptPush(BS_ptr);
+ gBattleScripting.bank = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gSpecialStatuses[gActiveBank].statLowered = 1;
+ }
+ }
+ return STAT_CHANGE_DIDNT_WORK;
+ }
+ else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE
+ && !certain && statId == STAT_STAGE_ACC)
+ {
+ if (flags == STAT_CHANGE_BS_PTR)
+ {
+ BattleScriptPush(BS_ptr);
+ gBattleScripting.bank = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ }
+ return STAT_CHANGE_DIDNT_WORK;
+ }
+ else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER
+ && !certain && statId == STAT_STAGE_ATK)
+ {
+ if (flags == STAT_CHANGE_BS_PTR)
+ {
+ BattleScriptPush(BS_ptr);
+ gBattleScripting.bank = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ }
+ return STAT_CHANGE_DIDNT_WORK;
+ }
+ else if (gBattleMons[gActiveBank].ability == ABILITY_SHIELD_DUST && flags == 0)
+ {
+ return STAT_CHANGE_DIDNT_WORK;
+ }
+ else // try to decrease
+ {
+ statValue = -GET_STAT_BUFF_VALUE(statValue);
+ gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ index = 1;
+ if (statValue == -2)
+ {
+ gBattleTextBuff2[1] = B_BUFF_STRING;
+ gBattleTextBuff2[2] = 0xD3; // harshly
+ gBattleTextBuff2[3] = 0xD3 >> 8;
+ index = 4;
+ }
+ gBattleTextBuff2[index] = B_BUFF_STRING;
+ index++;
+ gBattleTextBuff2[index] = 0xD4; // fell
+ index++;
+ gBattleTextBuff2[index] = 0xD4 >> 8;
+ index++;
+ gBattleTextBuff2[index] = B_BUFF_EOS;
+
+ if (gBattleMons[gActiveBank].statStages[statId] == 0)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank);
+
+ }
+ }
+ else // stat increase
+ {
+ statValue = GET_STAT_BUFF_VALUE(statValue);
+ gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ index = 1;
+ if (statValue == 2)
+ {
+ gBattleTextBuff2[1] = B_BUFF_STRING;
+ gBattleTextBuff2[2] = 0xD1; // sharply
+ gBattleTextBuff2[3] = 0xD1 >> 8;
+ index = 4;
+ }
+ gBattleTextBuff2[index] = B_BUFF_STRING;
+ index++;
+ gBattleTextBuff2[index] = 0xD2; // rose
+ index++;
+ gBattleTextBuff2[index] = 0xD2 >> 8;
+ index++;
+ gBattleTextBuff2[index] = B_BUFF_EOS;
+
+ if (gBattleMons[gActiveBank].statStages[statId] == 0xC)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = (gBankTarget == gActiveBank);
+ }
+
+ gBattleMons[gActiveBank].statStages[statId] += statValue;
+ if (gBattleMons[gActiveBank].statStages[statId] < 0)
+ gBattleMons[gActiveBank].statStages[statId] = 0;
+ if (gBattleMons[gActiveBank].statStages[statId] > 0xC)
+ gBattleMons[gActiveBank].statStages[statId] = 0xC;
+
+ if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && flags & STAT_CHANGE_BS_PTR)
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+
+ if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & STAT_CHANGE_BS_PTR))
+ return STAT_CHANGE_DIDNT_WORK;
+
+ return STAT_CHANGE_WORKED;
+}
+
+static void atk89_statbuffchange(void)
+{
+ const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ if (ChangeStatBuffs(gBattleScripting.statChanger & 0xF0, GET_STAT_BUFF_ID(gBattleScripting.statChanger), gBattlescriptCurrInstr[1], jumpPtr) == STAT_CHANGE_WORKED)
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk8A_normalisebuffs(void) // haze
+{
+ s32 i, j;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ for (j = 0; j < BATTLE_STATS_NO; j++)
+ gBattleMons[i].statStages[j] = 6;
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk8B_setbide(void)
+{
+ gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[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] = (MOVE_EFFECT_THRASH | MOVE_EFFECT_AFFECTS_USER);
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk8D_setmultihit_counter(void)
+{
+ if (gBattlescriptCurrInstr[1])
+ {
+ gMultiHitCounter = gBattlescriptCurrInstr[1];
+ }
+ else
+ {
+ gMultiHitCounter = Random() & 3;
+ if (gMultiHitCounter > 1)
+ gMultiHitCounter = (Random() & 3) + 2;
+ else
+ gMultiHitCounter += 2;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk8E_init_multihit_string(void)
+{
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0)
+
+ gBattlescriptCurrInstr++;
+}
+
+static bool8 sub_8051064(void)
+{
+ if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ {
+ *(gBattleStruct->field_58 + gBankTarget) = 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 FALSE;
+ }
+ *(gBattleStruct->field_58 + gBankTarget) = gBattlePartyID[gBankTarget];
+ }
+
+ gBattlescriptCurrInstr = gUnknown_082DADD8;
+ return TRUE;
+}
+
+static void atk8F_forcerandomswitch(void)
+{
+ s32 i;
+ s32 bank1PartyId = 0;
+ s32 bank2PartyId = 0;
+
+ #ifdef NONMATCHING
+ s32 lastMonId = 0; // + 1
+ #else
+ register s32 lastMonId asm("r8") = 0; // + 1
+ #endif // NONMATCHING
+
+ s32 firstMonId = 0;
+ s32 monsCount = 0;
+ struct Pokemon* party = NULL;
+ s32 validMons = 0;
+ s32 minNeeded = 0;
+
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER))
+ {
+ if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if ((gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_LINK)
+ || (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER && gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ || (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER))
+ {
+ if ((gBankTarget & BIT_MON) != 0)
+ {
+ firstMonId = 3;
+ lastMonId = 6;
+ }
+ else
+ {
+ firstMonId = 0;
+ lastMonId = 3;
+ }
+ monsCount = 3;
+ minNeeded = 1;
+ bank2PartyId = gBattlePartyID[gBankTarget];
+ bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON];
+ }
+ else if ((gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
+ || (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_x2000000))
+ {
+ if (sub_806D82C(sub_806D864(gBankTarget)) == 1)
+ {
+ firstMonId = 3;
+ lastMonId = 6;
+ }
+ else
+ {
+ firstMonId = 0;
+ lastMonId = 3;
+ }
+ monsCount = 3;
+ minNeeded = 1;
+ bank2PartyId = gBattlePartyID[gBankTarget];
+ bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON];
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ {
+ if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ {
+ firstMonId = 0;
+ lastMonId = 6;
+ monsCount = 6;
+ minNeeded = 2; // since there are two opponents, it has to be a double battle
+ }
+ else
+ {
+ if ((gBankTarget & BIT_MON) != 0)
+ {
+ firstMonId = 3;
+ lastMonId = 6;
+ }
+ else
+ {
+ firstMonId = 0;
+ lastMonId = 3;
+ }
+ monsCount = 3;
+ minNeeded = 1;
+ }
+ bank2PartyId = gBattlePartyID[gBankTarget];
+ bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON];
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ firstMonId = 0;
+ lastMonId = 6;
+ monsCount = 6;
+ minNeeded = 2;
+ bank2PartyId = gBattlePartyID[gBankTarget];
+ bank1PartyId = gBattlePartyID[gBankTarget ^ BIT_MON];
+ }
+ else
+ {
+ firstMonId = 0;
+ lastMonId = 6;
+ monsCount = 6;
+ minNeeded = 1;
+ bank2PartyId = gBattlePartyID[gBankTarget]; // there is only one pokemon out in single battles
+ bank1PartyId = gBattlePartyID[gBankTarget];
+ }
+
+ for (i = firstMonId; i < lastMonId; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&party[i], MON_DATA_IS_EGG)
+ && GetMonData(&party[i], MON_DATA_HP) != 0)
+ {
+ validMons++;
+ }
+ }
+
+ if (validMons <= minNeeded)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ if (sub_8051064())
+ {
+ do
+ {
+ i = Random() % monsCount;
+ i += firstMonId;
+ }
+ while (i == bank2PartyId
+ || i == bank1PartyId
+ || GetMonData(&party[i], MON_DATA_SPECIES) == SPECIES_NONE
+ || GetMonData(&party[i], MON_DATA_IS_EGG) == TRUE
+ || GetMonData(&party[i], MON_DATA_HP) == 0);
+ }
+ *(gBattleStruct->field_5C + gBankTarget) = i;
+
+ if (!sub_81B1250())
+ sub_803BDA0(gBankTarget);
+
+ if ((gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ || (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ || (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ || (gBattleTypeFlags & BATTLE_TYPE_x2000000 && gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ sub_81B8E80(gBankTarget, i, 0);
+ sub_81B8E80(gBankTarget ^ BIT_MON, i, 1);
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ sub_80571DC(gBankTarget, i);
+ }
+ }
+ else
+ {
+ sub_8051064();
+ }
+}
+
+static void atk90_conversion_type_change(void) // randomly changes user's type to one of its moves' type
+{
+ u8 validMoves = 0;
+ u8 moveChecked;
+ u8 moveType;
+
+ while (validMoves < 4)
+ {
+ if (gBattleMons[gBankAttacker].moves[validMoves] == 0)
+ break;
+
+ validMoves++;
+ }
+
+ for (moveChecked = 0; moveChecked < validMoves; moveChecked++)
+ {
+ moveType = gBattleMoves[gBattleMons[gBankAttacker].moves[moveChecked]].type;
+
+ if (moveType == TYPE_MYSTERY)
+ {
+ if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)
+ moveType = TYPE_GHOST;
+ else
+ moveType = TYPE_NORMAL;
+ }
+ if (moveType != gBattleMons[gBankAttacker].type1
+ && moveType != gBattleMons[gBankAttacker].type2)
+ {
+ break;
+ }
+ }
+
+ if (moveChecked == validMoves)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ do
+ {
+
+ while ((moveChecked = Random() & 3) >= validMoves);
+
+ moveType = gBattleMoves[gBattleMons[gBankAttacker].moves[moveChecked]].type;
+
+ if (moveType == TYPE_MYSTERY)
+ {
+ if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)
+ moveType = TYPE_GHOST;
+ else
+ moveType = TYPE_NORMAL;
+ }
+ }
+ while (moveType == gBattleMons[gBankAttacker].type1 || moveType == gBattleMons[gBankAttacker].type2);
+
+ gBattleMons[gBankAttacker].type1 = moveType;
+ gBattleMons[gBankAttacker].type2 = moveType;
+
+ PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType)
+
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk91_givepaydaymoney(void)
+{
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && gPaydayMoney != 0)
+ {
+ u32 bonusMoney = gPaydayMoney * gBattleStruct->moneyMultiplier;
+ AddMoney(&gSaveBlock1Ptr->money, bonusMoney);
+
+ PREPARE_HWORD_NUMBER_BUFFER(gBattleTextBuff1, 5, bonusMoney)
+
+ BattleScriptPush(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_PrintPayDayMoneyString;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atk92_setlightscreen(void)
+{
+ if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_LIGHTSCREEN)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_LIGHTSCREEN;
+ gSideTimers[GET_BANK_SIDE(gBankAttacker)].lightscreenTimer = 5;
+ gSideTimers[GET_BANK_SIDE(gBankAttacker)].lightscreenBank = gBankAttacker;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMonsInBattle(BATTLE_ALIVE_ATK_SIDE) == 2)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk93_ko_move(void)
+{
+ u8 holdEffect, param;
+
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ {
+ holdEffect = gEnigmaBerries[gBankTarget].holdEffect;
+ param = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ param = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (holdEffect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < param)
+ {
+ RecordItemEffectBattle(gBankTarget, HOLD_EFFECT_FOCUS_BAND);
+ gSpecialStatuses[gBankTarget].focusBanded = 1;
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_STURDY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gLastUsedAbility = ABILITY_STURDY;
+ gBattlescriptCurrInstr = BattleScript_SturdyPreventsOHKO;
+ RecordAbilityBattle(gBankTarget, ABILITY_STURDY);
+ }
+ else
+ {
+ u16 chance;
+ if (!(gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS))
+ {
+ chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level);
+ if (Random() % 100 + 1 < chance && gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ chance = TRUE;
+ else
+ chance = FALSE;
+ }
+ else if (gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker
+ && gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ {
+ chance = TRUE;
+ }
+ else
+ {
+ chance = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level);
+ if (Random() % 100 + 1 < chance && gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ chance = TRUE;
+ else
+ chance = FALSE;
+ }
+ if (chance)
+ {
+ if (gProtectStructs[gBankTarget].endured)
+ {
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+ gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ }
+ else if (gSpecialStatuses[gBankTarget].focusBanded)
+ {
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+ gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ }
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp;
+ gBattleMoveFlags |= MOVESTATUS_ONEHITKO;
+ }
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ }
+}
+
+static void atk94_damagetohalftargethp(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 *monAttacker, *monTarget;
+ u16 speciesAttacker, speciesTarget;
+ u32 personalityAttacker, personalityTarget;
+
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ monAttacker = &gPlayerParty[gBattlePartyID[gBankAttacker]];
+ else
+ monAttacker = &gEnemyParty[gBattlePartyID[gBankAttacker]];
+
+ if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ monTarget = &gPlayerParty[gBattlePartyID[gBankTarget]];
+ else
+ monTarget = &gEnemyParty[gBattlePartyID[gBankTarget]];
+
+ speciesAttacker = GetMonData(monAttacker, MON_DATA_SPECIES);
+ personalityAttacker = GetMonData(monAttacker, MON_DATA_PERSONALITY);
+
+ speciesTarget = GetMonData(monTarget, MON_DATA_SPECIES);
+ personalityTarget = GetMonData(monTarget, MON_DATA_PERSONALITY);
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_OBLIVIOUS)
+ {
+ gBattlescriptCurrInstr = BattleScript_ObliviousPreventsAttraction;
+ gLastUsedAbility = ABILITY_OBLIVIOUS;
+ RecordAbilityBattle(gBankTarget, ABILITY_OBLIVIOUS);
+ }
+ else
+ {
+ if (GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget)
+ || gBattleMons[gBankTarget].status2 & STATUS2_INFATUATION
+ || GetGenderFromSpeciesAndPersonality(speciesAttacker, personalityAttacker) == MON_GENDERLESS
+ || GetGenderFromSpeciesAndPersonality(speciesTarget, personalityTarget) == MON_GENDERLESS)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gBattleMons[gBankTarget].status2 |= STATUS2_INFATUATED_WITH(gBankAttacker);
+ gBattlescriptCurrInstr += 5;
+ }
+ }
+}
+
+static void atk98_status_icon_update(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ if (gBattlescriptCurrInstr[1] != BS_ATTACKER_WITH_PARTNER)
+ {
+ gActiveBank = GetBattleBank(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 = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
+ if (!(gAbsentBankFlags & gBitTable[gActiveBank]))
+ {
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk99_setmist(void)
+{
+ if (gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistTimer)
+ {
+ gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistTimer = 5;
+ gSideTimers[GET_BANK_SIDE(gBankAttacker)].mistBank = gBankAttacker;
+ gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= 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)
+{
+ gLastUsedMove = 0xFFFF;
+ gBattlescriptCurrInstr++;
+ if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED
+ || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
+ {
+ gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ s32 i;
+ u8 *battleMonAttacker, *battleMonTarget;
+
+ gBattleMons[gBankAttacker].status2 |= STATUS2_TRANSFORMED;
+ gDisableStructs[gBankAttacker].disabledMove = 0;
+ gDisableStructs[gBankAttacker].disableTimer1 = 0;
+ gDisableStructs[gBankAttacker].unk0 = gBattleMons[gBankTarget].personality;
+ gDisableStructs[gBankAttacker].unk18_b = 0;
+
+ PREPARE_SPECIES_BUFFER(gBattleTextBuff1, gBattleMons[gBankTarget].species)
+
+ battleMonAttacker = (u8*)(&gBattleMons[gBankAttacker]);
+ battleMonTarget = (u8*)(&gBattleMons[gBankTarget]);
+
+ for (i = 0; i < offsetof(struct BattlePokemon, pp); i++)
+ battleMonAttacker[i] = battleMonTarget[i];
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMoves[gBattleMons[gBankAttacker].moves[i]].pp < 5)
+ gBattleMons[gBankAttacker].pp[i] = gBattleMoves[gBattleMons[gBankAttacker].moves[i]].pp;
+ else
+ gBattleMons[gBankAttacker].pp[i] = 5;
+ }
+
+ gActiveBank = gBankAttacker;
+ EmitResetActionMoveSelection(0, RESET_MOVE_SELECTION);
+ 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; // one bit value will only work for pokemon which max hp can go to 1020(which is more than possible in games)
+ 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 IsMoveUncopyableByMimic(u16 move)
+{
+ s32 i;
+ for (i = 0; sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END
+ && sMovesForbiddenToCopy[i] != move; i++);
+
+ return (sMovesForbiddenToCopy[i] != MIMIC_FORBIDDEN_END);
+}
+
+static void atk9D_mimicattackcopy(void)
+{
+ gLastUsedMove = 0xFFFF;
+
+ if (IsMoveUncopyableByMimic(gLastUsedMovesByBanks[gBankTarget])
+ || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED
+ || gLastUsedMovesByBanks[gBankTarget] == 0
+ || gLastUsedMovesByBanks[gBankTarget] == 0xFFFF)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankAttacker].moves[i] == gLastUsedMovesByBanks[gBankTarget])
+ break;
+ }
+
+ if (i == 4)
+ {
+ gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastUsedMovesByBanks[gBankTarget];
+ if (gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp < 5)
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp;
+ else
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5;
+
+
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget])
+
+ gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos];
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ }
+}
+
+#ifdef NONMATCHING
+static void atk9E_metronome(void)
+{
+ while (1)
+ {
+ const u16 *move;
+ s32 i, j;
+
+ gCurrentMove = (Random() & 0x1FF) + 1;
+ if (gCurrentMove > LAST_MOVE_INDEX)
+ continue;
+
+ for (i = 0; i < 4; i++); // ?
+
+ for (move = sMovesForbiddenToCopy; ; move++)
+ {
+ if (*move == gCurrentMove)
+ break;
+ if (*move == METRONOME_FORBIDDEN_END)
+ break;
+ }
+
+ if (*move == METRONOME_FORBIDDEN_END)
+ break;
+ }
+
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+}
+
+#else
+__attribute__((naked))
+static void atk9E_metronome(void)
+{
+ asm(
+ "\n\
+ .syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r7, =gCurrentMove\n\
+ movs r6, 0xB1\n\
+ lsls r6, 1\n\
+ ldr r5, =sMovesForbiddenToCopy\n\
+ ldr r0, =gBattlescriptCurrInstr\n\
+ mov r8, r0\n\
+_080524EE:\n\
+ bl Random\n\
+ ldr r2, =0x000001ff\n\
+ adds r1, r2, 0\n\
+ ands r0, r1\n\
+ adds r0, 0x1\n\
+ strh r0, [r7]\n\
+ cmp r0, r6\n\
+ bhi _080524EE\n\
+ movs r0, 0x3\n\
+_08052502:\n\
+ subs r0, 0x1\n\
+ cmp r0, 0\n\
+ bge _08052502\n\
+ ldr r4, =gCurrentMove\n\
+ ldrh r2, [r4]\n\
+ ldr r3, =0x0000ffff\n\
+ subs r0, r5, 0x2\n\
+_08052510:\n\
+ adds r0, 0x2\n\
+ ldrh r1, [r0]\n\
+ cmp r1, r2\n\
+ beq _0805251C\n\
+ cmp r1, r3\n\
+ bne _08052510\n\
+_0805251C:\n\
+ ldr r0, =0x0000ffff\n\
+ cmp r1, r0\n\
+ bne _080524EE\n\
+ ldr r2, =gHitMarker\n\
+ ldr r0, [r2]\n\
+ ldr r1, =0xfffffbff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r3, =gBattleScriptsForMoveEffects\n\
+ ldr r2, =gBattleMoves\n\
+ ldrh r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ ldrh r0, [r4]\n\
+ movs r1, 0\n\
+ bl GetMoveTarget\n\
+ ldr r1, =gBankTarget\n\
+ strb r0, [r1]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+static void atk9F_dmgtolevel(void)
+{
+ gBattleMoveDamage = gBattleMons[gBankAttacker].level;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkA0_psywavedamageeffect(void)
+{
+ s32 randDamage;
+
+ while ((randDamage = (Random() & 0xF)) > 10);
+
+ randDamage *= 10;
+ gBattleMoveDamage = gBattleMons[gBankAttacker].level * (randDamage + 50) / 100;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkA1_counterdamagecalculator(void)
+{
+ u8 sideAttacker = GetBankSide(gBankAttacker);
+ u8 sideTarget = GetBankSide(gProtectStructs[gBankAttacker].physicalBank);
+
+ if (gProtectStructs[gBankAttacker].physicalDmg
+ && sideAttacker != sideTarget
+ && gBattleMons[gProtectStructs[gBankAttacker].physicalBank].hp)
+ {
+ gBattleMoveDamage = gProtectStructs[gBankAttacker].physicalDmg * 2;
+
+ if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp)
+ gBankTarget = gSideTimers[sideTarget].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 sideAttacker = GetBankSide(gBankAttacker);
+ u8 sideTarget = GetBankSide(gProtectStructs[gBankAttacker].specialBank);
+
+ if (gProtectStructs[gBankAttacker].specialDmg && sideAttacker != sideTarget && gBattleMons[gProtectStructs[gBankAttacker].specialBank].hp)
+ {
+ gBattleMoveDamage = gProtectStructs[gBankAttacker].specialDmg * 2;
+
+ if (gSideTimers[sideTarget].followmeTimer && gBattleMons[gSideTimers[sideTarget].followmeTarget].hp)
+ gBankTarget = gSideTimers[sideTarget].followmeTarget;
+ else
+ gBankTarget = gProtectStructs[gBankAttacker].specialBank;
+
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA3_disablelastusedattack(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget])
+ break;
+ }
+ if (gDisableStructs[gBankTarget].disabledMove == 0
+ && i != 4 && gBattleMons[gBankTarget].pp[i] != 0)
+ {
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBankTarget].moves[i])
+
+ gDisableStructs[gBankTarget].disabledMove = gBattleMons[gBankTarget].moves[i];
+ gDisableStructs[gBankTarget].disableTimer1 = (Random() & 3) + 2;
+ gDisableStructs[gBankTarget].disableTimer2 = gDisableStructs[gBankTarget].disableTimer1; // used to save the random amount of turns?
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA4_setencore(void)
+{
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget])
+ break;
+ }
+
+ if (gLastUsedMovesByBanks[gBankTarget] == MOVE_STRUGGLE
+ || gLastUsedMovesByBanks[gBankTarget] == MOVE_ENCORE
+ || gLastUsedMovesByBanks[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 hpDiff = (gBattleMons[gBankAttacker].hp + gBattleMons[gBankTarget].hp) / 2;
+ s32 painSplitHp = gBattleMoveDamage = gBattleMons[gBankTarget].hp - hpDiff;
+ u8* storeLoc = (void*)(&gBattleScripting.painSplitHp);
+
+ storeLoc[0] = (painSplitHp);
+ storeLoc[1] = (painSplitHp & 0x0000FF00) >> 8;
+ storeLoc[2] = (painSplitHp & 0x00FF0000) >> 16;
+ storeLoc[3] = (painSplitHp & 0xFF000000) >> 24;
+
+ gBattleMoveDamage = gBattleMons[gBankAttacker].hp - hpDiff;
+ gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF;
+
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+#ifdef NONMATCHING
+static void atkA6_settypetorandomresistance(void) // conversion 2
+{
+ if (gUnknown_02024250[gBankAttacker] == 0
+ || gUnknown_02024250[gBankAttacker] == 0xFFFF)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else if (IsTwoTurnsMove(gUnknown_02024250[gBankAttacker])
+ && gBattleMons[gUnknown_02024270[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ s32 type = 0, rands = 0;
+ do
+ {
+ while (((type = (Random() & 0x7F)) > 0x70));
+
+ type *= 3;
+
+ if (gTypeEffectiveness[type] == gUnknown_02024258[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;
+
+ PREPARE_TYPE_BUFFER(gBattleTextBuff1, type)
+
+ gBattlescriptCurrInstr += 5;
+ return;
+ }
+
+ rands++;
+ } while (rands <= 999);
+
+ type = 0, rands = 0;
+ do
+ {
+ s8 var = (s8)(gTypeEffectiveness[type]);
+ if (var > -1 || var < -2)
+ {
+ if (gTypeEffectiveness[type] == gUnknown_02024258[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];
+
+ PREPARE_TYPE_BUFFER(gBattleTextBuff1, gTypeEffectiveness[rands + 1])
+
+ gBattlescriptCurrInstr += 5;
+ return;
+ }
+ }
+ type += 3, rands += 3;
+ } while (rands < 336);
+
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+#else
+__attribute__((naked))
+static void atkA6_settypetorandomresistance(void) // conversion 2
+{
+ 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, =gUnknown_02024250\n\
+ ldr r4, =gBankAttacker\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r2, r0, r1\n\
+ ldrh r1, [r2]\n\
+ cmp r1, 0\n\
+ beq _08052B7E\n\
+ ldr r0, =0x0000ffff\n\
+ cmp r1, r0\n\
+ beq _08052B7E\n\
+ ldrh r0, [r2]\n\
+ bl IsTwoTurnsMove\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08052C1C\n\
+ ldr r1, =gBattleMons\n\
+ ldr r2, =gUnknown_02024270\n\
+ ldrb r0, [r4]\n\
+ adds r0, r2\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 5\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08052C1C\n\
+_08052B7E:\n\
+ ldr r3, =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 _08052D08\n\
+ .pool\n\
+_08052BB4:\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, =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, =gBattlescriptCurrInstr\n\
+ b _08052C0A\n\
+ .pool\n\
+_08052BE0:\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, =gBattleMons\n\
+ adds r0, r7\n\
+ adds r0, 0x22\n\
+ strb r2, [r0]\n\
+ ldr r1, =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\
+_08052C0A:\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ b _08052D08\n\
+ .pool\n\
+_08052C1C:\n\
+ movs r4, 0\n\
+ mov r8, r4\n\
+ movs r7, 0x7F\n\
+ mov r9, r7\n\
+_08052C24:\n\
+ bl Random\n\
+ mov r4, r9\n\
+ ands r4, r0\n\
+ cmp r4, 0x70\n\
+ bhi _08052C24\n\
+ lsls r0, r4, 1\n\
+ adds r4, r0, r4\n\
+ ldr r6, =gTypeEffectiveness\n\
+ adds r3, r4, r6\n\
+ ldr r1, =gUnknown_02024258\n\
+ ldr r2, =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 _08052C80\n\
+ adds r0, r4, 0x2\n\
+ adds r0, r6\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x5\n\
+ bhi _08052C80\n\
+ ldr r7, =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 _08052C80\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r1\n\
+ bne _08052BB4\n\
+_08052C80:\n\
+ movs r7, 0x1\n\
+ add r8, r7\n\
+ ldr r0, =0x000003e7\n\
+ cmp r8, r0\n\
+ ble _08052C24\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ ldr r1, =gBattlescriptCurrInstr\n\
+ mov r12, r1\n\
+ ldr r3, =gTypeEffectiveness\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r3\n\
+ mov r9, r0\n\
+ adds r5, r3, 0\n\
+_08052C9C:\n\
+ ldrb r1, [r5]\n\
+ cmp r1, 0xFF\n\
+ bgt _08052CA6\n\
+ cmp r1, 0xFE\n\
+ bge _08052CE0\n\
+_08052CA6:\n\
+ mov r4, r10\n\
+ ldrb r2, [r4]\n\
+ lsls r0, r2, 1\n\
+ ldr r7, =gUnknown_02024258\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _08052CE0\n\
+ ldrb r0, [r5, 0x2]\n\
+ cmp r0, 0x5\n\
+ bhi _08052CE0\n\
+ movs r6, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r6\n\
+ ldr r1, =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 _08052CE0\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r1\n\
+ beq _08052CE0\n\
+ b _08052BE0\n\
+_08052CE0:\n\
+ adds r5, 0x3\n\
+ movs r0, 0x3\n\
+ add r8, r0\n\
+ ldr r0, =0x0000014f\n\
+ cmp r8, r0\n\
+ bls _08052C9C\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\
+_08052D08:\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atkA7_setalwayshitflag(void)
+{
+ gStatuses3[gBankTarget] &= ~(STATUS3_ALWAYS_HITS);
+ gStatuses3[gBankTarget] |= 0x10;
+ gDisableStructs[gBankTarget].bankWithSureHit = gBankAttacker;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkA8_copymovepermanently(void) // sketch
+{
+ gLastUsedMove = 0xFFFF;
+
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
+ && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_STRUGGLE
+ && gUnknownMovesUsedByBanks[gBankTarget] != 0
+ && gUnknownMovesUsedByBanks[gBankTarget] != 0xFFFF
+ && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_SKETCH)
+ {
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH)
+ continue;
+ if (gBattleMons[gBankAttacker].moves[i] == gUnknownMovesUsedByBanks[gBankTarget])
+ break;
+ }
+
+ if (i != 4)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else // sketch worked
+ {
+ struct MovePpInfo movePpData;
+
+ gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknownMovesUsedByBanks[gBankTarget];
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknownMovesUsedByBanks[gBankTarget]].pp;
+ gActiveBank = gBankAttacker;
+
+ for (i = 0; i < 4; i++)
+ {
+ movePpData.move[i] = gBattleMons[gBankAttacker].moves[i];
+ movePpData.pp[i] = gBattleMons[gBankAttacker].pp[i];
+ }
+ movePpData.ppBonuses = gBattleMons[gBankAttacker].ppBonuses;
+
+ EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData);
+ MarkBufferBankForExecution(gActiveBank);
+
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gUnknownMovesUsedByBanks[gBankTarget])
+
+ gBattlescriptCurrInstr += 5;
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static bool8 IsTwoTurnsMove(u16 move)
+{
+ if (gBattleMoves[move].effect == EFFECT_SKULL_BASH
+ || gBattleMoves[move].effect == EFFECT_RAZOR_WIND
+ || gBattleMoves[move].effect == EFFECT_SKY_ATTACK
+ || gBattleMoves[move].effect == EFFECT_SOLARBEAM
+ || gBattleMoves[move].effect == EFFECT_FLY
+ || gBattleMoves[move].effect == EFFECT_BIDE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 IsInvalidForSleepTalkOrAssist(u16 move)
+{
+ if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST
+ || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a charging turn, otherwise 2
+{
+ // first argument is unused
+ if (gBattleMoves[move].effect == EFFECT_SOLARBEAM
+ && (gBattleWeather & WEATHER_SUN_ANY))
+ return 2;
+
+ if (gBattleMoves[move].effect == EFFECT_SKULL_BASH
+ || gBattleMoves[move].effect == EFFECT_RAZOR_WIND
+ || gBattleMoves[move].effect == EFFECT_SKY_ATTACK
+ || gBattleMoves[move].effect == EFFECT_SOLARBEAM
+ || gBattleMoves[move].effect == EFFECT_FLY
+ || gBattleMoves[move].effect == EFFECT_BIDE)
+ {
+ if ((gHitMarker & HITMARKER_x8000000))
+ return 1;
+ }
+ return 2;
+}
+
+static void atkA9_sleeptalk_choose_move(void)
+{
+ s32 i;
+ u8 unusableMovesBits = 0;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (IsInvalidForSleepTalkOrAssist(gBattleMons[gBankAttacker].moves[i])
+ || gBattleMons[gBankAttacker].moves[i] == MOVE_FOCUS_PUNCH
+ || gBattleMons[gBankAttacker].moves[i] == MOVE_UPROAR
+ || IsTwoTurnsMove(gBattleMons[gBankAttacker].moves[i]))
+ {
+ unusableMovesBits |= gBitTable[i];
+ }
+
+ }
+
+ unusableMovesBits = CheckMoveLimitations(gBankAttacker, unusableMovesBits, ~(MOVE_LIMITATION_PP));
+ if (unusableMovesBits == 0xF) // all 4 moves cannot be chosen
+ {
+ gBattlescriptCurrInstr += 5;
+ }
+ else // at least one move can be chosen
+ {
+ u32 movePosition;
+
+ do
+ {
+ movePosition = Random() & 3;
+ } while ((gBitTable[movePosition] & unusableMovesBits));
+
+ gRandomMove = gBattleMons[gBankAttacker].moves[movePosition];
+ gCurrMovePos = movePosition;
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gBankTarget = GetMoveTarget(gRandomMove, 0);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkAA_set_destinybond(void)
+{
+ gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND;
+ gBattlescriptCurrInstr++;
+}
+
+static void DestinyBondFlagUpdate(void)
+{
+ u8 sideAttacker = GetBankSide(gBankAttacker);
+ u8 sideTarget = GetBankSide(gBankTarget);
+ if (gBattleMons[gBankTarget].status2 & STATUS2_DESTINY_BOND
+ && sideAttacker != sideTarget
+ && !(gHitMarker & HITMARKER_GRUDGE))
+ {
+ gHitMarker |= HITMARKER_DESTINYBOND;
+ }
+}
+
+static void atkAB_DestinyBondFlagUpdate(void)
+{
+ DestinyBondFlagUpdate();
+ gBattlescriptCurrInstr++;
+}
+
+static void atkAC_remaininghptopower(void)
+{
+ s32 i;
+ s32 hpFraction = GetScaledHPFraction(gBattleMons[gBankAttacker].hp, gBattleMons[gBankAttacker].maxHP, 48);
+
+ for (i = 0; i < (s32) sizeof(sFlailHpScaleToPowerTable); i += 2)
+ {
+ if (hpFraction <= sFlailHpScaleToPowerTable[i])
+ break;
+ }
+
+ gDynamicBasePower = sFlailHpScaleToPowerTable[i + 1];
+ gBattlescriptCurrInstr++;
+}
+
+static void atkAD_spite_ppreduce(void)
+{
+ if (gLastUsedMovesByBanks[gBankTarget] != 0
+ && gLastUsedMovesByBanks[gBankTarget] != 0xFFFF)
+ {
+ s32 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gLastUsedMovesByBanks[gBankTarget] == gBattleMons[gBankTarget].moves[i])
+ break;
+ }
+
+ if (i != 4 && gBattleMons[gBankTarget].pp[i] > 1)
+ {
+ s32 ppToDeduct = (Random() & 3) + 2;
+ if (gBattleMons[gBankTarget].pp[i] < ppToDeduct)
+ ppToDeduct = gBattleMons[gBankTarget].pp[i];
+
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget])
+
+ ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, 0, 1);
+
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 1, ppToDeduct)
+
+ gBattleMons[gBankTarget].pp[i] -= ppToDeduct;
+ gActiveBank = gBankTarget;
+
+ if (!(gDisableStructs[gActiveBank].unk18_b & gBitTable[i])
+ && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ {
+ EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+
+ gBattlescriptCurrInstr += 5;
+
+ if (gBattleMons[gBankTarget].pp[i] == 0)
+ CancelMultiTurnMoves(gBankTarget);
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkAE_heal_party_status(void)
+{
+ u32 zero = 0;
+ u8 toHeal = 0;
+
+ if (gCurrentMove == MOVE_HEAL_BELL)
+ {
+ struct Pokemon* party;
+ s32 i;
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF)
+ {
+ gBattleMons[gBankAttacker].status1 = 0;
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ }
+ else
+ {
+ RecordAbilityBattle(gBankAttacker, gBattleMons[gBankAttacker].ability);
+ gBattleCommunication[MULTISTRING_CHOOSER] |= 1;
+ }
+
+ gActiveBank = gBattleScripting.bank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ {
+ if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF)
+ {
+ gBattleMons[gActiveBank].status1 = 0;
+ gBattleMons[gActiveBank].status2 &= ~(STATUS2_NIGHTMARE);
+ }
+ 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)
+ toHeal |= (1 << i);
+ }
+ }
+ }
+ else // Aromatherapy
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ toHeal = 0x3F;
+
+ gBattleMons[gBankAttacker].status1 = 0;
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+
+ gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ {
+ gBattleMons[gActiveBank].status1 = 0;
+ gBattleMons[gActiveBank].status2 &= ~(STATUS2_NIGHTMARE);
+ }
+
+ }
+
+ if (toHeal)
+ {
+ gActiveBank = gBankAttacker;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, toHeal, 4, &zero);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkAF_cursetarget(void)
+{
+ if (gBattleMons[gBankTarget].status2 & STATUS2_CURSED)
+ {
+ 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 targetSide = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+
+ if (gSideTimers[targetSide].spikesAmount == 3)
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gSideAffecting[targetSide] |= SIDE_STATUS_SPIKES;
+ gSideTimers[targetSide].spikesAmount++;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkB1_set_foresight(void)
+{
+ gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkB2_setperishsong(void)
+{
+ s32 i;
+ s32 notAffectedCount = 0;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gStatuses3[i] & STATUS3_PERISH_SONG
+ || gBattleMons[i].ability == ABILITY_SOUNDPROOF)
+ {
+ notAffectedCount++;
+ }
+ else
+ {
+ gStatuses3[i] |= STATUS3_PERISH_SONG;
+ gDisableStructs[i].perishSong1 = 3;
+ gDisableStructs[i].perishSong2 = 3;
+ }
+ }
+
+ PressurePPLoseOnUsingPerishSong(gBankAttacker);
+
+ if (notAffectedCount == gNoOfAllBanks)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atkB3_rolloutdamagecalculation(void)
+{
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ {
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattlescriptCurrInstr = BattleScript_PauseEffectivenessSoundResultMsgEndMove;
+ }
+ else
+ {
+ s32 i;
+
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) // first hit
+ {
+ gDisableStructs[gBankAttacker].rolloutCounter1 = 5;
+ gDisableStructs[gBankAttacker].rolloutCounter2 = 5;
+ gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMoves[gBankAttacker] = gCurrentMove;
+ }
+ if (--gDisableStructs[gBankAttacker].rolloutCounter1 == 0) // last hit
+ {
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
+ }
+
+ gDynamicBasePower = gBattleMoves[gCurrentMove].power;
+
+ for (i = 1; i < (5 - gDisableStructs[gBankAttacker].rolloutCounter1); 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[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_PauseEffectivenessSoundResultMsgEndMove;
+ }
+ else
+ {
+ s32 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_PresentDamageTarget;
+ else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp)
+ gBattlescriptCurrInstr = BattleScript_AlreadyAtFullHp;
+ else
+ {
+ gBattleMoveFlags &= ~(MOVESTATUS_NOTAFFECTED);
+ gBattlescriptCurrInstr = BattleScript_PresentHealTarget;
+ }
+}
+
+static void atkB8_set_safeguard(void)
+{
+ if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_SAFEGUARD)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gSideAffecting[GET_BANK_SIDE(gBankAttacker)] |= SIDE_STATUS_SAFEGUARD;
+ gSideTimers[GET_BANK_SIDE(gBankAttacker)].safeguardTimer = 5;
+ gSideTimers[GET_BANK_SIDE(gBankAttacker)].safeguardBank = gBankAttacker;
+ 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;
+ }
+
+
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 2, magnitude)
+
+ 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) == SIDE_PLAYER)
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ }
+ else
+ {
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ else
+ gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ }
+
+ if (gActionForBanks[gBankTarget] == 0
+ && gBankAttacker == *(gBattleStruct->moveTarget + gBankTarget)
+ && !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE))
+ && gBattleMons[gBankAttacker].hp
+ && !gDisableStructs[gBankTarget].truantCounter
+ && gChosenMovesByBanks[gBankTarget] == MOVE_PURSUIT)
+ {
+ s32 i;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBanksByTurnOrder[i] == gBankTarget)
+ gActionsByTurnOrder[i] = 11;
+ }
+
+ gCurrentMove = MOVE_PURSUIT;
+ gCurrMovePos = gUnknown_020241E9 = *(gBattleStruct->chosenMovePositions + gBankTarget);
+ gBattlescriptCurrInstr += 5;
+ gBattleScripting.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 halfHp = gBattleMons[gBankAttacker].maxHP / 2;
+
+ if (!(gBattleMons[gBankAttacker].maxHP / 2))
+ halfHp = 1;
+
+ if (gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] < 12
+ && gBattleMons[gBankAttacker].hp > halfHp)
+ {
+ 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
+{
+ s32 i;
+
+ for (i = 0; i < BATTLE_STATS_NO; i++)
+ {
+ gBattleMons[gBankAttacker].statStages[i] = gBattleMons[gBankTarget].statStages[i];
+ }
+
+ gBattlescriptCurrInstr += 5; // Has an unused jump ptr(possibly for a failed attempt) parameter.
+}
+
+static void atkBE_rapidspinfree(void)
+{
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_WRAPPED)
+ {
+ gBattleScripting.bank = gBankTarget;
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED);
+ gBankTarget = *(gBattleStruct->wrappedBy + gBankAttacker);
+
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = B_BUFF_MOVE;
+ gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gBankAttacker * 2 + 0);
+ gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gBankAttacker * 2 + 1);
+ gBattleTextBuff1[4] = B_BUFF_EOS;
+
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_WrapFree;
+ }
+ else if (gStatuses3[gBankAttacker] & STATUS3_LEECHSEED)
+ {
+ gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED);
+ gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED_BANK);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_LeechSeedFree;
+ }
+ else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES)
+ {
+ gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES);
+ gSideTimers[GetBankSide(gBankAttacker)].spikesAmount = 0;
+ BattleScriptPushCursor();
+ 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 == 0 || !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);
+ }
+}
+
+#ifdef NONMATCHING
+static void atkC1_hidden_power(void)
+{
+ s32 powerBits;
+ s32 typeBits;
+
+ powerBits = ((gBattleMons[gBankAttacker].hpIV & 2) >> 1)
+ | ((gBattleMons[gBankAttacker].attackIV & 2) << 0)
+ | ((gBattleMons[gBankAttacker].defenseIV & 2) << 1)
+ | ((gBattleMons[gBankAttacker].speedIV & 2) << 2)
+ | ((gBattleMons[gBankAttacker].spAttackIV & 2) << 3)
+ | ((gBattleMons[gBankAttacker].spDefenseIV & 2) << 4);
+
+ typeBits = ((gBattleMons[gBankAttacker].hpIV & 1) << 0)
+ | ((gBattleMons[gBankAttacker].attackIV & 1) << 1)
+ | ((gBattleMons[gBankAttacker].defenseIV & 1) << 2)
+ | ((gBattleMons[gBankAttacker].speedIV & 1) << 3)
+ | ((gBattleMons[gBankAttacker].spAttackIV & 1) << 4)
+ | ((gBattleMons[gBankAttacker].spDefenseIV & 1) << 5);
+
+ gDynamicBasePower = (40 * powerBits) / 63 + 30;
+
+ gBattleStruct->dynamicMoveType = (15 * typeBits) / 63 + 1;
+ if (gBattleStruct->dynamicMoveType > 8)
+ gBattleStruct->dynamicMoveType++;
+ gBattleStruct->dynamicMoveType |= 0xC0;
+
+ gBattlescriptCurrInstr++;
+}
+
+#else
+__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, =gBattleMons\n\
+ ldr r0, =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, =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 r6, =gBattleStruct\n\
+ ldr r5, [r6]\n\
+ lsls r0, r4, 4\n\
+ subs r0, r4\n\
+ movs r1, 0x3F\n\
+ bl __divsi3\n\
+ adds r0, 0x1\n\
+ strb r0, [r5, 0x13]\n\
+ ldr r1, [r6]\n\
+ ldrb r0, [r1, 0x13]\n\
+ cmp r0, 0x8\n\
+ bls _080544F0\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x13]\n\
+_080544F0:\n\
+ ldr r2, [r6]\n\
+ ldrb r0, [r2, 0x13]\n\
+ movs r1, 0xC0\n\
+ orrs r0, r1\n\
+ strb r0, [r2, 0x13]\n\
+ ldr r1, =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\
+ .pool\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+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
+ {
+ gSideAffecting[GET_BANK_SIDE(gBankTarget)] |= SIDE_STATUS_FUTUREATTACK;
+ gWishFutureKnock.futureSightMove[gBankTarget] = gCurrentMove;
+ gWishFutureKnock.futureSightAttacker[gBankTarget] = gBankAttacker;
+ gWishFutureKnock.futureSightCounter[gBankTarget] = 3;
+ gWishFutureKnock.futureSightDmg[gBankTarget] = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ gSideAffecting[GET_BANK_SIDE(gBankTarget)], 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;
+ }
+}
+
+static void atkC4_beat_up(void)
+{
+ struct Pokemon* party;
+
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleMons[gBankTarget].hp == 0)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ u8 beforeLoop = gBattleCommunication[0];
+ for (;gBattleCommunication[0] < 6; gBattleCommunication[0]++)
+ {
+ 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;
+ }
+ if (gBattleCommunication[0] < 6)
+ {
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBankAttacker, gBattleCommunication[0])
+
+ 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 (beforeLoop != 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
+ }
+}
+
+static void atkC5_setsemiinvulnerablebit(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_clearsemiinvulnerablebit(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_ANY)
+ {
+ 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
+{
+ gSideTimers[GetBankSide(gBankAttacker)].followmeTimer = 1;
+ gSideTimers[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkCB_setcharge(void)
+{
+ gStatuses3[gBankAttacker] |= STATUS3_CHARGED_UP;
+ gDisableStructs[gBankAttacker].chargeTimer1 = 2;
+ gDisableStructs[gBankAttacker].chargeTimer2 = 2;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkCC_callterrainattack(void) // nature power
+{
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = sNaturePowerMoves[gBattleTerrain];
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ BattleScriptPush(gBattleScriptsForMoveEffects[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;
+ EmitSetMonData(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 = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
+
+ 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);
+ }
+}
+
+static void atkD2_swap_items(void) // trick
+{
+ // opponent can't swap items with player in regular battles
+ if (gBattleTypeFlags & BATTLE_TYPE_x4000000
+ || (GetBankSide(gBankAttacker) == SIDE_OPPONENT
+ && !(gBattleTypeFlags & (BATTLE_TYPE_LINK
+ | BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_SECRET_BASE
+ | BATTLE_TYPE_x2000000))))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ u8 sideAttacker = GetBankSide(gBankAttacker);
+ u8 sideTarget = GetBankSide(gBankTarget);
+
+ // you can't swap items if they were knocked off in regular battles
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
+ | BATTLE_TYPE_EREADER_TRAINER
+ | BATTLE_TYPE_FRONTIER
+ | BATTLE_TYPE_SECRET_BASE
+ | BATTLE_TYPE_x2000000))
+ && (gWishFutureKnock.knockedOffPokes[sideAttacker] & gBitTable[gBattlePartyID[gBankAttacker]]
+ || gWishFutureKnock.knockedOffPokes[sideTarget] & gBitTable[gBattlePartyID[gBankTarget]]))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ // can't swap if two pokemon don't have an item
+ // or if either of them is an enigma berry or a mail
+ else if ((gBattleMons[gBankAttacker].item == 0 && gBattleMons[gBankTarget].item == 0)
+ || gBattleMons[gBankAttacker].item == ITEM_ENIGMA_BERRY
+ || gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY
+ || IS_ITEM_MAIL(gBattleMons[gBankAttacker].item)
+ || IS_ITEM_MAIL(gBattleMons[gBankTarget].item))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ // check if ability prevents swapping
+ else if (gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD)
+ {
+ gBattlescriptCurrInstr = BattleScript_StickyHoldActivates;
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ // took a while, but all checks passed and items can be safely swapped
+ else
+ {
+ u16 oldItemAtk, *newItemAtk;
+
+ newItemAtk = &gBattleStruct->changedItems[gBankAttacker];
+ oldItemAtk = gBattleMons[gBankAttacker].item;
+ *newItemAtk = gBattleMons[gBankTarget].item;
+
+ gBattleMons[gBankAttacker].item = 0;
+ gBattleMons[gBankTarget].item = oldItemAtk;
+
+ gActiveBank = gBankAttacker;
+ EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, newItemAtk);
+ MarkBufferBankForExecution(gBankAttacker);
+
+ gActiveBank = gBankTarget;
+ EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item);
+ MarkBufferBankForExecution(gBankTarget);
+
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankTarget]) + 1) = 0;
+
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankAttacker]) + 0) = 0;
+ *(u8*)((u8*)(&gBattleStruct->choicedMove[gBankAttacker]) + 1) = 0;
+
+ gBattlescriptCurrInstr += 5;
+
+ PREPARE_ITEM_BUFFER(gBattleTextBuff1, *newItemAtk)
+ PREPARE_ITEM_BUFFER(gBattleTextBuff2, oldItemAtk)
+
+ if (oldItemAtk != 0 && *newItemAtk != 0)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2; // attacker's item -> <- target's item
+ else if (oldItemAtk == 0 && *newItemAtk != 0)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0; // nothing -> <- target's item
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1; // attacker's item -> <- nothing
+ }
+ }
+}
+
+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 (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
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBankTarget, gWishFutureKnock.wishUserID[gBankTarget])
+
+ 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))
+ {
+ gBattleScripting.dmgMultiplier = 2;
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkD7_setyawn(void)
+{
+ if (gStatuses3[gBankTarget] & STATUS3_YAWN
+ || gBattleMons[gBankTarget].status1 & STATUS_ANY)
+ {
+ 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) // skill swap
+{
+ 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 abilityAtk = gBattleMons[gBankAttacker].ability;
+ gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability;
+ gBattleMons[gBankTarget].ability = abilityAtk;
+
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkDB_imprisoneffect(void)
+{
+ if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISONED_OTHERS))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ u8 bank, sideAttacker;
+
+ sideAttacker = GetBankSide(gBankAttacker);
+ PressurePPLoseOnUsingImprision(gBankAttacker);
+ for (bank = 0; bank < gNoOfAllBanks; bank++)
+ {
+ if (sideAttacker != GetBankSide(bank))
+ {
+ s32 attackerMoveId;
+ for (attackerMoveId = 0; attackerMoveId < 4; attackerMoveId++)
+ {
+ s32 i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankAttacker].moves[attackerMoveId] == gBattleMons[bank].moves[i]
+ && gBattleMons[gBankAttacker].moves[attackerMoveId] != MOVE_NONE)
+ break;
+ }
+ if (i != 4)
+ break;
+ }
+ if (attackerMoveId != 4)
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_IMPRISONED_OTHERS;
+ gBattlescriptCurrInstr += 5;
+ break;
+ }
+ }
+ }
+ if (bank == gNoOfAllBanks) // In Generation 3 games, Imprison fails if the user doesn't share any moves with any of the foes
+ 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)
+{
+ s32 i;
+ for (i = 0; sWeightToDamageTable[i] != 0xFFFF; i += 2)
+ {
+ if (sWeightToDamageTable[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1))
+ break;
+ }
+
+ if (sWeightToDamageTable[i] != 0xFFFF)
+ gDynamicBasePower = sWeightToDamageTable[i + 1];
+ else
+ gDynamicBasePower = 120;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkDE_asistattackselect(void)
+{
+ s32 chooseableMovesNo = 0;
+ struct Pokemon* party;
+ s32 monId, moveId;
+ u16* movesArray = gBattleStruct->assistPossibleMoves;
+
+ if (GET_BANK_SIDE(gBankAttacker) != SIDE_PLAYER)
+ party = gEnemyParty;
+ else
+ party = gPlayerParty;
+
+ for (monId = 0; monId < 6; monId++)
+ {
+ if (monId == gBattlePartyID[gBankAttacker])
+ continue;
+ if (GetMonData(&party[monId], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[monId], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+
+ for (moveId = 0; moveId < 4; moveId++)
+ {
+ s32 i = 0;
+ u16 move = GetMonData(&party[monId], MON_DATA_MOVE1 + moveId);
+
+ if (IsInvalidForSleepTalkOrAssist(move))
+ continue;
+
+ for (; sMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END && move != sMovesForbiddenToCopy[i]; i++);
+
+ if (sMovesForbiddenToCopy[i] != ASSIST_FORBIDDEN_END)
+ continue;
+ if (move == MOVE_NONE)
+ continue;
+
+ movesArray[chooseableMovesNo] = move;
+ chooseableMovesNo++;
+ }
+ }
+ if (chooseableMovesNo)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gRandomMove = movesArray[((Random() & 0xFF) * chooseableMovesNo) >> 8];
+ gBankTarget = GetMoveTarget(gRandomMove, 0);
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkDF_setmagiccoat(void)
+{
+ gBankTarget = gBankAttacker;
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) // moves last turn
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gProtectStructs[gBankAttacker].bounceMove = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkE0_setstealstatchange(void) // snatch
+{
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) // moves last turn
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gProtectStructs[gBankAttacker].stealMove = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkE1_intimidate_string_loader(void)
+{
+ u8 side;
+
+ gBattleScripting.bank = gBattleStruct->intimidateBank;
+ side = GetBankSide(gBattleScripting.bank);
+
+ PREPARE_ABILITY_BUFFER(gBattleTextBuff1, gBattleMons[gBattleScripting.bank].ability)
+
+ 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(gBattlescriptCurrInstr[1]);
+
+ switch (gBattleMons[gActiveBank].ability)
+ {
+ case ABILITY_NATURAL_CURE:
+ gBattleMons[gActiveBank].status1 = 0;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->field_58 + gActiveBank)], 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atkE3_jumpifhasnohp(void)
+{
+ gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
+
+ if (gBattleMons[gActiveBank].hp == 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atkE4_getsecretpowereffect(void)
+{
+ switch (gBattleTerrain)
+ {
+ case BATTLE_TERRAIN_GRASS:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_POISON;
+ break;
+ case BATTLE_TERRAIN_LONG_GRASS:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SLEEP;
+ break;
+ case BATTLE_TERRAIN_SAND:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_ACC_MINUS_1;
+ break;
+ case BATTLE_TERRAIN_UNDERWATER:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_DEF_MINUS_1;
+ break;
+ case BATTLE_TERRAIN_WATER:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_ATK_MINUS_1;
+ break;
+ case BATTLE_TERRAIN_POND:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SPD_MINUS_1;
+ break;
+ case BATTLE_TERRAIN_ROCK:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION;
+ break;
+ case BATTLE_TERRAIN_CAVE:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH;
+ break;
+ default:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_PARALYSIS;
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkE5_pickup(void)
+{
+ if (!InBattlePike())
+ {
+ s32 i;
+ u16 species, heldItem;
+ u8 ability;
+
+ if (InBattlePyramid())
+ {
+ for (i = 0; i < 6; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+
+ 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
+ && heldItem == ITEM_NONE
+ && (Random() % 10) == 0)
+ {
+ heldItem = GetBattlePyramidPickupItemId();
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &heldItem);
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < 6; i++)
+ {
+ species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+
+ 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
+ && heldItem == ITEM_NONE
+ && (Random() % 10) == 0)
+ {
+ s32 j;
+ s32 rand = Random() % 100;
+ u8 lvlDivBy10 = (GetMonData(&gPlayerParty[i], MON_DATA_LEVEL) - 1) / 10;
+ if (lvlDivBy10 > 9)
+ lvlDivBy10 = 9;
+
+ for (j = 0; j < 9; j++)
+ {
+ if (sPickupProbabilities[j] > rand)
+ {
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[lvlDivBy10 + j]);
+ break;
+ }
+ else if (rand == 99 || rand == 98)
+ {
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sRarePickupItems[lvlDivBy10 + (99 - rand)]);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkE6_castform_change_animation(void)
+{
+ gActiveBank = gBattleScripting.bank;
+
+ if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE)
+ *(&gBattleStruct->formToChangeInto) |= 0x80;
+
+ EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, gBattleStruct->formToChangeInto);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkE7_castform_data_change(void)
+{
+ u8 form;
+
+ gBattlescriptCurrInstr++;
+ form = CastformDataTypeChange(gBattleScripting.bank);
+ if (form)
+ {
+ BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
+ *(&gBattleStruct->formToChangeInto) = form - 1;
+ }
+}
+
+static void atkE8_settypebasedhalvers(void) // water and 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 (gBattleWeather & WEATHER_ANY)
+ gBattleScripting.dmgMultiplier = 2;
+ if (gBattleWeather & WEATHER_RAIN_ANY)
+ *(&gBattleStruct->dynamicMoveType) = TYPE_WATER | 0x80;
+ else if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ *(&gBattleStruct->dynamicMoveType) = TYPE_ROCK | 0x80;
+ else if (gBattleWeather & WEATHER_SUN_ANY)
+ *(&gBattleStruct->dynamicMoveType) = TYPE_FIRE | 0x80;
+ else if (gBattleWeather & WEATHER_HAIL_ANY)
+ *(&gBattleStruct->dynamicMoveType) = TYPE_ICE | 0x80;
+ else
+ *(&gBattleStruct->dynamicMoveType) = TYPE_NORMAL | 0x80;
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkEA_recycleitem(void)
+{
+ u16 *usedHeldItem;
+
+ gActiveBank = gBankAttacker;
+ usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBank];
+ if (*usedHeldItem != 0 && gBattleMons[gActiveBank].item == 0)
+ {
+ gLastUsedItem = *usedHeldItem;
+ *usedHeldItem = 0;
+ gBattleMons[gActiveBank].item = gLastUsedItem;
+
+ EmitSetMonData(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];
+
+ PREPARE_TYPE_BUFFER(gBattleTextBuff1, sTerrainToType[gBattleTerrain])
+
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkEC_pursuit_sth(void)
+{
+ gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
+ && !(gAbsentBankFlags & gBitTable[gActiveBank])
+ && gActionForBanks[gActiveBank] == 0
+ && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT)
+ {
+ gActionsByTurnOrder[gActiveBank] = 11;
+ gCurrentMove = MOVE_PURSUIT;
+ gBattlescriptCurrInstr += 5;
+ gBattleScripting.animTurn = 1;
+ gBattleScripting.field_20 = gBankAttacker;
+ gBankAttacker = gActiveBank;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkED_802B4B4(void)
+{
+ gEffectBank = gBankAttacker;
+
+ if (gBankAttacker == gBankTarget)
+ gBankAttacker = gBankTarget = gBattleScripting.bank;
+ else
+ gBankTarget = gBattleScripting.bank;
+
+ gBattleScripting.bank = gEffectBank;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkEE_removelightscreenreflect(void) // brick break
+{
+ u8 opposingSide = GetBankSide(gBankAttacker) ^ BIT_SIDE;
+
+ if (gSideTimers[opposingSide].reflectTimer || gSideTimers[opposingSide].lightscreenTimer)
+ {
+ gSideAffecting[opposingSide] &= ~(SIDE_STATUS_REFLECT);
+ gSideAffecting[opposingSide] &= ~(SIDE_STATUS_LIGHTSCREEN);
+ gSideTimers[opposingSide].reflectTimer = 0;
+ gSideTimers[opposingSide].lightscreenTimer = 0;
+ gBattleScripting.animTurn = 1;
+ gBattleScripting.animTargetsHit = 1;
+ }
+ else
+ {
+ gBattleScripting.animTurn = 0;
+ gBattleScripting.animTargetsHit = 0;
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkEF_pokeball_catch_calculation(void)
+{
+ u8 ballMultiplier = 0;
+
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = gBankAttacker;
+ gBankTarget = gBankAttacker ^ BIT_SIDE;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ EmitBallThrow(0, BALL_TRAINER_BLOCK);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ {
+ EmitBallThrow(0, BALL_3_SHAKES_SUCCESS);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
+ }
+ else
+ {
+ u32 odds;
+ u8 catchRate;
+
+ if (gLastUsedItem == ITEM_SAFARI_BALL)
+ catchRate = gBattleStruct->field_7C * 1275 / 100;
+ else
+ catchRate = gBaseStats[gBattleMons[gBankTarget].species].catchRate;
+
+ if (gLastUsedItem > ITEM_SAFARI_BALL)
+ {
+ 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)
+ ballMultiplier = 30;
+ else
+ ballMultiplier = 10;
+ break;
+ case ITEM_DIVE_BALL:
+ if (sav1_map_get_light_level() == 5)
+ ballMultiplier = 35;
+ else
+ ballMultiplier = 10;
+ break;
+ case ITEM_NEST_BALL:
+ if (gBattleMons[gBankTarget].level < 40)
+ {
+ ballMultiplier = 40 - gBattleMons[gBankTarget].level;
+ if (ballMultiplier <= 9)
+ ballMultiplier = 10;
+ }
+ else
+ {
+ ballMultiplier = 10;
+ }
+ break;
+ case ITEM_REPEAT_BALL:
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), FLAG_GET_CAUGHT))
+ ballMultiplier = 30;
+ else
+ ballMultiplier = 10;
+ break;
+ case ITEM_TIMER_BALL:
+ ballMultiplier = gBattleResults.battleTurnCounter + 10;
+ if (ballMultiplier > 40)
+ ballMultiplier = 40;
+ break;
+ case ITEM_LUXURY_BALL:
+ case ITEM_PREMIER_BALL:
+ ballMultiplier = 10;
+ break;
+ }
+ }
+ else
+ ballMultiplier = sBallCatchBonuses[gLastUsedItem - 2];
+
+ odds = (catchRate * ballMultiplier / 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))
+ odds = (odds * 15) / 10;
+
+ if (gLastUsedItem != ITEM_SAFARI_BALL)
+ {
+ if (gLastUsedItem == ITEM_MASTER_BALL)
+ {
+ gBattleResults.usedMasterBall = TRUE;
+ }
+ else
+ {
+ if (gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF)
+ gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL]++;
+ }
+ }
+
+ if (odds > 254) // mon caught
+ {
+ EmitBallThrow(0, BALL_3_SHAKES_SUCCESS);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
+ SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
+
+ if (CalculatePlayerPartyCount() == 6)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else // mon 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 = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check?
+
+ EmitBallThrow(0, shakes);
+ MarkBufferBankForExecution(gActiveBank);
+
+ if (shakes == BALL_3_SHAKES_SUCCESS) // mon caught, copy of the code above
+ {
+ gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
+ SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
+
+ if (CalculatePlayerPartyCount() == 6)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else // not caught
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = shakes;
+ gBattlescriptCurrInstr = BattleScript_ShakeBallThrow;
+ }
+ }
+ }
+}
+
+static void atkF0_give_caught_mon(void)
+{
+ if (GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY)
+ {
+ if (!sub_813B21C())
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
+ }
+ else
+ {
+ StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_STORAGE_UNKNOWN)));
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gStringVar2);
+ StringCopy(gStringVar3, GetBoxNamePtr(get_unknown_box_id()));
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+
+ if (FlagGet(SYS_PC_LANETTE))
+ gBattleCommunication[MULTISTRING_CHOOSER]++;
+ }
+
+ gBattleResults.caughtMonSpecies = GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_SPECIES, NULL);
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick);
+ gBattleResults.caughtMonBall = GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_POKEBALL, NULL);
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkF1_set_caught_mon_dex_flags(void)
+{
+ u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL);
+ u32 personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL);
+
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ HandleSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_SET_CAUGHT, personality);
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkF2_display_dex_info(void)
+{
+ u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL);
+
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBattleCommunication[0]++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ gBattleCommunication[TASK_ID] = CreateDexDisplayMonDataTask(SpeciesToNationalPokedexNum(species),
+ gBattleMons[gBankTarget].otId,
+ gBattleMons[gBankTarget].personality);
+ gBattleCommunication[0]++;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active
+ && gMain.callback2 == BattleMainCB2
+ && !gTasks[gBattleCommunication[TASK_ID]].isActive)
+ {
+ SetVBlankCallback(VBlankCB_Battle);
+ gBattleCommunication[0]++;
+ }
+ break;
+ case 3:
+ sub_80356D0();
+ LoadBattleTextboxAndBackground();
+ gBattle_BG3_X = 0x100;
+ gBattleCommunication[0]++;
+ break;
+ case 4:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ BeginNormalPaletteFade(0xFFFF, 0, 0x10, 0, 0);
+ ShowBg(0);
+ ShowBg(3);
+ gBattleCommunication[0]++;
+ }
+ break;
+ case 5:
+ if (!gPaletteFade.active)
+ gBattlescriptCurrInstr++;
+ break;
+ }
+}
+
+void sub_8056A3C(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags)
+{
+ s32 destY, destX;
+ u16 var = 0;
+
+ for (destY = yStart; destY <= yEnd; destY++)
+ {
+ for (destX = xStart; destX <= xEnd; destX++)
+ {
+ if (destY == yStart)
+ {
+ if (destX == xStart)
+ var = 0x1022;
+ else if (destX == xEnd)
+ var = 0x1024;
+ else
+ var = 0x1023;
+ }
+ else if (destY == yEnd)
+ {
+ if (destX == xStart)
+ var = 0x1028;
+ else if (destX == xEnd)
+ var = 0x102A;
+ else
+ var = 0x1029;
+ }
+ else
+ {
+ if (destX == xStart)
+ var = 0x1025;
+ else if (destX == xEnd)
+ var = 0x1027;
+ else
+ var = 0x1026;
+ }
+
+ if (flags & 1)
+ var = 0;
+
+ if (flags & 0x80)
+ CopyToBgTilemapBufferRect_ChangePalette(1, &var, destX, destY, 1, 1, 0x11);
+ else
+ CopyToBgTilemapBufferRect_ChangePalette(0, &var, destX, destY, 1, 1, 0x11);
+ }
+ }
+}
+
+void BattleCreateCursorAt(u8 cursorPosition)
+{
+ u16 src[2];
+ src[0] = 1;
+ src[1] = 2;
+
+ CopyToBgTilemapBufferRect_ChangePalette(0, src, 0x19, 9 + (2 * cursorPosition), 1, 2, 0x11);
+ CopyBgTilemapBufferToVram(0);
+}
+
+void BattleDestroyCursorAt(u8 cursorPosition)
+{
+ u16 src[2];
+ src[0] = 0x1016;
+ src[1] = 0x1016;
+
+ CopyToBgTilemapBufferRect_ChangePalette(0, src, 0x19, 9 + (2 * cursorPosition), 1, 2, 0x11);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void atkF3_nickname_caught_poke(void)
+{
+ switch (gBattleCommunication[MULTIUSE_STATE])
+ {
+ case 0:
+ sub_8056A3C(0x18, 8, 0x1D, 0xD, 0);
+ sub_814F9EC(gText_BattleYesNoChoice, 0xC);
+ gBattleCommunication[MULTIUSE_STATE]++;
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateCursorAt(0);
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[CURSOR_POSITION] != 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 0;
+ BattleCreateCursorAt(0);
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ PlaySE(SE_SELECT);
+ BattleDestroyCursorAt(gBattleCommunication[CURSOR_POSITION]);
+ gBattleCommunication[CURSOR_POSITION] = 1;
+ BattleCreateCursorAt(1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[CURSOR_POSITION] == 0)
+ {
+ gBattleCommunication[MULTIUSE_STATE]++;
+ BeginFastPaletteFade(3);
+ }
+ else
+ {
+ gBattleCommunication[MULTIUSE_STATE] = 4;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattleCommunication[MULTIUSE_STATE] = 4;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
+ FreeAllWindowBuffers();
+
+ DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick,
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_SPECIES),
+ GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]]),
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_PERSONALITY, NULL),
+ BattleMainCB2);
+
+ gBattleCommunication[MULTIUSE_STATE]++;
+ }
+ break;
+ case 3:
+ if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active )
+ {
+ SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ break;
+ case 4:
+ if (CalculatePlayerPartyCount() == 6)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ break;
+ }
+}
+
+static void atkF4_subattackerhpbydmg(void)
+{
+ gBattleMons[gBankAttacker].hp -= gBattleMoveDamage;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkF5_removeattackerstatus1(void)
+{
+ gBattleMons[gBankAttacker].status1 = 0;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkF6_action_finished(void)
+{
+ gCurrentActionFuncId = ACTION_FINISHED;
+}
+
+static void atkF7_turn_finished(void)
+{
+ gCurrentActionFuncId = ACTION_FINISHED;
+ gCurrentTurnActionNumber = gNoOfAllBanks;
+}
+
+static void atkF8_trainer_slide_back(void)
+{
+ gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]);
+ EmitTrainerSlideBack(0);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr += 2;
+}
diff --git a/src/battle_3.c b/src/battle_util.c
index a2ddd1c2d..0a0badb33 100644
--- a/src/battle_3.c
+++ b/src/battle_util.c
@@ -13,11 +13,14 @@
#include "text.h"
#include "string_util.h"
#include "battle_message.h"
-#include "battle_ai.h"
+#include "battle_ai_script_commands.h"
+#include "battle_controllers.h"
#include "event_data.h"
+#include "calculate_base_damage.h"
+#include "link.h"
extern const u8* gBattlescriptCurrInstr;
-extern const u8* gUnknown_02024220[BATTLE_BANKS_COUNT];
+extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT];
extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT];
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern u8 gActiveBank;
@@ -30,8 +33,8 @@ extern u8 gBankAttacker;
extern u8 gBankTarget;
extern u8 gAbsentBankFlags;
extern u16 gBattleWeather;
-extern u8 gTurnOrder[BATTLE_BANKS_COUNT];
-extern u16 gSideAffecting[];
+extern u8 gBanksByTurnOrder[BATTLE_BANKS_COUNT];
+extern u16 gSideAffecting[2];
extern u8 gBattleCommunication[];
extern void (*gBattleMainFunc)(void);
extern s32 gBattleMoveDamage;
@@ -43,19 +46,19 @@ extern u32 gHitMarker;
extern u8 gEffectBank;
extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
extern u8 gBank1;
-extern u16 gChosenMovesByBanks[];
+extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
extern u8 gBattleMoveFlags;
extern s32 gTakenDmg[BATTLE_BANKS_COUNT];
extern u8 gTakenDmgBanks[BATTLE_BANKS_COUNT];
extern u8 gLastUsedAbility;
-extern u8 gFightStateTracker;
+extern u8 gCurrentActionFuncId;
extern u32 gBattleExecBuffer;
extern u16 gRandomMove;
extern u8 gCurrMovePos;
extern u8 gUnknown_020241E9;
+extern u8 gSentPokesToOpponent[2];
extern const struct BattleMove gBattleMoves[];
-extern void (* const gBattleScriptingCommandsTable[])(void);
// scripts
extern const u8 gUnknown_082DAE2A[];
@@ -129,6 +132,8 @@ extern const u8 BattleScript_MoveHPDrain[];
extern const u8 BattleScript_MoveHPDrain_PPLoss[];
extern const u8 BattleScript_FlashFireBoost[];
extern const u8 BattleScript_FlashFireBoost_PPLoss[];
+extern const u8 gUnknown_082DB592[];
+extern const u8 gUnknown_082DB591[];
extern const u8 BattleScript_ColorChangeActivates[];
extern const u8 BattleScript_RoughSkinActivates[];
extern const u8 BattleScript_ApplySecondaryEffect[];
@@ -168,58 +173,295 @@ extern const u8 gUnknown_082DB6A5[]; //disobedient, uses a random move
extern const u8 gUnknown_082DB6D9[]; //disobedient, went to sleep
extern const u8 gUnknown_082DB6F0[]; //disobedient, hits itself
-extern const u8 gStatusConditionString_PoisonJpn[];
-extern const u8 gStatusConditionString_SleepJpn[];
-extern const u8 gStatusConditionString_ParalysisJpn[];
-extern const u8 gStatusConditionString_BurnJpn[];
-extern const u8 gStatusConditionString_IceJpn[];
-extern const u8 gStatusConditionString_ConfusionJpn[];
-extern const u8 gStatusConditionString_LoveJpn[];
-extern const u16 gSoundMovesTable[];
-
-extern void CancelMultiTurnMoves(u8 bank);
-extern u8 b_first_side(u8, u8, u8);
-extern void sub_803CEDC(u8, u8);
-extern void b_call_bc_move_exec(const u8 *);
-extern void BattleTurnPassed(void);
-extern void EmitSetAttributes(u8 a, u8 request, u8 c, u8 bytes, void *data);
-extern void SetMoveEffect(bool8 primary, u8 certainArg);
-extern bool8 UproarWakeUpCheck(u8 bank);
-extern void MarkBufferBankForExecution(u8 bank);
-extern u8 sub_803F90C(u8 bank);
-extern u8 GetBankIdentity(u8);
-extern void sub_803F9EC();
-extern bool8 sub_80423F4(u8 bank, u8, u8);
-extern s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideFlags, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef);
-extern u8 GetBankByPlayerAI(u8);
-extern u8 sub_806D864(u8);
-extern u8 sub_806D82C(u8);
extern u8 weather_get_current(void);
-extern void sub_803E08C(void);
-extern void bc_move_exec_returning(void);
-extern s8 GetFlavourRelationByPersonality(u32 personality, u8 flavor);
-u8 IsImprisoned(u8 bank, u16 move);
-u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn);
-u8 GetMoveTarget(u16 move, u8 useMoveTarget);
-void b_push_move_exec(const u8* BS_ptr);
+// rom const data
+static const u16 sSoundMovesTable[] =
+{
+ MOVE_GROWL, MOVE_ROAR, MOVE_SING, MOVE_SUPERSONIC, MOVE_SCREECH, MOVE_SNORE,
+ MOVE_UPROAR, MOVE_METAL_SOUND, MOVE_GRASS_WHISTLE, MOVE_HYPER_VOICE, 0xFFFF
+};
+
+u8 GetBattleBank(u8 caseId)
+{
+ u8 ret = 0;
+ switch (caseId)
+ {
+ case BS_GET_TARGET:
+ ret = gBankTarget;
+ break;
+ case BS_GET_ATTACKER:
+ ret = gBankAttacker;
+ break;
+ case BS_GET_EFFECT_BANK:
+ ret = gEffectBank;
+ break;
+ case 7:
+ ret = 0;
+ break;
+ case BS_GET_SCRIPTING_BANK:
+ ret = gBattleScripting.bank;
+ break;
+ case 3:
+ ret = gBank1;
+ break;
+ case 5:
+ ret = gBank1;
+ break;
+ case 4:
+ case 6:
+ case 8:
+ case 9:
+ case BS_GET_PLAYER1:
+ ret = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ break;
+ case BS_GET_OPPONENT1:
+ ret = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ break;
+ case BS_GET_PLAYER2:
+ ret = GetBankByIdentity(IDENTITY_PLAYER_MON2);
+ break;
+ case BS_GET_OPPONENT2:
+ ret = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ break;
+ }
+ return ret;
+}
+
+void PressurePPLose(u8 bankDef, u8 bankAtk, u16 move)
+{
+ s32 i;
+
+ if (gBattleMons[bankDef].ability != ABILITY_PRESSURE)
+ return;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[bankAtk].moves[i] == move)
+ break;
+ }
+
+ if (i == 4) // mons don't share any moves
+ return;
+
+ if (gBattleMons[bankAtk].pp[i] != 0)
+ gBattleMons[bankAtk].pp[i]--;
+
+ if (!(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[bankAtk].unk18_b & gBitTable[i]))
+ {
+ gActiveBank = bankAtk;
+ EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+}
+
+void PressurePPLoseOnUsingImprision(u8 bankAtk)
+{
+ s32 i, j;
+ s32 imprisionPos = 4;
+ u8 atkSide = GetBankSide(bankAtk);
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (atkSide != GetBankSide(i) && gBattleMons[i].ability == ABILITY_PRESSURE)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (gBattleMons[bankAtk].moves[j] == MOVE_IMPRISON)
+ break;
+ }
+ if (j != 4)
+ {
+ imprisionPos = j;
+ if (gBattleMons[bankAtk].pp[j] != 0)
+ gBattleMons[bankAtk].pp[j]--;
+ }
+ }
+ }
+
+ if (imprisionPos != 4
+ && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[bankAtk].unk18_b & gBitTable[imprisionPos]))
+ {
+ gActiveBank = bankAtk;
+ EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisionPos, 0, 1, &gBattleMons[gActiveBank].pp[imprisionPos]);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+}
+
+void PressurePPLoseOnUsingPerishSong(u8 bankAtk)
+{
+ s32 i, j;
+ s32 perishSongPos = 4;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].ability == ABILITY_PRESSURE && i != bankAtk)
+ {
+ for (j = 0; j < 4; j++)
+ {
+ if (gBattleMons[bankAtk].moves[j] == MOVE_PERISH_SONG)
+ break;
+ }
+ if (j != 4)
+ {
+ perishSongPos = j;
+ if (gBattleMons[bankAtk].pp[j] != 0)
+ gBattleMons[bankAtk].pp[j]--;
+ }
+ }
+ }
+
+ if (perishSongPos != 4
+ && !(gBattleMons[bankAtk].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[bankAtk].unk18_b & gBitTable[perishSongPos]))
+ {
+ gActiveBank = bankAtk;
+ EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBank].pp[perishSongPos]);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+}
+
+void MarkAllBufferBanksForExecution(void) // unused
+{
+ s32 i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ for (i = 0; i < gNoOfAllBanks; i++)
+ gBattleExecBuffer |= gBitTable[i] << 0x1C;
+ }
+ else
+ {
+ for (i = 0; i < gNoOfAllBanks; i++)
+ gBattleExecBuffer |= gBitTable[i];
+ }
+}
+
+void MarkBufferBankForExecution(u8 bank)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gBattleExecBuffer |= gBitTable[bank] << 0x1C;
+ }
+ else
+ {
+ gBattleExecBuffer |= gBitTable[bank];
+ }
+}
+
+void sub_803F850(u8 arg0)
+{
+ s32 i;
+
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ gBattleExecBuffer |= gBitTable[arg0] << (i << 2);
+
+ gBattleExecBuffer &= ~(0x10000000 << arg0);
+}
+
+void CancelMultiTurnMoves(u8 bank)
+{
+ gBattleMons[bank].status2 &= ~(STATUS2_MULTIPLETURNS);
+ gBattleMons[bank].status2 &= ~(STATUS2_LOCK_CONFUSE);
+ gBattleMons[bank].status2 &= ~(STATUS2_UPROAR);
+ gBattleMons[bank].status2 &= ~(STATUS2_BIDE);
+
+ gStatuses3[bank] &= ~(STATUS3_SEMI_INVULNERABLE);
+
+ gDisableStructs[bank].rolloutCounter1 = 0;
+ gDisableStructs[bank].furyCutterCounter = 0;
+}
-void b_movescr_stack_push(const u8* bsPtr)
+bool8 WasUnableToUseMove(u8 bank)
+{
+ if (gProtectStructs[bank].prlzImmobility
+ || gProtectStructs[bank].targetNotAffected
+ || gProtectStructs[bank].usedImprisionedMove
+ || gProtectStructs[bank].loveImmobility
+ || gProtectStructs[bank].usedDisabledMove
+ || gProtectStructs[bank].usedTauntedMove
+ || gProtectStructs[bank].flag2Unknown
+ || gProtectStructs[bank].flinchImmobility
+ || gProtectStructs[bank].confusionSelfDmg)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void PrepareStringBattle(u16 stringId, u8 bank)
+{
+ gActiveBank = bank;
+ EmitPrintString(0, stringId);
+ MarkBufferBankForExecution(gActiveBank);
+}
+
+void ResetSentPokesToOpponentValue(void)
+{
+ s32 i;
+ u32 bits = 0;
+
+ gSentPokesToOpponent[0] = 0;
+ gSentPokesToOpponent[1] = 0;
+
+ for (i = 0; i < gNoOfAllBanks; i += 2)
+ bits |= gBitTable[gBattlePartyID[i]];
+
+ for (i = 1; i < gNoOfAllBanks; i += 2)
+ gSentPokesToOpponent[(i & BIT_MON) >> 1] = bits;
+}
+
+void sub_803F9EC(u8 bank)
+{
+ s32 i = 0;
+ u32 bits = 0;
+
+ if (GetBankSide(bank) == SIDE_OPPONENT)
+ {
+ u8 id = ((bank & BIT_MON) >> 1);
+ gSentPokesToOpponent[id] = 0;
+
+ for (i = 0; i < gNoOfAllBanks; i += 2)
+ {
+ if (!(gAbsentBankFlags & gBitTable[i]))
+ bits |= gBitTable[gBattlePartyID[i]];
+ }
+
+ gSentPokesToOpponent[id] = bits;
+ }
+}
+
+void sub_803FA70(u8 bank)
+{
+ if (GetBankSide(bank) == SIDE_OPPONENT)
+ {
+ sub_803F9EC(bank);
+ }
+ else
+ {
+ s32 i;
+ for (i = 1; i < gNoOfAllBanks; i++)
+ gSentPokesToOpponent[(i & BIT_MON) >> 1] |= gBitTable[gBattlePartyID[bank]];
+ }
+}
+
+void BattleScriptPush(const u8* bsPtr)
{
BATTLESCRIPTS_STACK->ptr[BATTLESCRIPTS_STACK->size++] = bsPtr;
}
-void b_movescr_stack_push_cursor(void)
+void BattleScriptPushCursor(void)
{
BATTLESCRIPTS_STACK->ptr[BATTLESCRIPTS_STACK->size++] = gBattlescriptCurrInstr;
}
-void b_movescr_stack_pop_cursor(void)
+void BattleScriptPop(void)
{
gBattlescriptCurrInstr = BATTLESCRIPTS_STACK->ptr[--BATTLESCRIPTS_STACK->size];
}
-u8 sub_803FB4C(void) // msg, can't select a move
+u8 TrySetCantSelectMoveBattleScript(void)
{
u8 limitations = 0;
u16 move = gBattleMons[gActiveBank].moves[gBattleBufferB[gActiveBank][2]];
@@ -237,7 +479,7 @@ u8 sub_803FB4C(void) // msg, can't select a move
}
else
{
- gUnknown_02024220[gActiveBank] = gUnknown_082DAE1F;
+ gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAE1F;
limitations = 1;
}
}
@@ -252,7 +494,7 @@ u8 sub_803FB4C(void) // msg, can't select a move
}
else
{
- gUnknown_02024220[gActiveBank] = gUnknown_082DB089;
+ gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB089;
limitations++;
}
}
@@ -267,12 +509,12 @@ u8 sub_803FB4C(void) // msg, can't select a move
}
else
{
- gUnknown_02024220[gActiveBank] = gUnknown_082DB0A0;
+ gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB0A0;
limitations++;
}
}
- if (IsImprisoned(gActiveBank, move))
+ if (GetImprisonedMovesCount(gActiveBank, move))
{
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
@@ -282,7 +524,7 @@ u8 sub_803FB4C(void) // msg, can't select a move
}
else
{
- gUnknown_02024220[gActiveBank] = gUnknown_082DB181;
+ gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB181;
limitations++;
}
}
@@ -304,7 +546,7 @@ u8 sub_803FB4C(void) // msg, can't select a move
}
else
{
- gUnknown_02024220[gActiveBank] = gUnknown_082DB812;
+ gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB812;
limitations++;
}
}
@@ -317,7 +559,7 @@ u8 sub_803FB4C(void) // msg, can't select a move
}
else
{
- gUnknown_02024220[gActiveBank] = gUnknown_082DB076;
+ gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB076;
limitations++;
}
}
@@ -325,13 +567,6 @@ u8 sub_803FB4C(void) // msg, can't select a move
return limitations;
}
-#define MOVE_LIMITATION_ZEROMOVE (1 << 0)
-#define MOVE_LIMITATION_PP (1 << 1)
-#define MOVE_LIMITATION_DISABLED (1 << 2)
-#define MOVE_LIMITATION_TORMENTED (1 << 3)
-#define MOVE_LIMITATION_TAUNT (1 << 4)
-#define MOVE_LIMITATION_IMPRISION (1 << 5)
-
u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check)
{
u8 holdEffect;
@@ -357,7 +592,7 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check)
unusableMoves |= gBitTable[i];
if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0)
unusableMoves |= gBitTable[i];
- if (IsImprisoned(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION)
+ if (GetImprisonedMovesCount(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION)
unusableMoves |= gBitTable[i];
if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i])
unusableMoves |= gBitTable[i];
@@ -375,7 +610,7 @@ bool8 AreAllMovesUnusable(void)
if (unusable == 0xF) // all moves are unusable
{
gProtectStructs[gActiveBank].onlyStruggle = 1;
- gUnknown_02024220[gActiveBank] = BattleScript_NoMovesLeft;
+ gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_NoMovesLeft;
}
else
{
@@ -385,7 +620,7 @@ bool8 AreAllMovesUnusable(void)
return (unusable == 0xF);
}
-u8 IsImprisoned(u8 bank, u16 move)
+u8 GetImprisonedMovesCount(u8 bank, u16 move)
{
s32 i;
u8 imprisionedMoves = 0;
@@ -393,7 +628,7 @@ u8 IsImprisoned(u8 bank, u16 move)
for (i = 0; i < gNoOfAllBanks; i++)
{
- if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED)
+ if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS)
{
s32 j;
for (j = 0; j < 4; j++)
@@ -430,15 +665,15 @@ u8 UpdateTurnCounters(void)
case 0:
for (i = 0; i < gNoOfAllBanks; i++)
{
- gTurnOrder[i] = i;
+ gBanksByTurnOrder[i] = i;
}
for (i = 0; i < gNoOfAllBanks - 1; i++)
{
s32 j;
for (j = i + 1; j < gNoOfAllBanks; j++)
{
- if (b_first_side(gTurnOrder[i], gTurnOrder[j], 0))
- sub_803CEDC(i, j);
+ if (GetWhoStrikesFirst(gBanksByTurnOrder[i], gBanksByTurnOrder[j], 0))
+ SwapTurnOrder(i, j);
}
}
@@ -459,7 +694,7 @@ u8 UpdateTurnCounters(void)
if (--gSideTimers[sideBank].reflectTimer == 0)
{
gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT;
- b_call_bc_move_exec(gUnknown_082DACFA);
+ BattleScriptExecute(gUnknown_082DACFA);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2;
gBattleTextBuff1[2] = MOVE_REFLECT;
@@ -488,7 +723,7 @@ u8 UpdateTurnCounters(void)
if (--gSideTimers[sideBank].lightscreenTimer == 0)
{
gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN;
- b_call_bc_move_exec(gUnknown_082DACFA);
+ BattleScriptExecute(gUnknown_082DACFA);
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2;
@@ -517,7 +752,7 @@ u8 UpdateTurnCounters(void)
&& --gSideTimers[sideBank].mistTimer == 0)
{
gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST;
- b_call_bc_move_exec(gUnknown_082DACFA);
+ BattleScriptExecute(gUnknown_082DACFA);
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 2;
@@ -546,7 +781,7 @@ u8 UpdateTurnCounters(void)
if (--gSideTimers[sideBank].safeguardTimer == 0)
{
gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD;
- b_call_bc_move_exec(gUnknown_082DAD0B);
+ BattleScriptExecute(gUnknown_082DAD0B);
effect++;
}
}
@@ -563,13 +798,13 @@ u8 UpdateTurnCounters(void)
case 5:
while (gBattleStruct->turnSideTracker < gNoOfAllBanks)
{
- gActiveBank = gTurnOrder[gBattleStruct->turnSideTracker];
+ gActiveBank = gBanksByTurnOrder[gBattleStruct->turnSideTracker];
if (gWishFutureKnock.wishCounter[gActiveBank] != 0
&& --gWishFutureKnock.wishCounter[gActiveBank] == 0
&& gBattleMons[gActiveBank].hp != 0)
{
gBankTarget = gActiveBank;
- b_call_bc_move_exec(BattleScript_WishComesTrue);
+ BattleScriptExecute(BattleScript_WishComesTrue);
effect++;
}
gBattleStruct->turnSideTracker++;
@@ -601,7 +836,7 @@ u8 UpdateTurnCounters(void)
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
else
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- b_call_bc_move_exec(gUnknown_082DAC2C);
+ BattleScriptExecute(gUnknown_082DAC2C);
effect++;
}
gBattleStruct->turncountersTracker++;
@@ -619,7 +854,7 @@ u8 UpdateTurnCounters(void)
gBattleScripting.animArg1 = 0xC;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- b_call_bc_move_exec(gBattlescriptCurrInstr);
+ BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
gBattleStruct->turncountersTracker++;
@@ -635,7 +870,7 @@ u8 UpdateTurnCounters(void)
else
gBattlescriptCurrInstr = gUnknown_082DACD2;
- b_call_bc_move_exec(gBattlescriptCurrInstr);
+ BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
gBattleStruct->turncountersTracker++;
@@ -653,7 +888,7 @@ u8 UpdateTurnCounters(void)
gBattleScripting.animArg1 = 0xD;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- b_call_bc_move_exec(gBattlescriptCurrInstr);
+ BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
gBattleStruct->turncountersTracker++;
@@ -675,7 +910,7 @@ u8 TurnBasedEffects(void)
gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20);
while (gBattleStruct->turnEffectsBank < gNoOfAllBanks && gBattleStruct->turnEffectsTracker <= TURNBASED_MAX_CASE)
{
- gActiveBank = gBankAttacker = gTurnOrder[gBattleStruct->turnEffectsBank];
+ gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->turnEffectsBank];
if (gAbsentBankFlags & gBitTable[gActiveBank])
{
gBattleStruct->turnEffectsBank++;
@@ -693,7 +928,7 @@ u8 TurnBasedEffects(void)
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
gBattleMoveDamage *= -1;
- b_call_bc_move_exec(BattleScript_IngrainTurnHeal);
+ BattleScriptExecute(BattleScript_IngrainTurnHeal);
effect++;
}
gBattleStruct->turnEffectsTracker++;
@@ -724,7 +959,7 @@ u8 TurnBasedEffects(void)
gBattleMoveDamage = 1;
gBattleScripting.animArg1 = gBankTarget;
gBattleScripting.animArg2 = gBankAttacker;
- b_call_bc_move_exec(BattleScript_LeechSeedTurnDrain);
+ BattleScriptExecute(BattleScript_LeechSeedTurnDrain);
effect++;
}
gBattleStruct->turnEffectsTracker++;
@@ -735,7 +970,7 @@ u8 TurnBasedEffects(void)
gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- b_call_bc_move_exec(BattleScript_PoisonTurnDmg);
+ BattleScriptExecute(BattleScript_PoisonTurnDmg);
effect++;
}
gBattleStruct->turnEffectsTracker++;
@@ -749,7 +984,7 @@ u8 TurnBasedEffects(void)
if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns
gBattleMons[gActiveBank].status1 += 0x100;
gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8;
- b_call_bc_move_exec(BattleScript_PoisonTurnDmg);
+ BattleScriptExecute(BattleScript_PoisonTurnDmg);
effect++;
}
gBattleStruct->turnEffectsTracker++;
@@ -760,7 +995,7 @@ u8 TurnBasedEffects(void)
gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- b_call_bc_move_exec(BattleScript_BurnTurnDmg);
+ BattleScriptExecute(BattleScript_BurnTurnDmg);
effect++;
}
gBattleStruct->turnEffectsTracker++;
@@ -775,7 +1010,7 @@ u8 TurnBasedEffects(void)
gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- b_call_bc_move_exec(BattleScript_NightmareTurnDmg);
+ BattleScriptExecute(BattleScript_NightmareTurnDmg);
effect++;
}
else
@@ -791,7 +1026,7 @@ u8 TurnBasedEffects(void)
gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- b_call_bc_move_exec(BattleScript_CurseTurnDmg);
+ BattleScriptExecute(BattleScript_CurseTurnDmg);
effect++;
}
gBattleStruct->turnEffectsTracker++;
@@ -824,7 +1059,7 @@ u8 TurnBasedEffects(void)
gBattleTextBuff1[4] = EOS;
gBattlescriptCurrInstr = BattleScript_WrapEnds;
}
- b_call_bc_move_exec(gBattlescriptCurrInstr);
+ BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
}
gBattleStruct->turnEffectsTracker++;
@@ -840,9 +1075,9 @@ u8 TurnBasedEffects(void)
gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP);
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- b_call_bc_move_exec(gUnknown_082DB234);
+ BattleScriptExecute(gUnknown_082DB234);
gActiveBank = gBankAttacker;
- EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
MarkBufferBankForExecution(gActiveBank);
break;
}
@@ -856,7 +1091,7 @@ u8 TurnBasedEffects(void)
{
gBankAttacker = gActiveBank;
gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down
- if (sub_803F90C(gActiveBank))
+ if (WasUnableToUseMove(gActiveBank))
{
CancelMultiTurnMoves(gActiveBank);
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
@@ -871,7 +1106,7 @@ u8 TurnBasedEffects(void)
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
CancelMultiTurnMoves(gActiveBank);
}
- b_call_bc_move_exec(gUnknown_082DB2A6);
+ BattleScriptExecute(gUnknown_082DB2A6);
effect = 1;
}
}
@@ -882,7 +1117,7 @@ u8 TurnBasedEffects(void)
if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE)
{
gBattleMons[gActiveBank].status2 -= 0x400;
- if (sub_803F90C(gActiveBank))
+ if (WasUnableToUseMove(gActiveBank))
CancelMultiTurnMoves(gActiveBank);
else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE)
&& (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS))
@@ -893,7 +1128,7 @@ u8 TurnBasedEffects(void)
gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47;
SetMoveEffect(1, 0);
if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
- b_call_bc_move_exec(BattleScript_ThrashConfuses);
+ BattleScriptExecute(BattleScript_ThrashConfuses);
effect++;
}
}
@@ -917,7 +1152,7 @@ u8 TurnBasedEffects(void)
else if (--gDisableStructs[gActiveBank].disableTimer1 == 0) // disable ends
{
gDisableStructs[gActiveBank].disabledMove = 0;
- b_call_bc_move_exec(BattleScript_DisabledNoMore);
+ BattleScriptExecute(BattleScript_DisabledNoMore);
effect++;
}
}
@@ -936,7 +1171,7 @@ u8 TurnBasedEffects(void)
{
gDisableStructs[gActiveBank].encoredMove = 0;
gDisableStructs[gActiveBank].encoreTimer1 = 0;
- b_call_bc_move_exec(BattleScript_EncoredNoMore);
+ BattleScriptExecute(BattleScript_EncoredNoMore);
effect++;
}
}
@@ -967,10 +1202,10 @@ u8 TurnBasedEffects(void)
{
CancelMultiTurnMoves(gActiveBank);
gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2;
- EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
MarkBufferBankForExecution(gActiveBank);
gEffectBank = gActiveBank;
- b_call_bc_move_exec(BattleScript_YawnMakesAsleep);
+ BattleScriptExecute(BattleScript_YawnMakesAsleep);
effect++;
}
}
@@ -1024,7 +1259,7 @@ bool8 sub_8041364(void)
gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank];
gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank];
gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF;
- b_call_bc_move_exec(gUnknown_082DAFE4);
+ BattleScriptExecute(gUnknown_082DAFE4);
if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0
&& gWishFutureKnock.futureSightCounter[gActiveBank ^ 2] == 0)
@@ -1044,7 +1279,7 @@ bool8 sub_8041364(void)
case 1:
while (gBattleStruct->field_1A1 < gNoOfAllBanks)
{
- gActiveBank = gBankAttacker = gTurnOrder[gBattleStruct->field_1A1];
+ gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->field_1A1];
if (gAbsentBankFlags & gBitTable[gActiveBank])
{
gBattleStruct->field_1A1++;
@@ -1070,7 +1305,7 @@ bool8 sub_8041364(void)
gDisableStructs[gActiveBank].perishSong1--;
gBattlescriptCurrInstr = gUnknown_082DAF20;
}
- b_call_bc_move_exec(gBattlescriptCurrInstr);
+ BattleScriptExecute(gBattlescriptCurrInstr);
return 1;
}
}
@@ -1092,7 +1327,7 @@ bool8 sub_8041364(void)
CancelMultiTurnMoves(i);
gBattlescriptCurrInstr = gUnknown_082DB8F3;
- b_call_bc_move_exec(gUnknown_082DB8F3);
+ BattleScriptExecute(gUnknown_082DB8F3);
gBattleStruct->field_1A0++;
return 1;
}
@@ -1132,7 +1367,7 @@ bool8 sub_8041728(void)
&& !(gBattleStruct->field_DF & gBitTable[gBattlePartyID[gBattleStruct->field_4E]])
&& !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E]))
{
- b_call_bc_move_exec(gUnknown_082DA7C4);
+ BattleScriptExecute(gUnknown_082DA7C4);
gBattleStruct->field_4D = 2;
return TRUE;
}
@@ -1153,11 +1388,11 @@ bool8 sub_8041728(void)
case 4:
do
{
- gBank1 = gBankTarget = gBattleStruct->field_4E; //or should banks be switched?
+ gBank1 = gBankTarget = gBattleStruct->field_4E;
if (gBattleMons[gBattleStruct->field_4E].hp == 0
&& !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E]))
{
- b_call_bc_move_exec(gUnknown_082DA7CD);
+ BattleScriptExecute(gUnknown_082DA7CD);
gBattleStruct->field_4D = 5;
return TRUE;
}
@@ -1182,7 +1417,7 @@ bool8 sub_8041728(void)
return FALSE;
}
-void b_clear_atk_up_if_hit_flag_unless_enraged(void)
+void TryClearRageStatuses(void)
{
int i;
for (i = 0; i < gNoOfAllBanks; i++)
@@ -1214,7 +1449,7 @@ u8 AtkCanceller_UnableToUseMove(void)
{
gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP);
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
effect = 2;
@@ -1242,7 +1477,7 @@ u8 AtkCanceller_UnableToUseMove(void)
else
{
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
effect = 2;
@@ -1270,7 +1505,7 @@ u8 AtkCanceller_UnableToUseMove(void)
else // unfreeze
{
gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
@@ -1338,7 +1573,7 @@ u8 AtkCanceller_UnableToUseMove(void)
gBattleStruct->atkCancellerTracker++;
break;
case 8: // imprisoned
- if (IsImprisoned(gBankAttacker, gCurrentMove))
+ if (GetImprisonedMovesCount(gBankAttacker, gCurrentMove))
{
gProtectStructs[gBankAttacker].usedImprisionedMove = 1;
CancelMultiTurnMoves(gBankAttacker);
@@ -1357,7 +1592,7 @@ u8 AtkCanceller_UnableToUseMove(void)
if (Random() & 1)
{
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
}
else // confusion dmg
{
@@ -1371,7 +1606,7 @@ u8 AtkCanceller_UnableToUseMove(void)
}
else // snapped out of confusion
{
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore;
}
effect = 1;
@@ -1395,10 +1630,10 @@ u8 AtkCanceller_UnableToUseMove(void)
{
gBattleScripting.bank = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10);
if (Random() & 1)
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
else
{
- b_movescr_stack_push(BattleScript_MoveUsedIsParalyzedCantAttack);
+ BattleScriptPush(BattleScript_MoveUsedIsParalyzedCantAttack);
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
gProtectStructs[gBankAttacker].loveImmobility = 1;
CancelMultiTurnMoves(gBankAttacker);
@@ -1440,7 +1675,7 @@ u8 AtkCanceller_UnableToUseMove(void)
if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT)
{
gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
}
@@ -1457,7 +1692,7 @@ u8 AtkCanceller_UnableToUseMove(void)
if (effect == 2)
{
gActiveBank = gBankAttacker;
- EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
MarkBufferBankForExecution(gActiveBank);
}
return effect;
@@ -1550,14 +1785,14 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2)
{
if (GetBankSide(bank) == SIDE_OPPONENT)
{
- r7 = GetBankByPlayerAI(1);
- r6 = GetBankByPlayerAI(3);
+ r7 = GetBankByIdentity(1);
+ r6 = GetBankByIdentity(3);
party = gEnemyParty;
}
else
{
- r7 = GetBankByPlayerAI(0);
- r6 = GetBankByPlayerAI(2);
+ r7 = GetBankByIdentity(0);
+ r6 = GetBankByIdentity(2);
party = gPlayerParty;
}
if (r1 == 6)
@@ -1626,13 +1861,12 @@ u8 CastformDataTypeChange(u8 bank)
return formChange;
}
-// We meet again, ABE.
-#ifdef NONMATCHING
+// The largest function in the game, but even it could not save itself from decompiling.
u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
u8 effect = 0;
- struct Pokemon* pokeAtk;
- struct Pokemon* pokeDef;
+ struct Pokemon *pokeAtk;
+ struct Pokemon *pokeDef;
u16 speciesAtk;
u16 speciesDef;
u32 pidAtk;
@@ -1660,12 +1894,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning?
{
- int i; // r4
+ u8 moveType;
+ s32 i;
u16 move;
- // Hmm...
- #define moveType moveArg
- //u16 moveType;
u8 side;
+ u8 target1;
if (special)
gLastUsedAbility = special;
@@ -1685,83 +1918,80 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (caseID)
{
case ABILITYEFFECT_ON_SWITCHIN: // 0
- //_08042A18
if (gBankAttacker >= gNoOfAllBanks)
gBankAttacker = bank;
switch (gLastUsedAbility)
{
- case 0xFF: //weather from overworld
- //_08042A86
- switch (weather_get_current())
+ case ABILITYEFFECT_SWITCH_IN_WEATHER:
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
{
- case 3:
- case 5:
- case 13:
- if (!(gBattleWeather & WEATHER_RAIN_ANY))
- {
- gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT);
- gBattleScripting.animArg1 = 0xA;
- gBattleScripting.bank = bank;
- effect++;
- }
- break;
- case 8:
- if (!(gBattleWeather & WEATHER_SANDSTORM_ANY))
+ switch (weather_get_current())
{
- gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
- gBattleScripting.animArg1 = 0xC;
- gBattleScripting.bank = bank;
- effect++;
- }
- break;
- case 12:
- if (!(gBattleWeather & WEATHER_SUN_ANY))
- {
- gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
- gBattleScripting.animArg1 = 0xB;
- gBattleScripting.bank = bank;
- effect++;
+ case 3:
+ case 5:
+ case 13:
+ if (!(gBattleWeather & WEATHER_RAIN_ANY))
+ {
+ gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT);
+ gBattleScripting.animArg1 = B_ANIM_RAIN_CONTINUES;
+ gBattleScripting.bank = bank;
+ effect++;
+ }
+ break;
+ case 8:
+ if (!(gBattleWeather & WEATHER_SANDSTORM_ANY))
+ {
+ gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
+ gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES;
+ gBattleScripting.bank = bank;
+ effect++;
+ }
+ break;
+ case 12:
+ if (!(gBattleWeather & WEATHER_SUN_ANY))
+ {
+ gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
+ gBattleScripting.animArg1 = B_ANIM_SUN_CONTINUES;
+ gBattleScripting.bank = bank;
+ effect++;
+ }
+ break;
}
- break;
}
if (effect)
{
gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current();
- b_push_move_exec(gUnknown_082DACE7);
+ BattleScriptPushCursorAndCallback(gUnknown_082DACE7);
}
break;
case ABILITY_DRIZZLE:
- //_08042B78
if (!(gBattleWeather & WEATHER_RAIN_PERMANENT))
{
gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY);
- b_push_move_exec(BattleScript_DrizzleActivates);
+ BattleScriptPushCursorAndCallback(BattleScript_DrizzleActivates);
gBattleScripting.bank = bank;
effect++;
}
break;
case ABILITY_SAND_STREAM:
- //_08042BA8
if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT))
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
- b_push_move_exec(BattleScript_SandstreamActivates);
+ BattleScriptPushCursorAndCallback(BattleScript_SandstreamActivates);
gBattleScripting.bank = bank;
effect++;
}
break;
case ABILITY_DROUGHT:
- //_08042BD8
if (!(gBattleWeather & WEATHER_SUN_PERMANENT))
{
gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
- b_push_move_exec(BattleScript_DroughtActivates);
+ BattleScriptPushCursorAndCallback(BattleScript_DroughtActivates);
gBattleScripting.bank = bank;
effect++;
}
break;
case ABILITY_INTIMIDATE:
- //_08042C08
if (!(gSpecialStatuses[bank].intimidatedPoke))
{
gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES;
@@ -1769,13 +1999,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_FORECAST:
- //_08042C3C
effect = CastformDataTypeChange(bank);
if (effect != 0)
{
- b_push_move_exec(BattleScript_CastformChange);
+ BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
gBattleScripting.bank = bank;
- gBattleStruct->formToChangeInto = effect - 1;
+ *(&gBattleStruct->formToChangeInto) = effect - 1;
}
break;
case ABILITY_TRACE:
@@ -1788,18 +2017,15 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_CLOUD_NINE:
case ABILITY_AIR_LOCK:
{
- u8 i;
-
- for (i = 0; i < gNoOfAllBanks; i++)
+ // that's a weird choice for a variable, why not use i or bank?
+ for (target1 = 0; target1 < gNoOfAllBanks; target1++)
{
- // TODO: i should be in r6 here
- //asm("":::"r4","r5");
- effect = CastformDataTypeChange(i);
+ effect = CastformDataTypeChange(target1);
if (effect != 0)
{
- b_push_move_exec(BattleScript_CastformChange);
- gBattleScripting.bank = i;
- gBattleStruct->formToChangeInto = effect - 1;
+ BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
+ gBattleScripting.bank = target1;
+ *(&gBattleStruct->formToChangeInto) = effect - 1;
break;
}
}
@@ -1808,19 +2034,17 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ENDTURN: // 1
- //_08042CDC
if (gBattleMons[bank].hp != 0)
{
gBankAttacker = bank;
switch (gLastUsedAbility)
{
case ABILITY_RAIN_DISH:
- //_08042D22
if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY)
&& gBattleMons[bank].maxHP > gBattleMons[bank].hp)
{
- gLastUsedAbility = ABILITY_RAIN_DISH; //why
- b_push_move_exec(BattleScript_RainDishActivates);
+ gLastUsedAbility = ABILITY_RAIN_DISH; // why
+ BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates);
gBattleMoveDamage = gBattleMons[bank].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
@@ -1829,7 +2053,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_SHED_SKIN:
- //_08042DA0
if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0)
{
if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON))
@@ -1843,22 +2066,21 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gBattleMons[bank].status1 & STATUS_FREEZE)
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
gBattleMons[bank].status1 = 0;
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); // fix nighmare glitch
+ gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); // fix nightmare glitch
gBattleScripting.bank = gActiveBank = bank;
- b_push_move_exec(BattleScript_ShedSkinActivates);
- EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
+ BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates);
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
MarkBufferBankForExecution(gActiveBank);
effect++;
}
break;
case ABILITY_SPEED_BOOST:
- //_08042E84
if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2)
{
gBattleMons[bank].statStages[STAT_STAGE_SPEED]++;
gBattleScripting.animArg1 = 0x11;
gBattleScripting.animArg2 = 0;
- b_push_move_exec(BattleScript_SpeedBoostActivates);
+ BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates);
gBattleScripting.bank = bank;
effect++;
}
@@ -1870,15 +2092,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_MOVES_BLOCK: // 2
- //_08042EF8
if (gLastUsedAbility == ABILITY_SOUNDPROOF)
{
- for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++)
+ for (i = 0; sSoundMovesTable[i] != 0xFFFF; i++)
{
- if (gSoundMovesTable[i] == move)
+ if (sSoundMovesTable[i] == move)
break;
}
- if (gSoundMovesTable[i] != 0xFFFF)
+ if (sSoundMovesTable[i] != 0xFFFF)
{
if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)
gHitMarker |= HITMARKER_NO_PPDEDUCT;
@@ -1899,6 +2120,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
else
gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
+
effect = 1;
}
break;
@@ -1909,11 +2131,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
else
gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
+
effect = 1;
}
break;
case ABILITY_FLASH_FIRE:
- //_0804305C
if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE))
{
if (!(gBattleResources->flags->flags[bank] & UNKNOWN_FLAG_FLASH_FIRE))
@@ -1923,6 +2145,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
else
gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
+
gBattleResources->flags->flags[bank] |= UNKNOWN_FLAG_FLASH_FIRE;
effect = 2;
}
@@ -1933,6 +2156,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
else
gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
+
effect = 2;
}
}
@@ -1943,9 +2167,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gBattleMons[bank].maxHP == gBattleMons[bank].hp)
{
if ((gProtectStructs[gBankAttacker].notFirstStrike))
- gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
+ gBattlescriptCurrInstr = gUnknown_082DB592;
else
- gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
+ gBattlescriptCurrInstr = gUnknown_082DB591;
}
else
{
@@ -1958,11 +2182,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CONTACT: // 4
- //_080431AC
switch (gLastUsedAbility)
{
case ABILITY_COLOR_CHANGE:
- //_08043288
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& move != MOVE_STRUGGLE
&& gBattleMoves[move].power != 0
@@ -1973,17 +2195,13 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleMons[bank].type1 = moveType;
gBattleMons[bank].type2 = moveType;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 3;
- gBattleTextBuff1[2] = moveType;
- gBattleTextBuff1[3] = 0xFF;
- b_movescr_stack_push_cursor();
+ PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType)
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ColorChangeActivates;
effect++;
}
break;
case ABILITY_ROUGH_SKIN:
- //_08043350
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
@@ -1993,13 +2211,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_RoughSkinActivates;
effect++;
}
break;
case ABILITY_EFFECT_SPORE:
- //_08043410
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
@@ -2011,10 +2228,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
} while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
- if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
- gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
- gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
- b_movescr_stack_push_cursor();
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN)
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 2; // 5 MOVE_EFFECT_PARALYSIS
+
+ gBattleCommunication[MOVE_EFFECT_BYTE] += MOVE_EFFECT_AFFECTS_USER;
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
effect++;
@@ -2028,8 +2247,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
- b_movescr_stack_push_cursor();
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON;
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
effect++;
@@ -2043,8 +2262,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
- b_movescr_stack_push_cursor();
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS;
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
effect++;
@@ -2058,15 +2277,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
&& (Random() % 3) == 0)
{
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
- b_movescr_stack_push_cursor();
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN;
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
effect++;
}
break;
case ABILITY_CUTE_CHARM:
- //_0804379C
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
@@ -2077,11 +2295,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
&& gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
&& GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
&& !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
- && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
- && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != MON_GENDERLESS
+ && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != MON_GENDERLESS)
{
- gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
- b_movescr_stack_push_cursor();
+ gBattleMons[gBankAttacker].status2 |= STATUS2_INFATUATED_WITH(gBankTarget);
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
effect++;
}
@@ -2090,28 +2308,26 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITYEFFECT_IMMUNITY: // 5
{
- #define i bank
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (bank = 0; bank < gNoOfAllBanks; bank++)
{
- switch (gBattleMons[i].ability)
+ switch (gBattleMons[bank].ability)
{
case ABILITY_IMMUNITY:
- if (gBattleMons[i].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00?
+ if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER))
{
StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
effect = 1;
}
break;
case ABILITY_OWN_TEMPO:
- //_08043A7C
- if (gBattleMons[i].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
effect = 2;
}
break;
case ABILITY_LIMBER:
- if (gBattleMons[i].status1 & STATUS_PARALYSIS)
+ if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
effect = 1;
@@ -2119,30 +2335,29 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITY_INSOMNIA:
case ABILITY_VITAL_SPIRIT:
- if (gBattleMons[i].status1 & STATUS_SLEEP)
+ if (gBattleMons[bank].status1 & STATUS_SLEEP)
{
- gBattleMons[i].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
effect = 1;
}
break;
case ABILITY_WATER_VEIL:
- if (gBattleMons[i].status1 & STATUS_BURN)
+ if (gBattleMons[bank].status1 & STATUS_BURN)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
effect = 1;
}
break;
case ABILITY_MAGMA_ARMOR:
- if (gBattleMons[i].status1 & STATUS_FREEZE)
+ if (gBattleMons[bank].status1 & STATUS_FREEZE)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
effect = 1;
}
break;
case ABILITY_OBLIVIOUS:
- //_08043B70
- if (gBattleMons[i].status2 & STATUS2_INFATUATION)
+ if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
effect = 3;
@@ -2154,58 +2369,54 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (effect)
{
case 1: // status cleared
- gBattleMons[i].status1 = 0;
+ gBattleMons[bank].status1 = 0;
break;
case 2: // get rid of confusion
- gBattleMons[i].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
break;
case 3: // get rid of infatuation
- gBattleMons[i].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
break;
}
- b_movescr_stack_push_cursor();
+
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = gUnknown_082DB68C;
- gBattleScripting.bank = i;
- gActiveBank = i;
- EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ gBattleScripting.bank = bank;
+ gActiveBank = bank;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
MarkBufferBankForExecution(gActiveBank);
return effect;
}
}
- #undef i
}
break;
case ABILITYEFFECT_FORECAST: // 6
+ for (bank = 0; bank < gNoOfAllBanks; bank++)
{
- #define i bank
- for (i = 0; i < gNoOfAllBanks; i++)
+ if (gBattleMons[bank].ability == ABILITY_FORECAST)
{
- if (gBattleMons[i].ability == ABILITY_FORECAST)
+ effect = CastformDataTypeChange(bank);
+ if (effect)
{
- effect = CastformDataTypeChange(i);
- if (effect)
- {
- b_push_move_exec(BattleScript_CastformChange);
- gBattleScripting.bank = i;
- gBattleStruct->formToChangeInto = effect - 1;
- return effect;
- }
+ BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
+ gBattleScripting.bank = bank;
+ *(&gBattleStruct->formToChangeInto) = effect - 1;
+ return effect;
}
}
- #undef i
}
break;
case ABILITYEFFECT_SYNCHRONIZE: // 7
- //_08043CBC
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
- gBattleStruct->synchronizeMoveEffect &= 0x3F;
- if (gBattleStruct->synchronizeMoveEffect == 6)
- gBattleStruct->synchronizeMoveEffect = 2;
- gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + 0x40;
+ gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
+ gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
+
+ gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + MOVE_EFFECT_AFFECTS_USER;
gBattleScripting.bank = gBankTarget;
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_SynchronizeActivates;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
effect++;
@@ -2215,12 +2426,13 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
- gBattleStruct->synchronizeMoveEffect &= 0x3F;
- if (gBattleStruct->synchronizeMoveEffect == 6)
- gBattleStruct->synchronizeMoveEffect = 2;
+ gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
+ gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
+
gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect;
gBattleScripting.bank = gBankAttacker;
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_SynchronizeActivates;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
effect++;
@@ -2233,7 +2445,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gLastUsedAbility = ABILITY_INTIMIDATE;
gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
- b_push_move_exec(gUnknown_082DB4B8);
+ BattleScriptPushCursorAndCallback(gUnknown_082DB4B8);
gBattleStruct->intimidateBank = i;
effect++;
break;
@@ -2245,15 +2457,16 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE))
{
- u8 opposite = (GetBankIdentity(i) ^ 1) & 1;
- u8 target1 = GetBankByPlayerAI(opposite);
- u8 target2 = GetBankByPlayerAI(opposite + 2);
+ u8 target2;
+ side = (GetBankIdentity(i) ^ BIT_SIDE) & BIT_SIDE; // side of the opposing pokemon
+ target1 = GetBankByIdentity(side);
+ target2 = GetBankByIdentity(side + BIT_MON);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0
&& gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- gActiveBank = GetBankByPlayerAI(((Random() & 1) * 2) | opposite);
+ gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side);
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
effect++;
@@ -2285,20 +2498,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
if (effect)
{
- b_push_move_exec(BattleScript_TraceActivates);
+ BattleScriptPushCursorAndCallback(BattleScript_TraceActivates);
gStatuses3[i] &= ~(STATUS3_TRACE);
gBattleScripting.bank = i;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 4;
- gBattleTextBuff1[2] = gActiveBank;
- gBattleTextBuff1[3] = gBattlePartyID[gActiveBank];
- gBattleTextBuff1[4] = EOS;
-
- gBattleTextBuff2[0] = 0xFD;
- gBattleTextBuff2[1] = 9;
- gBattleTextBuff2[2] = gLastUsedAbility;
- gBattleTextBuff2[3] = EOS;
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattlePartyID[gActiveBank])
+ PREPARE_ABILITY_BUFFER(gBattleTextBuff2, gLastUsedAbility)
break;
}
}
@@ -2311,7 +2516,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gLastUsedAbility = ABILITY_INTIMIDATE;
gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = gUnknown_082DB4C1;
gBattleStruct->intimidateBank = i;
effect++;
@@ -2390,7 +2595,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
}
break;
- case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16
+ case ABILITYEFFECT_COUNT_OTHER_SIDE: // 16
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2423,3060 +2628,28 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
}
- if (effect && caseID < 0xC && gLastUsedAbility != 0xFF)
+
+ if (effect && caseID < ABILITYEFFECT_CHECK_OTHER_SIDE && gLastUsedAbility != 0xFF)
RecordAbilityBattle(bank, gLastUsedAbility);
}
return effect;
}
-#else
-__attribute__((naked))
-u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
-{
- asm(
- "\n\
- .syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x28\n\
- ldr r4, [sp, 0x48]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x4]\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r10, r1\n\
- lsls r2, 24\n\
- lsrs r6, r2, 24\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- mov r8, r3\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- movs r0, 0\n\
- mov r9, r0\n\
- ldr r5, =gBankAttacker\n\
- ldr r1, =gNoOfAllBanks\n\
- ldrb r0, [r5]\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bcc _08042864\n\
- mov r1, r10\n\
- strb r1, [r5]\n\
-_08042864:\n\
- ldrb r0, [r5]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08042894\n\
- ldr r1, =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, =gPlayerParty\n\
- b _080428A4\n\
- .pool\n\
-_08042894:\n\
- ldr r1, =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, =gEnemyParty\n\
-_080428A4:\n\
- adds r7, r1, r0\n\
- ldr r5, =gBankTarget\n\
- ldr r1, =gNoOfAllBanks\n\
- ldrb r0, [r5]\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bcc _080428B6\n\
- mov r2, r10\n\
- strb r2, [r5]\n\
-_080428B6:\n\
- ldrb r0, [r5]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080428E8\n\
- ldr r1, =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, =gPlayerParty\n\
- b _080428F8\n\
- .pool\n\
-_080428E8:\n\
- ldr r1, =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, =gEnemyParty\n\
-_080428F8:\n\
- adds r5, r1, r0\n\
- adds r0, r7, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- movs r1, 0\n\
- bl GetMonData\n\
- str r0, [sp, 0x10]\n\
- adds r0, r5, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0xC]\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
- bl GetMonData\n\
- str r0, [sp, 0x14]\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0804293A\n\
- bl _0804443A\n\
-_0804293A:\n\
- mov r3, r8\n\
- cmp r3, 0\n\
- beq _08042958\n\
- ldr r0, =gLastUsedAbility\n\
- strb r3, [r0]\n\
- adds r7, r0, 0\n\
- b _0804296E\n\
- .pool\n\
-_08042958:\n\
- ldr r2, =gLastUsedAbility\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r5, r10\n\
- muls r5, r0\n\
- adds r0, r5, 0\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- strb r0, [r2]\n\
- adds r7, r2, 0\n\
-_0804296E:\n\
- cmp r4, 0\n\
- beq _08042980\n\
- adds r5, r4, 0\n\
- b _08042984\n\
- .pool\n\
-_08042980:\n\
- ldr r0, =gCurrentMove\n\
- ldrh r5, [r0]\n\
-_08042984:\n\
- ldr r1, =gBattleStruct\n\
- ldr r0, [r1]\n\
- ldrb r0, [r0, 0x13]\n\
- mov r8, r1\n\
- cmp r0, 0\n\
- beq _080429A0\n\
- movs r3, 0x3F\n\
- ands r3, r0\n\
- b _080429AC\n\
- .pool\n\
-_080429A0:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r3, [r0, 0x2]\n\
-_080429AC:\n\
- ldr r0, [sp, 0x4]\n\
- cmp r0, 0x13\n\
- bls _080429B6\n\
- bl _0804441E\n\
-_080429B6:\n\
- lsls r0, 2\n\
- ldr r1, =_080429C8\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_080429C8:\n\
- .4byte _08042A18\n\
- .4byte _08042CDC\n\
- .4byte _08042EF8\n\
- .4byte _08042F8C\n\
- .4byte _080431AC\n\
- .4byte _08043908\n\
- .4byte _08043C6C\n\
- .4byte _08043CBC\n\
- .4byte _08043D40\n\
- .4byte _08043DC4\n\
- .4byte _08043FE4\n\
- .4byte _08043E08\n\
- .4byte _08044028\n\
- .4byte _08044084\n\
- .4byte _080440E0\n\
- .4byte _080441DC\n\
- .4byte _08044220\n\
- .4byte _0804427C\n\
- .4byte _080443EC\n\
- .4byte _08044196\n\
-_08042A18:\n\
- ldr r2, =gBankAttacker\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r1, [r2]\n\
- adds r5, r0, 0\n\
- ldrb r3, [r5]\n\
- cmp r1, r3\n\
- bcc _08042A2A\n\
- mov r0, r10\n\
- strb r0, [r2]\n\
-_08042A2A:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x2D\n\
- bne _08042A32\n\
- b _08042BA8\n\
-_08042A32:\n\
- cmp r0, 0x2D\n\
- bgt _08042A64\n\
- cmp r0, 0xD\n\
- bne _08042A3C\n\
- b _08042CA4\n\
-_08042A3C:\n\
- cmp r0, 0xD\n\
- bgt _08042A54\n\
- cmp r0, 0x2\n\
- bne _08042A46\n\
- b _08042B78\n\
-_08042A46:\n\
- bl _0804441E\n\
- .pool\n\
-_08042A54:\n\
- cmp r0, 0x16\n\
- bne _08042A5A\n\
- b _08042C08\n\
-_08042A5A:\n\
- cmp r0, 0x24\n\
- bne _08042A60\n\
- b _08042C68\n\
-_08042A60:\n\
- bl _0804441E\n\
-_08042A64:\n\
- cmp r0, 0x46\n\
- bne _08042A6A\n\
- b _08042BD8\n\
-_08042A6A:\n\
- cmp r0, 0x46\n\
- bgt _08042A78\n\
- cmp r0, 0x3B\n\
- bne _08042A74\n\
- b _08042C3C\n\
-_08042A74:\n\
- bl _0804441E\n\
-_08042A78:\n\
- cmp r0, 0x4D\n\
- bne _08042A7E\n\
- b _08042CA4\n\
-_08042A7E:\n\
- cmp r0, 0xFF\n\
- beq _08042A86\n\
- bl _0804441E\n\
-_08042A86:\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 17\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042B4C\n\
- bl weather_get_current\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- subs r0, 0x3\n\
- cmp r0, 0xA\n\
- bhi _08042B4C\n\
- lsls r0, 2\n\
- ldr r1, =_08042AB4\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_08042AB4:\n\
- .4byte _08042AE0\n\
- .4byte _08042B4C\n\
- .4byte _08042AE0\n\
- .4byte _08042B4C\n\
- .4byte _08042B4C\n\
- .4byte _08042B04\n\
- .4byte _08042B4C\n\
- .4byte _08042B4C\n\
- .4byte _08042B4C\n\
- .4byte _08042B28\n\
- .4byte _08042AE0\n\
-_08042AE0:\n\
- ldr r2, =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042B4C\n\
- movs r0, 0x5\n\
- strh r0, [r2]\n\
- ldr r1, =gBattleScripting\n\
- movs r0, 0xA\n\
- strb r0, [r1, 0x10]\n\
- mov r2, r10\n\
- strb r2, [r1, 0x17]\n\
- b _08042B42\n\
- .pool\n\
-_08042B04:\n\
- ldr r3, =gBattleWeather\n\
- ldrh r1, [r3]\n\
- movs r2, 0x18\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042B4C\n\
- strh r2, [r3]\n\
- ldr r1, =gBattleScripting\n\
- movs r0, 0xC\n\
- strb r0, [r1, 0x10]\n\
- mov r3, r10\n\
- strb r3, [r1, 0x17]\n\
- b _08042B42\n\
- .pool\n\
-_08042B28:\n\
- ldr r3, =gBattleWeather\n\
- ldrh r1, [r3]\n\
- movs r2, 0x60\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042B4C\n\
- strh r2, [r3]\n\
- ldr r1, =gBattleScripting\n\
- movs r0, 0xB\n\
- strb r0, [r1, 0x10]\n\
- mov r5, r10\n\
- strb r5, [r1, 0x17]\n\
-_08042B42:\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08042B4C:\n\
- mov r0, r9\n\
- cmp r0, 0\n\
- bne _08042B56\n\
- bl _0804443A\n\
-_08042B56:\n\
- bl weather_get_current\n\
- ldr r1, =gBattleCommunication\n\
- strb r0, [r1, 0x5]\n\
- ldr r0, =gUnknown_082DACE7\n\
- bl b_push_move_exec\n\
- bl _0804441E\n\
- .pool\n\
-_08042B78:\n\
- ldr r2, =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042B88\n\
- bl _0804441E\n\
-_08042B88:\n\
- movs r0, 0x5\n\
- strh r0, [r2]\n\
- ldr r0, =BattleScript_DrizzleActivates\n\
- bl b_push_move_exec\n\
- ldr r0, =gBattleScripting\n\
- mov r1, r10\n\
- strb r1, [r0, 0x17]\n\
- bl _080443D0\n\
- .pool\n\
-_08042BA8:\n\
- ldr r2, =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042BB8\n\
- bl _0804441E\n\
-_08042BB8:\n\
- movs r0, 0x18\n\
- strh r0, [r2]\n\
- ldr r0, =BattleScript_SandstreamActivates\n\
- bl b_push_move_exec\n\
- ldr r0, =gBattleScripting\n\
- mov r2, r10\n\
- strb r2, [r0, 0x17]\n\
- bl _080443D0\n\
- .pool\n\
-_08042BD8:\n\
- ldr r2, =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042BE8\n\
- bl _0804441E\n\
-_08042BE8:\n\
- movs r0, 0x60\n\
- strh r0, [r2]\n\
- ldr r0, =BattleScript_DroughtActivates\n\
- bl b_push_move_exec\n\
- ldr r0, =gBattleScripting\n\
- mov r3, r10\n\
- strb r3, [r0, 0x17]\n\
- bl _080443D0\n\
- .pool\n\
-_08042C08:\n\
- ldr r0, =gSpecialStatuses\n\
- mov r5, r10\n\
- lsls r2, r5, 2\n\
- adds r1, r2, r5\n\
- lsls r1, 2\n\
- adds r3, r1, r0\n\
- ldrb r0, [r3]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08042C20\n\
- bl _0804441E\n\
-_08042C20:\n\
- ldr r1, =gStatuses3\n\
- adds r1, r2, r1\n\
- ldr r0, [r1]\n\
- movs r2, 0x80\n\
- lsls r2, 12\n\
- orrs r0, r2\n\
- str r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x8\n\
- b _08042C92\n\
- .pool\n\
-_08042C3C:\n\
- mov r0, r10\n\
- bl CastformDataTypeChange\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- cmp r0, 0\n\
- bne _08042C50\n\
- bl _0804443A\n\
-_08042C50:\n\
- ldr r0, =BattleScript_CastformChange\n\
- bl b_push_move_exec\n\
- ldr r0, =gBattleScripting\n\
- mov r1, r10\n\
- strb r1, [r0, 0x17]\n\
- bl _080442E2\n\
- .pool\n\
-_08042C68:\n\
- ldr r0, =gSpecialStatuses\n\
- mov r3, r10\n\
- lsls r2, r3, 2\n\
- adds r1, r2, r3\n\
- lsls r1, 2\n\
- adds r3, r1, r0\n\
- ldrb r0, [r3]\n\
- lsls r0, 27\n\
- cmp r0, 0\n\
- bge _08042C80\n\
- bl _0804441E\n\
-_08042C80:\n\
- ldr r1, =gStatuses3\n\
- adds r1, r2, r1\n\
- ldr r0, [r1]\n\
- movs r2, 0x80\n\
- lsls r2, 13\n\
- orrs r0, r2\n\
- str r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x10\n\
-_08042C92:\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- bl _0804441E\n\
- .pool\n\
-_08042CA4:\n\
- movs r6, 0\n\
- ldrb r5, [r5]\n\
- cmp r6, r5\n\
- bcc _08042CB0\n\
- bl _0804441E\n\
-_08042CB0:\n\
- adds r0, r6, 0\n\
- bl CastformDataTypeChange\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- cmp r0, 0\n\
- beq _08042CC4\n\
- bl _080442D8\n\
-_08042CC4:\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r6, r0\n\
- bcc _08042CB0\n\
- bl _0804441E\n\
- .pool\n\
-_08042CDC:\n\
- ldr r5, =gBattleMons\n\
- mov r8, r5\n\
- movs r0, 0x58\n\
- mov r6, r10\n\
- muls r6, r0\n\
- adds r4, r6, r5\n\
- ldrh r0, [r4, 0x28]\n\
- cmp r0, 0\n\
- bne _08042CF2\n\
- bl _0804441E\n\
-_08042CF2:\n\
- ldr r0, =gBankAttacker\n\
- mov r1, r10\n\
- strb r1, [r0]\n\
- ldrb r5, [r7]\n\
- cmp r5, 0x2C\n\
- beq _08042D22\n\
- cmp r5, 0x2C\n\
- bgt _08042D14\n\
- cmp r5, 0x3\n\
- bne _08042D08\n\
- b _08042E84\n\
-_08042D08:\n\
- bl _0804441E\n\
- .pool\n\
-_08042D14:\n\
- cmp r5, 0x36\n\
- bne _08042D1A\n\
- b _08042ED0\n\
-_08042D1A:\n\
- cmp r5, 0x3D\n\
- beq _08042DA0\n\
- bl _0804441E\n\
-_08042D22:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0x13\n\
- movs r1, 0\n\
- movs r2, 0xD\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- beq _08042D3E\n\
- bl _0804441E\n\
-_08042D3E:\n\
- str r0, [sp]\n\
- movs r0, 0x13\n\
- movs r1, 0\n\
- movs r2, 0x4D\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08042D56\n\
- bl _0804441E\n\
-_08042D56:\n\
- ldr r0, =gBattleWeather\n\
- ldrh r1, [r0]\n\
- movs r0, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042D66\n\
- bl _0804441E\n\
-_08042D66:\n\
- ldrh r0, [r4, 0x2C]\n\
- ldrh r2, [r4, 0x28]\n\
- cmp r0, r2\n\
- bhi _08042D72\n\
- bl _0804441E\n\
-_08042D72:\n\
- strb r5, [r7]\n\
- ldr r0, =BattleScript_RainDishActivates\n\
- bl b_push_move_exec\n\
- ldr r1, =gBattleMoveDamage\n\
- ldrh r0, [r4, 0x2C]\n\
- lsrs r0, 4\n\
- str r0, [r1]\n\
- cmp r0, 0\n\
- bne _08042D8A\n\
- movs r0, 0x1\n\
- str r0, [r1]\n\
-_08042D8A:\n\
- ldr r0, [r1]\n\
- negs r0, r0\n\
- str r0, [r1]\n\
- bl _080443D0\n\
- .pool\n\
-_08042DA0:\n\
- mov r0, r8\n\
- adds r0, 0x4C\n\
- adds r5, r6, r0\n\
- ldrb r0, [r5]\n\
- cmp r0, 0\n\
- bne _08042DB0\n\
- bl _0804441E\n\
-_08042DB0:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, 0\n\
- beq _08042DCA\n\
- bl _0804441E\n\
-_08042DCA:\n\
- ldr r0, [r5]\n\
- movs r1, 0x88\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042DDC\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_PoisonJpn\n\
- bl StringCopy\n\
-_08042DDC:\n\
- ldr r0, [r5]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042DEE\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_SleepJpn\n\
- bl StringCopy\n\
-_08042DEE:\n\
- ldr r0, [r5]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042E00\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_ParalysisJpn\n\
- bl StringCopy\n\
-_08042E00:\n\
- ldr r0, [r5]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042E12\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_BurnJpn\n\
- bl StringCopy\n\
-_08042E12:\n\
- ldr r0, [r5]\n\
- movs r1, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042E24\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_IceJpn\n\
- bl StringCopy\n\
-_08042E24:\n\
- str r4, [r5]\n\
- mov r1, r8\n\
- adds r1, 0x50\n\
- adds r1, r6, r1\n\
- ldr r0, [r1]\n\
- ldr r2, =0xf7ffffff\n\
- ands r0, r2\n\
- str r0, [r1]\n\
- ldr r0, =gBattleScripting\n\
- ldr r4, =gActiveBank\n\
- mov r3, r10\n\
- strb r3, [r4]\n\
- strb r3, [r0, 0x17]\n\
- ldr r0, =BattleScript_ShedSkinActivates\n\
- bl b_push_move_exec\n\
- str r5, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x28\n\
- movs r2, 0\n\
- movs r3, 0x4\n\
- bl EmitSetAttributes\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- bl _080443D0\n\
- .pool\n\
-_08042E84:\n\
- ldrb r2, [r4, 0x1B]\n\
- movs r0, 0x1B\n\
- ldrsb r0, [r4, r0]\n\
- cmp r0, 0xB\n\
- ble _08042E92\n\
- bl _0804441E\n\
-_08042E92:\n\
- ldr r0, =gDisableStructs\n\
- mov r5, r10\n\
- lsls r1, r5, 3\n\
- subs r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x16]\n\
- cmp r0, 0x2\n\
- bne _08042EA8\n\
- bl _0804441E\n\
-_08042EA8:\n\
- adds r0, r2, 0x1\n\
- movs r1, 0\n\
- strb r0, [r4, 0x1B]\n\
- ldr r4, =gBattleScripting\n\
- movs r0, 0x11\n\
- strb r0, [r4, 0x10]\n\
- strb r1, [r4, 0x11]\n\
- ldr r0, =BattleScript_SpeedBoostActivates\n\
- bl b_push_move_exec\n\
- strb r5, [r4, 0x17]\n\
- bl _080443D0\n\
- .pool\n\
-_08042ED0:\n\
- ldr r2, =gDisableStructs\n\
- ldrb r0, [r0]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- ldrb r3, [r1, 0x18]\n\
- lsls r0, r3, 31\n\
- lsrs r0, 31\n\
- movs r2, 0x1\n\
- eors r2, r0\n\
- movs r0, 0x2\n\
- negs r0, r0\n\
- ands r0, r3\n\
- orrs r0, r2\n\
- strb r0, [r1, 0x18]\n\
- bl _0804441E\n\
- .pool\n\
-_08042EF8:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x2B\n\
- beq _08042F02\n\
- bl _0804441E\n\
-_08042F02:\n\
- movs r4, 0\n\
- ldr r0, =gSoundMovesTable\n\
- ldrh r2, [r0]\n\
- ldr r3, =0x0000ffff\n\
- adds r1, r0, 0\n\
- cmp r2, r3\n\
- bne _08042F14\n\
- bl _0804441E\n\
-_08042F14:\n\
- cmp r2, r5\n\
- beq _08042F2C\n\
- adds r2, r1, 0\n\
-_08042F1A:\n\
- adds r2, 0x2\n\
- adds r4, 0x1\n\
- ldrh r0, [r2]\n\
- cmp r0, r3\n\
- bne _08042F28\n\
- bl _0804441E\n\
-_08042F28:\n\
- cmp r0, r5\n\
- bne _08042F1A\n\
-_08042F2C:\n\
- lsls r0, r4, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- ldr r0, =0x0000ffff\n\
- cmp r1, r0\n\
- bne _08042F3C\n\
- bl _0804441E\n\
-_08042F3C:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 5\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042F62\n\
- ldr r0, =gHitMarker\n\
- ldr r1, [r0]\n\
- movs r2, 0x80\n\
- lsls r2, 4\n\
- orrs r1, r2\n\
- str r1, [r0]\n\
-_08042F62:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_SoundproofProtected\n\
- str r0, [r1]\n\
- movs r0, 0x1\n\
- mov r9, r0\n\
- bl _08044424\n\
- .pool\n\
-_08042F8C:\n\
- cmp r5, 0\n\
- bne _08042F94\n\
- bl _0804441E\n\
-_08042F94:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0xB\n\
- beq _08043004\n\
- cmp r0, 0xB\n\
- bgt _08042FA4\n\
- cmp r0, 0xA\n\
- beq _08042FAA\n\
- b _08043126\n\
-_08042FA4:\n\
- cmp r0, 0x12\n\
- beq _0804305C\n\
- b _08043126\n\
-_08042FAA:\n\
- cmp r3, 0xD\n\
- beq _08042FB0\n\
- b _08043126\n\
-_08042FB0:\n\
- ldr r0, =gBattleMoves\n\
- lsls r1, r5, 1\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _08042FC2\n\
- b _08043126\n\
-_08042FC2:\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08042FF0\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_MoveHPDrain\n\
- b _08042FF4\n\
- .pool\n\
-_08042FF0:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_MoveHPDrain_PPLoss\n\
-_08042FF4:\n\
- str r0, [r1]\n\
- movs r1, 0x1\n\
- b _08043124\n\
- .pool\n\
-_08043004:\n\
- cmp r3, 0xB\n\
- beq _0804300A\n\
- b _08043126\n\
-_0804300A:\n\
- ldr r0, =gBattleMoves\n\
- lsls r1, r5, 1\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _0804301C\n\
- b _08043126\n\
-_0804301C:\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08043048\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_MoveHPDrain\n\
- b _0804304C\n\
- .pool\n\
-_08043048:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_MoveHPDrain_PPLoss\n\
-_0804304C:\n\
- str r0, [r1]\n\
- movs r2, 0x1\n\
- mov r9, r2\n\
- b _08043126\n\
- .pool\n\
-_0804305C:\n\
- cmp r3, 0xA\n\
- bne _08043126\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043126\n\
- ldr r2, =gBattleResources\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x4]\n\
- mov r5, r10\n\
- lsls r1, r5, 2\n\
- adds r0, r1\n\
- ldr r3, [r0]\n\
- movs r4, 0x1\n\
- ands r3, r4\n\
- adds r5, r1, 0\n\
- cmp r3, 0\n\
- bne _080430EC\n\
- ldr r0, =gBattleCommunication\n\
- strb r3, [r0, 0x5]\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _080430C8\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_FlashFireBoost\n\
- b _080430CC\n\
- .pool\n\
-_080430C8:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_FlashFireBoost_PPLoss\n\
-_080430CC:\n\
- str r0, [r1]\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x4]\n\
- adds r1, r5\n\
- ldr r0, [r1]\n\
- movs r2, 0x1\n\
- orrs r0, r2\n\
- str r0, [r1]\n\
- movs r0, 0x2\n\
- mov r9, r0\n\
- b _08043126\n\
- .pool\n\
-_080430EC:\n\
- ldr r0, =gBattleCommunication\n\
- strb r4, [r0, 0x5]\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _0804311C\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_FlashFireBoost\n\
- b _08043120\n\
- .pool\n\
-_0804311C:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_FlashFireBoost_PPLoss\n\
-_08043120:\n\
- str r0, [r1]\n\
- movs r1, 0x2\n\
-_08043124:\n\
- mov r9, r1\n\
-_08043126:\n\
- mov r2, r9\n\
- cmp r2, 0x1\n\
- beq _08043130\n\
- bl _0804441E\n\
-_08043130:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r0, r1\n\
- ldrh r0, [r1, 0x2C]\n\
- ldrh r5, [r1, 0x28]\n\
- cmp r0, r5\n\
- bne _0804318C\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08043178\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =gUnknown_082DB592\n\
- str r0, [r1]\n\
- bl _0804441E\n\
- .pool\n\
-_08043178:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =gUnknown_082DB591\n\
- str r0, [r1]\n\
- bl _0804441E\n\
- .pool\n\
-_0804318C:\n\
- ldr r2, =gBattleMoveDamage\n\
- ldrh r0, [r1, 0x2C]\n\
- lsrs r0, 2\n\
- str r0, [r2]\n\
- cmp r0, 0\n\
- bne _0804319C\n\
- mov r0, r9\n\
- str r0, [r2]\n\
-_0804319C:\n\
- ldr r0, [r2]\n\
- negs r0, r0\n\
- str r0, [r2]\n\
- bl _0804441E\n\
- .pool\n\
-_080431AC:\n\
- ldrb r0, [r7]\n\
- subs r0, 0x9\n\
- cmp r0, 0x2F\n\
- bls _080431B8\n\
- bl _0804441E\n\
-_080431B8:\n\
- lsls r0, 2\n\
- ldr r1, =_080431C8\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_080431C8:\n\
- .4byte _080435E4\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _08043288\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _08043350\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _08043410\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _08043508\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _080436C0\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804379C\n\
-_08043288:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043298\n\
- bl _0804441E\n\
-_08043298:\n\
- cmp r5, 0xA5\n\
- bne _080432A0\n\
- bl _0804441E\n\
-_080432A0:\n\
- ldr r0, =gBattleMoves\n\
- lsls r1, r5, 1\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _080432B4\n\
- bl _0804441E\n\
-_080432B4:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080432DC\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080432DC\n\
- bl _0804441E\n\
-_080432DC:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- adds r1, r0, r1\n\
- adds r4, r1, 0\n\
- adds r4, 0x21\n\
- ldrb r0, [r4]\n\
- cmp r0, r3\n\
- bne _080432F6\n\
- bl _0804441E\n\
-_080432F6:\n\
- adds r2, r1, 0\n\
- adds r2, 0x22\n\
- ldrb r0, [r2]\n\
- cmp r0, r3\n\
- bne _08043304\n\
- bl _0804441E\n\
-_08043304:\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- bne _0804330E\n\
- bl _0804441E\n\
-_0804330E:\n\
- strb r3, [r4]\n\
- strb r3, [r2]\n\
- ldr r1, =gBattleTextBuff1\n\
- movs r0, 0xFD\n\
- strb r0, [r1]\n\
- movs r0, 0x3\n\
- strb r0, [r1, 0x1]\n\
- strb r3, [r1, 0x2]\n\
- movs r0, 0xFF\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ColorChangeActivates\n\
- str r0, [r1]\n\
- bl _080443D0\n\
- .pool\n\
-_08043350:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043360\n\
- bl _0804441E\n\
-_08043360:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r3, r0, r1\n\
- ldrh r0, [r3, 0x28]\n\
- cmp r0, 0\n\
- bne _08043376\n\
- bl _0804441E\n\
-_08043376:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08043388\n\
- bl _0804441E\n\
-_08043388:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080433B0\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080433B0\n\
- bl _0804441E\n\
-_080433B0:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r2, 0x1\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080433CA\n\
- bl _0804441E\n\
-_080433CA:\n\
- ldr r1, =gBattleMoveDamage\n\
- ldrh r0, [r3, 0x2C]\n\
- lsrs r0, 4\n\
- str r0, [r1]\n\
- cmp r0, 0\n\
- bne _080433D8\n\
- str r2, [r1]\n\
-_080433D8:\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_RoughSkinActivates\n\
- str r0, [r1]\n\
- bl _080443D0\n\
- .pool\n\
-_08043410:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043420\n\
- bl _0804441E\n\
-_08043420:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08043436\n\
- bl _0804441E\n\
-_08043436:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08043448\n\
- bl _0804441E\n\
-_08043448:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043470\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043470\n\
- bl _0804441E\n\
-_08043470:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043488\n\
- bl _0804441E\n\
-_08043488:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _080434A0\n\
- bl _0804441E\n\
-_080434A0:\n\
- ldr r5, =gBattleCommunication\n\
- movs r4, 0x3\n\
-_080434A4:\n\
- bl Random\n\
- ands r0, r4\n\
- strb r0, [r5, 0x3]\n\
- cmp r0, 0\n\
- beq _080434A4\n\
- ldr r1, =gBattleCommunication\n\
- ldrb r0, [r1, 0x3]\n\
- cmp r0, 0x3\n\
- bne _080434BC\n\
- adds r0, 0x2\n\
- strb r0, [r1, 0x3]\n\
-_080434BC:\n\
- ldrb r0, [r1, 0x3]\n\
- adds r0, 0x40\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _080443D0\n\
- .pool\n\
-_08043508:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043518\n\
- bl _0804441E\n\
-_08043518:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _0804352E\n\
- bl _0804441E\n\
-_0804352E:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08043540\n\
- bl _0804441E\n\
-_08043540:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043568\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043568\n\
- bl _0804441E\n\
-_08043568:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043580\n\
- bl _0804441E\n\
-_08043580:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08043598\n\
- bl _0804441E\n\
-_08043598:\n\
- ldr r1, =gBattleCommunication\n\
- movs r0, 0x42\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _080443D0\n\
- .pool\n\
-_080435E4:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080435F4\n\
- bl _0804441E\n\
-_080435F4:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _0804360A\n\
- bl _0804441E\n\
-_0804360A:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _0804361C\n\
- bl _0804441E\n\
-_0804361C:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043644\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043644\n\
- bl _0804441E\n\
-_08043644:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0804365C\n\
- bl _0804441E\n\
-_0804365C:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08043674\n\
- bl _0804441E\n\
-_08043674:\n\
- ldr r1, =gBattleCommunication\n\
- movs r0, 0x45\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _080443D0\n\
- .pool\n\
-_080436C0:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080436D0\n\
- bl _0804441E\n\
-_080436D0:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _080436E6\n\
- bl _0804441E\n\
-_080436E6:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _080436F8\n\
- bl _0804441E\n\
-_080436F8:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043710\n\
- bl _0804441E\n\
-_08043710:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043738\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043738\n\
- bl _0804441E\n\
-_08043738:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08043750\n\
- bl _0804441E\n\
-_08043750:\n\
- ldr r1, =gBattleCommunication\n\
- movs r0, 0x43\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _080443D0\n\
- .pool\n\
-_0804379C:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080437AC\n\
- bl _0804441E\n\
-_080437AC:\n\
- ldr r6, =gBattleMons\n\
- ldr r3, =gBankAttacker\n\
- mov r8, r3\n\
- ldrb r1, [r3]\n\
- movs r7, 0x58\n\
- adds r0, r1, 0\n\
- muls r0, r7\n\
- adds r0, r6\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _080437C6\n\
- bl _0804441E\n\
-_080437C6:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _080437D8\n\
- bl _0804441E\n\
-_080437D8:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080437F0\n\
- bl _0804441E\n\
-_080437F0:\n\
- ldr r3, =gSpecialStatuses\n\
- ldr r5, =gBankTarget\n\
- ldrb r1, [r5]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r2, r0, 2\n\
- adds r0, r3, 0\n\
- adds r0, 0x8\n\
- adds r0, r2, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043818\n\
- adds r0, r3, 0\n\
- adds r0, 0xC\n\
- adds r0, r2, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043818\n\
- bl _0804441E\n\
-_08043818:\n\
- adds r0, r1, 0\n\
- muls r0, r7\n\
- adds r0, r6\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08043828\n\
- bl _0804441E\n\
-_08043828:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08043840\n\
- bl _0804441E\n\
-_08043840:\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- muls r0, r7\n\
- adds r0, r6\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xC\n\
- bne _08043854\n\
- bl _0804441E\n\
-_08043854:\n\
- ldr r0, [sp, 0x8]\n\
- ldr r1, [sp, 0x10]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- adds r4, r0, 0\n\
- ldr r0, [sp, 0xC]\n\
- ldr r1, [sp, 0x14]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- lsls r4, 24\n\
- lsls r0, 24\n\
- cmp r4, r0\n\
- bne _08043872\n\
- bl _0804441E\n\
-_08043872:\n\
- mov r2, r8\n\
- ldrb r0, [r2]\n\
- muls r0, r7\n\
- adds r4, r6, 0\n\
- adds r4, 0x50\n\
- adds r0, r4\n\
- ldr r0, [r0]\n\
- movs r1, 0xF0\n\
- lsls r1, 12\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0804388E\n\
- bl _0804441E\n\
-_0804388E:\n\
- ldr r0, [sp, 0x8]\n\
- ldr r1, [sp, 0x10]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- bne _080438A2\n\
- bl _0804441E\n\
-_080438A2:\n\
- ldr r0, [sp, 0xC]\n\
- ldr r1, [sp, 0x14]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- bne _080438B6\n\
- bl _0804441E\n\
-_080438B6:\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- adds r2, r0, 0\n\
- muls r2, r7\n\
- adds r2, r4\n\
- ldr r1, =gBitTable\n\
- ldrb r0, [r5]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- lsls r1, 16\n\
- ldr r0, [r2]\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_CuteCharmActivates\n\
- str r0, [r1]\n\
- bl _080443D0\n\
- .pool\n\
-_08043908:\n\
- movs r5, 0\n\
- mov r10, r5\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcc _08043918\n\
- bl _0804441E\n\
-_08043918:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- subs r0, 0x7\n\
- adds r2, r1, 0\n\
- cmp r0, 0x41\n\
- bls _08043932\n\
- b _08043B96\n\
-_08043932:\n\
- lsls r0, 2\n\
- ldr r1, =_08043948\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_08043948:\n\
- .4byte _08043AAC\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B70\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043AD4\n\
- .4byte _08043B96\n\
- .4byte _08043A50\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043A7C\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B40\n\
- .4byte _08043B10\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043AD4\n\
-_08043A50:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- ldr r1, =0x00000f88\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043A6A\n\
- b _08043B96\n\
-_08043A6A:\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_PoisonJpn\n\
- b _08043B5C\n\
- .pool\n\
-_08043A7C:\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043A96\n\
- b _08043B96\n\
-_08043A96:\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_ConfusionJpn\n\
- bl StringCopy\n\
- movs r2, 0x2\n\
- mov r9, r2\n\
- b _08043B9C\n\
- .pool\n\
-_08043AAC:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_ParalysisJpn\n\
- b _08043B5C\n\
- .pool\n\
-_08043AD4:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r2, 0\n\
- adds r0, 0x4C\n\
- adds r0, r3, r0\n\
- ldr r0, [r0]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- adds r2, 0x50\n\
- adds r2, r3, r2\n\
- ldr r0, [r2]\n\
- ldr r1, =0xf7ffffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_SleepJpn\n\
- bl StringCopy\n\
- movs r0, 0x1\n\
- mov r9, r0\n\
- b _08043B9C\n\
- .pool\n\
-_08043B10:\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_BurnJpn\n\
- bl StringCopy\n\
- movs r2, 0x1\n\
- mov r9, r2\n\
- b _08043B9C\n\
- .pool\n\
-_08043B40:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_IceJpn\n\
-_08043B5C:\n\
- bl StringCopy\n\
- movs r5, 0x1\n\
- mov r9, r5\n\
- b _08043B9C\n\
- .pool\n\
-_08043B70:\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0xF0\n\
- lsls r1, 12\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_LoveJpn\n\
- bl StringCopy\n\
- movs r2, 0x3\n\
- mov r9, r2\n\
-_08043B96:\n\
- mov r3, r9\n\
- cmp r3, 0\n\
- beq _08043C50\n\
-_08043B9C:\n\
- mov r5, r9\n\
- cmp r5, 0x2\n\
- beq _08043BD0\n\
- cmp r5, 0x2\n\
- bgt _08043BB4\n\
- cmp r5, 0x1\n\
- beq _08043BBC\n\
- b _08043BFC\n\
- .pool\n\
-_08043BB4:\n\
- mov r0, r9\n\
- cmp r0, 0x3\n\
- beq _08043BE8\n\
- b _08043BFC\n\
-_08043BBC:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r1, 0x4C\n\
- adds r2, r1\n\
- movs r0, 0\n\
- b _08043BFA\n\
- .pool\n\
-_08043BD0:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r1, 0x50\n\
- adds r2, r1\n\
- ldr r0, [r2]\n\
- movs r1, 0x8\n\
- negs r1, r1\n\
- b _08043BF8\n\
- .pool\n\
-_08043BE8:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r1, 0x50\n\
- adds r2, r1\n\
- ldr r0, [r2]\n\
- ldr r1, =0xfff0ffff\n\
-_08043BF8:\n\
- ands r0, r1\n\
-_08043BFA:\n\
- str r0, [r2]\n\
-_08043BFC:\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =gUnknown_082DB68C\n\
- str r0, [r1]\n\
- ldr r0, =gBattleScripting\n\
- mov r1, r10\n\
- strb r1, [r0, 0x17]\n\
- ldr r4, =gActiveBank\n\
- strb r1, [r4]\n\
- ldrb r1, [r4]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- ldr r1, =gBattleMons + 0x4C\n\
- adds r0, r1\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x28\n\
- movs r2, 0\n\
- movs r3, 0x4\n\
- bl EmitSetAttributes\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- bl _0804443A\n\
- .pool\n\
-_08043C50:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcs _08043C64\n\
- b _08043918\n\
-_08043C64:\n\
- bl _0804441E\n\
- .pool\n\
-_08043C6C:\n\
- movs r2, 0\n\
- mov r10, r2\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcc _08043C7A\n\
- b _0804441E\n\
-_08043C7A:\n\
- ldr r4, =gBattleMons\n\
-_08043C7C:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r0, r4\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x3B\n\
- bne _08043CA0\n\
- mov r0, r10\n\
- bl CastformDataTypeChange\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- cmp r0, 0\n\
- beq _08043CA0\n\
- b _080442FC\n\
-_08043CA0:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcc _08043C7C\n\
- b _0804441E\n\
- .pool\n\
-_08043CBC:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x1C\n\
- beq _08043CC4\n\
- b _0804441E\n\
-_08043CC4:\n\
- ldr r4, =gHitMarker\n\
- ldr r1, [r4]\n\
- movs r0, 0x80\n\
- lsls r0, 7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043CD4\n\
- b _0804441E\n\
-_08043CD4:\n\
- ldr r0, =0xffffbfff\n\
- ands r1, r0\n\
- str r1, [r4]\n\
- mov r5, r8\n\
- ldr r1, [r5]\n\
- adds r1, 0xB2\n\
- ldrb r2, [r1]\n\
- movs r0, 0x3F\n\
- ands r0, r2\n\
- strb r0, [r1]\n\
- ldr r0, [r5]\n\
- adds r1, r0, 0\n\
- adds r1, 0xB2\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x6\n\
- bne _08043CF8\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
-_08043CF8:\n\
- ldr r1, =gBattleCommunication\n\
- mov r2, r8\n\
- ldr r0, [r2]\n\
- adds r0, 0xB2\n\
- ldrb r0, [r0]\n\
- adds r0, 0x40\n\
- strb r0, [r1, 0x3]\n\
- ldr r1, =gBattleScripting\n\
- ldr r0, =gBankTarget\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x17]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_SynchronizeActivates\n\
- str r0, [r1]\n\
- ldr r0, [r4]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r4]\n\
- b _080443D0\n\
- .pool\n\
-_08043D40:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x1C\n\
- beq _08043D48\n\
- b _0804441E\n\
-_08043D48:\n\
- ldr r4, =gHitMarker\n\
- ldr r1, [r4]\n\
- movs r0, 0x80\n\
- lsls r0, 7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043D58\n\
- b _0804441E\n\
-_08043D58:\n\
- ldr r0, =0xffffbfff\n\
- ands r1, r0\n\
- str r1, [r4]\n\
- mov r3, r8\n\
- ldr r1, [r3]\n\
- adds r1, 0xB2\n\
- ldrb r2, [r1]\n\
- movs r0, 0x3F\n\
- ands r0, r2\n\
- strb r0, [r1]\n\
- ldr r0, [r3]\n\
- adds r1, r0, 0\n\
- adds r1, 0xB2\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x6\n\
- bne _08043D7C\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
-_08043D7C:\n\
- ldr r1, =gBattleCommunication\n\
- mov r3, r8\n\
- ldr r0, [r3]\n\
- adds r0, 0xB2\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x3]\n\
- ldr r1, =gBattleScripting\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x17]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_SynchronizeActivates\n\
- str r0, [r1]\n\
- ldr r0, [r4]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r4]\n\
- b _080443D0\n\
- .pool\n\
-_08043DC4:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- blt _08043DD0\n\
- b _0804441E\n\
-_08043DD0:\n\
- ldr r0, =gBattleMons\n\
- adds r5, r1, 0\n\
- ldr r2, =gStatuses3\n\
- adds r3, r0, 0\n\
- adds r3, 0x20\n\
- movs r6, 0x80\n\
- lsls r6, 12\n\
-_08043DDE:\n\
- ldrb r1, [r3]\n\
- cmp r1, 0x16\n\
- bne _08043DEE\n\
- ldr r0, [r2]\n\
- ands r0, r6\n\
- cmp r0, 0\n\
- beq _08043DEE\n\
- b _08044324\n\
-_08043DEE:\n\
- adds r2, 0x4\n\
- adds r3, 0x58\n\
- adds r4, 0x1\n\
- cmp r4, r5\n\
- blt _08043DDE\n\
- b _0804441E\n\
- .pool\n\
-_08043E08:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08043E14\n\
- b _0804441E\n\
-_08043E14:\n\
- ldr r5, =gActiveBank\n\
- mov r8, r5\n\
- ldr r0, =gBattleMons\n\
- adds r0, 0x20\n\
- str r0, [sp, 0x1C]\n\
- movs r1, 0\n\
- str r1, [sp, 0x20]\n\
-_08043E22:\n\
- ldr r2, [sp, 0x1C]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x24\n\
- beq _08043E2C\n\
- b _08043FBE\n\
-_08043E2C:\n\
- ldr r0, =gStatuses3\n\
- ldr r3, [sp, 0x20]\n\
- adds r0, r3, r0\n\
- ldr r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 13\n\
- ands r1, r0\n\
- str r3, [sp, 0x18]\n\
- cmp r1, 0\n\
- bne _08043E42\n\
- b _08043FBE\n\
-_08043E42:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankIdentity\n\
- movs r1, 0x1\n\
- adds r5, r0, 0\n\
- eors r5, r1\n\
- ands r5, r1\n\
- adds r0, r5, 0\n\
- bl GetBankByPlayerAI\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r0, r5, 0x2\n\
- bl GetBankByPlayerAI\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r2, 0x1\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _08043E74\n\
- b _08043F84\n\
-_08043E74:\n\
- movs r1, 0x58\n\
- adds r0, r6, 0\n\
- muls r0, r1\n\
- ldr r3, =gBattleMons\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08043F40\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08043EFC\n\
- movs r1, 0x58\n\
- adds r0, r7, 0\n\
- muls r0, r1\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08043EFC\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08043EFC\n\
- str r2, [sp, 0x24]\n\
- bl Random\n\
- ldr r2, [sp, 0x24]\n\
- adds r1, r2, 0\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- orrs r5, r1\n\
- adds r0, r5, 0\n\
- bl GetBankByPlayerAI\n\
- mov r2, r8\n\
- strb r0, [r2]\n\
- ldrb r0, [r2]\n\
- movs r3, 0x58\n\
- muls r0, r3\n\
- ldr r5, =gBattleMons\n\
- adds r0, r5\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- ldr r1, [sp, 0x1C]\n\
- strb r0, [r1]\n\
- ldrb r0, [r2]\n\
- muls r0, r3\n\
- adds r0, r5\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- ldr r2, =gLastUsedAbility\n\
- strb r0, [r2]\n\
- b _08043FAC\n\
- .pool\n\
-_08043EFC:\n\
- ldr r3, =gBattleMons\n\
- movs r2, 0x58\n\
- adds r0, r6, 0\n\
- muls r0, r2\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08043F40\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08043F40\n\
- mov r5, r8\n\
- strb r6, [r5]\n\
- adds r1, r4, 0\n\
- muls r1, r2\n\
- adds r1, r3\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r1, 0x20\n\
- strb r0, [r1]\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- b _08043FA8\n\
- .pool\n\
-_08043F40:\n\
- ldr r3, =gBattleMons\n\
- movs r2, 0x58\n\
- adds r0, r7, 0\n\
- muls r0, r2\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08043FB6\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08043FB6\n\
- mov r5, r8\n\
- strb r7, [r5]\n\
- adds r1, r4, 0\n\
- muls r1, r2\n\
- adds r1, r3\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r1, 0x20\n\
- strb r0, [r1]\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- b _08043FA8\n\
- .pool\n\
-_08043F84:\n\
- mov r2, r8\n\
- strb r6, [r2]\n\
- movs r3, 0x58\n\
- adds r0, r6, 0\n\
- muls r0, r3\n\
- ldr r5, =gBattleMons\n\
- adds r0, r5\n\
- adds r2, r0, 0\n\
- adds r2, 0x20\n\
- ldrb r1, [r2]\n\
- cmp r1, 0\n\
- beq _08043FB6\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- beq _08043FB6\n\
- ldr r0, [sp, 0x1C]\n\
- strb r1, [r0]\n\
- ldrb r0, [r2]\n\
-_08043FA8:\n\
- ldr r1, =gLastUsedAbility\n\
- strb r0, [r1]\n\
-_08043FAC:\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08043FB6:\n\
- mov r2, r9\n\
- cmp r2, 0\n\
- beq _08043FBE\n\
- b _08044340\n\
-_08043FBE:\n\
- ldr r3, [sp, 0x1C]\n\
- adds r3, 0x58\n\
- str r3, [sp, 0x1C]\n\
- ldr r5, [sp, 0x20]\n\
- adds r5, 0x4\n\
- str r5, [sp, 0x20]\n\
- adds r4, 0x1\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- bge _08043FD6\n\
- b _08043E22\n\
-_08043FD6:\n\
- b _0804441E\n\
- .pool\n\
-_08043FE4:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- blt _08043FF0\n\
- b _0804441E\n\
-_08043FF0:\n\
- ldr r0, =gBattleMons\n\
- adds r5, r1, 0\n\
- ldr r2, =gStatuses3\n\
- adds r3, r0, 0\n\
- adds r3, 0x20\n\
- movs r6, 0x80\n\
- lsls r6, 12\n\
-_08043FFE:\n\
- ldrb r1, [r3]\n\
- cmp r1, 0x16\n\
- bne _0804400E\n\
- ldr r0, [r2]\n\
- ands r0, r6\n\
- cmp r0, 0\n\
- beq _0804400E\n\
- b _080443B4\n\
-_0804400E:\n\
- adds r2, 0x4\n\
- adds r3, 0x58\n\
- adds r4, 0x1\n\
- cmp r4, r5\n\
- blt _08043FFE\n\
- b _0804441E\n\
- .pool\n\
-_08044028:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _0804403E\n\
- b _0804441E\n\
-_0804403E:\n\
- ldr r7, =gBattleMons\n\
-_08044040:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r4, 0x1\n\
- cmp r0, r5\n\
- beq _0804406A\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _0804406A\n\
- ldr r0, =gLastUsedAbility\n\
- strb r6, [r0]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_0804406A:\n\
- adds r4, r3, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044040\n\
- b _0804441E\n\
- .pool\n\
-_08044084:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _0804409A\n\
- b _0804441E\n\
-_0804409A:\n\
- ldr r7, =gBattleMons\n\
-_0804409C:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r4, 0x1\n\
- cmp r0, r5\n\
- bne _080440C6\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _080440C6\n\
- ldr r0, =gLastUsedAbility\n\
- strb r6, [r0]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_080440C6:\n\
- adds r4, r3, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _0804409C\n\
- b _0804441E\n\
- .pool\n\
-_080440E0:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0xFD\n\
- beq _08044104\n\
- cmp r0, 0xFE\n\
- beq _0804413C\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- adds r5, r0, 0\n\
- ldrb r0, [r5]\n\
- cmp r4, r0\n\
- blt _080440F8\n\
- b _0804441E\n\
-_080440F8:\n\
- ldr r2, =gBattleMons\n\
- b _08044174\n\
- .pool\n\
-_08044104:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044110\n\
- b _0804441E\n\
-_08044110:\n\
- ldr r5, =gStatuses3\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r1, r0, 0\n\
-_08044118:\n\
- lsls r0, r4, 2\n\
- adds r0, r5\n\
- ldr r0, [r0]\n\
- ands r0, r2\n\
- adds r3, r4, 0x1\n\
- cmp r0, 0\n\
- beq _0804412C\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_0804412C:\n\
- adds r4, r3, 0\n\
- cmp r4, r1\n\
- blt _08044118\n\
- b _0804441E\n\
- .pool\n\
-_0804413C:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044148\n\
- b _0804441E\n\
-_08044148:\n\
- ldr r5, =gStatuses3\n\
- movs r2, 0x80\n\
- lsls r2, 10\n\
- adds r1, r0, 0\n\
-_08044150:\n\
- lsls r0, r4, 2\n\
- adds r0, r5\n\
- ldr r0, [r0]\n\
- ands r0, r2\n\
- adds r3, r4, 0x1\n\
- cmp r0, 0\n\
- beq _08044164\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08044164:\n\
- adds r4, r3, 0\n\
- cmp r4, r1\n\
- blt _08044150\n\
- b _0804441E\n\
- .pool\n\
-_08044174:\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r2\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0x1\n\
- cmp r0, r6\n\
- bne _0804418C\n\
- strb r6, [r7]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_0804418C:\n\
- adds r4, r3, 0\n\
- ldrb r1, [r5]\n\
- cmp r4, r1\n\
- blt _08044174\n\
- b _0804441E\n\
-_08044196:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _080441A2\n\
- b _0804441E\n\
-_080441A2:\n\
- ldr r2, =gBattleMons\n\
- mov r8, r2\n\
- adds r2, r0, 0\n\
- movs r5, 0x58\n\
-_080441AA:\n\
- adds r0, r4, 0\n\
- muls r0, r5\n\
- mov r3, r8\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0x1\n\
- cmp r0, r6\n\
- bne _080441CC\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _080441CC\n\
- strb r6, [r7]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_080441CC:\n\
- adds r4, r3, 0\n\
- cmp r4, r2\n\
- blt _080441AA\n\
- b _0804441E\n\
- .pool\n\
-_080441DC:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _080441E8\n\
- b _0804441E\n\
-_080441E8:\n\
- ldr r7, =gBattleMons\n\
- adds r1, r0, 0\n\
- movs r5, 0x58\n\
- ldr r2, =gLastUsedAbility\n\
-_080441F0:\n\
- adds r0, r4, 0\n\
- muls r0, r5\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0x1\n\
- cmp r0, r6\n\
- bne _0804420C\n\
- cmp r4, r10\n\
- beq _0804420C\n\
- strb r6, [r2]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_0804420C:\n\
- adds r4, r3, 0\n\
- cmp r4, r1\n\
- blt _080441F0\n\
- b _0804441E\n\
- .pool\n\
-_08044220:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044236\n\
- b _0804441E\n\
-_08044236:\n\
- ldr r7, =gBattleMons\n\
-_08044238:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r5\n\
- beq _08044264\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _08044264\n\
- ldr r0, =gLastUsedAbility\n\
- strb r6, [r0]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08044264:\n\
- adds r4, 0x1\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044238\n\
- b _0804441E\n\
- .pool\n\
-_0804427C:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044292\n\
- b _0804441E\n\
-_08044292:\n\
- ldr r7, =gBattleMons\n\
-_08044294:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r5\n\
- bne _080442C0\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _080442C0\n\
- ldr r0, =gLastUsedAbility\n\
- strb r6, [r0]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_080442C0:\n\
- adds r4, 0x1\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044294\n\
- b _0804441E\n\
- .pool\n\
-_080442D8:\n\
- ldr r0, =BattleScript_CastformChange\n\
- bl b_push_move_exec\n\
- ldr r0, =gBattleScripting\n\
- strb r6, [r0, 0x17]\n\
-_080442E2:\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- adds r0, 0x7F\n\
- mov r1, r9\n\
- subs r1, 0x1\n\
- strb r1, [r0]\n\
- b _0804441E\n\
- .pool\n\
-_080442FC:\n\
- ldr r0, =BattleScript_CastformChange\n\
- bl b_push_move_exec\n\
- ldr r0, =gBattleScripting\n\
- mov r5, r10\n\
- strb r5, [r0, 0x17]\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- adds r0, 0x7F\n\
- mov r1, r9\n\
- subs r1, 0x1\n\
- strb r1, [r0]\n\
- b _0804443A\n\
- .pool\n\
-_08044324:\n\
- strb r1, [r7]\n\
- ldr r0, [r2]\n\
- ldr r1, =0xfff7ffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- ldr r0, =gUnknown_082DB4B8\n\
- bl b_push_move_exec\n\
- b _080443C8\n\
- .pool\n\
-_08044340:\n\
- ldr r0, =BattleScript_TraceActivates\n\
- bl b_push_move_exec\n\
- ldr r1, =gStatuses3\n\
- ldr r0, [sp, 0x18]\n\
- adds r1, r0, r1\n\
- ldr r0, [r1]\n\
- ldr r2, =0xffefffff\n\
- ands r0, r2\n\
- str r0, [r1]\n\
- ldr r0, =gBattleScripting\n\
- strb r4, [r0, 0x17]\n\
- ldr r1, =gBattleTextBuff1\n\
- movs r4, 0xFD\n\
- strb r4, [r1]\n\
- movs r0, 0x4\n\
- strb r0, [r1, 0x1]\n\
- ldr r2, =gActiveBank\n\
- ldrb r0, [r2]\n\
- strb r0, [r1, 0x2]\n\
- ldr r3, =gBattlePartyID\n\
- ldrb r0, [r2]\n\
- lsls r0, 1\n\
- adds r0, r3\n\
- ldrh r0, [r0]\n\
- strb r0, [r1, 0x3]\n\
- movs r0, 0xFF\n\
- strb r0, [r1, 0x4]\n\
- ldr r1, =gBattleTextBuff2\n\
- strb r4, [r1]\n\
- movs r0, 0x9\n\
- strb r0, [r1, 0x1]\n\
- ldr r0, =gLastUsedAbility\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x2]\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- strb r0, [r1, 0x3]\n\
- b _0804441E\n\
- .pool\n\
-_080443B4:\n\
- strb r1, [r7]\n\
- ldr r0, [r2]\n\
- ldr r1, =0xfff7ffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =gUnknown_082DB4C1\n\
- str r0, [r1]\n\
-_080443C8:\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- adds r0, 0xD8\n\
- strb r4, [r0]\n\
-_080443D0:\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- b _0804441E\n\
- .pool\n\
-_080443EC:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- bge _0804441E\n\
- ldr r0, =gBattleMons\n\
- adds r2, r1, 0\n\
- adds r1, r0, 0\n\
- adds r1, 0x20\n\
- ldr r3, =gLastUsedAbility\n\
-_08044400:\n\
- ldrb r0, [r1]\n\
- cmp r0, r6\n\
- bne _08044416\n\
- cmp r4, r10\n\
- beq _08044416\n\
- strb r6, [r3]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08044416:\n\
- adds r1, 0x58\n\
- adds r4, 0x1\n\
- cmp r4, r2\n\
- blt _08044400\n\
-_0804441E:\n\
- mov r1, r9\n\
- cmp r1, 0\n\
- beq _0804443A\n\
-_08044424:\n\
- ldr r2, [sp, 0x4]\n\
- cmp r2, 0xB\n\
- bhi _0804443A\n\
- ldr r1, =gLastUsedAbility\n\
- ldrb r0, [r1]\n\
- cmp r0, 0xFF\n\
- beq _0804443A\n\
- adds r1, r0, 0\n\
- mov r0, r10\n\
- bl RecordAbilityBattle\n\
-_0804443A:\n\
- mov r0, r9\n\
- add sp, 0x28\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
-void b_call_bc_move_exec(const u8* BS_ptr)
+void BattleScriptExecute(const u8* BS_ptr)
{
gBattlescriptCurrInstr = BS_ptr;
BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc;
- gBattleMainFunc = bc_move_exec_returning;
- gFightStateTracker = 0;
+ gBattleMainFunc = RunBattleScriptCommands_PopCallbacksStack;
+ gCurrentActionFuncId = 0;
}
-void b_push_move_exec(const u8* BS_ptr)
+void BattleScriptPushCursorAndCallback(const u8* BS_ptr)
{
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BS_ptr;
BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc;
- gBattleMainFunc = sub_803E08C;
+ gBattleMainFunc = RunBattleScriptCommands;
}
enum
@@ -5546,7 +2719,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
switch (caseID)
{
- case 0:
+ case ITEMEFFECT_ON_SWITCH_IN:
switch (bankHoldEffect)
{
case HOLD_EFFECT_DOUBLE_PRIZE:
@@ -5567,7 +2740,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleScripting.bank = bank;
gStringBank = bank;
gActiveBank = gBankAttacker = bank;
- b_call_bc_move_exec(BattleScript_WhiteHerbEnd2);
+ BattleScriptExecute(BattleScript_WhiteHerbEnd2);
}
break;
}
@@ -5584,7 +2757,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
- b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
effect = 4;
}
break;
@@ -5619,8 +2792,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleTextBuff1[2] = move;
gBattleTextBuff1[3] = move >> 8;
gBattleTextBuff1[4] = 0xFF;
- b_call_bc_move_exec(BattleScript_BerryPPHealEnd2);
- EmitSetAttributes(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
+ BattleScriptExecute(BattleScript_BerryPPHealEnd2);
+ EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
MarkBufferBankForExecution(gActiveBank);
effect = ITEM_PP_CHANGE;
}
@@ -5640,7 +2813,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleScripting.bank = bank;
gStringBank = bank;
gActiveBank = gBankAttacker = bank;
- b_call_bc_move_exec(BattleScript_WhiteHerbEnd2);
+ BattleScriptExecute(BattleScript_WhiteHerbEnd2);
}
break;
case HOLD_EFFECT_LEFTOVERS:
@@ -5652,7 +2825,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
- b_call_bc_move_exec(BattleScript_ItemHealHP_End2);
+ BattleScriptExecute(BattleScript_ItemHealHP_End2);
effect = ITEM_HP_CHANGE;
RecordItemEffectBattle(bank, bankHoldEffect);
}
@@ -5672,9 +2845,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SPICY) < 0)
- b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
- b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
effect = ITEM_HP_CHANGE;
}
break;
@@ -5692,9 +2865,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_DRY) < 0)
- b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
- b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
effect = ITEM_HP_CHANGE;
}
break;
@@ -5712,9 +2885,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SWEET) < 0)
- b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
- b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
effect = ITEM_HP_CHANGE;
}
break;
@@ -5732,9 +2905,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_BITTER) < 0)
- b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
- b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
effect = ITEM_HP_CHANGE;
}
break;
@@ -5752,9 +2925,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SOUR) < 0)
- b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
- b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
effect = ITEM_HP_CHANGE;
}
break;
@@ -5777,7 +2950,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleScripting.statChanger = 0x10 + STAT_STAGE_ATK;
gBattleScripting.animArg1 = 0xE + STAT_STAGE_ATK;
gBattleScripting.animArg2 = 0;
- b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
@@ -5793,7 +2966,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleScripting.statChanger = 0x10 + STAT_STAGE_DEF;
gBattleScripting.animArg1 = 0xE + STAT_STAGE_DEF;
gBattleScripting.animArg2 = 0;
- b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
@@ -5809,7 +2982,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPEED;
gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPEED;
gBattleScripting.animArg2 = 0;
- b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
@@ -5825,7 +2998,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPATK;
gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPATK;
gBattleScripting.animArg2 = 0;
- b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
@@ -5841,7 +3014,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPDEF;
gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPDEF;
gBattleScripting.animArg2 = 0;
- b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
break;
@@ -5849,7 +3022,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY))
{
gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY;
- b_call_bc_move_exec(BattleScript_BerryFocusEnergyEnd2);
+ BattleScriptExecute(BattleScript_BerryFocusEnergyEnd2);
effect = ITEM_EFFECT_OTHER;
}
break;
@@ -5886,7 +3059,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleScripting.statChanger = 0x21 + i;
gBattleScripting.animArg1 = 0x21 + i + 6;
gBattleScripting.animArg2 = 0;
- b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
effect = ITEM_STATS_CHANGE;
}
}
@@ -5895,7 +3068,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
{
gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS);
- b_call_bc_move_exec(BattleScript_BerryCurePrlzEnd2);
+ BattleScriptExecute(BattleScript_BerryCurePrlzEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
@@ -5903,7 +3076,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
{
gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER);
- b_call_bc_move_exec(BattleScript_BerryCurePsnEnd2);
+ BattleScriptExecute(BattleScript_BerryCurePsnEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
@@ -5911,7 +3084,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status1 & STATUS_BURN)
{
gBattleMons[bank].status1 &= ~(STATUS_BURN);
- b_call_bc_move_exec(BattleScript_BerryCureBrnEnd2);
+ BattleScriptExecute(BattleScript_BerryCureBrnEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
@@ -5919,7 +3092,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status1 & STATUS_FREEZE)
{
gBattleMons[bank].status1 &= ~(STATUS_FREEZE);
- b_call_bc_move_exec(BattleScript_BerryCureFrzEnd2);
+ BattleScriptExecute(BattleScript_BerryCureFrzEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
@@ -5928,7 +3101,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
gBattleMons[bank].status1 &= ~(STATUS_SLEEP);
gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
- b_call_bc_move_exec(BattleScript_BerryCureSlpEnd2);
+ BattleScriptExecute(BattleScript_BerryCureSlpEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
@@ -5936,7 +3109,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
{
gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
- b_call_bc_move_exec(BattleScript_BerryCureConfusionEnd2);
+ BattleScriptExecute(BattleScript_BerryCureConfusionEnd2);
effect = ITEM_EFFECT_OTHER;
}
break;
@@ -5981,7 +3154,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
gBattleMons[bank].status1 = 0;
gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
- b_call_bc_move_exec(BattleScript_BerryCureChosenStatusEnd2);
+ BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
effect = ITEM_STATUS_CHANGE;
}
break;
@@ -5990,7 +3163,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
- b_call_bc_move_exec(BattleScript_BerryCureChosenStatusEnd2);
+ BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2);
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
effect = ITEM_EFFECT_OTHER;
}
@@ -6004,7 +3177,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
switch (effect)
{
case ITEM_STATUS_CHANGE:
- EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
MarkBufferBankForExecution(gActiveBank);
break;
case ITEM_PP_CHANGE:
@@ -6037,7 +3210,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
{
gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureParRet;
effect = ITEM_STATUS_CHANGE;
}
@@ -6046,7 +3219,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
{
gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet;
effect = ITEM_STATUS_CHANGE;
}
@@ -6055,7 +3228,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status1 & STATUS_BURN)
{
gBattleMons[bank].status1 &= ~(STATUS_BURN);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet;
effect = ITEM_STATUS_CHANGE;
}
@@ -6064,7 +3237,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status1 & STATUS_FREEZE)
{
gBattleMons[bank].status1 &= ~(STATUS_FREEZE);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet;
effect = ITEM_STATUS_CHANGE;
}
@@ -6074,7 +3247,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
gBattleMons[bank].status1 &= ~(STATUS_SLEEP);
gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet;
effect = ITEM_STATUS_CHANGE;
}
@@ -6083,7 +3256,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
{
gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet;
effect = ITEM_EFFECT_OTHER;
}
@@ -6093,7 +3266,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet;
effect = ITEM_EFFECT_OTHER;
@@ -6129,7 +3302,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
gBattleMons[bank].status1 = 0;
gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet;
effect = ITEM_STATUS_CHANGE;
@@ -6148,7 +3321,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
gBattleScripting.bank = bank;
gStringBank = bank;
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_WhiteHerbRet;
return effect; // unnecessary return
}
@@ -6159,7 +3332,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleScripting.bank = bank;
gStringBank = bank;
gActiveBank = bank;
- EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
MarkBufferBankForExecution(gActiveBank);
break;
}
@@ -6178,9 +3351,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
&& gBattleMons[gBankTarget].hp)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = 8;
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
SetMoveEffect(0, 0);
- b_movescr_stack_pop_cursor();
+ BattleScriptPop();
}
break;
case HOLD_EFFECT_SHELL_BELL:
@@ -6198,7 +3371,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
if (gBattleMoveDamage == 0)
gBattleMoveDamage = -1;
gSpecialStatuses[gBankTarget].moveturnLostHP = 0;
- b_movescr_stack_push_cursor();
+ BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret;
effect++;
}
@@ -6211,14 +3384,14 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
return effect;
}
-void sub_8045868(u8 bank)
+void ClearFuryCutterDestinyBondGrudge(u8 bank)
{
gDisableStructs[bank].furyCutterCounter = 0;
gBattleMons[bank].status2 &= ~(STATUS2_DESTINY_BOND);
gStatuses3[bank] &= ~(STATUS3_GRUDGE);
}
-void sub_80458B4(void)
+void HandleAction_RunBattleScript(void) // identical to RunBattleScriptCommands
{
if (gBattleExecBuffer == 0)
gBattleScriptingCommandsTable[*gBattlescriptCurrInstr]();
@@ -6237,7 +3410,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
switch (moveTarget)
{
- case 0:
+ case MOVE_TARGET_SELECTED:
side = GetBankSide(gBankAttacker) ^ 1;
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
targetBank = gSideTimers[side].followmeTarget;
@@ -6249,7 +3422,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
targetBank = Random() % gNoOfAllBanks;
} while (targetBank == gBankAttacker || side == GetBankSide(targetBank) || gAbsentBankFlags & gBitTable[targetBank]);
if (gBattleMoves[move].type == TYPE_ELECTRIC
- && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
+ && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
&& gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD)
{
targetBank ^= 2;
@@ -6258,42 +3431,42 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
}
}
break;
- case 1:
- case 8:
- case 32:
- case 64:
- targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1);
+ case MOVE_TARGET_DEPENDS:
+ case MOVE_TARGET_BOTH:
+ case MOVE_TARGET_FOES_AND_ALLY:
+ case MOVE_TARGET_OPPONENTS_FIELD:
+ targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1);
if (gAbsentBankFlags & gBitTable[targetBank])
targetBank ^= 2;
break;
- case 4:
+ case MOVE_TARGET_RANDOM:
side = GetBankSide(gBankAttacker) ^ 1;
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
targetBank = gSideTimers[side].followmeTarget;
- else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & 4)
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM)
{
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
{
if (Random() & 1)
- targetBank = GetBankByPlayerAI(1);
+ targetBank = GetBankByIdentity(1);
else
- targetBank = GetBankByPlayerAI(3);
+ targetBank = GetBankByIdentity(3);
}
else
{
if (Random() & 1)
- targetBank = GetBankByPlayerAI(0);
+ targetBank = GetBankByIdentity(0);
else
- targetBank = GetBankByPlayerAI(2);
+ targetBank = GetBankByIdentity(2);
}
if (gAbsentBankFlags & gBitTable[targetBank])
targetBank ^= 2;
}
else
- targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1);
+ targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1);
break;
- case 2:
- case 16:
+ case MOVE_TARGET_USER:
+ case MOVE_TARGET_x10:
targetBank = gBankAttacker;
break;
}
diff --git a/src/berry_blender.c b/src/berry_blender.c
new file mode 100644
index 000000000..db50fe4c4
--- /dev/null
+++ b/src/berry_blender.c
@@ -0,0 +1,18 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+IWRAM_DATA void *berry_blender_c_unused_03000de4;
+IWRAM_DATA s16 gUnknown_03000DE8[8];
+IWRAM_DATA s16 gUnknown_03000DF8[6];
+IWRAM_DATA s16 gUnknown_03000E04;
+IWRAM_DATA s16 gUnknown_03000E06;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
new file mode 100755
index 000000000..9a6f0371c
--- /dev/null
+++ b/src/braille_puzzles.c
@@ -0,0 +1,583 @@
+#include "global.h"
+#include "event_data.h"
+#include "songs.h"
+#include "sound.h"
+#include "script.h"
+#include "species.h"
+#include "task.h"
+#include "field_effect.h"
+#include "flags.h"
+
+extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId); // fieldmap
+extern void DrawWholeMapView(); // field_camera
+extern void SetCameraPanningCallback(void ( *callback)()); // field_camera
+extern void InstallCameraPanAheadCallback(void);
+extern void SetCameraPanning(s16 x, s16 y);
+extern u8 brm_get_pokemon_selection(void);
+extern void FieldEffectActiveListRemove(u8 id); // field_effect
+extern u8 oei_task_add(void);
+
+// why do this, GF?
+enum
+{
+ STRENGTH_PUZZLE,
+ FLY_PUZZLE
+};
+
+extern u8 gBraillePuzzleCallbackFlag;
+extern u8 gUnknown_085EFE74[][2];
+
+void SealedChamberShakingEffect(u8);
+void sub_8179860(void);
+void sub_8179944(void);
+
+bool8 ShouldDoBrailleDigEffect(void)
+{
+ if (!FlagGet(SYS_BRAILLE_DIG)
+ && (gSaveBlock1Ptr->location.mapGroup == 0x18
+ && gSaveBlock1Ptr->location.mapNum == 0x47))
+ {
+ if (gSaveBlock1Ptr->pos.x == 10 && gSaveBlock1Ptr->pos.y == 3)
+ return TRUE;
+ if (gSaveBlock1Ptr->pos.x == 9 && gSaveBlock1Ptr->pos.y == 3)
+ return TRUE;
+ if (gSaveBlock1Ptr->pos.x == 11 && gSaveBlock1Ptr->pos.y == 3)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void DoBrailleDigEffect(void)
+{
+ MapGridSetMetatileIdAt(16, 8, 554);
+ MapGridSetMetatileIdAt(17, 8, 555);
+ MapGridSetMetatileIdAt(18, 8, 556);
+ MapGridSetMetatileIdAt(16, 9, 3634);
+ MapGridSetMetatileIdAt(17, 9, 563);
+ MapGridSetMetatileIdAt(18, 9, 3636);
+ DrawWholeMapView();
+ PlaySE(SE_BAN);
+ FlagSet(SYS_BRAILLE_DIG);
+ ScriptContext2_Disable();
+}
+
+bool8 CheckRelicanthWailord(void)
+{
+ // Emerald change: why did they flip it?
+ // First comes Wailord
+ if (GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2, 0) == SPECIES_WAILORD)
+ {
+ CalculatePlayerPartyCount();
+ // Last comes Relicanth
+ if (GetMonData(&gPlayerParty[gPlayerPartyCount - 1], MON_DATA_SPECIES2, 0) == SPECIES_RELICANTH)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+// THEORY: this was caused by block commenting out all of the older R/S braille functions but leaving the call to it itself, which creates the nullsub.
+// the code is shown below to show what this might look like.
+void ShouldDoBrailleStrengthEffectOld(void)
+{
+ /*
+ if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS))
+ {
+ if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23)
+ return TRUE;
+ else if (gSaveBlock1.pos.x == 9 && gSaveBlock1.pos.y == 23)
+ return TRUE;
+ else if (gSaveBlock1.pos.x == 11 && gSaveBlock1.pos.y == 23)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void DoBrailleStrengthEffect(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
+ MapGridSetMetatileIdAt(14, 26, 554);
+ MapGridSetMetatileIdAt(15, 26, 555);
+ MapGridSetMetatileIdAt(16, 26, 556);
+ MapGridSetMetatileIdAt(14, 27, 3634);
+ MapGridSetMetatileIdAt(15, 27, 563);
+ MapGridSetMetatileIdAt(16, 27, 3636);
+ DrawWholeMapView();
+ PlaySE(SE_BAN);
+ FlagSet(SYS_BRAILLE_STRENGTH);
+ ScriptContext2_Disable();
+}
+
+bool8 ShouldDoBrailleFlyEffect(void)
+{
+ if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB))
+ {
+ if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void DoBrailleFlyEffect(void)
+{
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
+}
+
+bool8 FldEff_UseFlyAncientTomb(void)
+{
+ u8 taskId = oei_task_add();
+
+ gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
+ gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
+ return FALSE;
+}
+
+void UseFlyAncientTomb_Callback(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
+ UseFlyAncientTomb_Finish();
+}
+
+void UseFlyAncientTomb_Finish(void)
+{
+ MapGridSetMetatileIdAt(14, 26, 554);
+ MapGridSetMetatileIdAt(15, 26, 555);
+ MapGridSetMetatileIdAt(16, 26, 556);
+ MapGridSetMetatileIdAt(14, 27, 3634);
+ MapGridSetMetatileIdAt(15, 27, 563);
+ MapGridSetMetatileIdAt(16, 27, 3636);
+ DrawWholeMapView();
+ PlaySE(SE_BAN);
+ FlagSet(SYS_BRAILLE_FLY);
+ ScriptContext2_Disable();
+}
+ */
+}
+
+void DoSealedChamberShakingEffect1(void)
+{
+ u8 taskId = CreateTask(SealedChamberShakingEffect, 9);
+
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[4] = 2;
+ gTasks[taskId].data[5] = 5;
+ gTasks[taskId].data[6] = 50;
+ SetCameraPanningCallback(0);
+}
+
+void DoSealedChamberShakingEffect2(void)
+{
+ u8 taskId = CreateTask(SealedChamberShakingEffect, 9);
+
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[4] = 3;
+ gTasks[taskId].data[5] = 5;
+ gTasks[taskId].data[6] = 2;
+ SetCameraPanningCallback(0);
+}
+
+void SealedChamberShakingEffect(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[1]++;
+
+ if (!(task->data[1] % task->data[5]))
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ task->data[4] = -task->data[4];
+ SetCameraPanning(0, task->data[4]);
+ if (task->data[2] == task->data[6])
+ {
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ InstallCameraPanAheadCallback();
+ }
+ }
+}
+
+// moved later in the function because it was rewritten.
+bool8 ShouldDoBrailleStrengthEffect(void)
+{
+ if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x06))
+ {
+ if (gSaveBlock1Ptr->pos.x == 6 && gSaveBlock1Ptr->pos.y == 23)
+ { gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; }
+ else if (gSaveBlock1Ptr->pos.x == 5 && gSaveBlock1Ptr->pos.y == 23)
+ { gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; }
+ else if (gSaveBlock1Ptr->pos.x == 7 && gSaveBlock1Ptr->pos.y == 23)
+ { gBraillePuzzleCallbackFlag = STRENGTH_PUZZLE; return TRUE; }
+ }
+
+ return FALSE;
+}
+
+void sub_8179834(void)
+{
+ gFieldEffectArguments[0] = brm_get_pokemon_selection();
+ FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
+}
+
+void UseStrengthDesertRuins_Callback(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
+ sub_8179860();
+}
+
+void sub_8179860(void)
+{
+ MapGridSetMetatileIdAt(14, 26, 554);
+ MapGridSetMetatileIdAt(15, 26, 555);
+ MapGridSetMetatileIdAt(16, 26, 556);
+ MapGridSetMetatileIdAt(14, 27, 3634);
+ MapGridSetMetatileIdAt(15, 27, 563);
+ MapGridSetMetatileIdAt(16, 27, 3636);
+ DrawWholeMapView();
+ PlaySE(SE_BAN);
+ FlagSet(SYS_BRAILLE_STRENGTH);
+ ScriptContext2_Disable();
+}
+
+bool8 ShouldDoBrailleFlyEffect(void)
+{
+ if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x44))
+ {
+ if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 25)
+ { gBraillePuzzleCallbackFlag = FLY_PUZZLE; return TRUE; }
+ }
+ return FALSE;
+}
+
+void sub_8179918(void)
+{
+ gFieldEffectArguments[0] = brm_get_pokemon_selection();
+ FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
+}
+
+void UseFlyAncientTomb_Callback(void)
+{
+ FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
+ sub_8179944();
+}
+
+void sub_8179944(void)
+{
+ MapGridSetMetatileIdAt(14, 26, 554);
+ MapGridSetMetatileIdAt(15, 26, 555);
+ MapGridSetMetatileIdAt(16, 26, 556);
+ MapGridSetMetatileIdAt(14, 27, 3634);
+ MapGridSetMetatileIdAt(15, 27, 563);
+ MapGridSetMetatileIdAt(16, 27, 3636);
+ DrawWholeMapView();
+ PlaySE(SE_BAN);
+ FlagSet(SYS_BRAILLE_FLY);
+ ScriptContext2_Disable();
+}
+
+// theory: another commented out DoBrailleWait and Task_BrailleWait.
+void DoBrailleWait(void)
+{
+ /*
+ if (!FlagGet(SYS_BRAILLE_WAIT))
+ CreateTask(Task_BrailleWait, 0x50);
+}
+
+void Task_BrailleWait(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[1] = 7200;
+ data[0] = 1;
+ break;
+ case 1:
+ if (BrailleWait_CheckButtonPress() != FALSE)
+ {
+ MenuZeroFillScreen();
+ PlaySE(SE_SELECT);
+ data[0] = 2;
+ }
+ else
+ {
+ data[1] = data[1] - 1;
+ if (data[1] == 0)
+ {
+ MenuZeroFillScreen();
+ data[0] = 3;
+ data[1] = 30;
+ }
+ }
+ break;
+ case 2:
+ if (BrailleWait_CheckButtonPress() == FALSE)
+ {
+ data[1] = data[1] - 1;
+ if (data[1] == 0)
+ data[0] = 4;
+ break;
+ }
+ sub_8064E2C();
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ break;
+ case 3:
+ data[1] = data[1] - 1;
+ if (data[1] == 0)
+ data[0] = 4;
+ break;
+ case 4:
+ sub_8064E2C();
+ ScriptContext1_SetupScript(S_OpenRegiceChamber);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+bool32 BrailleWait_CheckButtonPress(void)
+{
+ u16 keyMask = A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON | DPAD_ANY;
+
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
+ keyMask |= L_BUTTON | R_BUTTON;
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
+ keyMask |= L_BUTTON;
+
+ if (gMain.newKeys & keyMask)
+ return TRUE;
+ else
+ return FALSE;
+ */
+}
+
+// this used to be FldEff_UseFlyAncientTomb . why did GF merge the 2 functions?
+bool8 FldEff_UsePuzzleEffect(void)
+{
+ u8 taskId = oei_task_add();
+
+ if (gBraillePuzzleCallbackFlag == FLY_PUZZLE)
+ {
+ gTasks[taskId].data[8] = (u32)UseFlyAncientTomb_Callback >> 16;
+ gTasks[taskId].data[9] = (u32)UseFlyAncientTomb_Callback;
+ }
+ else
+ {
+ gTasks[taskId].data[8] = (u32)UseStrengthDesertRuins_Callback >> 16;
+ gTasks[taskId].data[9] = (u32)UseStrengthDesertRuins_Callback;
+ }
+ return FALSE;
+}
+
+// can't get this one to match due to the weird macro-like varsets with strange bitshifting.
+// to note: 0x10000 is loaded in, and its obviously supposed to be 1, but i cant get 0x80 << 9 to be loaded in without using it directly.
+// maybe there's some way of writing it that works?
+#ifdef NONMATCHING
+// ShouldDoBrailleRegicePuzzle
+bool8 ShouldDoBrailleRegicePuzzle(void)
+{
+ u8 i;
+
+ if (gSaveBlock1Ptr->location.mapGroup == 0x18 && gSaveBlock1Ptr->location.mapNum == 0x43)
+ {
+ // _08179A1A
+ if (FlagGet(SYS_BRAILLE_WAIT) != FALSE)
+ return FALSE;
+ if (FlagGet(2) == FALSE)
+ return FALSE;
+ if (FlagGet(3) == TRUE)
+ return FALSE;
+
+ for (i = 0; i < 36; i++)
+ {
+ if (gSaveBlock1Ptr->pos.x == gUnknown_085EFE74[i][0] && gSaveBlock1Ptr->pos.y == gUnknown_085EFE74[i][1])
+ {
+ if (i < 16)
+ VarSet(0x403B, (0x10000 << i | VarGet(0x403B) << 16) >> 16); // correct
+ else if (i < 32)
+ VarSet(0x403C, (0x10000 << (i - 16) | VarGet(0x403C) << 16) >> 16); // hmm?
+ else
+ VarSet(0x403D, (0x10000 << (i - 32) | VarGet(0x403D) << 16) >> 16); // hmm?
+
+ if (VarGet(0x403B) != 0xFFFF || VarGet(0x403C) != 0xFF || VarGet(0x403D) != 0xF)
+ return FALSE;
+
+ if (gSaveBlock1Ptr->pos.x == 8 && gSaveBlock1Ptr->pos.y == 21)
+ return TRUE;
+ else
+ return FALSE;
+ }
+ }
+ }
+ // TODO: Find what flags 2 and 3 are.
+ FlagSet(3);
+ FlagClear(2);
+ return FALSE;
+}
+#else
+__attribute__((naked))
+bool8 ShouldDoBrailleRegicePuzzle(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ ldr r4, =gSaveBlock1Ptr\n\
+ ldr r0, [r4]\n\
+ ldrh r1, [r0, 0x4]\n\
+ ldr r0, =0x00004318\n\
+ cmp r1, r0\n\
+ beq _08179A1A\n\
+ b _08179B5A\n\
+_08179A1A:\n\
+ ldr r0, =0x000008b1\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08179A28\n\
+ b _08179B5A\n\
+_08179A28:\n\
+ movs r0, 0x2\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08179A36\n\
+ b _08179B5A\n\
+_08179A36:\n\
+ movs r0, 0x3\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _08179A58\n\
+ b _08179B5A\n\
+ .pool\n\
+_08179A54:\n\
+ movs r0, 0x1\n\
+ b _08179B5C\n\
+_08179A58:\n\
+ movs r5, 0\n\
+ mov r8, r4\n\
+ ldr r4, =gUnknown_085EFE74\n\
+ adds r0, r4, 0x1\n\
+ mov r12, r0\n\
+ ldr r6, =0x0000403b\n\
+ ldr r1, =0x0000403c\n\
+ mov r9, r1\n\
+_08179A68:\n\
+ lsls r0, r5, 1\n\
+ adds r1, r0, r4\n\
+ add r0, r12\n\
+ ldrb r3, [r0]\n\
+ mov r7, r8\n\
+ ldr r2, [r7]\n\
+ movs r7, 0\n\
+ ldrsh r0, [r2, r7]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bne _08179B44\n\
+ movs r1, 0x2\n\
+ ldrsh r0, [r2, r1]\n\
+ cmp r0, r3\n\
+ bne _08179B44\n\
+ cmp r5, 0xF\n\
+ bhi _08179AB0\n\
+ adds r0, r6, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ lsls r1, r5\n\
+ orrs r1, r0\n\
+ lsrs r1, 16\n\
+ adds r0, r6, 0\n\
+ bl VarSet\n\
+ b _08179AF0\n\
+ .pool\n\
+_08179AB0:\n\
+ cmp r5, 0x1F\n\
+ bhi _08179AD2\n\
+ mov r0, r9\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ adds r2, r5, 0\n\
+ subs r2, 0x10\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ lsls r1, r2\n\
+ orrs r1, r0\n\
+ lsrs r1, 16\n\
+ mov r0, r9\n\
+ bl VarSet\n\
+ b _08179AF0\n\
+_08179AD2:\n\
+ ldr r4, =0x0000403d\n\
+ adds r0, r4, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ adds r2, r5, 0\n\
+ subs r2, 0x20\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ lsls r1, r2\n\
+ orrs r1, r0\n\
+ lsrs r1, 16\n\
+ adds r0, r4, 0\n\
+ bl VarSet\n\
+_08179AF0:\n\
+ ldr r0, =0x0000403b\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ ldr r0, =0x0000ffff\n\
+ cmp r4, r0\n\
+ bne _08179B5A\n\
+ ldr r0, =0x0000403c\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, r4\n\
+ bne _08179B5A\n\
+ ldr r0, =0x0000403d\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xF\n\
+ bne _08179B5A\n\
+ ldr r0, =gSaveBlock1Ptr\n\
+ ldr r0, [r0]\n\
+ ldr r1, [r0]\n\
+ ldr r0, =0x00150008\n\
+ cmp r1, r0\n\
+ beq _08179A54\n\
+ b _08179B5A\n\
+ .pool\n\
+_08179B44:\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x23\n\
+ bls _08179A68\n\
+ movs r0, 0x3\n\
+ bl FlagSet\n\
+ movs r0, 0x2\n\
+ bl FlagClear\n\
+_08179B5A:\n\
+ movs r0, 0\n\
+_08179B5C:\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");
+}
+#endif
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index 105b334f2..8996059f9 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -19,7 +19,6 @@ extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBattleMovePower;
extern u16 gTrainerBattleOpponent_A;
-u8 CountAliveMonsInBattle(u8);
bool8 ShouldGetStatBadgeBoost(u16 flagId, u8 bank);
extern const struct BattleMove gBattleMoves[];
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
new file mode 100755
index 000000000..3192e0e11
--- /dev/null
+++ b/src/clear_save_data_screen.c
@@ -0,0 +1,209 @@
+#include "global.h"
+#include "task.h"
+#include "menu.h"
+#include "text.h"
+#include "sound.h"
+#include "main.h"
+#include "save.h"
+#include "palette.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "text_window.h"
+#include "songs.h"
+
+extern u8 gText_ClearAllSaveData[];
+extern u8 gText_ClearingData[];
+
+extern u16 gUnknown_0860F074[];
+
+static void Task_DoClearSaveDataScreenYesNo(u8);
+static void Task_ClearSaveDataScreenYesNoChoice(u8);
+static void Task_ClearSaveData(u8);
+static bool8 SetupClearSaveDataScreen(void);
+static void CB2_FadeAndDoReset(void);
+static void InitClearSaveDataScreenWindows(void);
+
+static const struct BgTemplate sClearSaveBgTemplates[2] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ },
+};
+
+static const struct WindowTemplate sClearSaveTextWindow[] =
+{
+ {
+ .priority = 0,
+ .tilemapLeft = 3,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 11,
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate sClearSaveYesNo[] =
+{
+ {
+ .priority = 0,
+ .tilemapLeft = 3,
+ .tilemapTop = 2,
+ .width = 5,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 115,
+ }
+};
+
+void CB2_InitClearSaveDataScreen(void)
+{
+ if(SetupClearSaveDataScreen())
+ CreateTask(Task_DoClearSaveDataScreenYesNo, 0);
+}
+
+static void Task_DoClearSaveDataScreenYesNo(u8 taskId)
+{
+ SetWindowBorderStyle(0, 0, 2, 14);
+ PrintTextOnWindow(0, 1, gText_ClearAllSaveData, 0, 1, 0, 0);
+ CreateYesNoMenu(sClearSaveYesNo, 2, 14, 1);
+ gTasks[taskId].func = Task_ClearSaveDataScreenYesNoChoice;
+}
+
+static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId)
+{
+ switch(sub_8198C58())
+ {
+ case 0:
+ FillWindowPixelBuffer(0, 17);
+ PrintTextOnWindow(0, 1, gText_ClearingData, 0, 1, 0, 0);
+ gTasks[taskId].func = Task_ClearSaveData;
+ break;
+ case 1:
+ case -1:
+ PlaySE(SE_SELECT);
+ DestroyTask(taskId);
+ SetMainCallback2(CB2_FadeAndDoReset);
+ }
+}
+
+static void Task_ClearSaveData(u8 taskId)
+{
+ ClearSaveData();
+ DestroyTask(taskId);
+ SetMainCallback2(CB2_FadeAndDoReset);
+}
+
+static void MainCB(void)
+{
+ RunTasks();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB(void)
+{
+ TransferPlttBuffer();
+}
+
+static bool8 SetupClearSaveDataScreen(void)
+{
+ u16 i;
+
+ switch(gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 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();
+ gPlttBufferUnfaded[0] = 0x7fff;
+ gPlttBufferFaded[0] = 0x7fff;
+ gPlttBufferUnfaded[1] = 0x3945;
+ gPlttBufferFaded[1] = 0x3945;
+ for (i = 0; i < 0x10; i++)
+ ((u16 *)(VRAM + 0x20))[i] = 0x1111;
+
+ for (i = 0; i < 0x400; i++)
+ ((u16 *)(VRAM + 0xF000))[i] = 0x0001;
+ ResetTasks();
+ ResetSpriteData();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sClearSaveBgTemplates, ARRAY_COUNT(sClearSaveBgTemplates));
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(3);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ InitClearSaveDataScreenWindows();
+ BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, 0xFFFF);
+ EnableInterrupts(1);
+ SetVBlankCallback(VBlankCB);
+ gMain.state = 1;
+ break;
+ case 1:
+ UpdatePaletteFade();
+ if(!gPaletteFade.active)
+ {
+ SetMainCallback2(MainCB);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void CB2_FadeAndDoReset(void)
+{
+ switch(gMain.state)
+ {
+ case 0:
+ default:
+ BeginNormalPaletteFade(0x0000FFFF, 0, 0, 0x10, 0xFFFF);
+ gMain.state = 1;
+ break;
+ case 1:
+ UpdatePaletteFade();
+ if(!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ DoSoftReset();
+ }
+ }
+}
+
+static void InitClearSaveDataScreenWindows(void)
+{
+ InitWindows(sClearSaveTextWindow);
+ DeactivateAllTextPrinters();
+ FillWindowPixelBuffer(0, 0);
+ sub_80987D4(0, 0, 2, 224);
+ LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+}
diff --git a/src/coins.c b/src/coins.c
index 84a79f5f2..e1694b29c 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -4,14 +4,13 @@
#include "window.h"
#include "text_window.h"
#include "string_util.h"
+#include "menu.h"
+#include "international_string_util.h"
#define MAX_COINS 9999
EWRAM_DATA u8 sCoinsWindowId = 0;
-extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
-extern void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
-extern void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, s16 tileStart, s8 palette);
extern void sub_819746C(u8 windowId, bool8 copyToVram);
extern const u8 gText_Coins[];
@@ -55,7 +54,7 @@ void SetCoins(u16 coinAmount)
}
/* Can't match it lol
-bool8 AddCoins(u16 toAdd)
+bool8 GiveCoins(u16 toAdd)
{
u16 newAmount;
u16 ownedCoins = GetCoins();
diff --git a/src/decompress.c b/src/decompress.c
index 2863ff1f5..9210799ec 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -465,7 +465,7 @@ u32 sub_8034974(void* ptr)
return (ptr_[3] << 16) | (ptr_[2] << 8) | (ptr_[1]);
}
-bool8 LoadCompressedObjectPicUsingHeap(struct CompressedSpriteSheet* src)
+bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src)
{
struct SpriteSheet dest;
void* buffer;
diff --git a/src/decoration.c b/src/decoration.c
new file mode 100644
index 000000000..0179d36a1
--- /dev/null
+++ b/src/decoration.c
@@ -0,0 +1,2781 @@
+
+// Includes
+#include "global.h"
+#include "decompress.h"
+#include "malloc.h"
+#include "string_util.h"
+#include "international_string_util.h"
+#include "script.h"
+#include "task.h"
+#include "main.h"
+#include "palette.h"
+#include "songs.h"
+#include "overworld.h"
+#include "fieldmap.h"
+#include "metatile_behavior.h"
+#include "field_weather.h"
+#include "field_player_avatar.h"
+#include "field_camera.h"
+#include "field_screen.h"
+#include "field_map_obj.h"
+#include "list_menu.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "menu_indicators.h"
+#include "sound.h"
+#include "event_scripts.h"
+#include "event_data.h"
+#include "region_map.h"
+#include "player_pc.h"
+#include "strings.h"
+#include "tv.h"
+#include "secret_base.h"
+#include "tilesets.h"
+#include "item_icon.h"
+#include "trader.h"
+#include "map_object_constants.h"
+#include "decoration_inventory.h"
+#include "decoration.h"
+#include "graphics.h"
+
+// Static type declarations
+
+#define OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG 0xbe5
+#define OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG 0x008
+
+struct DecorPCBuffer {
+ struct ListMenuItem items[41];
+ u8 names[41][24];
+ u8 unk_520;
+ u8 unk_521;
+ u8 unk_522;
+};
+
+struct PlaceDecorationGraphicsDataBuffer {
+ /*0x000; 0x0203a190*/ const struct Decoration *decoration;
+ /*0x004; 0x0203a194*/ u16 tiles[0x40];
+ /*0x084; 0x0203a214*/ u8 image[0x800];
+ /*0x884; 0x0203aa14*/ u16 palette[16];
+};
+
+struct DecorRearrangementDataBuffer {
+ u8 idx;
+ u8 width;
+ u8 height;
+ u16 flagId;
+};
+
+// Static RAM declarations
+
+EWRAM_DATA u8 *gCurDecorInventoryItems = NULL;
+EWRAM_DATA u8 sSecretBasePCMenuCursorPos = 0;
+EWRAM_DATA u8 sCurDecorCatCount = 0;
+EWRAM_DATA u8 sSecretBaseItemsIndicesBuffer[16] = {};
+EWRAM_DATA u8 sPlayerRoomItemsIndicesBuffer[12] = {};
+EWRAM_DATA u16 sSecretBasePCSelectDecorLineNo = 0;
+EWRAM_DATA u16 sSecretBasePCSelectDecorPageNo = 0;
+EWRAM_DATA u8 gCurDecorationIndex = 0;
+EWRAM_DATA u8 sCurDecorationCategory = DECORCAT_DESK;
+EWRAM_DATA u32 filler_0203a174[2] = {};
+EWRAM_DATA struct DecorPCPointers gUnknown_0203A17C = {};
+EWRAM_DATA u8 sDecorMenuWindowIndices[4] = {};
+EWRAM_DATA struct DecorPCBuffer *sDecorPCBuffer = NULL;
+EWRAM_DATA struct PlaceDecorationGraphicsDataBuffer sPlaceDecorationGraphicsDataBuffer = {};
+EWRAM_DATA u16 sCurDecorMapX = 0;
+EWRAM_DATA u16 sCurDecorMapY = 0;
+EWRAM_DATA u8 sDecor_CameraSpriteObjectIdx1 = 0;
+EWRAM_DATA u8 sDecor_CameraSpriteObjectIdx2 = 0;
+EWRAM_DATA u8 sDecorationLastDirectionMoved = 0;
+EWRAM_DATA struct OamData sDecorSelectorOam = {};
+EWRAM_DATA struct DecorRearrangementDataBuffer sDecorRearrangementDataBuffer[16] = {};
+EWRAM_DATA u8 sCurDecorSelectedInRearrangement = 0;
+
+// Static ROM declarations
+
+void sub_8126B80(u8 taskId);
+void sub_8126C08(void);
+void SecretBasePC_Decorate(u8 taskId);
+void SecretBasePC_PutAway(u8 taskId);
+void SecretBasePC_Toss(u8 taskId);
+void sub_8126DA4(u8 taskId);
+void SecretBasePC_Cancel(u8 taskId);
+void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId);
+void sub_8126DFC(u8 taskId);
+void sub_8126E8C(u8 taskId);
+void sub_8126F68(u8 winid, u8 decorCat, u8 x, u8 y, bool8 flag, u8 speed);
+void sub_8127058(u8 *str, bool8 flag);
+void sub_8127088(u8 taskId);
+void sub_81270E8(u8 taskId);
+void sub_8127180(u8 taskId);
+void sub_812719C(u8 taskId);
+void sub_81271CC(u8 taskId);
+void sub_8127268(u8 taskId);
+void sub_8127454(u8 *dest, u16 decorId);
+void sub_8127480(u32 a0, bool8 flag, struct ListMenu *menu);
+void sub_81274A0(u8 a0, s32 a1, u8 a2);
+void sub_8127620(u8 taskId);
+void sub_812764C(u8 taskId);
+void sub_8127744(u32 a0);
+void sub_81277A8(void);
+bool8 sub_81277BC(u8 idx);
+bool8 sub_81277E8(u8 idx);
+void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId);
+void sub_812759C(u8 taskId);
+void sub_8127718(u8 decorCat);
+void sub_8127A30(u8 taskId);
+void sub_8127A8C(u8 taskId);
+void sub_8127F68(u8 taskId);
+void sub_8128060(u8 taskId);
+void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor);
+void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data);
+void sub_812826C(u8 taskId);
+void sub_81283BC(u8 taskId);
+void sub_8128414(u8 taskId);
+void sub_8128950(u8 taskId);
+void sub_81289D0(u8 taskId);
+void sub_81289F0(u8 taskId);
+void sub_8128AAC(u8 taskId);
+void sub_8128B80(u8 taskId);
+void sub_8128BA0(u8 taskId);
+void sub_8128BBC(u8 taskId);
+void c1_overworld_prev_quest(u8 taskId);
+void sub_8128CD4(void);
+void sub_8128DE0(void);
+void sub_8128FD8(u8 taskId);
+void sub_8129020(u8 taskId);
+void sub_81292D0(struct Sprite *sprite);
+void sub_81292E8(struct Sprite *sprite);
+u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor);
+const u8 *GetDecorationIconPicOrPalette(u16 decor, u8 mode);
+bool8 sub_81299AC(u8 taskId);
+void sub_8129ABC(u8 taskId);
+void sub_8129B34(u8 taskId);
+void sub_8129BCC(u8 taskId);
+void sub_8129BF8(u8 taskId);
+void sub_8129C74(u8 taskId);
+void sub_8129D64(u8 taskId);
+void sub_812A0E8(u8 taskId);
+void sub_812A1A0(u8 taskId);
+void sub_812A1C0(u8 taskId);
+void sub_812A1F0(u8 taskId);
+void sub_812A210(u8 taskId);
+void sub_812A22C(u8 taskId);
+void sub_812A25C(u8 taskId);
+void sub_812A334(void);
+void sub_812A36C(struct Sprite *sprite);
+void sub_812A39C(void);
+void sub_812A3C8(void);
+void sub_812A3D4(u8 taskId);
+void sub_812A458(u8 taskId);
+void sub_812A478(u8 taskId);
+
+// .rodata
+
+#include "data/decoration/tiles.h"
+#include "data/decoration/description.h"
+#include "data/decoration/header.h"
+
+const u8 *const sDecorCatNames[] = {
+ gText_Desk,
+ gText_Chair,
+ gText_Plant,
+ gText_Ornament,
+ gText_Mat,
+ gText_Poster,
+ gText_Doll,
+ gText_Cushion
+};
+
+const struct MenuAction sSecretBasePCMenuActions[] = {
+ {
+ gText_Decorate, {.void_u8=SecretBasePC_Decorate}
+ }, {
+ gText_PutAway, {.void_u8=SecretBasePC_PutAway}
+ }, {
+ gText_Toss2, {.void_u8=SecretBasePC_Toss}
+ }, {
+ gText_Cancel, {.void_u8=SecretBasePC_Cancel}
+ }
+};
+
+const u8 *const sSecretBasePCMenuItemDescriptions[] = {
+ gText_PutOutSelectedDecorItem,
+ gText_StoreChosenDecorInPC,
+ gText_ThrowAwayUnwantedDecors,
+ gText_GoBackPrevMenu
+};
+
+void (*const SecretBasePC_SelectedDecorActions[][2])(u8 taskId) = {
+ {
+ sub_8127F68, sub_8127A8C
+ }, {
+ sub_812A3D4, sub_8127A8C
+ }, {
+ sub_8133DA0, sub_8127A8C
+ }
+};
+
+const struct WindowTemplate gUnknown_085A6B90[4] = {
+ { 0, 1, 1, 18, 8, 15, 0x0001 },
+ { 0, 1, 1, 13, 18, 13, 0x0091 },
+ { 0, 17, 1, 12, 2, 15, 0x017b },
+ { 0, 16, 13, 13, 6, 15, 0x0193 }
+};
+
+const u16 gUnknown_085A6BB0[] = INCBIN_U16("graphics/decorations/unk_85a6bb0.gbapal");
+
+const struct ListMenuTemplate gUnknown_085A6BD0 = {
+ NULL,
+ sub_8127480,
+ sub_81274A0,
+ 0, 0,
+ 0, 0, 8, 0,
+ 9, 2, 1, 3, FALSE, 0, FALSE, 7
+};
+
+#include "data/decoration/icon.h"
+#include "data/decoration/tilemaps.h"
+
+const struct {
+ u8 shape;
+ u8 size;
+ u8 x;
+ u8 y;
+} gUnknown_085A7250[] = {
+ {0, 1, 0x78, 0x4e},
+ {1, 2, 0x80, 0x4e},
+ {1, 3, 0x90, 0x56},
+ {1, 3, 0x90, 0x46},
+ {0, 2, 0x80, 0x46},
+ {2, 2, 0x78, 0x46},
+ {2, 3, 0x80, 0x56},
+ {2, 3, 0x80, 0x36},
+ {0, 3, 0x90, 0x46},
+ {1, 3, 0x90, 0x46}
+};
+
+const union AnimCmd gUnknown_085A7278[] = {
+ ANIMCMD_FRAME(0, 0, FALSE, FALSE),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const sDecorSelectorAnims[] = {
+ gUnknown_085A7278
+};
+
+const struct SpriteFrameImage sDecorSelectorSpriteFrameImages = {
+ (const u8 *)&sPlaceDecorationGraphicsDataBuffer.image, 0x800
+};
+
+const struct SpriteTemplate sDecorSelectorSpriteTemplate = {
+ 0xffff,
+ OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG,
+ &sDecorSelectorOam,
+ sDecorSelectorAnims,
+ &sDecorSelectorSpriteFrameImages,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const struct SpriteTemplate sDecorWhilePlacingSpriteTemplate = {
+ 0x0000,
+ 0x0000,
+ &sDecorSelectorOam,
+ sDecorSelectorAnims,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const struct SpritePalette gUnknown_085A72BC = {
+ (const u16 *)&sPlaceDecorationGraphicsDataBuffer.palette, OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG
+};
+
+const struct YesNoFuncTable gUnknown_085A72C4 = {
+ sub_81289F0,
+ sub_8128FD8
+};
+
+const struct YesNoFuncTable gUnknown_085A72CC = {
+ sub_8128BA0,
+ sub_8128FD8
+};
+
+const struct YesNoFuncTable gUnknown_085A72D4[] = {
+ {
+ sub_81283BC,
+ sub_8128414
+ }, {
+ sub_8129BCC,
+ sub_8129BF8
+ }
+};
+
+const u8 gUnknown_085A72E4[] = {
+ 0x04, 0x04, 0x04, 0x04, 0x00, 0x03, 0x03, 0x00
+};
+
+const u8 gUnknown_085A72EC[] = {
+ 0x04, 0x04, 0x04, 0x04, 0x00, 0x04, 0x03, 0x00
+};
+
+const u16 gUnknown_085A72F4[] = {
+ 0x04, 0x08, 0x10, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40, 0x20
+};
+
+const u16 Unknown_085A7308[] = INCBIN_U16("graphics/decorations/unk_85a7308.gbapal");
+
+const u16 Unknown_085A7328[] = INCBIN_U16("graphics/decorations/unk_85a7328.gbapal");
+
+const struct YesNoFuncTable gUnknown_085A7348 = {
+ sub_812A1C0,
+ sub_8129B34
+};
+
+const struct YesNoFuncTable gUnknown_085A7350 = {
+ sub_812A210,
+ sub_8129B34
+};
+
+const u8 Unknown_085A7358[] = INCBIN_U8("graphics/misc/decoration_unk_85a7358.4bpp");
+
+const struct SpritePalette gUnknown_085A73D8 = {
+ Unknown_085A7308, OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG
+};
+
+const struct SpritePalette gUnknown_085A73E0 = {
+ Unknown_085A7328, OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG
+};
+
+const struct OamData Unknown_085A73E8 = {
+ .size = 1, .priority = 1
+};
+
+const union AnimCmd Unknown_085A73F0[] = {
+ ANIMCMD_FRAME(0, 0, 0),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const Unknown_085A73F8[] = {
+ Unknown_085A73F0
+};
+
+const struct SpriteFrameImage Unknown_085A73FC = {
+ Unknown_085A7358, 0x80
+};
+
+const struct SpriteTemplate gUnknown_085A7404 = {
+ 0xFFFF,
+ OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG,
+ &Unknown_085A73E8,
+ Unknown_085A73F8,
+ &Unknown_085A73FC,
+ gDummySpriteAffineAnimTable,
+ sub_812A36C
+};
+
+const struct YesNoFuncTable gUnknown_085A741C = {
+ sub_812A478,
+ sub_8127A30
+};
+
+// .text
+
+void sub_8126968(void)
+{
+ if (sCurDecorationCategory < 8)
+ {
+ gCurDecorInventoryItems = gDecorationInventories[sCurDecorationCategory].items;
+ }
+ if (gUnknown_0203A17C.isPlayerRoom == FALSE)
+ {
+ gUnknown_0203A17C.items = gSaveBlock1Ptr->secretBases[0].decorations;
+ gUnknown_0203A17C.pos = gSaveBlock1Ptr->secretBases[0].decorationPos;
+ }
+ if (gUnknown_0203A17C.isPlayerRoom == TRUE)
+ {
+ gUnknown_0203A17C.items = gSaveBlock1Ptr->playerRoomDecor;
+ gUnknown_0203A17C.pos = gSaveBlock1Ptr->playerRoomDecorPos;
+ }
+}
+
+u8 sub_81269D4(u8 idx)
+{
+ u8 *winidx;
+ struct WindowTemplate template;
+
+ winidx = &sDecorMenuWindowIndices[idx];
+ if (idx == 0)
+ {
+ template = gUnknown_085A6B90[0];
+ template.width = GetMaxWidthInMenuTable(sSecretBasePCMenuActions, 4);
+ if (template.width > 18)
+ {
+ template.width = 18;
+ }
+ *winidx = AddWindow(&template);
+ }
+ else
+ {
+ *winidx = AddWindow(&gUnknown_085A6B90[idx]);
+ }
+ SetWindowBorderStyle(*winidx, 0, 0x214, 0xe);
+ schedule_bg_copy_tilemap_to_vram(0);
+ return *winidx;
+}
+
+void sub_8126A58(u8 idx)
+{
+ sub_8198070(sDecorMenuWindowIndices[idx], FALSE);
+ ClearWindowTilemap(sDecorMenuWindowIndices[idx]);
+ RemoveWindow(sDecorMenuWindowIndices[idx]);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+void sub_8126A88(void)
+{
+ u8 idx;
+
+ idx = sub_81269D4(0);
+ PrintMenuTable(idx, 4, sSecretBasePCMenuActions);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(idx, 4, sSecretBasePCMenuCursorPos);
+}
+
+void sub_8126ABC(void)
+{
+ sSecretBasePCMenuCursorPos = 0;
+ ScriptContext2_Enable();
+ sub_8126A88();
+ sub_8126C08();
+}
+
+void sub_8126AD8(u8 taskId)
+{
+ sub_8126ABC();
+ gUnknown_0203A17C.items = gSaveBlock1Ptr->secretBases[0].decorations;
+ gUnknown_0203A17C.pos = gSaveBlock1Ptr->secretBases[0].decorationPos;
+ gUnknown_0203A17C.size = sizeof(gSaveBlock1Ptr->secretBases[0].decorations);
+ gUnknown_0203A17C.isPlayerRoom = FALSE;
+ gTasks[taskId].func = sub_8126B80;
+}
+
+void sub_8126B2C(u8 taskId)
+{
+ sub_8126ABC();
+ gUnknown_0203A17C.items = gSaveBlock1Ptr->playerRoomDecor;
+ gUnknown_0203A17C.pos = gSaveBlock1Ptr->playerRoomDecorPos;
+ gUnknown_0203A17C.size = sizeof(gSaveBlock1Ptr->playerRoomDecor);
+ gUnknown_0203A17C.isPlayerRoom = TRUE;
+ gTasks[taskId].func = sub_8126B80;
+}
+
+void sub_8126B80(u8 taskId)
+{
+ u8 menuPos;
+
+ if (!gPaletteFade.active)
+ {
+ menuPos = GetMenuCursorPos();
+ switch (ProcessMenuInput())
+ {
+ default:
+ PlaySE(SE_SELECT);
+ sSecretBasePCMenuActions[sSecretBasePCMenuCursorPos].func.void_u8(taskId);
+ break;
+ case -2:
+ sSecretBasePCMenuCursorPos = GetMenuCursorPos();
+ if ((s8)menuPos != sSecretBasePCMenuCursorPos)
+ {
+ sub_8126C08();
+ }
+ break;
+ case -1:
+ PlaySE(SE_SELECT);
+ SecretBasePC_Cancel(taskId);
+ break;
+ }
+ }
+}
+
+void sub_8126C08(void)
+{
+ FillWindowPixelBuffer(0, 0x11);
+ AddTextPrinterParametrized(0, 1, sSecretBasePCMenuItemDescriptions[sSecretBasePCMenuCursorPos], 0, 0, 2, 1, 3);
+}
+
+void SecretBasePC_Decorate(u8 taskId)
+{
+ if (CountDecorations() == 0)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_NoDecorations);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8126DA4);
+ }
+ else
+ {
+ gTasks[taskId].data[11] = 0;
+ sCurDecorationCategory = DECORCAT_DESK;
+ SecretBasePC_PrepMenuForSelectingStoredDecors(taskId);
+ }
+}
+
+void SecretBasePC_PutAway(u8 taskId)
+{
+ if (!sub_81299AC(taskId))
+ {
+ StringExpandPlaceholders(gStringVar4, gText_NoDecorationsInUse);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8126DA4);
+ }
+ else
+ {
+ sub_8126A58(0);
+ sub_8197434(0, 0);
+ fade_screen(1, 0);
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = sub_8129ABC;
+ }
+}
+
+void SecretBasePC_Toss(u8 taskId)
+{
+ if (CountDecorations() == 0)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_NoDecorations);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8126DA4);
+ }
+ else
+ {
+ gTasks[taskId].data[11] = 1;
+ sCurDecorationCategory = DECORCAT_DESK;
+ SecretBasePC_PrepMenuForSelectingStoredDecors(taskId);
+ }
+}
+
+void SecretBasePC_Cancel(u8 taskId)
+{
+ sub_8126A58(0);
+ if (!gUnknown_0203A17C.isPlayerRoom)
+ {
+ ScriptContext1_SetupScript(gUnknown_0823B4E8);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ sub_816B060(taskId);
+ }
+}
+
+void sub_8126DA4(u8 taskId)
+{
+ sub_8126C08();
+ gTasks[taskId].func = sub_8126B80;
+}
+
+void SecretBasePC_PrepMenuForSelectingStoredDecors(u8 taskId)
+{
+ LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20);
+ sub_8197434(0, 0);
+ sub_8126A58(0);
+ sub_8126DFC(taskId);
+}
+
+void sub_8126DFC(u8 taskId)
+{
+ u8 winIdx;
+
+ winIdx = sub_81269D4(1);
+ sub_8126E8C(taskId);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(winIdx, 9, sCurDecorationCategory);
+ gTasks[taskId].func = sub_8127088;
+}
+
+void sub_8126E44(u8 taskId)
+{
+ FillWindowPixelBuffer(sDecorMenuWindowIndices[1], 0x11);
+ sub_8126E8C(taskId);
+ InitMenuInUpperLeftCornerPlaySoundWhenAPressed(sDecorMenuWindowIndices[1], 9, sCurDecorationCategory);
+ gTasks[taskId].func = sub_8127088;
+}
+
+void sub_8126E8C(u8 taskId)
+{
+ s16 *data;
+ u8 r5;
+ bool8 r8;
+ u8 i;
+ bool8 fl;
+
+ data = gTasks[taskId].data;
+ r5 = sDecorMenuWindowIndices[1];
+ fl = gUnknown_0203A17C.isPlayerRoom;
+ r8 = FALSE;
+ if (fl == TRUE && data[11] == 0)
+ {
+ r8 = TRUE;
+ }
+ for (i = 0; i < 8; i ++)
+ {
+ if (r8 == TRUE && i != DECORCAT_DOLL && i != DECORCAT_CUSHION)
+ {
+ sub_8126F68(r5, i, 8, i << 4, TRUE, 0xFF);
+ }
+ else
+ {
+ sub_8126F68(r5, i, 8, i << 4, FALSE, 0xFF);
+ }
+ }
+ PrintTextOnWindow(r5, 1, gTasks[taskId].data[11] == 2 ? gText_Exit : gText_Cancel, 8, (i << 4) + 1, 0, 0);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+void sub_8126F68(u8 winid, u8 decorCat, u8 x, u8 y, bool8 flag, u8 speed)
+{
+ u8 width;
+ u8 *strbuf;
+
+ width = x == 8 ? 0x68 : 0x60;
+ y ++;
+ sub_8127058(gStringVar4, flag);
+ strbuf = StringLength(gStringVar4) + gStringVar4;
+ StringCopy(strbuf, sDecorCatNames[decorCat]);
+ PrintTextOnWindow(winid, 1, gStringVar4, x, y, speed, NULL);
+ strbuf = ConvertIntToDecimalStringN(strbuf, CountDecorationCategoryN(decorCat), STR_CONV_MODE_RIGHT_ALIGN, 2);
+ *strbuf++ = CHAR_SLASH;
+ ConvertIntToDecimalStringN(strbuf, gDecorationInventories[decorCat].size, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ x = GetStringRightAlignXOffset(1, gStringVar4, width);
+ PrintTextOnWindow(winid, 1, gStringVar4, x, y, speed, NULL);
+}
+
+void sub_8127058(u8 *str, bool8 flag)
+{
+ StringCopy(str, gText_Color161Shadow161);
+ if (flag == TRUE)
+ {
+ str[2] = 0x04; // RED
+ str[5] = 0x05; // LIGHT_RED
+ }
+ else
+ {
+ str[2] = 0x02; // DARK_GREY
+ str[5] = 0x03; // LIGHT_GREY
+ }
+}
+
+void sub_8127088(u8 taskId)
+{
+ s8 input;
+
+ if (!gPaletteFade.active)
+ {
+ input = ProcessMenuInput();
+ switch (input)
+ {
+ case -1:
+ case 8:
+ PlaySE(SE_SELECT);
+ sub_812719C(taskId);
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sCurDecorationCategory = input;
+ sub_81270E8(taskId);
+ break;
+ }
+ }
+}
+
+void sub_81270E8(u8 taskId)
+{
+ sCurDecorCatCount = CountDecorationCategoryN(sCurDecorationCategory);
+ if (sCurDecorCatCount != 0)
+ {
+ CondenseDecorationCategoryN(sCurDecorationCategory);
+ gCurDecorInventoryItems = gDecorationInventories[sCurDecorationCategory].items;
+ IdentifyOwnedDecorationsCurrentlyInUse(taskId);
+ sSecretBasePCSelectDecorPageNo = 0;
+ sSecretBasePCSelectDecorLineNo = 0;
+ gTasks[taskId].func = sub_8127620;
+ }
+ else
+ {
+ sub_8126A58(1);
+ StringExpandPlaceholders(gStringVar4, gText_NoDecorations);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8127180);
+ }
+}
+
+void sub_8127180(u8 taskId)
+{
+ sub_8197434(0, 0);
+ sub_8126DFC(taskId);
+}
+
+void sub_812719C(u8 taskId)
+{
+ if (gTasks[taskId].data[11] != 2)
+ {
+ sub_81271CC(taskId);
+ }
+ else
+ {
+ sub_8127268(taskId);
+ }
+}
+
+void sub_81271CC(u8 taskId)
+{
+ sub_8126A58(1);
+ sub_8126A88();
+ sub_81973C4(0, 0);
+ sub_8126C08();
+ gTasks[taskId].func = sub_8126B80;
+}
+
+void sub_8127208(u8 taskId)
+{
+ LoadPalette(gUnknown_085A6BB0, 0xd0, 0x20);
+ sub_8197434(0, 0);
+ gTasks[taskId].data[11] = 2;
+ sCurDecorationCategory = DECORCAT_DESK;
+ sub_8126DFC(taskId);
+}
+
+void sub_8127250(u8 *dest, u8 decorCat)
+{
+ StringCopy(dest, sDecorCatNames[decorCat]);
+}
+
+void sub_8127268(u8 taskId)
+{
+ sub_8126A58(1);
+ sub_8133E1C(taskId);
+}
+
+void sub_8127284(void)
+{
+ sDecorPCBuffer->unk_520 = sCurDecorCatCount + 1;
+ if (sDecorPCBuffer->unk_520 > 8)
+ {
+ sDecorPCBuffer->unk_521 = 8;
+ }
+ else
+ {
+ sDecorPCBuffer->unk_521 = sDecorPCBuffer->unk_520;
+ }
+}
+
+void sub_81272C8(void)
+{
+ sub_812225C(&sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo, sDecorPCBuffer->unk_521, sDecorPCBuffer->unk_520);
+}
+
+void sub_81272F8(void)
+{
+ sub_8122298(&sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo, sDecorPCBuffer->unk_521, sDecorPCBuffer->unk_520, 8);
+}
+
+void sub_8127330(u8 taskId)
+{
+ s16 *data;
+ u16 i;
+
+ data = gTasks[taskId].data;
+ if ((sCurDecorationCategory < DECORCAT_DOLL || sCurDecorationCategory > DECORCAT_CUSHION) && gUnknown_0203A17C.isPlayerRoom == TRUE && data[11] == 0)
+ {
+ sub_8127058(gStringVar1, TRUE);
+ }
+ else
+ {
+ sub_8127058(gStringVar1, FALSE);
+ }
+ for (i = 0; i < sDecorPCBuffer->unk_520 - 1; i ++)
+ {
+ sub_8127454(sDecorPCBuffer->names[i], gCurDecorInventoryItems[i]);
+ sDecorPCBuffer->items[i].unk_00 = sDecorPCBuffer->names[i];
+ sDecorPCBuffer->items[i].unk_04 = i;
+ }
+ StringCopy(sDecorPCBuffer->names[i], gText_Cancel);
+ sDecorPCBuffer->items[i].unk_00 = sDecorPCBuffer->names[i];
+ sDecorPCBuffer->items[i].unk_04 = -2;
+ gUnknown_03006310 = gUnknown_085A6BD0;
+ gUnknown_03006310.unk_10 = sDecorMenuWindowIndices[1];
+ gUnknown_03006310.unk_0c = sDecorPCBuffer->unk_520;
+ gUnknown_03006310.unk_00 = sDecorPCBuffer->items;
+ gUnknown_03006310.unk_0e = sDecorPCBuffer->unk_521;
+}
+
+void sub_8127454(u8 *dest, u16 decorId)
+{
+ StringCopy(dest, gStringVar1);
+ StringAppend(dest, gDecorations[decorId].name);
+}
+
+void sub_8127480(u32 a0, bool8 flag, struct ListMenu *menu)
+{
+ if (flag != TRUE)
+ {
+ PlaySE(SE_SELECT);
+ }
+ sub_8127744(a0);
+}
+
+void sub_81274A0(u8 a0, s32 a1, u8 a2)
+{
+ if (a1 != -2)
+ {
+ if (sub_81277BC(a1 + 1) == TRUE)
+ {
+ blit_move_info_icon(a0, 0x18, 0x5c, a2 + 2);
+ }
+ else if (sub_81277E8(a1 + 1) == TRUE)
+ {
+ blit_move_info_icon(a0, 0x19, 0x5c, a2 + 2);
+ }
+ }
+}
+
+void sub_8127500(void)
+{
+ if (sDecorPCBuffer->unk_522 == 0xFF)
+ {
+ sDecorPCBuffer->unk_522 = AddScrollIndicatorArrowPairParametrized(0x02, 0x3c, 0x0c, 0x94, sDecorPCBuffer->unk_520 - sDecorPCBuffer->unk_521, 0x6e, 0x6e, &sSecretBasePCSelectDecorPageNo);
+ }
+}
+
+void sub_8127554(void)
+{
+ if (sDecorPCBuffer->unk_522 != 0xFF)
+ {
+ RemoveScrollIndicatorArrowPair(sDecorPCBuffer->unk_522);
+ sDecorPCBuffer->unk_522 = 0xFF;
+ }
+}
+
+void sub_8127580(u8 taskId)
+{
+ sub_81269D4(1);
+ sub_812759C(taskId);
+}
+
+void sub_812759C(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ sub_81269D4(3);
+ sub_8127718(sCurDecorationCategory);
+ sDecorPCBuffer = calloc(1, sizeof(struct DecorPCBuffer));
+ sDecorPCBuffer->unk_522 = 0xFF;
+ sub_8127284();
+ sub_81272C8();
+ sub_81272F8();
+ sub_8127330(taskId);
+ data[13] = ListMenuInit(&gUnknown_03006310, sSecretBasePCSelectDecorPageNo, sSecretBasePCSelectDecorLineNo);
+ sub_8127500();
+}
+
+void sub_8127620(u8 taskId)
+{
+ sub_812759C(taskId);
+ gTasks[taskId].func = sub_812764C;
+}
+
+void sub_812764C(u8 taskId)
+{
+ s16 *data;
+ s32 input;
+
+ data = gTasks[taskId].data;
+ if (!gPaletteFade.active)
+ {
+ input = ListMenuHandleInput(data[13]);
+ get_coro_args_x18_x1A(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo);
+ switch (input)
+ {
+ case -1:
+ break;
+ case -2:
+ PlaySE(SE_SELECT);
+ SecretBasePC_SelectedDecorActions[data[11]][1](taskId);
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ gCurDecorationIndex = input;
+ sub_8127554();
+ sub_81AE6C8(data[13], &sSecretBasePCSelectDecorPageNo, &sSecretBasePCSelectDecorLineNo);
+ sub_8126A58(1);
+ sub_81277A8();
+ free(sDecorPCBuffer);
+ SecretBasePC_SelectedDecorActions[data[11]][0](taskId);
+ break;
+ }
+ }
+}
+
+void sub_8127718(u8 decorCat)
+{
+ sub_8126F68(sub_81269D4(2), decorCat, 0, 0, 0, 0);
+}
+
+void sub_8127744(u32 a0)
+{
+ u8 winidx;
+ const u8 *txt;
+
+ winidx = sDecorMenuWindowIndices[3];
+ FillWindowPixelBuffer(winidx, 0x11);
+ if (a0 >= sCurDecorCatCount)
+ {
+ txt = gText_GoBackPrevMenu;
+ }
+ else
+ {
+ txt = gDecorations[gCurDecorInventoryItems[a0]].description;
+ }
+ PrintTextOnWindow(winidx, 1, txt, 0, 1, 0, 0);
+}
+
+void sub_81277A8(void)
+{
+ sub_8126A58(3);
+ sub_8126A58(2);
+}
+
+bool8 sub_81277BC(u8 idx)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ if (sSecretBaseItemsIndicesBuffer[i] == idx)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 sub_81277E8(u8 idx)
+{
+ u8 i;
+
+ for (i = 0; i < 12; i ++)
+ {
+ if (sPlayerRoomItemsIndicesBuffer[i] == idx)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void IdentifyOwnedDecorationsCurrentlyInUseInternal(u8 taskId)
+{
+ u16 i;
+ u16 j;
+ u16 k;
+ u16 cnt;
+
+ cnt = 0;
+ memset(sSecretBaseItemsIndicesBuffer, 0, 16);
+ memset(sPlayerRoomItemsIndicesBuffer, 0, 12);
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->secretBases[0].decorations[i] != DECOR_NONE)
+ {
+ for (j = 0; j < gDecorationInventories[sCurDecorationCategory].size; j ++)
+ {
+ if (gCurDecorInventoryItems[j] == gSaveBlock1Ptr->secretBases[0].decorations[i])
+ {
+ for (k = 0; k < cnt && sSecretBaseItemsIndicesBuffer[k] != j + 1; k ++);
+ if (k == cnt)
+ {
+ sSecretBaseItemsIndicesBuffer[cnt] = j + 1;
+ cnt ++;
+ break;
+ }
+ }
+ }
+ }
+ }
+ cnt = 0;
+ for (i = 0; i < 12; i ++)
+ {
+ if (gSaveBlock1Ptr->playerRoomDecor[i] != DECOR_NONE)
+ {
+ for (j = 0; j < gDecorationInventories[sCurDecorationCategory].size; j ++)
+ {
+ if (gCurDecorInventoryItems[j] == gSaveBlock1Ptr->playerRoomDecor[i] && sub_81277BC(j + 1) != TRUE)
+ {
+ for (k = 0; k < cnt && sPlayerRoomItemsIndicesBuffer[k] != j + 1; k ++);
+ if (k == cnt)
+ {
+ sPlayerRoomItemsIndicesBuffer[cnt] = j + 1;
+ cnt ++;
+ break;
+ }
+ }
+ }
+ }
+ }
+}
+
+void IdentifyOwnedDecorationsCurrentlyInUse(u8 taskId)
+{
+ IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
+}
+
+bool8 IsSelectedDecorInThePC(void)
+{
+ u16 i;
+ for (i = 0; i < 16; i ++)
+ {
+ if (sSecretBaseItemsIndicesBuffer[i] == sSecretBasePCSelectDecorPageNo + sSecretBasePCSelectDecorLineNo + 1)
+ {
+ return FALSE;
+ }
+ if (i < 12 && sPlayerRoomItemsIndicesBuffer[i] == sSecretBasePCSelectDecorPageNo + sSecretBasePCSelectDecorLineNo + 1)
+ {
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+void sub_8127A14(u8 taskId)
+{
+ sub_81269D4(1);
+ sub_8127620(taskId);
+}
+
+void sub_8127A30(u8 taskId)
+{
+ sub_8197434(0, 0);
+ gTasks[taskId].func = sub_8127A14;
+}
+
+void sub_8127A5C(u8 taskId)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_8197434(0, 0);
+ sub_81269D4(1);
+ sub_8127620(taskId);
+ }
+}
+
+void sub_8127A8C(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ sub_8127554();
+ sub_81277A8();
+ sub_81AE6C8(data[13], NULL, NULL);
+ free(sDecorPCBuffer);
+ sub_8126E44(taskId);
+}
+
+void sub_8127ACC(u8 taskId)
+{
+ gTasks[taskId].data[3] = gSaveBlock1Ptr->pos.x;
+ gTasks[taskId].data[4] = gSaveBlock1Ptr->pos.y;
+ PlayerGetDestCoords(&gTasks[taskId].data[0], &gTasks[taskId].data[1]);
+}
+
+void sub_8127B04(u8 taskId)
+{
+ DrawWholeMapView();
+ Overworld_SetWarpDestination(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]);
+ warp_in();
+}
+
+u16 sub_8127B54(u8 decor, u8 a1)
+{
+ u16 resp;
+
+ resp = -1;
+ switch (decor)
+ {
+ case DECOR_STAND:
+ resp = gUnknown_085A72E4[a1] << 12;
+ return resp;
+ case DECOR_SLIDE:
+ resp = gUnknown_085A72EC[a1] << 12;
+ return resp;
+ default:
+ return resp;
+ }
+}
+
+void sub_8127B90(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decor)
+{
+ u16 i;
+ u16 j;
+ u16 behavior;
+ u16 flags;
+ u16 v0;
+ u16 v1;
+ s16 decLeft;
+ s16 decBottom;
+
+ for (i = 0; i < decHeight; i ++)
+ {
+ decBottom = mapY - decHeight + 1 + i;
+ for (j = 0; j < decWidth; j ++)
+ {
+ decLeft = mapX + j;
+ behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decor].tiles[i * decWidth + j]);
+ if (MetatileBehavior_IsMB_B9(behavior) == TRUE || (gDecorations[decor].permission != DECORPERM_PASS_FLOOR && (behavior >> 12)))
+ {
+ flags = 0xc00;
+ }
+ else
+ {
+ flags = 0x000;
+ }
+ if (gDecorations[decor].permission != DECORPERM_NA_WALL && MetatileBehavior_IsMB_B7(MapGridGetMetatileBehaviorAt(decLeft, decBottom)) == TRUE)
+ {
+ v0 = 1;
+ }
+ else
+ {
+ v0 = 0;
+ }
+ v1 = sub_8127B54(gDecorations[decor].id, i * decWidth + j);
+ if (v1 != 0xFFFF)
+ {
+ MapGridSetMetatileEntryAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags | v1);
+ }
+ else
+ {
+ MapGridSetMetatileIdAt(decLeft, decBottom, (gDecorations[decor].tiles[i * decWidth + j] + (0x200 | v0)) | flags);
+ }
+ }
+ }
+}
+
+void sub_8127D38(u16 mapX, u16 mapY, u16 decor)
+{
+ switch (gDecorations[decor].shape)
+ {
+ case DECORSHAPE_1x1:
+ sub_8127B90(mapX, mapY, 1, 1, decor);
+ break;
+ case DECORSHAPE_2x1:
+ sub_8127B90(mapX, mapY, 2, 1, decor);
+ break;
+ case DECORSHAPE_3x1: // unused
+ sub_8127B90(mapX, mapY, 3, 1, decor);
+ break;
+ case DECORSHAPE_4x2:
+ sub_8127B90(mapX, mapY, 4, 2, decor);
+ break;
+ case DECORSHAPE_2x2:
+ sub_8127B90(mapX, mapY, 2, 2, decor);
+ break;
+ case DECORSHAPE_1x2:
+ sub_8127B90(mapX, mapY, 1, 2, decor);
+ break;
+ case DECORSHAPE_1x3: // unused
+ sub_8127B90(mapX, mapY, 1, 3, decor);
+ break;
+ case DECORSHAPE_2x4:
+ sub_8127B90(mapX, mapY, 2, 4, decor);
+ break;
+ case DECORSHAPE_3x3:
+ sub_8127B90(mapX, mapY, 3, 3, decor);
+ break;
+ case DECORSHAPE_3x2:
+ sub_8127B90(mapX, mapY, 3, 2, decor);
+ break;
+ }
+}
+
+void sub_8127E18(void)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < 14; i ++)
+ {
+ if (FlagGet(0xAE + i) == TRUE)
+ {
+ FlagClear(0xAE + i);
+ for (j = 0; j < gMapHeader.events->mapObjectCount; j ++)
+ {
+ if (gMapHeader.events->mapObjects[j].flagId == 0xAE + i)
+ {
+ break;
+ }
+ }
+ VarSet(0x3F20 + gMapHeader.events->mapObjects[j].graphicsId, sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0]);
+ gSpecialVar_0x8005 = gMapHeader.events->mapObjects[j].localId;
+ gSpecialVar_0x8006 = sCurDecorMapX;
+ gSpecialVar_0x8007 = sCurDecorMapY;
+ show_sprite(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ sub_808EBA8(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
+ sub_808F254(gSpecialVar_0x8005, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ break;
+ }
+ }
+}
+
+bool8 sub_8127F38(void)
+{
+ u16 i;
+
+ for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ {
+ if (gUnknown_0203A17C.items[i] == DECOR_NONE)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void sub_8127F68(u8 taskId)
+{
+ if (gUnknown_0203A17C.isPlayerRoom == TRUE && sCurDecorationCategory != DECORCAT_DOLL && sCurDecorationCategory != DECORCAT_CUSHION)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_CantPlaceInRoom);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+ }
+ else if (IsSelectedDecorInThePC() == TRUE)
+ {
+ if (sub_8127F38() == TRUE)
+ {
+ fade_screen(1, 0);
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = sub_8128060;
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203A17C.size, STR_CONV_MODE_RIGHT_ALIGN, 2);
+ if (gUnknown_0203A17C.isPlayerRoom == FALSE) {
+ StringExpandPlaceholders(gStringVar4, gText_NoMoreDecorations);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gText_NoMoreDecorations2);
+ }
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+ }
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gText_InUseAlready);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+ }
+}
+
+void sub_8128060(u8 taskId)
+{
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (!gPaletteFade.active)
+ {
+ sub_8127ACC(taskId);
+ gTasks[taskId].data[2] = 1;
+ }
+ break;
+ case 1:
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ ConfigureCameraObjectForPlacingDecoration(&sPlaceDecorationGraphicsDataBuffer, gCurDecorInventoryItems[gCurDecorationIndex]);
+ sub_812826C(taskId);
+ SetUpPlacingDecorationPlayerAvatar(taskId, &sPlaceDecorationGraphicsDataBuffer);
+ pal_fill_black();
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ gTasks[taskId].data[2] = 2;
+ break;
+ case 2:
+ if (sub_80ABDFC() == TRUE)
+ {
+ gTasks[taskId].data[12] = 0;
+ sub_8128FD8(taskId);
+ }
+ break;
+ }
+}
+
+void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor)
+{
+ sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.unk4].data0;
+ gUnknown_03005DD0.unk4 = gpu_pal_decompress_alloc_tag_and_upload(data, decor);
+ gSprites[gUnknown_03005DD0.unk4].oam.priority = 1;
+ gSprites[gUnknown_03005DD0.unk4].callback = sub_81292D0;
+ gSprites[gUnknown_03005DD0.unk4].pos1.x = gUnknown_085A7250[data->decoration->shape].x;
+ gSprites[gUnknown_03005DD0.unk4].pos1.y = gUnknown_085A7250[data->decoration->shape].y;
+}
+
+void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct PlaceDecorationGraphicsDataBuffer *data)
+{
+ u8 v0;
+
+ v0 = 16 * (u8)gTasks[taskId].data[5] + gUnknown_085A7250[data->decoration->shape].x - 8 * ((u8)gTasks[taskId].data[5] - 1);
+ if (data->decoration->shape == DECORSHAPE_3x1 || data->decoration->shape == DECORSHAPE_3x3 || data->decoration->shape == DECORSHAPE_3x2)
+ {
+ v0 -= 8;
+ }
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, v0, 0x48, 0);
+ }
+ else
+ {
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, v0, 0x48, 0);
+ }
+ gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
+ DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
+ sDecor_CameraSpriteObjectIdx1 = gUnknown_03005DD0.unk4;
+}
+
+void sub_812826C(u8 taskId)
+{
+ switch (gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].shape)
+ {
+ case DECORSHAPE_1x1:
+ gTasks[taskId].data[5] = 1;
+ gTasks[taskId].data[6] = 1;
+ break;
+ case DECORSHAPE_2x1:
+ gTasks[taskId].data[5] = 2;
+ gTasks[taskId].data[6] = 1;
+ break;
+ case DECORSHAPE_3x1:
+ gTasks[taskId].data[5] = 3;
+ gTasks[taskId].data[6] = 1;
+ break;
+ case DECORSHAPE_4x2:
+ gTasks[taskId].data[5] = 4;
+ gTasks[taskId].data[6] = 2;
+ break;
+ case DECORSHAPE_2x2:
+ gTasks[taskId].data[5] = 2;
+ gTasks[taskId].data[6] = 2;
+ break;
+ case DECORSHAPE_1x2:
+ gTasks[taskId].data[5] = 1;
+ gTasks[taskId].data[6] = 2;
+ break;
+ case DECORSHAPE_1x3:
+ gTasks[taskId].data[5] = 1;
+ gTasks[taskId].data[6] = 3;
+ gTasks[taskId].data[1]++;
+ break;
+ case DECORSHAPE_2x4:
+ gTasks[taskId].data[5] = 2;
+ gTasks[taskId].data[6] = 4;
+ break;
+ case DECORSHAPE_3x3:
+ gTasks[taskId].data[5] = 3;
+ gTasks[taskId].data[6] = 3;
+ break;
+ case DECORSHAPE_3x2:
+ gTasks[taskId].data[5] = 3;
+ gTasks[taskId].data[6] = 2;
+ break;
+ }
+}
+
+void sub_81283BC(u8 taskId)
+{
+ gTasks[taskId].data[10] = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 1;
+ gSprites[sDecor_CameraSpriteObjectIdx2].data7 = 1;
+ sub_8128DE0();
+ sub_8128950(taskId);
+}
+
+void sub_8128414(u8 taskId)
+{
+ gTasks[taskId].data[10] = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 1;
+ gSprites[sDecor_CameraSpriteObjectIdx2].data7 = 1;
+ sub_8128DE0();
+ StringExpandPlaceholders(gStringVar4, gText_CancelDecorating);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8128B80);
+}
+
+bool8 sub_8128484(u8 behaviorAt, u16 behaviorBy)
+{
+ if (MetatileBehavior_IsMB_B3(behaviorAt) != TRUE || behaviorBy != 0)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_81284AC(u8 taskId, s16 x, s16 y, u16 decor)
+{
+ if (x == gTasks[taskId].data[3] + 7 && y == gTasks[taskId].data[4] + 7 && decor != DECOR_NONE)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_81284F4(u16 behaviorAt, const struct Decoration *decoration)
+{
+ if (MetatileBehavior_IsMB_B3(behaviorAt) != TRUE)
+ {
+ if (decoration->id == DECOR_SOLID_BOARD && MetatileBehavior_IsMB_C2(behaviorAt) == TRUE)
+ {
+ return TRUE;
+ }
+ if (MetatileBehavior_IsNormal(behaviorAt))
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 sub_812853C(u8 taskId, const struct Decoration *decoration)
+{
+ u8 i;
+ u8 j;
+ u8 behaviorAt;
+ u16 behaviorBy;
+ u8 mapY;
+ u8 mapX;
+ s16 curY;
+ s16 curX;
+ mapY = gTasks[taskId].data[6];
+ mapX = gTasks[taskId].data[5];
+
+ switch (decoration->permission)
+ {
+ case DECORPERM_SOLID_FLOOR:
+ case DECORPERM_PASS_FLOOR:
+ for (i=0; i<mapY; i++)
+ {
+ curY = gTasks[taskId].data[1] - i;
+ for (j=0; j<mapX; j++)
+ {
+ curX = gTasks[taskId].data[0] + j;
+ behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ if (!sub_81284F4(behaviorAt, decoration))
+ {
+ return FALSE;
+ }
+ if (!sub_81284AC(taskId, curX, curY, behaviorBy))
+ {
+ return FALSE;
+ }
+ behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0);
+ if (behaviorAt != 0 && behaviorAt != 16)
+ {
+ return FALSE;
+ }
+ }
+ }
+ break;
+ case DECORPERM_BEHIND_FLOOR:
+ for (i=0; i<mapY-1; i++)
+ {
+ curY = gTasks[taskId].data[1] - i;
+ for (j=0; j<mapX; j++)
+ {
+ curX = gTasks[taskId].data[0] + j;
+ behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000;
+ if (!MetatileBehavior_IsNormal(behaviorAt) && !sub_8128484(behaviorAt, behaviorBy))
+ {
+ return FALSE;
+ }
+ if (!sub_81284AC(taskId, curX, curY, behaviorBy))
+ {
+ return FALSE;
+ }
+ if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16)
+ {
+ return FALSE;
+ }
+ }
+ }
+ curY = gTasks[taskId].data[1] - mapY + 1;
+ for (j=0; j<mapX; j++)
+ {
+ curX = gTasks[taskId].data[0] + j;
+ behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
+ behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000;
+ if (!MetatileBehavior_IsNormal(behaviorAt) && !MetatileBehavior_IsMB_B7(behaviorAt))
+ {
+ return FALSE;
+ }
+ if (!sub_81284AC(taskId, curX, curY, behaviorBy))
+ {
+ return FALSE;
+ }
+ behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0);
+ if (behaviorAt != 0 && behaviorAt != 16)
+ {
+ return FALSE;
+ }
+ }
+ break;
+ case DECORPERM_NA_WALL:
+ for (i=0; i<mapY; i++)
+ {
+ curY = gTasks[taskId].data[1] - i;
+ for (j=0; j<mapX; j++)
+ {
+ curX = gTasks[taskId].data[0] + j;
+ if (!MetatileBehavior_IsMB_B7(MapGridGetMetatileBehaviorAt(curX, curY)))
+ {
+ return FALSE;
+ }
+ if (MapGridGetMetatileIdAt(curX, curY + 1) == 0x28c)
+ {
+ return FALSE;
+ }
+ }
+ }
+ break;
+ case DECORPERM_SOLID_MAT:
+ curY = gTasks[taskId].data[1];
+ for (j=0; j<mapX; j++)
+ {
+ curX = gTasks[taskId].data[0] + j;
+ behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY);
+ if (decoration->shape == DECORSHAPE_1x2)
+ {
+ if (!MetatileBehavior_IsMB_C3(behaviorAt))
+ {
+ return FALSE;
+ }
+ }
+ else if (!MetatileBehavior_IsMB_B5(behaviorAt))
+ {
+ if (!MetatileBehavior_IsMB_C3(behaviorAt))
+ {
+ return FALSE;
+ }
+ }
+ if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16)
+ {
+ return FALSE;
+ }
+ }
+ break;
+ }
+ return TRUE;
+}
+
+void sub_8128950(u8 taskId)
+{
+ if (sub_812853C(taskId, &gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]]) == TRUE)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_PlaceItHere);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_81289D0);
+ }
+ else
+ {
+ PlaySE(SE_HAZURE);
+ StringExpandPlaceholders(gStringVar4, gText_CantBePlacedHere);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8129020);
+ }
+}
+
+void sub_81289D0(u8 taskId)
+{
+ sub_8197930();
+ sub_8121F68(taskId, &gUnknown_085A72C4);
+}
+
+void sub_81289F0(u8 taskId)
+{
+ sub_8197434(0, 0);
+ sub_8128AAC(taskId);
+ if (gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].permission != DECORPERM_SOLID_MAT)
+ {
+ sub_8127D38(gTasks[taskId].data[0], gTasks[taskId].data[1], gCurDecorInventoryItems[gCurDecorationIndex]);
+ }
+ else
+ {
+ sCurDecorMapX = gTasks[taskId].data[0] - 7;
+ sCurDecorMapY = gTasks[taskId].data[1] - 7;
+ ScriptContext1_SetupScript(gUnknown_08275D1F);
+ }
+ gSprites[sDecor_CameraSpriteObjectIdx1].pos1.y += 2;
+ if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE)
+ {
+ TV_PutSecretBaseVisitOnTheAir();
+ }
+ sub_8128BBC(taskId);
+}
+
+void sub_8128AAC(u8 taskId)
+{
+ u16 i;
+
+ for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ {
+ if (gUnknown_0203A17C.items[i] == DECOR_NONE)
+ {
+ gUnknown_0203A17C.items[i] = gCurDecorInventoryItems[gCurDecorationIndex];
+ gUnknown_0203A17C.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7);
+ break;
+ }
+ }
+ if (!gUnknown_0203A17C.isPlayerRoom)
+ {
+ for (i = 0; i < 16; i ++)
+ {
+ if (sSecretBaseItemsIndicesBuffer[i] == 0)
+ {
+ sSecretBaseItemsIndicesBuffer[i] = gCurDecorationIndex + 1;
+ break;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < 12; i ++)
+ {
+ if (sPlayerRoomItemsIndicesBuffer[i] == 0)
+ {
+ sPlayerRoomItemsIndicesBuffer[i] = gCurDecorationIndex + 1;
+ break;
+ }
+ }
+ }
+}
+
+void sub_8128B80(u8 taskId)
+{
+ sub_8197930();
+ sub_8121F68(taskId, &gUnknown_085A72CC);
+}
+
+void sub_8128BA0(u8 taskId)
+{
+ sub_8197434(0, 0);
+ sub_8128BBC(taskId);
+}
+
+void sub_8128BBC(u8 taskId)
+{
+ fade_screen(1, 0);
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = c1_overworld_prev_quest;
+}
+
+void c1_overworld_prev_quest(u8 taskId)
+{
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ ScriptContext2_Enable();
+ if (!gPaletteFade.active)
+ {
+ sub_8127B04(taskId);
+ gTasks[taskId].data[2] = 1;
+ }
+ break;
+ case 1:
+ sub_812A3C8();
+ FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG);
+ gFieldCallback = sub_8128CD4;
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_8128C64(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ switch (data[2])
+ {
+ case 0:
+ sub_80E9578();
+ data[2] ++;
+ break;
+ case 1:
+ ScriptContext1_SetupScript(gUnknown_08275D0C);
+ data[2] ++;
+ break;
+ case 2:
+ ScriptContext2_Enable();
+ data[2] ++;
+ break;
+ case 3:
+ if (sub_80ABDFC() == TRUE)
+ {
+ gTasks[taskId].func = sub_812764C;
+ }
+ break;
+ }
+}
+
+void sub_8128CD4(void)
+{
+ u8 taskId;
+
+ ScriptContext2_Enable();
+ pal_fill_black();
+ taskId = CreateTask(sub_8128C64, 8);
+ sub_8127580(taskId);
+ gTasks[taskId].data[2] = 0;
+}
+
+bool8 sub_8128D10(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ if (sDecorationLastDirectionMoved == DIR_SOUTH && data[1] - data[6] - 6 < 0)
+ {
+ data[1] ++;
+ return FALSE;
+ }
+ if (sDecorationLastDirectionMoved == DIR_NORTH && data[1] - 7 >= gMapHeader.mapData->height)
+ {
+ data[1] --;
+ return FALSE;
+ }
+ if (sDecorationLastDirectionMoved == DIR_WEST && data[0] - 7 < 0)
+ {
+ data[0] ++;
+ return FALSE;
+ }
+ if (sDecorationLastDirectionMoved == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapData->width)
+ {
+ data[0] --;
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_8128DB4(void)
+{
+ u16 heldKeys;
+
+ heldKeys = gMain.heldKeys & 0x0F0;
+ if (heldKeys != DPAD_UP && heldKeys != DPAD_DOWN && heldKeys != DPAD_LEFT && heldKeys != DPAD_RIGHT)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_8128DE0(void)
+{
+ sDecorationLastDirectionMoved = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 0;
+}
+
+void sub_8128E18(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ if (!gSprites[sDecor_CameraSpriteObjectIdx1].data4)
+ {
+ if (data[10] == 1)
+ {
+ gUnknown_085A72D4[data[12]].yesFunc(taskId);
+ return;
+ } else if (data[10] == 2)
+ {
+ gUnknown_085A72D4[data[12]].noFunc(taskId);
+ return;
+ }
+ if ((gMain.heldKeys & 0x0F0) == DPAD_UP)
+ {
+ sDecorationLastDirectionMoved = DIR_SOUTH;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data3 = -2;
+ data[1]--;
+ }
+ if ((gMain.heldKeys & 0x0F0) == DPAD_DOWN)
+ {
+ sDecorationLastDirectionMoved = DIR_NORTH;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 2;
+ data[1]++;
+ }
+ if ((gMain.heldKeys & 0x0F0) == DPAD_LEFT)
+ {
+ sDecorationLastDirectionMoved = DIR_WEST;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data2 = -2;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 0;
+ data[0]--;
+ }
+ if ((gMain.heldKeys & 0x0F0) == DPAD_RIGHT)
+ {
+ sDecorationLastDirectionMoved = DIR_EAST;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 2;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 0;
+ data[0]++;
+ }
+ if (!sub_8128DB4() || !sub_8128D10(taskId))
+ {
+ sub_8128DE0();
+ }
+ }
+ if (sDecorationLastDirectionMoved)
+ {
+ gSprites[sDecor_CameraSpriteObjectIdx1].data4++;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data4 &= 7;
+ }
+ if (!data[10])
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ data[10] = A_BUTTON;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ data[10] = B_BUTTON;
+ }
+ }
+}
+
+void sub_8128FD8(u8 taskId)
+{
+ sub_8197434(0, 1);
+ gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 0;
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].func = sub_8128E18;
+}
+
+void sub_8129020(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ sub_8128FD8(taskId);
+ }
+}
+
+void sub_8129048(struct PlaceDecorationGraphicsDataBuffer *data)
+{
+ CpuFill16(0, data, sizeof(*data));
+}
+
+void sub_8129068(u16 *dest, u16 pal)
+{
+ CpuFastCopy(&((u16 *)gTilesetPointer_SecretBase->palettes)[pal << 4], dest, 32);
+}
+
+void sub_8129088(u8 *dest, u16 tile)
+{
+ u8 buffer[32];
+ u16 mode;
+ u16 i;
+
+ mode = tile >> 10;
+ if (tile != 0)
+ {
+ tile &= 0x03FF;
+ }
+ CpuFastCopy(&((u8 *)gTilesetPointer_SecretBase->tiles)[tile << 5], buffer, 32);
+ switch (mode)
+ {
+ case 0:
+ CpuFastCopy(buffer, dest, 32);
+ break;
+ case 1:
+ for (i = 0; i < 8; i ++)
+ {
+ dest[4 * i] = (buffer[4 * (i + 1) - 1] >> 4) + ((buffer[4 * (i + 1) - 1] & 0x0F) << 4);
+ dest[4 * i + 1] = (buffer[4 * (i + 1) - 2] >> 4) + ((buffer[4 * (i + 1) - 2] & 0x0F) << 4);
+ dest[4 * i + 2] = (buffer[4 * (i + 1) - 3] >> 4) + ((buffer[4 * (i + 1) - 3] & 0x0F) << 4);
+ dest[4 * i + 3] = (buffer[4 * (i + 1) - 4] >> 4) + ((buffer[4 * (i + 1) - 4] & 0x0F) << 4);
+ }
+ break;
+ case 2:
+ for (i = 0; i < 8; i ++)
+ {
+ dest[4 * i] = buffer[4 * (7 - i)];
+ dest[4 * i + 1] = buffer[4 * (7 - i) + 1];
+ dest[4 * i + 2] = buffer[4 * (7 - i) + 2];
+ dest[4 * i + 3] = buffer[4 * (7 - i) + 3];
+ }
+ break;
+ case 3:
+ for (i = 0; i < 32; i ++)
+ {
+ dest[i] = (buffer[31 - i] >> 4) + ((buffer[31 - i] & 0x0F) << 4);
+ }
+ break;
+ }
+}
+
+void sub_81291A4(struct PlaceDecorationGraphicsDataBuffer *data)
+{
+ u16 i;
+ for (i = 0; i < 64; i ++)
+ {
+ sub_8129088(&data->image[i * 32], data->tiles[i]);
+ }
+}
+
+u16 sub_81291CC(u16 tile)
+{
+ return ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[tile] & 0xFFF;
+}
+
+void sub_81291E8(struct PlaceDecorationGraphicsDataBuffer *data)
+{
+ u8 i;
+ u8 shape;
+
+ shape = data->decoration->shape;
+ for (i = 0; i < gUnknown_085A71B0[shape].size; i ++)
+ {
+ data->tiles[gUnknown_085A71B0[shape].tiles[i]] = sub_81291CC(data->decoration->tiles[gUnknown_085A71B0[shape].y[i]] * 8 + gUnknown_085A71B0[shape].x[i]);
+ }
+}
+
+void SetDecorSelectionBoxOamAttributes(u8 decorShape)
+{
+ sDecorSelectorOam.y = 0;
+ sDecorSelectorOam.affineMode = ST_OAM_AFFINE_OFF;
+ sDecorSelectorOam.objMode = ST_OAM_OBJ_NORMAL;
+ sDecorSelectorOam.mosaic = 0;
+ sDecorSelectorOam.bpp = ST_OAM_4BPP;
+ sDecorSelectorOam.shape = gUnknown_085A7250[decorShape].shape;
+ sDecorSelectorOam.x = 0;
+ sDecorSelectorOam.matrixNum = 0;
+ sDecorSelectorOam.size = gUnknown_085A7250[decorShape].size;
+ sDecorSelectorOam.tileNum = 0;
+ sDecorSelectorOam.priority = 0;
+ sDecorSelectorOam.paletteNum = 0;
+}
+
+void sub_81292D0(struct Sprite *sprite)
+{
+ sprite->data2 = 0;
+ sprite->data3 = 0;
+ sprite->data4 = 0;
+ sprite->data5 = 0;
+ sprite->data6 = 0;
+ sprite->data7 = 0;
+ sprite->callback = sub_81292E8;
+}
+
+void sub_81292E8(struct Sprite *sprite)
+{
+ if (sprite->data7 == 0)
+ {
+ if (sprite->data6 < 15)
+ {
+ sprite->invisible = FALSE;
+ }
+ else
+ {
+ sprite->invisible = TRUE;
+ }
+ sprite->data6 ++;
+ sprite->data6 &= 0x1F;
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ }
+}
+
+u8 gpu_pal_decompress_alloc_tag_and_upload(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor)
+{
+ sub_8129048(data);
+ data->decoration = &gDecorations[decor];
+ if (data->decoration->permission == DECORPERM_SOLID_MAT)
+ {
+ return AddPseudoFieldObject(data->decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
+ }
+ FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_SELECTOR_PAL_TAG);
+ sub_81291E8(data);
+ SetDecorSelectionBoxOamAttributes(data->decoration->shape);
+ sub_81291A4(data);
+ sub_8129068(data->palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(data->decoration->tiles[0] * 8) + 7] >> 12);
+ LoadSpritePalette(&gUnknown_085A72BC);
+ return CreateSprite(&sDecorSelectorSpriteTemplate, 0, 0, 0);
+}
+
+u8 AddDecorationIconObjectFromIconTable(u16 tilesTag, u16 paletteTag, u8 decor)
+{
+ struct SpriteSheet sheet;
+ struct CompressedSpritePalette palette;
+ struct SpriteTemplate *template;
+ u8 spriteId;
+
+ if (!AllocItemIconTemporaryBuffers())
+ {
+ return MAX_SPRITES;
+ }
+ LZDecompressWram(GetDecorationIconPicOrPalette(decor, 0), gUnknown_0203CEBC);
+ CopyItemIconPicTo4x4Buffer(gUnknown_0203CEBC, gUnknown_0203CEC0);
+ sheet.data = gUnknown_0203CEC0;
+ sheet.size = 0x200;
+ sheet.tag = tilesTag;
+ LoadSpriteSheet(&sheet);
+ palette.data = GetDecorationIconPicOrPalette(decor, 1);
+ palette.tag = paletteTag;
+ LoadCompressedObjectPalette(&palette);
+ template = malloc(sizeof(struct SpriteTemplate));
+ *template = gUnknown_08614FF4;
+ template->tileTag = tilesTag;
+ template->paletteTag = paletteTag;
+ spriteId = CreateSprite(template, 0, 0, 0);
+ FreeItemIconTemporaryBuffers();
+ free(template);
+ return spriteId;
+}
+
+const u8 *GetDecorationIconPicOrPalette(u16 decor, u8 mode)
+{
+ if (decor > 120)
+ {
+ decor = DECOR_NONE;
+ }
+ return gUnknown_085A6BE8[decor][mode];
+}
+
+u8 AddDecorationIconObjectFromFieldObject(u16 tilesTag, u16 paletteTag, u8 decor)
+{
+ u8 spriteId;
+ struct SpriteSheet sheet;
+ struct SpritePalette palette;
+ struct SpriteTemplate *template;
+
+ sub_8129048(&sPlaceDecorationGraphicsDataBuffer);
+ sPlaceDecorationGraphicsDataBuffer.decoration = &gDecorations[decor];
+ if (sPlaceDecorationGraphicsDataBuffer.decoration->permission != DECORPERM_SOLID_MAT)
+ {
+ sub_81291E8(&sPlaceDecorationGraphicsDataBuffer);
+ SetDecorSelectionBoxOamAttributes(sPlaceDecorationGraphicsDataBuffer.decoration->shape);
+ sub_81291A4(&sPlaceDecorationGraphicsDataBuffer);
+ sub_8129068(sPlaceDecorationGraphicsDataBuffer.palette, ((u16 *)gTilesetPointer_SecretBaseRedCave->metatiles)[(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0] * 8) + 7] >> 12);
+ sheet.data = sPlaceDecorationGraphicsDataBuffer.image;
+ sheet.size = gUnknown_085A72F4[sPlaceDecorationGraphicsDataBuffer.decoration->shape] << 5;
+ sheet.tag = tilesTag;
+ LoadSpriteSheet(&sheet);
+ palette.data = sPlaceDecorationGraphicsDataBuffer.palette;
+ palette.tag = paletteTag;
+ LoadSpritePalette(&palette);
+ template = Alloc(sizeof(struct SpriteTemplate));
+ *template = sDecorWhilePlacingSpriteTemplate;
+ template->tileTag = tilesTag;
+ template->paletteTag = paletteTag;
+ spriteId = CreateSprite(template, 0, 0, 0);
+ free(template);
+ }
+ else
+ {
+ spriteId = AddPseudoFieldObject(sPlaceDecorationGraphicsDataBuffer.decoration->tiles[0], SpriteCallbackDummy, 0, 0, 1);
+ }
+ return spriteId;
+}
+
+u8 AddDecorationIconObject(u8 decor, s16 x, s16 y, u8 priority, u16 tilesTag, u16 paletteTag)
+{
+ u8 spriteId;
+
+ if (decor > 120)
+ {
+ spriteId = AddDecorationIconObjectFromIconTable(tilesTag, paletteTag, DECOR_NONE);
+ if (spriteId == MAX_SPRITES)
+ {
+ return MAX_SPRITES;
+ }
+ gSprites[spriteId].pos2.x = x + 4;
+ gSprites[spriteId].pos2.y = y + 4;
+ }
+ else if (gUnknown_085A6BE8[decor][0] == NULL)
+ {
+ spriteId = AddDecorationIconObjectFromFieldObject(tilesTag, paletteTag, decor);
+ if (spriteId == MAX_SPRITES)
+ {
+ return MAX_SPRITES;
+ }
+ gSprites[spriteId].pos2.x = x;
+ if (decor == DECOR_SILVER_SHIELD || decor == DECOR_GOLD_SHIELD)
+ {
+ gSprites[spriteId].pos2.y = y - 4;
+ }
+ else
+ {
+ gSprites[spriteId].pos2.y = y;
+ }
+ }
+ else
+ {
+ spriteId = AddDecorationIconObjectFromIconTable(tilesTag, paletteTag, decor);
+ if (spriteId == MAX_SPRITES)
+ {
+ return MAX_SPRITES;
+ }
+ gSprites[spriteId].pos2.x = x + 4;
+ gSprites[spriteId].pos2.y = y + 4;
+ }
+ gSprites[spriteId].oam.priority = priority;
+ return spriteId;
+}
+
+void sub_81296EC(u8 idx)
+{
+ gUnknown_0203A17C.items[idx] = 0;
+ gUnknown_0203A17C.pos[idx] = 0;
+}
+
+void sub_8129708(void)
+{
+ u16 i;
+
+ gSpecialVar_0x8005 = 0;
+ gScriptResult = 0;
+ if (gSpecialVar_0x8004 == sCurDecorSelectedInRearrangement)
+ {
+ gScriptResult = 1;
+ }
+ else if (gDecorations[gUnknown_0203A17C.items[sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx]].permission == DECORPERM_SOLID_MAT)
+ {
+ gSpecialVar_0x8005 = sDecorRearrangementDataBuffer[gSpecialVar_0x8004].flagId;
+ sub_81296EC(sDecorRearrangementDataBuffer[gSpecialVar_0x8004].idx);
+ for (i = 0; i < gMapHeader.events->mapObjectCount; i ++)
+ {
+ if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8005)
+ {
+ gSpecialVar_0x8006 = gMapHeader.events->mapObjects[i].localId;
+ break;
+ }
+ }
+ }
+}
+
+void sub_81297AC(void)
+{
+ u8 i;
+
+ for (i = 0; i < gMapHeader.events->mapObjectCount; i ++)
+ {
+ if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8004)
+ {
+ gSpecialVar_0x8005 = gMapHeader.events->mapObjects[i].localId;
+ break;
+ }
+ }
+}
+
+void sub_81297F8(void)
+{
+ u8 i;
+ u8 y;
+ u8 x;
+ int posX;
+ int posY;
+ u8 perm;
+
+ for (i = 0; i < sCurDecorSelectedInRearrangement; i ++)
+ {
+ perm = gDecorations[gUnknown_0203A17C.items[sDecorRearrangementDataBuffer[i].idx]].permission;
+ posX = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[i].idx] >> 4;
+ posY = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[i].idx] & 0x0F;
+ if (perm != DECORPERM_SOLID_MAT)
+ {
+ for (y = 0; y < sDecorRearrangementDataBuffer[i].height; y ++)
+ {
+ for (x = 0; x < sDecorRearrangementDataBuffer[i].width; x ++)
+ {
+ MapGridSetMetatileEntryAt(posX + 7 + x, posY + 7 - y, gMapHeader.mapData->map[posX + x + gMapHeader.mapData->width * (posY - y)] | 0x3000);
+ }
+ }
+ sub_81296EC(sDecorRearrangementDataBuffer[i].idx);
+ }
+ }
+}
+
+void sub_81298EC(u8 taskId)
+{
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ sub_81297F8();
+ gTasks[taskId].data[2] = 1;
+ break;
+ case 1:
+ if (!gPaletteFade.active) {
+ DrawWholeMapView();
+ ScriptContext1_SetupScript(gUnknown_08275D2E);
+ sub_8197434(0, 1);
+ gTasks[taskId].data[2] = 2;
+ }
+ break;
+ case 2:
+ ScriptContext2_Enable();
+ IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
+ pal_fill_black();
+ gTasks[taskId].data[2] = 3;
+ break;
+ case 3:
+ if (sub_80ABDFC() == TRUE)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_DecorationReturnedToPC);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8129D64);
+ if (gMapHeader.regionMapSectionId == REGION_MAP_SECRET_BASE)
+ {
+ TV_PutSecretBaseVisitOnTheAir();
+ }
+ }
+ break;
+ }
+}
+
+
+bool8 sub_81299AC(u8 taskId)
+{
+ u16 i;
+
+ for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ {
+ if (gUnknown_0203A17C.items[i] != DECOR_NONE)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void SetUpPuttingAwayDecorationPlayerAvatar(void)
+{
+ player_get_direction_lower_nybble();
+ sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.unk4].data0;
+ sub_812A39C();
+ gUnknown_03005DD0.unk4 = CreateSprite(&gUnknown_085A7404, 0x78, 0x50, 0);
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC1, SpriteCallbackDummy, 0x88, 0x48, 0);
+ }
+ else
+ {
+ sDecor_CameraSpriteObjectIdx2 = AddPseudoFieldObject(0xC2, SpriteCallbackDummy, 0x88, 0x48, 0);
+ }
+ gSprites[sDecor_CameraSpriteObjectIdx2].oam.priority = 1;
+ DestroySprite(&gSprites[sDecor_CameraSpriteObjectIdx1]);
+ sDecor_CameraSpriteObjectIdx1 = gUnknown_03005DD0.unk4;
+ gSprites[sDecor_CameraSpriteObjectIdx1].oam.priority = 1;
+}
+
+void sub_8129ABC(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ switch (data[2])
+ {
+ case 0:
+ if (!gPaletteFade.active)
+ {
+ sub_8127ACC(taskId);
+ data[2] = 1;
+ data[6] = 1;
+ data[5] = 1;
+ }
+ break;
+ case 1:
+ SetUpPuttingAwayDecorationPlayerAvatar();
+ pal_fill_black();
+ data[2] = 2;
+ break;
+ case 2:
+ if (sub_80ABDFC() == TRUE)
+ {
+ data[12] = 1;
+ sub_8129B34(taskId);
+ }
+ break;
+ }
+}
+
+void sub_8129B34(u8 taskId)
+{
+ sub_8197434(0, 1);
+ gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
+ gSprites[sDecor_CameraSpriteObjectIdx1].callback = sub_812A36C;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = 0x88;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = 0x48;
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].func = sub_8128E18;
+}
+
+void sub_8129BCC(u8 taskId)
+{
+ gTasks[taskId].data[10] = 0;
+ sub_8128DE0();
+ sub_8129C74(taskId);
+}
+
+void sub_8129BF8(u8 taskId)
+{
+ gTasks[taskId].data[10] = 0;
+ sub_8128DE0();
+ gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
+ gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy;
+ StringExpandPlaceholders(gStringVar4, gText_StopPuttingAwayDecorations);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_812A1F0);
+}
+
+void sub_8129C74(u8 taskId)
+{
+ s16 *data;
+ u8 behavior;
+
+ sub_812A0E8(taskId);
+ if (sCurDecorSelectedInRearrangement != 0)
+ {
+ StringExpandPlaceholders(gStringVar4, gText_ReturnDecorationToPC);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_812A1A0);
+ }
+ else
+ {
+ data = gTasks[taskId].data;
+ behavior = MapGridGetMetatileBehaviorAt(data[0], data[1]);
+ if (MetatileBehavior_IsSecretBasePC(behavior) == TRUE || MetatileBehavior_IsMB_C5(behavior) == TRUE)
+ {
+ gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
+ gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy;
+ StringExpandPlaceholders(gStringVar4, gText_StopPuttingAwayDecorations);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_812A1F0);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gText_NoDecorationHere);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8129D64);
+ }
+ }
+}
+
+void sub_8129D64(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ sub_8129B34(taskId);
+ }
+}
+
+void sub_8129D8C(u8 decor, struct DecorRearrangementDataBuffer *data)
+{
+ if (gDecorations[decor].shape == DECORSHAPE_1x1)
+ {
+ data->width = 1;
+ data->height = 1;
+ } else if (gDecorations[decor].shape == DECORSHAPE_2x1)
+ {
+ data->width = 2;
+ data->height = 1;
+ } else if (gDecorations[decor].shape == DECORSHAPE_3x1)
+ {
+ data->width = 3;
+ data->height = 1;
+ } else if (gDecorations[decor].shape == DECORSHAPE_4x2)
+ {
+ data->width = 4;
+ data->height = 2;
+ } else if (gDecorations[decor].shape == DECORSHAPE_2x2)
+ {
+ data->width = 2;
+ data->height = 2;
+ } else if (gDecorations[decor].shape == DECORSHAPE_1x2)
+ {
+ data->width = 1;
+ data->height = 2;
+ } else if (gDecorations[decor].shape == DECORSHAPE_1x3)
+ {
+ data->width = 1;
+ data->height = 3;
+ } else if (gDecorations[decor].shape == DECORSHAPE_2x4)
+ {
+ data->width = 2;
+ data->height = 4;
+ } else if (gDecorations[decor].shape == DECORSHAPE_3x3)
+ {
+ data->width = 3;
+ data->height = 3;
+ } else if (gDecorations[decor].shape == DECORSHAPE_3x2)
+ {
+ data->width = 3;
+ data->height = 2;
+ }
+}
+
+void sub_8129E0C(u8 x, u8 y)
+{
+ gSprites[sDecor_CameraSpriteObjectIdx1].invisible = TRUE;
+ gSprites[sDecor_CameraSpriteObjectIdx1].callback = SpriteCallbackDummy;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = (x << 4) + 0x88;
+ gSprites[sDecor_CameraSpriteObjectIdx2].pos1.y = (y << 4) + 0x48;
+}
+
+bool8 sub_8129E74(u8 taskId, u8 idx, struct DecorRearrangementDataBuffer *data)
+{
+ u8 x;
+ u8 y;
+ u8 xOff;
+ u8 yOff;
+ u8 ht;
+
+ x = gTasks[taskId].data[0] - 7;
+ y = gTasks[taskId].data[1] - 7;
+ xOff = gUnknown_0203A17C.pos[idx] >> 4;
+ yOff = gUnknown_0203A17C.pos[idx] & 0x0F;
+ ht = data->height;
+ if (gUnknown_0203A17C.items[idx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28C)
+ {
+ ht --;
+ }
+ if (x >= xOff && x < xOff + data->width && y > yOff - ht && y <= yOff)
+ {
+ sub_8129E0C(data->width - (x - xOff + 1), yOff - y);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8129F20(void)
+{
+ u8 xOff;
+ u8 yOff;
+ u16 i;
+
+ xOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] >> 4;
+ yOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx] & 0x0F;
+ for (i = 0; i < 0x40; i ++)
+ {
+ if (gSaveBlock1Ptr->mapObjectTemplates[i].x == xOff && gSaveBlock1Ptr->mapObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1Ptr->mapObjectTemplates[i].flagId))
+ {
+ sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].flagId = gSaveBlock1Ptr->mapObjectTemplates[i].flagId;
+ break;
+ }
+ }
+}
+
+bool8 sub_8129FC8(u8 taskId)
+{
+ u16 i;
+
+ for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ {
+ if (gUnknown_0203A17C.items[i] != 0)
+ {
+ if (gDecorations[gUnknown_0203A17C.items[i]].permission == DECORPERM_SOLID_MAT)
+ {
+ sub_8129D8C(gUnknown_0203A17C.items[i], sDecorRearrangementDataBuffer);
+ if (sub_8129E74(taskId, i, sDecorRearrangementDataBuffer) == TRUE)
+ {
+ sDecorRearrangementDataBuffer->idx = i;
+ sub_8129F20();
+ sCurDecorSelectedInRearrangement = 1;
+ return TRUE;
+ }
+ }
+ }
+ }
+ return FALSE;
+}
+
+void sub_812A040(u8 left, u8 top, u8 right, u8 bottom)
+{
+ u8 i;
+ u8 xOff;
+ u8 yOff;
+ u8 decorIdx;
+
+ for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ {
+ decorIdx = gUnknown_0203A17C.items[i];
+ xOff = gUnknown_0203A17C.pos[i] >> 4;
+ yOff = gUnknown_0203A17C.pos[i] & 0x0F;
+ if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SOLID_MAT && left <= xOff && top <= yOff && right >= xOff && bottom >= yOff)
+ {
+ sDecorRearrangementDataBuffer[sCurDecorSelectedInRearrangement].idx = i;
+ sub_8129F20();
+ sCurDecorSelectedInRearrangement++;
+ }
+ }
+}
+
+#ifdef NONMATCHING
+void sub_812A0E8(u8 taskId)
+{
+ u8 i;
+ u8 xOff;
+ u8 yOff;
+ u8 decor;
+ register u8 decor asm("r1");
+ struct DecorRearrangementDataBuffer *data;
+
+ sCurDecorSelectedInRearrangement = 0;
+ if (sub_8129FC8(taskId) != TRUE)
+ {
+ for (i = 0; i < gUnknown_0203A17C.size; i ++)
+ {
+ decor = gUnknown_0203A17C.items[i];
+ if (decor != DECOR_NONE)
+ {
+ data = &sDecorRearrangementDataBuffer[0];
+ sub_8129D8C(decor, data);
+ if (sub_8129E74(taskId, i, data) == TRUE)
+ {
+ data->idx = i;
+ sCurDecorSelectedInRearrangement ++;
+ break;
+ }
+ }
+ }
+ if (sCurDecorSelectedInRearrangement != 0)
+ {
+ xOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[0].idx] >> 4;
+ yOff = gUnknown_0203A17C.pos[sDecorRearrangementDataBuffer[0].idx] & 0x0F;
+ sub_812A040(xOff, yOff - sDecorRearrangementDataBuffer[0].height + 1, xOff + sDecorRearrangementDataBuffer[0].width - 1, yOff); // Arithmetic register swap at the r2 argument: `add r2, r0, r2` instead of `add r2, r2, r0`
+ }
+ }
+}
+#else
+__attribute__((naked)) void sub_812A0E8(u8 taskId)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tldr r4, =sCurDecorSelectedInRearrangement\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r4]\n"
+ "\tadds r0, r6, 0\n"
+ "\tbl sub_8129FC8\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _0812A18C\n"
+ "\tmovs r5, 0\n"
+ "\tldr r0, =gUnknown_0203A17C\n"
+ "\tldrb r1, [r0, 0x8]\n"
+ "\tcmp r5, r1\n"
+ "\tbcs _0812A15A\n"
+ "\tadds r7, r4, 0\n"
+ "_0812A10E:\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, r5\n"
+ "\tldrb r1, [r0]\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _0812A14C\n"
+ "\tldr r4, =sDecorRearrangementDataBuffer\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r1, r4, 0\n"
+ "\tbl sub_8129D8C\n"
+ "\tadds r0, r6, 0\n"
+ "\tadds r1, r5, 0\n"
+ "\tadds r2, r4, 0\n"
+ "\tbl sub_8129E74\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _0812A14C\n"
+ "\tstrb r5, [r4]\n"
+ "\tldrb r0, [r7]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r7]\n"
+ "\tb _0812A15A\n"
+ "\t.pool\n"
+ "_0812A14C:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tldr r0, =gUnknown_0203A17C\n"
+ "\tldrb r1, [r0, 0x8]\n"
+ "\tcmp r5, r1\n"
+ "\tbcc _0812A10E\n"
+ "_0812A15A:\n"
+ "\tldr r0, =sCurDecorSelectedInRearrangement\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0812A18C\n"
+ "\tldr r0, =gUnknown_0203A17C\n"
+ "\tldr r2, =sDecorRearrangementDataBuffer\n"
+ "\tldrb r1, [r2]\n"
+ "\tldr r0, [r0, 0x4]\n"
+ "\tadds r0, r1\n"
+ "\tldrb r1, [r0]\n"
+ "\tlsrs r0, r1, 4\n"
+ "\tmovs r3, 0xF\n"
+ "\tands r3, r1\n"
+ "\tldrb r1, [r2, 0x2]\n"
+ "\tsubs r1, r3, r1\n"
+ "\tadds r1, 0x1\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tldrb r2, [r2, 0x1]\n"
+ "\tadds r2, r0\n"
+ "\tsubs r2, 0x1\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r2, 24\n"
+ "\tbl sub_812A040\n"
+ "_0812A18C:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.pool");
+}
+#endif
+
+void sub_812A1A0(u8 taskId)
+{
+ sub_8197930();
+ sub_8121F68(taskId, &gUnknown_085A7348);
+}
+
+void sub_812A1C0(u8 taskId)
+{
+ fade_screen(1, 0);
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = sub_81298EC;
+}
+
+void sub_812A1F0(u8 taskId)
+{
+ sub_8197930();
+ sub_8121F68(taskId, &gUnknown_085A7350);
+}
+
+void sub_812A210(u8 taskId)
+{
+ sub_8197434(0, 0);
+ sub_812A22C(taskId);
+}
+
+void sub_812A22C(u8 taskId)
+{
+ fade_screen(1, 0);
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].func = sub_812A25C;
+}
+
+void sub_812A25C(u8 taskId)
+{
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (!gPaletteFade.active)
+ {
+ sub_8127B04(taskId);
+ gTasks[taskId].data[2] = 1;
+ }
+ break;
+ case 1:
+ sub_812A3C8();
+ gFieldCallback = sub_812A334;
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_812A2C4(u8 taskId)
+{
+ s16 *data;
+
+ data = gTasks[taskId].data;
+ switch (data[2])
+ {
+ case 0:
+ sub_80E9578();
+ data[2] ++;
+ break;
+ case 1:
+ ScriptContext1_SetupScript(gUnknown_08275D0C);
+ data[2] ++;
+ break;
+ case 2:
+ ScriptContext2_Enable();
+ data[2] ++;
+ break;
+ case 3:
+ if (sub_80ABDFC() == TRUE)
+ {
+ gTasks[taskId].func = sub_8126B80;
+ }
+ break;
+ }
+}
+
+void sub_812A334(void)
+{
+ u8 taskId;
+
+ pal_fill_black();
+ sub_81973C4(0, 1);
+ sub_8126ABC();
+ taskId = CreateTask(sub_812A2C4, 8);
+ gTasks[taskId].data[2] = 0;
+}
+
+void sub_812A36C(struct Sprite *sprite)
+{
+ sprite->data0 ++;
+ sprite->data0 &= 0x1F;
+ if (sprite->data0 > 15)
+ {
+ sprite->invisible = TRUE;
+ }
+ else
+ {
+ sprite->invisible = FALSE;
+ }
+}
+
+void sub_812A39C(void)
+{
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ LoadSpritePalette(&gUnknown_085A73D8);
+ }
+ else
+ {
+ LoadSpritePalette(&gUnknown_085A73E0);
+ }
+}
+
+void sub_812A3C8(void)
+{
+ FreeSpritePaletteByTag(OVERWORLD_PLACE_DECOR_PLAYER_PAL_TAG);
+}
+
+void sub_812A3D4(u8 taskId)
+{
+ if (IsSelectedDecorInThePC() == TRUE)
+ {
+ StringCopy(gStringVar1, gDecorations[gCurDecorInventoryItems[gCurDecorationIndex]].name);
+ StringExpandPlaceholders(gStringVar4, gText_DecorationWillBeDiscarded);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_812A458);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gText_CantThrowAwayInUse);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+ }
+}
+
+void sub_812A458(u8 taskId)
+{
+ sub_8197930();
+ sub_8121F68(taskId, &gUnknown_085A741C);
+}
+
+void sub_812A478(u8 taskId)
+{
+ gCurDecorInventoryItems[gCurDecorationIndex] = DECOR_NONE;
+ sCurDecorCatCount = CountDecorationCategoryN(sCurDecorationCategory);
+ CondenseDecorationCategoryN(sCurDecorationCategory);
+ IdentifyOwnedDecorationsCurrentlyInUseInternal(taskId);
+ StringExpandPlaceholders(gStringVar4, gText_DecorationThrownAway);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_8127A5C);
+}
diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c
new file mode 100644
index 000000000..03ab6c00c
--- /dev/null
+++ b/src/decoration_inventory.c
@@ -0,0 +1,189 @@
+
+// Includes
+#include "global.h"
+#include "decoration.h"
+#include "decoration_inventory.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+EWRAM_DATA struct DecorationInventory gDecorationInventories[8] = {};
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
+
+#define SET_DECOR_INV(i, ptr) {\
+ gDecorationInventories[i].items = ptr;\
+ gDecorationInventories[i].size = sizeof(ptr);\
+}
+
+void SetDecorationInventoriesPointers(void)
+{
+ SET_DECOR_INV(0, gSaveBlock1Ptr->decorDesk);
+ SET_DECOR_INV(1, gSaveBlock1Ptr->decorChair);
+ SET_DECOR_INV(2, gSaveBlock1Ptr->decorPlant);
+ SET_DECOR_INV(3, gSaveBlock1Ptr->decorOrnament);
+ SET_DECOR_INV(4, gSaveBlock1Ptr->decorMat);
+ SET_DECOR_INV(5, gSaveBlock1Ptr->decorPoster);
+ SET_DECOR_INV(6, gSaveBlock1Ptr->decorDoll);
+ SET_DECOR_INV(7, gSaveBlock1Ptr->decorCushion);
+ sub_8126968();
+}
+
+static void ClearDecorationInventory(u8 idx)
+{
+ u8 i;
+
+ for (i = 0; i < gDecorationInventories[idx].size; i ++)
+ {
+ gDecorationInventories[idx].items[i] = DECOR_NONE;
+ }
+}
+
+void ClearDecorationInventories(void)
+{
+ u8 idx;
+
+ for (idx = 0; idx < 8; idx ++)
+ {
+ ClearDecorationInventory(idx);
+ }
+}
+
+s8 GetFirstEmptyDecorSlot(u8 idx)
+{
+ s8 i;
+
+ for (i = 0; i < (s8)gDecorationInventories[idx].size; i ++)
+ {
+ if (gDecorationInventories[idx].items[i] == DECOR_NONE)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+bool8 CheckHasDecoration(u8 decor)
+{
+ u8 i;
+ u8 category;
+
+ category = gDecorations[decor].category;
+ for (i = 0; i < gDecorationInventories[category].size; i ++)
+ {
+ if (gDecorationInventories[category].items[i] == decor)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 DecorationAdd(u8 decor)
+{
+ u8 category;
+ s8 idx;
+
+ if (decor == DECOR_NONE)
+ {
+ return FALSE;
+ }
+ category = gDecorations[decor].category;
+ idx = GetFirstEmptyDecorSlot(category);
+ if (idx == -1)
+ {
+ return FALSE;
+ }
+ gDecorationInventories[category].items[idx] = decor;
+ return TRUE;
+}
+
+bool8 DecorationCheckSpace(u8 decor)
+{
+ if (decor == DECOR_NONE)
+ {
+ return FALSE;
+ }
+ if (GetFirstEmptyDecorSlot(gDecorations[decor].category) == -1)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+s8 DecorationRemove(u8 decor)
+{
+ u8 i;
+ u8 idx;
+
+ i = 0;
+ if (decor == DECOR_NONE)
+ {
+ return 0;
+ }
+ for (i = 0; i < gDecorationInventories[gDecorations[decor].category].size; i ++)
+ {
+ idx = gDecorations[decor].category;
+ if (gDecorationInventories[idx].items[i] == decor)
+ {
+ gDecorationInventories[idx].items[i] = DECOR_NONE;
+ CondenseDecorationCategoryN(idx);
+ return 1;
+ }
+ }
+ return 0;
+}
+
+void CondenseDecorationCategoryN(u8 idx)
+{
+ u8 i;
+ u8 j;
+ u8 tmp;
+
+ for (i = 0; i < gDecorationInventories[idx].size; i ++)
+ {
+ for (j = i + 1; j < gDecorationInventories[idx].size; j ++)
+ {
+ if (gDecorationInventories[idx].items[j] != DECOR_NONE && (gDecorationInventories[idx].items[i] == DECOR_NONE || gDecorationInventories[idx].items[i] > gDecorationInventories[idx].items[j]))
+ {
+ tmp = gDecorationInventories[idx].items[i];
+ gDecorationInventories[idx].items[i] = gDecorationInventories[idx].items[j];
+ gDecorationInventories[idx].items[j] = tmp;
+ }
+ }
+ }
+}
+
+u8 CountDecorationCategoryN(u8 idx)
+{
+ u8 i;
+ u8 ct;
+
+ ct = 0;
+ for (i = 0; i < gDecorationInventories[idx].size; i ++)
+ {
+ if (gDecorationInventories[idx].items[i] != DECOR_NONE)
+ {
+ ct ++;
+ }
+ }
+ return ct;
+}
+
+u8 CountDecorations(void)
+{
+ u8 idx;
+ u8 ct;
+
+ ct = 0;
+ for (idx = 0; idx < 8; idx ++)
+ {
+ ct += CountDecorationCategoryN(idx);
+ }
+ return ct;
+}
diff --git a/src/diploma.c b/src/diploma.c
new file mode 100755
index 000000000..d4a269757
--- /dev/null
+++ b/src/diploma.c
@@ -0,0 +1,219 @@
+#include "global.h"
+#include "diploma.h"
+#include "palette.h"
+#include "main.h"
+#include "gpu_regs.h"
+#include "unknown_task.h"
+#include "task.h"
+#include "malloc.h"
+#include "decompress.h"
+#include "bg.h"
+#include "window.h"
+#include "string_util.h"
+#include "text.h"
+
+extern void reset_temp_tile_data_buffers(void);
+extern int decompress_and_copy_tile_data_to_vram(u8 bg_id, void *src, int size, u16 offset, u8 mode);
+extern bool8 free_temp_tile_data_buffers_if_possible(void);
+extern void sub_80861E8(void); // rom4
+extern bool16 sub_80C0944(void);
+extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, u8 *str);
+
+extern u16 gUnknown_0860F074[];
+
+extern u8 gText_DexNational[];
+extern u8 gText_DexHoenn[];
+extern u8 gText_PokedexDiploma[];
+
+static void MainCB2(void);
+static void Task_DiplomaFadeIn(u8);
+static void Task_DiplomaWaitForKeyPress(u8);
+static void Task_DiplomaFadeOut(u8);
+static void DisplayDiplomaText(void);
+static void InitDiplomaBg(void);
+static void InitDiplomaWindow(void);
+static void PrintDiplomaText(u8 *, u8, u8);
+
+EWRAM_DATA static void **sDiplomaTilemapPtr = {NULL};
+
+static void VBlankCB(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static const u16 sDiplomaPalettes[][16] =
+{
+ INCBIN_U16("graphics/misc/diploma_national.gbapal"),
+ INCBIN_U16("graphics/misc/diploma_hoenn.gbapal"),
+};
+
+static const u8 sDiplomaTilemap[] = INCBIN_U8("graphics/misc/diploma_map.bin.lz");
+static const u8 sDiplomaTiles[] = INCBIN_U8("graphics/misc/diploma.4bpp.lz");
+
+void CB2_ShowDiploma(void)
+{
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG3CNT, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG2CNT, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG1CNT, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG0CNT, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, DISPCNT_MODE_0);
+ // why doesn't this one use the dma manager either?
+ DmaFill16(3, 0, VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, OAM, OAM_SIZE);
+ DmaFill16(3, 0, PLTT, PLTT_SIZE);
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+ LoadPalette(sDiplomaPalettes, 0, 64);
+ sDiplomaTilemapPtr = malloc(0x1000);
+ InitDiplomaBg();
+ InitDiplomaWindow();
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(1, &sDiplomaTiles, 0, 0, 0);
+ while (free_temp_tile_data_buffers_if_possible())
+ ;
+ LZDecompressWram(&sDiplomaTilemap, sDiplomaTilemapPtr);
+ CopyBgTilemapBufferToVram(1);
+ DisplayDiplomaText();
+ BlendPalettes(-1, 16, 0);
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ EnableInterrupts(1);
+ SetVBlankCallback(VBlankCB);
+ SetMainCallback2(MainCB2);
+ CreateTask(Task_DiplomaFadeIn, 0);
+}
+
+static void MainCB2(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void Task_DiplomaFadeIn(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ gTasks[taskId].func = Task_DiplomaWaitForKeyPress;
+}
+
+static void Task_DiplomaWaitForKeyPress(u8 taskId)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_DiplomaFadeOut;
+ }
+}
+
+static void Task_DiplomaFadeOut(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ Free(sDiplomaTilemapPtr);
+ FreeAllWindowBuffers();
+ DestroyTask(taskId);
+ SetMainCallback2(sub_80861E8);
+ }
+}
+
+static void DisplayDiplomaText(void)
+{
+ if (sub_80C0944())
+ {
+ SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_BG0_ON);
+ StringCopy(gStringVar1, gText_DexNational);
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BG1HOFS, DISPCNT_MODE_0);
+ StringCopy(gStringVar1, gText_DexHoenn);
+ }
+ StringExpandPlaceholders(gStringVar4, gText_PokedexDiploma);
+ PrintDiplomaText(gStringVar4, 0, 1);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+}
+
+static const struct BgTemplate sDiplomaBgTemplates[2] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 6,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ },
+};
+
+static void InitDiplomaBg(void)
+{
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sDiplomaBgTemplates, 2);
+ SetBgTilemapBuffer(1, sDiplomaTilemapPtr);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(1);
+ SetGpuReg(REG_OFFSET_BLDCNT, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, DISPCNT_MODE_0);
+ SetGpuReg(REG_OFFSET_BLDY, DISPCNT_MODE_0);
+}
+
+static const struct WindowTemplate sDiplomaWinTemplates[2] =
+{
+ {
+ .priority = 0,
+ .tilemapLeft = 5,
+ .tilemapTop = 2,
+ .width = 20,
+ .height = 16,
+ .paletteNum = 15,
+ .baseBlock = 1,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+static void InitDiplomaWindow(void)
+{
+ InitWindows(sDiplomaWinTemplates);
+ DeactivateAllTextPrinters();
+ LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ FillWindowPixelBuffer(0, 0);
+ PutWindowTilemap(0);
+}
+
+static void PrintDiplomaText(u8 *text, u8 var1, u8 var2)
+{
+ struct TextColor color =
+ {
+ .fgColor = 0,
+ .bgColor = 2,
+ .shadowColor = 3,
+ };
+
+ AddTextPrinterParametrized2(0, 1, var1, var2, 0, 0, &color, -1, text);
+}
diff --git a/src/dma3_manager.c b/src/dma3_manager.c
index 7cce06c15..bb015c5cf 100644
--- a/src/dma3_manager.c
+++ b/src/dma3_manager.c
@@ -1,12 +1,23 @@
#include "global.h"
#include "dma3.h"
+IWRAM_DATA struct {
+ /* 0x00 */ const u8 *src;
+ /* 0x04 */ u8 *dest;
+ /* 0x08 */ u16 size;
+ /* 0x0A */ u16 mode;
+ /* 0x0C */ u32 value;
+} gDma3Requests[128];
+
+static bool8 gDma3ManagerLocked;
+static u8 gDma3RequestCursor;
+
void ClearDma3Requests(void)
{
int i;
gDma3ManagerLocked = TRUE;
- gDma3RequestCursor = FALSE;
+ gDma3RequestCursor = 0;
for(i = 0; i < (u8)ARRAY_COUNT(gDma3Requests); i++)
{
@@ -22,7 +33,6 @@ void ClearDma3Requests(void)
void ProcessDma3Requests(void)
{
// NOTE: the fillerA member of the DMA struct is actually u32 value;
- // NOTE: gUnknown_0300001C is just a pointer inside the gDma3Requests structure, not a true symbol; feel free to remove
u16 total_size;
if (gDma3ManagerLocked)
@@ -331,7 +341,7 @@ _08000DB2:\n\
mov r5, r12\n\
ldrb r0, [r5]\n\
lsls r0, 4\n\
- ldr r3, =gUnknown_0300001C\n\
+ ldr r3, =gDma3Requests + 0x0C\n\
adds r0, r3\n\
ldr r0, [r0]\n\
strh r0, [r1]\n\
@@ -347,7 +357,7 @@ _08000DB2:\n\
bhi _08000DB2\n\
ldrb r0, [r5]\n\
lsls r0, 4\n\
- ldr r5, =gUnknown_0300001C\n\
+ ldr r5, =gDma3Requests + 0x0C\n\
adds r0, r5\n\
ldr r0, [r0]\n\
strh r0, [r1]\n\
diff --git a/src/easy_chat.c b/src/easy_chat.c
index dd490ddf8..24f1a2b57 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -3,7 +3,7 @@
#include "global.h"
#include "songs.h"
#include "sound.h"
-#include "rom4.h"
+#include "overworld.h"
#include "task.h"
#include "main.h"
#include "window.h"
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 6d14e92f0..589e8901d 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -59,13 +59,13 @@ extern u8* GetMonNick(struct Pokemon* mon, u8* dst);
extern u8* GetBoxMonNick(struct BoxPokemon* boxMon, u8* dst);
extern u8 sav1_map_get_name(void);
extern s8 sub_8198C58(void);
-extern void sub_81DB5E8(u8* str1, u8* str2, u8);
+extern void TVShowConvertInternationalString(u8* str1, u8* str2, u8);
extern void sub_806A068(u16, u8);
extern void fade_screen(u8, u8);
extern void overworld_free_bg_tilemaps(void);
extern void sub_80AF168(void);
-extern void init_uns_table_pokemon_copy(void);
-extern void sub_805F094(void);
+extern void AllocateMonSpritesGfx(void);
+extern void FreeMonSpritesGfx(void);
extern void remove_some_task(void);
extern void reset_temp_tile_data_buffers(void);
extern void c2_exit_to_overworld_2_switch(void);
@@ -404,8 +404,8 @@ static bool8 sub_807158C(struct DaycareData* daycare, u8 daycareId)
|| StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->OT_name) != 0))
{
StringCopy(gStringVar1, nick);
- sub_81DB5E8(gStringVar2, daycareMon->OT_name, daycareMon->language_maybe);
- sub_81DB5E8(gStringVar3, daycareMon->monName, daycareMon->unknown);
+ TVShowConvertInternationalString(gStringVar2, daycareMon->OT_name, daycareMon->language_maybe);
+ TVShowConvertInternationalString(gStringVar3, daycareMon->monName, daycareMon->unknown);
return TRUE;
}
return FALSE;
@@ -439,7 +439,7 @@ static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID, u16* speciesLoc
u16 species = GetMonData(mon, MON_DATA_SPECIES);
u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species],
- gBattleSpritesGfx->sprites[(a0 * 2) + 1],
+ gMonSpritesGfxPtr->sprites[(a0 * 2) + 1],
species, pid);
LoadCompressedObjectPalette(sub_806E794(mon));
*speciesLoc = species;
@@ -462,7 +462,7 @@ static void VBlankCB_EggHatch(void)
TransferPlttBuffer();
}
-static void EggHatch(void)
+void EggHatch(void)
{
ScriptContext2_Enable();
CreateTask(Task_EggHatch, 10);
@@ -488,7 +488,7 @@ static void CB2_EggHatch_0(void)
SetGpuReg(REG_OFFSET_DISPCNT, 0);
sEggHatchData = Alloc(sizeof(struct EggHatchData));
- init_uns_table_pokemon_copy();
+ AllocateMonSpritesGfx();
sEggHatchData->eggPartyID = gSpecialVar_0x8004;
sEggHatchData->eggShardVelocityID = 0;
@@ -570,7 +570,7 @@ static void CB2_EggHatch_0(void)
static void EggHatchSetMonNickname(void)
{
SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
- sub_805F094();
+ FreeMonSpritesGfx();
Free(sEggHatchData);
SetMainCallback2(c2_exit_to_overworld_2_switch);
}
@@ -691,7 +691,7 @@ static void CB2_EggHatch_1(void)
case 12:
if (!gPaletteFade.active)
{
- sub_805F094();
+ FreeMonSpritesGfx();
RemoveWindow(sEggHatchData->windowId);
UnsetBgTilemapBuffer(0);
UnsetBgTilemapBuffer(1);
diff --git a/src/event_data.c b/src/event_data.c
index fb2edb063..19a310db5 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -40,11 +40,11 @@ void ClearTempFieldEventData(void)
{
memset(gSaveBlock1Ptr->flags, 0, TEMP_FLAGS_SIZE);
memset(gSaveBlock1Ptr->vars, 0, TEMP_VARS_SIZE);
- FlagReset(SYS_ENC_UP_ITEM);
- FlagReset(SYS_ENC_DOWN_ITEM);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_CTRL_OBJ_DELETE);
- FlagReset(SYS_UNKNOWN_880);
+ FlagClear(SYS_ENC_UP_ITEM);
+ FlagClear(SYS_ENC_DOWN_ITEM);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_CTRL_OBJ_DELETE);
+ FlagClear(SYS_UNKNOWN_880);
}
// probably had different flag splits at one point.
@@ -58,7 +58,7 @@ void DisableNationalPokedex(void)
u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX);
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
*nationalDexVar = 0;
- FlagReset(SYS_NATIONAL_DEX);
+ FlagClear(SYS_NATIONAL_DEX);
}
void EnableNationalPokedex(void)
@@ -82,7 +82,7 @@ bool32 IsNationalPokedexEnabled(void)
void DisableMysteryEvent(void)
{
- FlagReset(SYS_MYSTERY_EVENT_ENABLE);
+ FlagClear(SYS_MYSTERY_EVENT_ENABLE);
}
void EnableMysteryEvent(void)
@@ -97,7 +97,7 @@ bool32 IsMysteryEventEnabled(void)
void DisableMysteryGift(void)
{
- FlagReset(SYS_MYSTERY_GIFT_ENABLE);
+ FlagClear(SYS_MYSTERY_GIFT_ENABLE);
}
void EnableMysteryGift(void)
@@ -112,22 +112,22 @@ bool32 IsMysteryGiftEnabled(void)
void sub_809D4D8(void)
{
- FlagReset(0x1E4);
- FlagReset(0x1E5);
- FlagReset(0x1E6);
- FlagReset(0x1E7);
- FlagReset(0x1E8);
- FlagReset(0x1E9);
- FlagReset(0x1EA);
- FlagReset(0x1EB);
- FlagReset(0x1EC);
- FlagReset(0x1ED);
- FlagReset(0x1EE);
- FlagReset(0x1EF);
- FlagReset(0x1F0);
- FlagReset(0x1F1);
- FlagReset(0x1F2);
- FlagReset(0x1F3);
+ FlagClear(0x1E4);
+ FlagClear(0x1E5);
+ FlagClear(0x1E6);
+ FlagClear(0x1E7);
+ FlagClear(0x1E8);
+ FlagClear(0x1E9);
+ FlagClear(0x1EA);
+ FlagClear(0x1EB);
+ FlagClear(0x1EC);
+ FlagClear(0x1ED);
+ FlagClear(0x1EE);
+ FlagClear(0x1EF);
+ FlagClear(0x1F0);
+ FlagClear(0x1F1);
+ FlagClear(0x1F2);
+ FlagClear(0x1F3);
}
void sub_809D570(void)
@@ -145,7 +145,7 @@ void sub_809D570(void)
void DisableResetRTC(void)
{
VarSet(VAR_RESET_RTC_ENABLE, 0);
- FlagReset(SYS_RESET_RTC_ENABLE);
+ FlagClear(SYS_RESET_RTC_ENABLE);
}
void EnableResetRTC(void)
@@ -214,7 +214,7 @@ u8 FlagSet(u16 id)
return 0;
}
-u8 FlagReset(u16 id)
+u8 FlagClear(u16 id)
{
u8 *ptr = GetFlagPointer(id);
if (ptr)
diff --git a/src/field_camera.c b/src/field_camera.c
new file mode 100644
index 000000000..17ced6aa5
--- /dev/null
+++ b/src/field_camera.c
@@ -0,0 +1,28 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+struct FieldCameraUnknownStruct
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ bool8 unk4;
+};
+
+// Static RAM declarations
+
+IWRAM_DATA struct FieldCameraUnknownStruct gUnknown_03000E20;
+IWRAM_DATA s16 gUnknown_03000E28;
+IWRAM_DATA s16 gUnknown_03000E2A;
+IWRAM_DATA u8 gUnknown_03000E2C;
+IWRAM_DATA void (*gUnknown_03000E30)(void);
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/field_effect.c b/src/field_effect.c
new file mode 100644
index 000000000..628dc776a
--- /dev/null
+++ b/src/field_effect.c
@@ -0,0 +1,15 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03000F58[32];
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 26bc513fb..e822fc1ca 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -3,7 +3,7 @@
#include "global.h"
#include "malloc.h"
#include "sprite.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rng.h"
#include "event_scripts.h"
#include "berry.h"
@@ -2386,10 +2386,10 @@ bool8 do_berry_tree_growth_sparkle_1 (struct MapObject *mapObject, struct Sprite
{
if (!(sprite->data7 & 0x0004) && sprite->animNum == 4)
{
- gFieldEffectSpawnParams[0] = mapObject->coords2.x;
- gFieldEffectSpawnParams[1] = mapObject->coords2.y;
- gFieldEffectSpawnParams[2] = sprite->subpriority - 1;
- gFieldEffectSpawnParams[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
sprite->animNum = berryStage;
}
@@ -2425,10 +2425,10 @@ bool8 do_berry_tree_growth_sparkle_2 (struct MapObject *mapObject, struct Sprite
sprite->data1 = 3;
sprite->data2 = 0;
sprite->data7 |= 0x0002;
- gFieldEffectSpawnParams[0] = mapObject->coords2.x;
- gFieldEffectSpawnParams[1] = mapObject->coords2.y;
- gFieldEffectSpawnParams[2] = sprite->subpriority - 1;
- gFieldEffectSpawnParams[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
return TRUE;
}
@@ -3413,7 +3413,7 @@ bool8 mss_08062EA4(struct MapObject *mapObject, struct Sprite *sprite)
{
return FALSE;
}
- return gUnknown_0850DA64[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), sub_8088E64);
+ return gUnknown_0850DA64[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), MetatileBehavior_IsPokeGrass);
}
bool8 sub_80925AC(struct MapObject *, struct Sprite *);
@@ -3425,7 +3425,7 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data7))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
@@ -3446,7 +3446,7 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data7))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
@@ -4693,7 +4693,7 @@ bool8 sub_80954CC(struct MapObject *mapObject, struct Sprite *sprite)
bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
sprite->data2 = 1;
return TRUE;
@@ -4701,7 +4701,7 @@ bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *s
bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2);
sprite->data2 = 1;
return TRUE;
@@ -4709,7 +4709,7 @@ bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *s
bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_HEART_ICON);
sprite->data2 = 1;
return TRUE;
diff --git a/src/field_screen.c b/src/field_screen.c
new file mode 100644
index 000000000..2d33d237f
--- /dev/null
+++ b/src/field_screen.c
@@ -0,0 +1,15 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+IWRAM_DATA u8 *gUnknown_03000F50;
+IWRAM_DATA u32 filler_03000f54;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
new file mode 100755
index 000000000..54c1d8144
--- /dev/null
+++ b/src/field_special_scene.c
@@ -0,0 +1,363 @@
+#include "global.h"
+#include "task.h"
+#include "sprite.h"
+#include "field_map_obj.h"
+#include "songs.h"
+#include "sound.h"
+#include "palette.h"
+#include "script.h"
+#include "vars.h"
+#include "event_data.h"
+#include "main.h"
+
+#define SECONDS(value) ((signed) (60.0 * value + 0.5))
+
+extern u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); // should be in field_specials.h
+extern void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+extern bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8);
+extern bool32 CountSSTidalStep(u16);
+extern bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, u8 *);
+extern void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
+extern void sp13E_warp_to_last_warp(void);
+extern void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
+extern void sub_80AF8B8(void);
+
+// porthole states
+enum
+{
+ INIT_PORTHOLE,
+ IDLE_CHECK,
+ EXECUTE_MOVEMENT,
+ EXIT_PORTHOLE,
+};
+
+extern void SetCameraPanning(s16 x, s16 y);
+extern void SetCameraPanningCallback(void ( *callback)());
+extern void InstallCameraPanAheadCallback();
+extern void pal_fill_black(void);
+extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId);
+extern void DrawWholeMapView();
+
+extern s8 gTruckCamera_HorizontalTable[];
+
+extern u8 gUnknown_0858E8AB[];
+extern u8 gUnknown_0858E8AD[];
+
+void Task_Truck3(u8);
+
+s16 GetTruckCameraBobbingY(int a1)
+{
+ if (!(a1 % 120))
+ return -1;
+ else if ((a1 % 10) <= 4)
+ return 1;
+
+ return 0;
+}
+
+s16 GetTruckBoxMovement(int a1) // for the box movement?
+{
+ if (!((a1 + 120) % 180))
+ return -1;
+
+ return 0;
+}
+
+// smh STILL BROKEN IN EMERALD
+void Task_Truck1(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s16 cameraYpan;
+ s16 box1 = 0;
+ s16 box2 = 0;
+ s16 box3 = 0;
+ u8 mapNum, mapGroup;
+ register s16 zero asm("r4");
+
+ box1 = GetTruckBoxMovement(data[0] + 30) * 4; // top box.
+ sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, box1 + 3);
+ box2 = GetTruckBoxMovement(data[0]) * 2; // bottom left box.
+ sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, box2 - 3);
+ box3 = GetTruckBoxMovement(data[0]) * 4; // bottom right box.
+ mapNum = gSaveBlock1Ptr->location.mapNum;
+ mapGroup = gSaveBlock1Ptr->location.mapGroup;
+ zero = 0;
+ sub_808E82C(3, mapNum, mapGroup, -3, box3);
+
+ if (++data[0] == SECONDS(500)) // this will never run
+ data[0] = zero; // reset the timer if it gets stuck.
+
+ cameraYpan = GetTruckCameraBobbingY(data[0]);
+ SetCameraPanning(0, cameraYpan);
+}
+
+void Task_Truck2(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s16 cameraYpan;
+ s16 cameraXpan;
+ s16 box1;
+ s16 box2;
+ s16 box3;
+
+ data[0]++;
+ data[2]++;
+
+ if (data[0] > 5)
+ {
+ data[0] = 0;
+ data[1]++;
+ }
+ if ((u16)data[1] == 19)
+ {
+ DestroyTask(taskId);
+ }
+ else
+ {
+ if (gTruckCamera_HorizontalTable[data[1]] == 2)
+ gTasks[taskId].func = Task_Truck3;
+
+ cameraXpan = gTruckCamera_HorizontalTable[data[1]];
+ cameraYpan = GetTruckCameraBobbingY(data[2]);
+ SetCameraPanning(cameraXpan, cameraYpan);
+ box1 = GetTruckBoxMovement(data[2] + 30) * 4;
+ sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, box1 + 3);
+ box2 = GetTruckBoxMovement(data[2]) * 2;
+ sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, box2 - 3);
+ box3 = GetTruckBoxMovement(data[2]) * 4;
+ sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, box3);
+ }
+}
+
+void Task_Truck3(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s16 cameraXpan;
+ s16 cameraYpan;
+
+ data[0]++;
+
+ if (data[0] > 5)
+ {
+ data[0] = 0;
+ data[1]++;
+ }
+
+ if ((u16)data[1] == 19)
+ {
+ DestroyTask(taskId);
+ }
+ else
+ {
+ cameraXpan = gTruckCamera_HorizontalTable[data[1]];
+ cameraYpan = 0;
+ SetCameraPanning(cameraXpan, 0);
+ sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3 - cameraXpan, cameraYpan + 3);
+ sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -cameraXpan, cameraYpan - 3);
+ sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3 - cameraXpan, cameraYpan);
+ }
+}
+
+void Task_HandleTruckSequence(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ /*
+ Each case has a timer which is handled with data[1], incrementing
+ until it reaches the if function's condition, which sets the next task up.
+ */
+ case 0:
+ data[1]++;
+ if (data[1] == SECONDS(1.5))
+ {
+ SetCameraPanningCallback(NULL);
+ data[1] = 0; // reset the timer.
+ data[2] = CreateTask(Task_Truck1, 0xA);
+ data[0] = 1; // run the next case.
+ PlaySE(SE_TRACK_MOVE);
+ }
+ break;
+ case 1:
+ data[1]++;
+ if (data[1] == SECONDS(2.5))
+ {
+ pal_fill_black();
+ data[1] = 0;
+ data[0] = 2;
+ }
+ break;
+ case 2:
+ data[1]++;
+ if (!gPaletteFade.active && data[1] > SECONDS(5))
+ {
+ data[1] = 0;
+ DestroyTask(data[2]);
+ data[3] = CreateTask(Task_Truck2, 0xA);
+ data[0] = 3;
+ PlaySE(SE_TRACK_STOP);
+ }
+ break;
+ case 3:
+ if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?)
+ {
+ InstallCameraPanAheadCallback();
+ data[1] = 0;
+ data[0] = 4;
+ }
+ break;
+ case 4:
+ data[1]++;
+ if (data[1] == 90)
+ {
+ PlaySE(SE_TRACK_HAIK);
+ data[1] = 0;
+ data[0] = 5;
+ }
+ break;
+ case 5:
+ data[1]++;
+ if (data[1] == 120)
+ {
+ MapGridSetMetatileIdAt(11, 8, 520);
+ MapGridSetMetatileIdAt(11, 9, 528);
+ MapGridSetMetatileIdAt(11, 10, 536);
+ DrawWholeMapView();
+ PlaySE(SE_TRACK_DOOR);
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ }
+ break;
+ }
+}
+
+void ExecuteTruckSequence(void)
+{
+ MapGridSetMetatileIdAt(11, 8, 525);
+ MapGridSetMetatileIdAt(11, 9, 533);
+ MapGridSetMetatileIdAt(11, 10, 541);
+ DrawWholeMapView();
+ ScriptContext2_Enable();
+ CpuFastFill(0, gPlttBufferFaded, 0x400);
+ CreateTask(Task_HandleTruckSequence, 0xA);
+}
+
+void EndTruckSequence(u8 taskId)
+{
+ if (!FuncIsActiveTask(Task_HandleTruckSequence))
+ {
+ sub_808E82C(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 3, 3);
+ sub_808E82C(2, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, 0, -3);
+ sub_808E82C(3, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, -3, 0);
+ }
+}
+
+bool8 sub_80FB59C(void)
+{
+ s8 mapGroup, mapNum;
+ s16 x, y;
+
+ if (GetSSTidalLocation(&mapGroup, &mapNum, &x, &y))
+ {
+ return FALSE;
+ }
+ else
+ {
+ Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y);
+ return TRUE;
+ }
+}
+
+void Task_HandlePorthole(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 *var = GetVarPointer(VAR_PORTHOLE);
+ struct WarpData *location = &gSaveBlock1Ptr->location;
+
+ switch (data[0])
+ {
+ case INIT_PORTHOLE: // finish fading before making porthole finish.
+ if (!gPaletteFade.active)
+ {
+ data[1] = 0;
+ data[0] = EXECUTE_MOVEMENT; // execute movement before checking if should be exited. strange?
+ }
+ break;
+ case IDLE_CHECK: // idle and move.
+ if (gMain.newKeys & A_BUTTON)
+ data[1] = 1;
+ if (!ScriptMovement_IsObjectMovementFinished(0xFF, location->mapNum, location->mapGroup))
+ return;
+ if (CountSSTidalStep(1) == TRUE)
+ {
+ if (*var == 2)
+ *var = 9;
+ else
+ *var = 10;
+ data[0] = 3;
+ return;
+ }
+ data[0] = 2;
+ case EXECUTE_MOVEMENT: // execute movement.
+ if (data[1])
+ {
+ data[0] = EXIT_PORTHOLE; // exit porthole.
+ return;
+ }
+ // run this once.
+ if (*var == 2) // which direction?
+ {
+ ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AB);
+ data[0] = IDLE_CHECK; // run case 1.
+ }
+ else
+ {
+ ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AD);
+ data[0] = IDLE_CHECK; // run case 1.
+ }
+ break;
+ case EXIT_PORTHOLE: // exit porthole.
+ FlagClear(0x4001);
+ FlagClear(0x4000);
+ copy_saved_warp2_bank_and_enter_x_to_warp1(0);
+ sp13E_warp_to_last_warp();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80FB6EC(void)
+{
+ u8 spriteId = AddPseudoFieldObject(0x8C, SpriteCallbackDummy, 112, 80, 0);
+
+ gSprites[spriteId].coordOffsetEnabled = FALSE;
+
+ if (VarGet(0x40B4) == 2)
+ {
+ StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4));
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(3));
+ }
+}
+
+void sub_80FB768(void)
+{
+ sub_80FB6EC();
+ gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_13 = TRUE;
+ pal_fill_black();
+ CreateTask(Task_HandlePorthole, 80);
+ ScriptContext2_Enable();
+}
+
+void sub_80FB7A4(void)
+{
+ FlagSet(SYS_CRUISE_MODE);
+ FlagSet(0x4001);
+ FlagSet(0x4000);
+ saved_warp2_set(0, gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum, -1);
+ sub_80FB59C();
+ sub_80AF8B8();
+}
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
new file mode 100644
index 000000000..9929dd6f9
--- /dev/null
+++ b/src/fldeff_cut.c
@@ -0,0 +1,19 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03001100;
+IWRAM_DATA u8 gUnknown_03001101;
+IWRAM_DATA u8 gUnknown_03001102;
+IWRAM_DATA u32 fldeff_cut_unused_03001104;
+IWRAM_DATA u8 gUnknown_03001108[25];
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/international_string_util.c b/src/international_string_util.c
new file mode 100644
index 000000000..81985d614
--- /dev/null
+++ b/src/international_string_util.c
@@ -0,0 +1,57 @@
+#include "global.h"
+#include "international_string_util.h"
+#include "text.h"
+
+extern s32 convert_pixel_width_to_tile_width(s32 a0); // script menu
+
+s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth)
+{
+ return GetStringCenterAlignXOffsetWithLetterSpacing(fontId, str, totalWidth, 0);
+}
+
+s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth)
+{
+ return GetStringWidthDifference(fontId, str, totalWidth, 0);
+}
+
+s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing)
+{
+ return GetStringWidthDifference(fontId, str, totalWidth, letterSpacing) / 2;
+}
+
+s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing)
+{
+ s32 stringWidth = GetStringWidth(fontId, str, letterSpacing);
+ if (totalWidth > stringWidth)
+ return totalWidth - stringWidth;
+ else
+ return 0;
+}
+
+s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1)
+{
+ s32 i, var;
+
+ for (var = 0, i = 0; i < arg1; i++)
+ {
+ s32 stringWidth = GetStringWidth(1, str[i].text, 0);
+ if (stringWidth > var)
+ var = stringWidth;
+ }
+
+ return convert_pixel_width_to_tile_width(var);
+}
+
+s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2)
+{
+ s32 i, var;
+
+ for (var = 0, i = 0; i < arg2; i++)
+ {
+ s32 stringWidth = GetStringWidth(1, str[arg1[i]].text, 0);
+ if (stringWidth > var)
+ var = stringWidth;
+ }
+
+ return convert_pixel_width_to_tile_width(var);
+}
diff --git a/src/librfu_intr.c b/src/librfu_intr.c
new file mode 100644
index 000000000..bdf8b072a
--- /dev/null
+++ b/src/librfu_intr.c
@@ -0,0 +1,4 @@
+#include "global.h"
+#include "main.h"
+
+//TODO: decompile asm/librfu_intr.s to here
diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c
new file mode 100644
index 000000000..cf3fe12ad
--- /dev/null
+++ b/src/librfu_rfu.c
@@ -0,0 +1,109 @@
+#include "global.h"
+#include "main.h"
+
+#include "librfu.h"
+
+struct RfuUnk1
+{
+ u8 unk_0[0x14];
+ u32 unk_14;
+ u32 unk_18;
+ struct RfuIntrStruct unk_1c;
+};
+
+struct RfuUnk2
+{
+ u8 unk_0[0x68];
+ u32 unk_68;
+ u32 unk_6c;
+ u8 unk_70[0x70];
+};
+
+struct RfuUnk3
+{
+ u32 unk_0;
+ u32 unk_4;
+ u8 unk_8[0xD4];
+ u32 unk_dc;
+};
+
+extern u32 *gUnknown_03007890;
+extern u32 *gUnknown_03007894;
+extern struct RfuUnk3* gUnknown_03007898;
+extern struct RfuUnk2* gUnknown_03007880[4];
+extern struct RfuUnk1* gUnknown_03007870[4];
+extern void* sub_82E53F4;
+extern void rfu_STC_clearAPIVariables(void);
+
+// Nonmatching, only register differences
+/*u16 rfu_initializeAPI(u32 *unk0, u16 unk1, IntrFunc *interrupt, bool8 copyInterruptToRam)
+{
+ u16 i;
+ u16 *v13;
+ u16 *v12;
+ u16 num;
+
+ if (((u32)unk0 & 0xF000000) == 0x2000000 && copyInterruptToRam)
+ {
+ return 2;
+ }
+
+ if ((u32)unk0 & 3)
+ return 2;
+
+ // Nintendo pls, just use a ternary for once
+ if (copyInterruptToRam)
+ {
+ // An assert/debug print may have existed before, ie
+ // printf("%s %u < %u", "somefile.c:12345", unk1, num)
+ // to push this into r3?
+ num = 0xe64;
+ if (unk1 < num)
+ return 1;
+ }
+
+ if (copyInterruptToRam == FALSE)
+ {
+ num = 0x504; // same as above, this should be r3 not r0
+ if (unk1 < num)
+ return 1;
+ }
+ gUnknown_03007890 = unk0;
+ gUnknown_03007894 = unk0 + (0xB4 / sizeof(u32));
+ gUnknown_03007898 = (struct RfuUnk3*)(unk0 + (0xDC / sizeof(u32)));
+ gUnknown_03007880[0] = (struct RfuUnk2*)(unk0 + (0x1BC / sizeof(u32)));
+ gUnknown_03007870[0] = (struct RfuUnk1*)(unk0 + (0x37C / sizeof(u32)));
+
+ for (i = 1; i < 4; i++, num)
+ {
+ gUnknown_03007880[i] = (struct RfuUnk2*)&gUnknown_03007880[i-1]->unk_70;
+ gUnknown_03007870[i] = (struct RfuUnk1*)&gUnknown_03007870[i-1]->unk_1c;
+ }
+
+ gUnknown_03007898->unk_dc = (u32)&gUnknown_03007870[3]->unk_1c;
+ STWI_init_all(&gUnknown_03007870[3]->unk_1c, interrupt, copyInterruptToRam);
+ rfu_STC_clearAPIVariables();
+
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_03007880[i]->unk_68 = 0;
+ gUnknown_03007880[i]->unk_6c = 0;
+ gUnknown_03007870[i]->unk_14 = 0;
+ gUnknown_03007870[i]->unk_18 = 0;
+ }
+
+ // Not matching, register differences
+ v12 = (u16*)((u32)&sub_82E53F4 & ~1);
+ v13 = (u16*)gUnknown_03007898->unk_8;
+
+ for (i = 47; i != 0xFFFF; i--)
+ {
+ *v13 = *v12;
+ ++v12;
+ ++v13;
+ }
+
+ gUnknown_03007898->unk_4 = (u32)(&gUnknown_03007898->unk_8[1]);
+
+ return 0;
+}*/
diff --git a/src/librfu_stwi.c b/src/librfu_stwi.c
new file mode 100644
index 000000000..21d38bb38
--- /dev/null
+++ b/src/librfu_stwi.c
@@ -0,0 +1,687 @@
+#include "global.h"
+#include "librfu.h"
+
+extern IntrFunc IntrSIO32(void);
+
+extern void STWI_stop_timer(void);
+
+void STWI_init_Callback_M(void);
+void STWI_init_Callback_S(void);
+void STWI_set_Callback_M(void * callback);
+void STWI_set_Callback_S(void * callback);
+u16 STWI_init(u8 request);
+int STWI_start_Command(void);
+void STWI_intr_timer(void);
+void STWI_set_timer(u8 unk);
+
+int STWI_restart_Command(void);
+int STWI_reset_ClockCounter(void);
+
+void STWI_init_all(struct RfuIntrStruct *interruptStruct, IntrFunc *interrupt, bool8 copyInterruptToRam)
+{
+ // If we're copying our interrupt into RAM, DMA it to block1 and use
+ // block2 for our RfuStruct, otherwise block1 holds the RfuStruct.
+ // interrupt usually is a pointer to gIntrTable[1]
+ if (copyInterruptToRam == TRUE)
+ {
+ *interrupt = (IntrFunc)interruptStruct->block1;
+ DmaCopy16(3, &IntrSIO32, interruptStruct->block1, 0x960);
+ gRfuState = (struct RfuStruct*)interruptStruct->block2;
+ }
+ else
+ {
+ *interrupt = (IntrFunc)IntrSIO32;
+ gRfuState = (struct RfuStruct*)interruptStruct->block1;
+ }
+
+ gRfuState->rxPacket = (union RfuPacket*)interruptStruct->rxPacketAlloc;
+ gRfuState->txPacket = (union RfuPacket*)interruptStruct->txPacketAlloc;
+ gRfuState->msMode = 1;
+ gRfuState->unk_0 = 0;
+ gRfuState->txParams = 0;
+ gRfuState->unk_5 = 0;
+ gRfuState->unk_7 = 0;
+ gRfuState->unk_8 = 0;
+ gRfuState->unk_9 = 0;
+ gRfuState->timerState = 0;
+ gRfuState->timerActive = 0;
+ gRfuState->unk_12 = 0;
+ gRfuState->unk_15 = 0;
+ gRfuState->unk_2c = 0;
+
+ REG_RCNT = 0x100; //TODO: mystery bit?
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
+ STWI_init_Callback_M();
+ STWI_init_Callback_S();
+
+ IntrEnable(INTR_FLAG_SERIAL);
+}
+
+void STWI_init_timer(IntrFunc *interrupt, int timerSelect)
+{
+ *interrupt = STWI_intr_timer;
+ gRfuState->timerSelect = timerSelect;
+
+ IntrEnable(INTR_FLAG_TIMER0 << gRfuState->timerSelect);
+}
+
+void AgbRFU_SoftReset(void)
+{
+ vu16 *timerL;
+ vu16 *timerH;
+
+ REG_RCNT = 0x8000;
+ REG_RCNT = 0x80A0; // all these bits are undocumented
+ timerL = &REG_TMCNT_L(gRfuState->timerSelect);
+ timerH = &REG_TMCNT_H(gRfuState->timerSelect);
+ *timerH = 0;
+ *timerL = 0;
+ *timerH = 0x83;
+ while (*timerL <= 0x11)
+ REG_RCNT = 0x80A2;
+ *timerH = 3;
+ REG_RCNT = 0x80A0;
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
+
+ gRfuState->unk_0 = 0;
+ gRfuState->txParams = 0;
+ gRfuState->unk_5 = 0;
+ gRfuState->activeCommand = 0;
+ gRfuState->unk_7 = 0;
+ gRfuState->unk_8 = 0;
+ gRfuState->unk_9 = 0;
+ gRfuState->timerState = 0;
+ gRfuState->timerActive = 0;
+ gRfuState->unk_12 = 0;
+ gRfuState->msMode = 1;
+ gRfuState->unk_15 = 0;
+ gRfuState->unk_2c = 0;
+}
+
+void STWI_set_MS_mode(u8 mode)
+{
+ gRfuState->msMode = mode;
+}
+
+u16 STWI_read_status(u8 index)
+{
+ switch (index)
+ {
+ case 0:
+ return gRfuState->unk_12;
+ case 1:
+ return gRfuState->msMode;
+ case 2:
+ return gRfuState->unk_0;
+ case 3:
+ return gRfuState->activeCommand;
+ default:
+ return 0xFFFF;
+ }
+}
+
+void STWI_init_Callback_M(void)
+{
+ STWI_set_Callback_M(0);
+}
+
+void STWI_init_Callback_S(void)
+{
+ STWI_set_Callback_S(0);
+}
+
+void STWI_set_Callback_M(void *callback)
+{
+ gRfuState->callbackM = callback;
+}
+
+void STWI_set_Callback_S(void *callback)
+{
+ gRfuState->callbackS = callback;
+}
+
+void STWI_set_Callback_ID(u32 id)
+{
+ gRfuState->callbackID = id;
+}
+
+u16 STWI_poll_CommandEnd(void)
+{
+ while (gRfuState->unk_2c == TRUE)
+ ;
+ return gRfuState->unk_12;
+}
+
+void STWI_send_ResetREQ(void)
+{
+ if (!STWI_init(RFU_RESET))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_LinkStatusREQ(void)
+{
+ if (!STWI_init(RFU_LINK_STATUS))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_VersionStatusREQ(void)
+{
+ if (!STWI_init(RFU_VERSION_STATUS))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SystemStatusREQ(void)
+{
+ if (!STWI_init(RFU_SYSTEM_STATUS))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SlotStatusREQ(void)
+{
+ if (!STWI_init(RFU_SLOT_STATUS))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_ConfigStatusREQ(void)
+{
+ if (!STWI_init(RFU_CONFIG_STATUS))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_GameConfigREQ(u8 * unk1, u8 *data)
+{
+ u8 *packetBytes;
+ int i;
+
+ if (!STWI_init(RFU_GAME_CONFIG))
+ {
+ gRfuState->txParams = 6;
+
+ //TODO: what is unk1
+ packetBytes = gRfuState->txPacket->rfuPacket8.data;
+ packetBytes += sizeof(u32);
+ *(u16*)packetBytes = *(u16*)unk1;
+
+ packetBytes += sizeof(u16);
+ unk1 += sizeof(u16);
+
+ for (i = 0; i < 14; i++)
+ {
+ *packetBytes = *unk1;
+ packetBytes++;
+ unk1++;
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ *packetBytes = *data;
+ packetBytes++;
+ data++;
+ }
+
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SystemConfigREQ(u16 unk1, u8 unk2, u8 unk3)
+{
+ if (!STWI_init(RFU_SYSTEM_CONFIG))
+ {
+ u8 *packetBytes;
+
+ gRfuState->txParams = 1;
+
+ packetBytes = gRfuState->txPacket->rfuPacket8.data;
+ packetBytes += sizeof(u32);
+
+ *packetBytes++ = unk3;
+ *packetBytes++ = unk2;
+ *(u16*)packetBytes = unk1;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SC_StartREQ(void)
+{
+ if (!STWI_init(RFU_SC_START))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SC_PollingREQ(void)
+{
+ if (!STWI_init(RFU_SC_POLLING))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SC_EndREQ(void)
+{
+ if (!STWI_init(RFU_SC_END))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SP_StartREQ(void)
+{
+ if (!STWI_init(RFU_SP_START))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SP_PollingREQ(void)
+{
+ if (!STWI_init(RFU_SP_POLLING))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_SP_EndREQ(void)
+{
+ if (!STWI_init(RFU_SP_END))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CP_StartREQ(u16 unk1)
+{
+ if (!STWI_init(RFU_CP_START))
+ {
+ gRfuState->txParams = 1;
+ gRfuState->txPacket->rfuPacket32.data[0] = unk1;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CP_PollingREQ(void)
+{
+ if (!STWI_init(RFU_CP_POLLING))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CP_EndREQ(void)
+{
+ if (!STWI_init(RFU_CP_END))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DataTxREQ(void *in, u8 size)
+{
+ if (!STWI_init(RFU_DATA_TX))
+ {
+ u8 txParams = (size / sizeof(u32));
+ if (size & (sizeof(u32) - 1))
+ txParams += 1;
+
+ gRfuState->txParams = txParams;
+ CpuCopy32(in, gRfuState->txPacket->rfuPacket32.data, gRfuState->txParams * sizeof(u32));
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DataTxAndChangeREQ(void *in, u8 size)
+{
+ if (!STWI_init(RFU_DATA_TX_AND_CHANGE))
+ {
+ u8 txParams = (size / sizeof(u32));
+ if (size & (sizeof(u32) - 1))
+ txParams += 1;
+
+ gRfuState->txParams = txParams;
+ CpuCopy32(in, gRfuState->txPacket->rfuPacket32.data, gRfuState->txParams * sizeof(u32));
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DataRxREQ(void)
+{
+ if (!STWI_init(RFU_DATA_RX))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_MS_ChangeREQ(void)
+{
+ if (!STWI_init(RFU_MS_CHANGE))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DataReadyAndChangeREQ(u8 unk)
+{
+ if (!STWI_init(RFU_DATA_READY_AND_CHANGE))
+ {
+ if (!unk)
+ {
+ gRfuState->txParams = 0;
+ }
+ else
+ {
+ u8 *packetBytes;
+
+ gRfuState->txParams = 1;
+
+ packetBytes = gRfuState->txPacket->rfuPacket8.data;
+ packetBytes += sizeof(u32);
+
+ *packetBytes++ = unk;
+ *packetBytes++ = 0;
+ *packetBytes++ = 0;
+ *packetBytes = 0;
+ }
+
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DisconnectedAndChangeREQ(u8 unk0, u8 unk1)
+{
+ if (!STWI_init(RFU_DISCONNECTED_AND_CHANGE))
+ {
+ u8 *packetBytes;
+
+ gRfuState->txParams = 1;
+
+ packetBytes = gRfuState->txPacket->rfuPacket8.data;
+ packetBytes += sizeof(u32);
+
+ *packetBytes++ = unk0;
+ *packetBytes++ = unk1;
+ *packetBytes++ = 0;
+ *packetBytes = 0;
+
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_ResumeRetransmitAndChangeREQ(void)
+{
+ if (!STWI_init(RFU_RESUME_RETRANSMIT_AND_CHANGE))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_DisconnectREQ(u8 unk)
+{
+ if (!STWI_init(RFU_DISCONNECT))
+ {
+ gRfuState->txParams = 1;
+ gRfuState->txPacket->rfuPacket32.data[0] = unk;
+
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_TestModeREQ(u8 unk0, u8 unk1)
+{
+ if (!STWI_init(RFU_TEST_MODE))
+ {
+ gRfuState->txParams = 1;
+ gRfuState->txPacket->rfuPacket32.data[0] = unk0 | (unk1 << 8);
+
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CPR_StartREQ(u16 unk0, u16 unk1, u8 unk2)
+{
+ u32 *packetData;
+ u32 arg1;
+
+ if (!STWI_init(RFU_CPR_START))
+ {
+ gRfuState->txParams = 2;
+
+ arg1 = unk1 | (unk0 << 16);
+ packetData = gRfuState->txPacket->rfuPacket32.data;
+ packetData[0] = arg1;
+ packetData[1] = unk2;
+
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CPR_PollingREQ(void)
+{
+ if (!STWI_init(RFU_CPR_POLLING))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_CPR_EndREQ(void)
+{
+ if (!STWI_init(RFU_CPR_END))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_send_StopModeREQ(void)
+{
+ if (!STWI_init(RFU_STOP_MODE))
+ {
+ gRfuState->txParams = 0;
+ STWI_start_Command();
+ }
+}
+
+void STWI_intr_timer(void)
+{
+ switch (gRfuState->timerState)
+ {
+ //TODO: Make an enum for these
+ case 2:
+ gRfuState->timerActive = 1;
+ STWI_set_timer(50);
+ break;
+ case 1:
+ case 4:
+ STWI_stop_timer();
+ STWI_restart_Command();
+ break;
+ case 3:
+ gRfuState->timerActive = 1;
+ STWI_stop_timer();
+ STWI_reset_ClockCounter();
+ if (gRfuState->callbackM)
+ gRfuState->callbackM(255, 0);
+ break;
+ }
+}
+
+void STWI_set_timer(u8 unk)
+{
+ vu16 *timerL;
+ vu16 *timerH;
+
+ timerL = &REG_TMCNT_L(gRfuState->timerSelect);
+ timerH = &REG_TMCNT_H(gRfuState->timerSelect);
+ REG_IME = 0;
+ switch (unk)
+ {
+ case 50:
+ *timerL = 0xFCCB;
+ gRfuState->timerState = 1;
+ break;
+ case 80:
+ *timerL = 0xFAE0;
+ gRfuState->timerState = 2;
+ break;
+ case 100:
+ *timerL = 0xF996;
+ gRfuState->timerState = 3;
+ break;
+ case 130:
+ *timerL = 0xF7AD;
+ gRfuState->timerState = 4;
+ break;
+ }
+ *timerH = TIMER_ENABLE | TIMER_INTR_ENABLE | TIMER_1024CLK;
+ REG_IF = INTR_FLAG_TIMER0 << gRfuState->timerSelect;
+ REG_IME = 1;
+}
+
+void STWI_stop_timer(void)
+{
+ gRfuState->timerState = 0;
+
+ REG_TMCNT_L(gRfuState->timerSelect) = 0;
+ REG_TMCNT_H(gRfuState->timerSelect) = 0;
+}
+
+u16 STWI_init(u8 request)
+{
+ if (!REG_IME)
+ {
+ gRfuState->unk_12 = 6;
+ if (gRfuState->callbackM)
+ gRfuState->callbackM(request, gRfuState->unk_12);
+ return TRUE;
+ }
+ else if (gRfuState->unk_2c == TRUE)
+ {
+ gRfuState->unk_12 = 2;
+ gRfuState->unk_2c = FALSE;
+ if (gRfuState->callbackM)
+ gRfuState->callbackM(request, gRfuState->unk_12);
+ return TRUE;
+ }
+ else if(!gRfuState->msMode)
+ {
+ gRfuState->unk_12 = 4;
+ if (gRfuState->callbackM)
+ gRfuState->callbackM(request, gRfuState->unk_12, gRfuState);
+ return TRUE;
+ }
+ else
+ {
+ gRfuState->unk_2c = TRUE;
+ gRfuState->activeCommand = request;
+ gRfuState->unk_0 = 0;
+ gRfuState->txParams = 0;
+ gRfuState->unk_5 = 0;
+ gRfuState->unk_7 = 0;
+ gRfuState->unk_8 = 0;
+ gRfuState->unk_9 = 0;
+ gRfuState->timerState = 0;
+ gRfuState->timerActive = 0;
+ gRfuState->unk_12 = 0;
+ gRfuState->unk_15 = 0;
+
+ REG_RCNT = 0x100;
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
+ return FALSE;
+ }
+}
+
+int STWI_start_Command()
+{
+ u16 imeTemp;
+
+ // Yes, it matters that it's casted to a u32...
+ *(u32*)gRfuState->txPacket->rfuPacket8.data = 0x99660000 | (gRfuState->txParams << 8) | gRfuState->activeCommand;
+ REG_SIODATA32 = gRfuState->txPacket->rfuPacket32.command;
+
+ gRfuState->unk_0 = 0;
+ gRfuState->unk_5 = 1;
+
+ imeTemp = REG_IME;
+ REG_IME = 0;
+ REG_IE |= (INTR_FLAG_TIMER0 << gRfuState->timerSelect);
+ REG_IE |= INTR_FLAG_SERIAL;
+ REG_IME = imeTemp;
+
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_MULTI_BUSY | SIO_115200_BPS;
+
+ return 0;
+}
+
+int STWI_restart_Command(void)
+{
+ if (gRfuState->unk_15 <= 1)
+ {
+ gRfuState->unk_15++;
+ STWI_start_Command();
+ }
+ else
+ {
+ if (gRfuState->activeCommand == RFU_MS_CHANGE || gRfuState->activeCommand == RFU_DATA_TX_AND_CHANGE || gRfuState->activeCommand == RFU_UNK35 || gRfuState->activeCommand == RFU_RESUME_RETRANSMIT_AND_CHANGE)
+ {
+ gRfuState->unk_12 = 1;
+ gRfuState->unk_2c = 0;
+
+ if (gRfuState->callbackM)
+ gRfuState->callbackM(gRfuState->activeCommand, gRfuState->unk_12);
+ }
+ else
+ {
+ gRfuState->unk_12 = 1;
+ gRfuState->unk_2c = 0;
+
+ if (gRfuState->callbackM)
+ gRfuState->callbackM(gRfuState->activeCommand, gRfuState->unk_12);
+
+ gRfuState->unk_0 = 4; //TODO: what's 4
+ }
+ }
+
+ return 0;
+}
+
+int STWI_reset_ClockCounter()
+{
+ gRfuState->unk_0 = 5; //TODO: what is 5
+ gRfuState->txParams = 0;
+ gRfuState->unk_5 = 0;
+ REG_SIODATA32 = (1 << 31);
+ REG_SIOCNT = 0;
+ REG_SIOCNT = SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS;
+ REG_SIOCNT = (SIO_INTR_ENABLE | SIO_32BIT_MODE | SIO_115200_BPS) + 0x7F;
+
+ return 0;
+}
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index 9f38824f9..3b7ae49f2 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -4,7 +4,7 @@
#include "global.h"
#include "main.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom6.h"
#include "event_data.h"
#include "script.h"
diff --git a/src/link.c b/src/link.c
new file mode 100644
index 000000000..ae2cd1992
--- /dev/null
+++ b/src/link.c
@@ -0,0 +1,56 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+struct BlockTransfer
+{
+ u16 pos;
+ u16 size;
+ void *src;
+ bool8 active;
+ u8 multiplayerId;
+};
+
+struct LinkTestBGInfo
+{
+ u32 screenBaseBlock;
+ u32 paletteNum;
+ u32 dummy_8;
+ u32 dummy_C;
+};
+
+// Static RAM declarations
+
+IWRAM_DATA struct BlockTransfer gUnknown_03000D10;
+IWRAM_DATA u32 link_c_unused_03000d1c;
+IWRAM_DATA struct BlockTransfer gUnknown_03000D20[4];
+IWRAM_DATA u32 gUnknown_03000D50;
+IWRAM_DATA u32 gUnknown_03000D54;
+IWRAM_DATA u8 gUnknown_03000D58;
+IWRAM_DATA u32 gUnknown_03000D5C;
+IWRAM_DATA u32 gUnknown_03000D60;
+IWRAM_DATA u8 gUnknown_03000D64[4]; // not really, but won't match otherwise
+IWRAM_DATA u8 gUnknown_03000D68[4];
+IWRAM_DATA u8 gUnknown_03000D6C;
+IWRAM_DATA bool8 gUnknown_03000D6D;
+IWRAM_DATA u16 gUnknown_03000D6E;
+IWRAM_DATA u16 gUnknown_03000D70;
+IWRAM_DATA u8 gUnknown_03000D72;
+IWRAM_DATA u8 gUnknown_03000D73;
+IWRAM_DATA u8 gUnknown_03000D74[4]; // not really, but won't match otherwise
+IWRAM_DATA u8 gUnknown_03000D78[8]; // not really, but won't match otherwise
+IWRAM_DATA u8 gUnknown_03000D80[16];
+IWRAM_DATA u16 gUnknown_03000D90[8];
+IWRAM_DATA u32 gUnknown_03000DA0;
+IWRAM_DATA u32 gUnknown_03000DA4;
+IWRAM_DATA void *gUnknown_03000DA8;
+IWRAM_DATA void *gUnknown_03000DAC;
+IWRAM_DATA bool32 gUnknown_03000DB0;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/mail.c b/src/mail.c
new file mode 100644
index 000000000..1060d73bd
--- /dev/null
+++ b/src/mail.c
@@ -0,0 +1,577 @@
+
+// Includes
+#include "global.h"
+#include "main.h"
+#include "overworld.h"
+#include "task.h"
+#include "unknown_task.h"
+#include "palette.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "text.h"
+#include "text_window.h"
+#include "string_util.h"
+#include "international_string_util.h"
+#include "strings.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "pokemon_icon.h"
+#include "species.h"
+#include "malloc.h"
+#include "easy_chat.h"
+#include "mail_data.h"
+#include "mail.h"
+
+// Static type declarations
+
+struct UnkMailStruct
+{
+ u32 numEasyChatWords:2;
+ u32 xOffset:6;
+ u32 lineHeight:8;
+};
+
+struct MailLayout
+{
+ u8 numSubStructs;
+ u8 signatureYPos;
+ u8 signatureWidth;
+ u8 wordsXPos;
+ u8 wordsYPos;
+ const struct UnkMailStruct *var8;
+};
+
+struct MailGraphics
+{
+ const u16 *palette;
+ const u8 *tiles;
+ const u8 *tileMap;
+ u16 var0C;
+ u16 var0E;
+ u16 color10;
+ u16 color12;
+};
+
+// Static RAM declarations
+
+static EWRAM_DATA struct
+{
+ /*0x0000*/ u8 strbuf[8][64];
+ /*0x0200*/ u8 playerName[12];
+ /*0x020C*/ MainCallback callback;
+ /*0x0210*/ MainCallback callback2;
+ /*0x0214*/ struct MailStruct *mail;
+ /*0x0218*/ bool8 flag;
+ /*0x0219*/ u8 signatureWidth;
+ /*0x021a*/ u8 mailType;
+ /*0x021b*/ u8 animsActive;
+ /*0x021c*/ u8 monIconSprite;
+ /*0x021d*/ u8 language;
+ /*0x021e*/ bool8 playerIsSender;
+ /*0x0220*/ void (*parserSingle)(u8 *dest, u16 word);
+ /*0x0224*/ void (*parserMultiple)(u8 *dest, const u16 *src, u16 length1, u16 length2);
+ /*0x0228*/ const struct MailLayout *layout;
+ /*0x022c*/ u8 bg1TilemapBuffer[0x1000];
+ /*0x122c*/ u8 bg2TilemapBuffer[0x1000];
+} *gUnknown_0203A134 = NULL;
+
+// Static ROM declarations
+
+void sub_81219F0(void);
+void sub_8121A1C(void);
+void sub_8121B1C(void);
+void sub_8121C50(void);
+void sub_8121C64(void);
+void sub_8121C98(void);
+void sub_8121CC0(void);
+void sub_8121D00(void);
+
+// .rodata
+
+const struct BgTemplate gUnknown_0859F290[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .priority = 0
+ }, {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 30,
+ .priority = 1
+ }, {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 29,
+ .priority = 2
+ }
+};
+
+const struct WindowTemplate gUnknown_0859F29C[] = {
+ {
+ .priority = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 3,
+ .width = 26,
+ .height = 15,
+ .paletteNum = 15,
+ .baseBlock = 1
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+const u8 gUnknown_0859F2AC[] = {
+ 0,
+ 10,
+ 11
+};
+
+const u16 gUnknown_0859F2B0[][2] = {
+ { 0x6ACD, 0x51A5 },
+ { 0x45FC, 0x38D4 }
+};
+
+extern const u16 gUnknown_08DBE818[];
+extern const u16 gUnknown_08DBE838[];
+extern const u16 gUnknown_08DBE858[];
+extern const u16 gUnknown_08DBE878[];
+extern const u16 gUnknown_08DBE898[];
+extern const u16 gUnknown_08DBE8B8[];
+extern const u16 gUnknown_08DBE8D8[];
+extern const u16 gUnknown_08DBE8F8[];
+extern const u16 gUnknown_08DBE918[];
+extern const u16 gUnknown_08DBE938[];
+extern const u16 gUnknown_08DBE958[];
+extern const u16 gUnknown_08DBE978[];
+extern const u8 gUnknown_08DBE998[];
+extern const u8 gUnknown_08DBFBA4[];
+extern const u8 gUnknown_08DBEB38[];
+extern const u8 gUnknown_08DBFC7C[];
+extern const u8 gUnknown_08DBEC74[];
+extern const u8 gUnknown_08DBFD5C[];
+extern const u8 gUnknown_08DBEE84[];
+extern const u8 gUnknown_08DBFE68[];
+extern const u8 gUnknown_08DBEF5C[];
+extern const u8 gUnknown_08DBFF44[];
+extern const u8 gUnknown_08DBF154[];
+extern const u8 gUnknown_08DC0034[];
+extern const u8 gUnknown_08DBF2D4[];
+extern const u8 gUnknown_08DC0114[];
+extern const u8 gUnknown_08DBF37C[];
+extern const u8 gUnknown_08DC01F4[];
+extern const u8 gUnknown_08DBF50C[];
+extern const u8 gUnknown_08DC0300[];
+extern const u8 gUnknown_08DBF64C[];
+extern const u8 gUnknown_08DC03F0[];
+extern const u8 gUnknown_08DBF7B4[];
+extern const u8 gUnknown_08DC04E8[];
+extern const u8 gUnknown_08DBF904[];
+extern const u8 gUnknown_08DC0600[];
+
+const struct MailGraphics gUnknown_0859F2B8[] = {
+ {
+ gUnknown_08DBE818, gUnknown_08DBE998, gUnknown_08DBFBA4, 0x02c0, 0x0000, 0x294a, 0x6739
+ }, {
+ gUnknown_08DBE838, gUnknown_08DBEB38, gUnknown_08DBFC7C, 0x02e0, 0x0000, 0x7fff, 0x4631
+ }, {
+ gUnknown_08DBE858, gUnknown_08DBEC74, gUnknown_08DBFD5C, 0x0400, 0x0000, 0x294a, 0x6739
+ }, {
+ gUnknown_08DBE878, gUnknown_08DBEE84, gUnknown_08DBFE68, 0x01e0, 0x0000, 0x7fff, 0x4631
+ }, {
+ gUnknown_08DBE898, gUnknown_08DBEF5C, gUnknown_08DBFF44, 0x02e0, 0x0000, 0x7fff, 0x4631
+ }, {
+ gUnknown_08DBE8B8, gUnknown_08DBF154, gUnknown_08DC0034, 0x0300, 0x0000, 0x294a, 0x6739
+ }, {
+ gUnknown_08DBE8D8, gUnknown_08DBF2D4, gUnknown_08DC0114, 0x0140, 0x0000, 0x7fff, 0x4631
+ }, {
+ gUnknown_08DBE8F8, gUnknown_08DBF37C, gUnknown_08DC01F4, 0x0300, 0x0000, 0x7fff, 0x4631
+ }, {
+ gUnknown_08DBE918, gUnknown_08DBF50C, gUnknown_08DC0300, 0x0220, 0x0000, 0x294a, 0x6739
+ }, {
+ gUnknown_08DBE938, gUnknown_08DBF64C, gUnknown_08DC03F0, 0x0340, 0x0000, 0x294a, 0x6739
+ }, {
+ gUnknown_08DBE958, gUnknown_08DBF7B4, gUnknown_08DC04E8, 0x02a0, 0x0000, 0x294a, 0x6739
+ }, {
+ gUnknown_08DBE978, gUnknown_08DBF904, gUnknown_08DC0600, 0x0520, 0x0000, 0x294a, 0x6739
+ }
+};
+
+const struct UnkMailStruct Unknown_0859F3A8[] = {
+ { .numEasyChatWords = 3, .lineHeight = 16 },
+ { .numEasyChatWords = 3, .lineHeight = 16 },
+ { .numEasyChatWords = 3, .lineHeight = 16 }
+};
+
+const struct MailLayout gUnknown_0859F3B4[] = {
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x08, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
+ { 0x03, 0x00, 0x00, 0x02, 0x00, Unknown_0859F3A8 }
+};
+
+const struct UnkMailStruct Unknown_0859F444[] = {
+ { .numEasyChatWords = 2, .lineHeight = 16 },
+ { .numEasyChatWords = 2, .lineHeight = 16 },
+ { .numEasyChatWords = 2, .lineHeight = 16 },
+ { .numEasyChatWords = 2, .lineHeight = 16 },
+ { .numEasyChatWords = 1, .lineHeight = 16 }
+};
+
+const struct MailLayout gUnknown_0859F458[] = {
+ { 0x05, 0x07, 0x58, 0x0b, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x0a, 0x60, 0x09, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x0c, 0x68, 0x05, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x05, 0x60, 0x08, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x0a, 0x60, 0x09, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x09, 0x70, 0x05, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x0c, 0x68, 0x09, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x0d, 0x68, 0x0d, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x09, 0x60, 0x09, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x09, 0x60, 0x09, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x11, 0x68, 0x0f, 0x1e, Unknown_0859F444 },
+ { 0x05, 0x09, 0x60, 0x05, 0x1e, Unknown_0859F444 }
+};
+
+// What the heck are these meant to be? Call them u16 for now.
+
+const u16 Unknown_0859F4E8[] = {
+ 0x00, 0x4000, 0x00, 0x00
+};
+
+const u16 Unknown_0859F4F0[] = {
+ 0x00, 0x00, -1, 0x00
+};
+
+const u16 Unknown_0859F4F8[] = {
+ 0x04, 0x00, -1, 0x00
+};
+
+const u16 Unknown_0859F500[] = {
+ 0x00, 0x40, -1, 0x00
+};
+
+const u16 *const gUnknown_0859F508[] = {
+ Unknown_0859F4F0,
+ Unknown_0859F4F8,
+ Unknown_0859F500
+};
+
+// .text
+
+void sub_8121478(struct MailStruct *mail, MainCallback callback, bool8 flag) {
+ u16 buffer[2];
+ u16 species;
+
+ gUnknown_0203A134 = calloc(1, sizeof(*gUnknown_0203A134));
+ gUnknown_0203A134->language = LANGUAGE_ENGLISH;
+ gUnknown_0203A134->playerIsSender = TRUE;
+ gUnknown_0203A134->parserSingle = CopyEasyChatWord;
+ gUnknown_0203A134->parserMultiple = ConvertEasyChatWordsToString;
+ if (mail->itemId >= ITEM_ORANGE_MAIL && mail->itemId <= ITEM_RETRO_MAIL) {
+ gUnknown_0203A134->mailType = mail->itemId - ITEM_ORANGE_MAIL;
+ }
+ else
+ {
+ gUnknown_0203A134->mailType = 0;
+ flag = FALSE;
+ }
+ switch (gUnknown_0203A134->playerIsSender)
+ {
+ case FALSE:
+ default:
+ gUnknown_0203A134->layout = &gUnknown_0859F3B4[gUnknown_0203A134->mailType];
+ break;
+ case TRUE:
+ gUnknown_0203A134->layout = &gUnknown_0859F458[gUnknown_0203A134->mailType];
+ break;
+ }
+ species = sub_80D45E8(mail->species, buffer);
+ if (species >= SPECIES_BULBASAUR && species < NUM_SPECIES)
+ {
+ switch (gUnknown_0203A134->mailType)
+ {
+ default:
+ gUnknown_0203A134->animsActive = 0;
+ break;
+ case ITEM_BEAD_MAIL - ITEM_ORANGE_MAIL:
+ gUnknown_0203A134->animsActive = 1;
+ break;
+ case ITEM_DREAM_MAIL - ITEM_ORANGE_MAIL:
+ gUnknown_0203A134->animsActive = 2;
+ break;
+ }
+ }
+ else
+ {
+ gUnknown_0203A134->animsActive = 0;
+ }
+ gUnknown_0203A134->mail = mail;
+ gUnknown_0203A134->callback = callback;
+ gUnknown_0203A134->flag = flag;
+ SetMainCallback2(sub_81219F0);
+}
+
+bool8 sub_81215EC(void)
+{
+ u16 icon;
+
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ remove_some_task();
+ SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
+ break;
+ case 1:
+ CpuFill16(0, (void *)OAM, OAM_SIZE);
+ break;
+ case 2:
+ ResetPaletteFade();
+ break;
+ case 3:
+ ResetTasks();
+ break;
+ case 4:
+ ResetSpriteData();
+ break;
+ case 5:
+ FreeAllSpritePalettes();
+ reset_temp_tile_data_buffers();
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0x0000);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0x0000);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0x0000);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0x0000);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0x0000);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0x0000);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0x0000);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0x0000);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x0000);
+ break;
+ case 6:
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_0859F290, 3);
+ SetBgTilemapBuffer(1, gUnknown_0203A134->bg1TilemapBuffer);
+ SetBgTilemapBuffer(2, gUnknown_0203A134->bg2TilemapBuffer);
+ break;
+ case 7:
+ InitWindows(gUnknown_0859F29C);
+ DeactivateAllTextPrinters();
+ break;
+ case 8:
+ decompress_and_copy_tile_data_to_vram(1, gUnknown_0859F2B8[gUnknown_0203A134->mailType].tiles, 0, 0, 0);
+ break;
+ case 9:
+ if (free_temp_tile_data_buffers_if_possible())
+ {
+ return FALSE;
+ }
+ break;
+ case 10:
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(2, 1, 0, 0, 30, 20);
+ CopyToBgTilemapBuffer(1, gUnknown_0859F2B8[gUnknown_0203A134->mailType].tileMap, 0, 0);
+ break;
+ case 11:
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(2);
+ break;
+ case 12:
+ LoadPalette(sub_8098C64(), 240, 32);
+ gPlttBufferUnfaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10;
+ gPlttBufferFaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10;
+ gPlttBufferUnfaded[251] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color12;
+ gPlttBufferFaded[251] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color12;
+ LoadPalette(gUnknown_0859F2B8[gUnknown_0203A134->mailType].palette, 0, 32);
+ gPlttBufferUnfaded[10] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0];
+ gPlttBufferFaded[10] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0];
+ gPlttBufferUnfaded[11] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1];
+ gPlttBufferFaded[11] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1];
+ break;
+ case 13:
+ if (gUnknown_0203A134->flag)
+ {
+ sub_8121A1C();
+ }
+ break;
+ case 14:
+ if (gUnknown_0203A134->flag)
+ {
+ sub_8121B1C();
+ RunTextPrinters();
+ }
+ break;
+ case 15:
+ if (sub_8087598() == TRUE)
+ {
+ return FALSE;
+ }
+ break;
+ case 16:
+ SetVBlankCallback(sub_8121C50);
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ break;
+ case 17:
+ icon = sub_80D2E84(gUnknown_0203A134->mail->species);
+ switch (gUnknown_0203A134->animsActive)
+ {
+ case 1:
+ sub_80D2F68(icon);
+ gUnknown_0203A134->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x60, 0x80, 0, 0);
+ break;
+ case 2:
+ sub_80D2F68(icon);
+ gUnknown_0203A134->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x28, 0x80, 0, 0);
+ break;
+ }
+ break;
+ case 18:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ gUnknown_0203A134->callback2 = sub_8121C98;
+ return TRUE;
+ default:
+ return FALSE;
+ }
+ gMain.state ++;
+ return FALSE;
+}
+
+void sub_81219F0(void)
+{
+ do
+ {
+ if (sub_81215EC() == TRUE)
+ {
+ SetMainCallback2(sub_8121C64);
+ break;
+ }
+ } while (sub_81221AC() != TRUE);
+}
+
+void sub_8121A1C(void)
+{
+ u16 i;
+ u8 total;
+ u8 *ptr;
+
+ total = 0;
+ for (i = 0; i < gUnknown_0203A134->layout->numSubStructs; i ++)
+ {
+ ConvertEasyChatWordsToString(gUnknown_0203A134->strbuf[i], &gUnknown_0203A134->mail->words[total], gUnknown_0203A134->layout->var8[i].numEasyChatWords, 1);
+ total += gUnknown_0203A134->layout->var8[i].numEasyChatWords;
+ }
+ ptr = StringCopy(gUnknown_0203A134->playerName, gUnknown_0203A134->mail->playerName);
+ if (!gUnknown_0203A134->playerIsSender)
+ {
+ StringCopy(ptr, gText_FromSpace);
+ gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->signatureWidth - (StringLength(gUnknown_0203A134->playerName) * 8 - 0x60);
+ }
+ else
+ {
+ sub_81DB52C(gUnknown_0203A134->playerName);
+ gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->signatureWidth;
+ }
+}
+
+void sub_8121B1C(void)
+{
+ u16 i;
+ u8 strbuf[0x20];
+ u8 y;
+ u8 *bufptr;
+ s32 box_x;
+ s32 box_y;
+
+ y = 0;
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(1, 0);
+ for (i = 0; i < gUnknown_0203A134->layout->numSubStructs; i ++)
+ {
+ if (gUnknown_0203A134->strbuf[i][0] == EOS || gUnknown_0203A134->strbuf[i][0] == CHAR_SPACE)
+ {
+ continue;
+ }
+ box_print(0, 1, gUnknown_0203A134->layout->var8[i].xOffset + gUnknown_0203A134->layout->wordsYPos, y + gUnknown_0203A134->layout->wordsXPos, gUnknown_0859F2AC, 0, gUnknown_0203A134->strbuf[i]);
+ y += gUnknown_0203A134->layout->var8[i].lineHeight;
+ }
+ bufptr = StringCopy(strbuf, gText_FromSpace);
+ StringCopy(bufptr, gUnknown_0203A134->playerName);
+ box_x = GetStringCenterAlignXOffset(1, strbuf, gUnknown_0203A134->signatureWidth) + 0x68;
+ box_y = gUnknown_0203A134->layout->signatureYPos + 0x58;
+ box_print(0, 1, box_x, box_y, gUnknown_0859F2AC, 0, strbuf);
+ CopyWindowToVram(0, 3);
+ CopyWindowToVram(1, 3);
+}
+
+void sub_8121C50(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_8121C64(void)
+{
+ if (gUnknown_0203A134->animsActive != 0)
+ {
+ AnimateSprites();
+ BuildOamBuffer();
+ }
+ gUnknown_0203A134->callback2();
+}
+
+void sub_8121C98(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ gUnknown_0203A134->callback2 = sub_8121CC0;
+ }
+}
+
+void sub_8121CC0(void)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_0203A134->callback2 = sub_8121D00;
+ }
+}
+
+void sub_8121D00(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ SetMainCallback2(gUnknown_0203A134->callback);
+ switch (gUnknown_0203A134->animsActive)
+ {
+ case 1:
+ case 2:
+ sub_80D2FF0(sub_80D2E84(gUnknown_0203A134->mail->species));
+ sub_80D2EF8(&gSprites[gUnknown_0203A134->monIconSprite]);
+ }
+ memset(gUnknown_0203A134, 0, sizeof(*gUnknown_0203A134));
+ ResetPaletteFade();
+ UnsetBgTilemapBuffer(0);
+ UnsetBgTilemapBuffer(1);
+ ResetBgsAndClearDma3BusyFlags(0);
+ FreeAllWindowBuffers();
+ free(gUnknown_0203A134);
+ gUnknown_0203A134 = NULL;
+ }
+}
diff --git a/src/main.c b/src/main.c
index 5707e18af..665a4dd84 100644
--- a/src/main.c
+++ b/src/main.c
@@ -77,7 +77,7 @@ const IntrFunc gIntrTableTemplate[] =
#define INTR_COUNT ((int)(sizeof(gIntrTableTemplate)/sizeof(IntrFunc)))
-extern u16 gUnknown_03000000;
+static u16 gUnknown_03000000;
extern u16 gKeyRepeatStartDelay;
extern u8 gUnknown_030022B4;
diff --git a/src/main_menu.c b/src/main_menu.c
new file mode 100644
index 000000000..8608159c2
--- /dev/null
+++ b/src/main_menu.c
@@ -0,0 +1,15 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03000DD0;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/malloc.c b/src/malloc.c
index ccb2f7d20..1d64351c3 100644
--- a/src/malloc.c
+++ b/src/malloc.c
@@ -2,6 +2,7 @@
static void *sHeapStart;
static u32 sHeapSize;
+static u32 malloc_c_unused_0300000c; // needed to align dma3_manager.o(.bss)
#define MALLOC_SYSTEM_ID 0xA3A3
diff --git a/src/metatile_behavior.c b/src/metatile_behavior.c
new file mode 100644
index 000000000..b9760f522
--- /dev/null
+++ b/src/metatile_behavior.c
@@ -0,0 +1,1436 @@
+#include "global.h"
+#include "metatile_behavior.h"
+#include "metatile_behaviors.h"
+
+#define TILE_FLAG_ENCOUNTER_TILE 1
+#define TILE_FLAG_SURFABLE 2
+
+#define TILE_ATTRIBUTES(three, two, one) (((one) ? 1 : 0) | ((two) ? 2 : 0) | ((three) ? 4 : 0))
+
+// wonder what the third flag is supposed to do
+static const u8 sTileBitAttributes[] =
+{
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORMAL 0x00
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x01
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_TALL_GRASS 0x02
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_LONG_GRASS 0x03
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_04 0x04
+ TILE_ATTRIBUTES(FALSE, FALSE, TRUE), // MB_05 0x05
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_DEEP_SAND 0x06
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHORT_GRASS 0x07
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_CAVE 0x08
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LONG_GRASS_SOUTH_EDGE 0x09
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NO_RUNNING 0x0A
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_0B 0x0B
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MOUNTAIN_TOP 0x0C
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BATTLE_PYRAMID_WARP 0x0D
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MOSSDEEP_GYM_WARP 0x0E
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MT_PYRE_HOLE 0x0F
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_POND_WATER 0x10
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEMI_DEEP_WATER 0x11
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_DEEP_WATER 0x12
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATERFALL 0x13
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOOTOPOLIS_DEEP_WATER 0x14
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_OCEAN_WATER 0x15
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PUDDLE 0x16
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHALLOW_WATER 0x17
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_18 0x18
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NO_SURFACING 0x19
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_1A 0x1A
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_STAIRS_OUTSIDE_ABANDONED_SHIP 0x1B
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SHOAL_CAVE_ENTRANCE 0x1C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x1D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x1E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x1F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ICE 0x20
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SAND 0x21
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED 0x22
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x23
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_ASHGRASS 0x24
+ TILE_ATTRIBUTES(TRUE, FALSE, TRUE), // MB_25 0x25
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_THIN_ICE 0x26
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_ICE 0x27
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HOT_SPRINGS 0x28
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_B1F_WARP 0x29
+ TILE_ATTRIBUTES(TRUE, TRUE, TRUE), // MB_SEAWEED_NO_SURFACING 0x2A
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_REFLECTION_UNDER_BRIDGE 0x2B
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x2F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_EAST 0x30
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_WEST 0x31
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTH 0x32
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTH 0x33
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHEAST 0x34
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_NORTHWEST 0x35
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHEAST 0x36
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_IMPASSABLE_SOUTHWEST 0x37
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_EAST 0x38
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_WEST 0x39
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_NORTH 0x3A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_JUMP_SOUTH 0x3B
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x3C
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x3D
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHEAST 0x3E
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_JUMP_SOUTHWEST 0x3F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_EAST 0x40
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_WEST 0x41
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_NORTH 0x42
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WALK_SOUTH 0x43
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_EAST 0x44
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_WEST 0x45
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_NORTH 0x46
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SLIDE_SOUTH 0x47
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_8_FLOOR 0x48
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x49
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // ? 0x4A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4B
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x4F
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_EASTWARD_CURRENT 0x50
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WESTWARD_CURRENT 0x51
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_NORTHWARD_CURRENT 0x52
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_SOUTHWARD_CURRENT 0x53
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x54
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x55
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x56
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x57
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x58
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x59
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5B
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x5F
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NON_ANIMATED_DOOR 0x60
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LADDER 0x61
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_EAST_ARROW_WARP 0x62
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_WEST_ARROW_WARP 0x63
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_NORTH_ARROW_WARP 0x64
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SOUTH_ARROW_WARP 0x65
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR_HOLE 0x66
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_AQUA_HIDEOUT_WARP 0x67
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_LAVARIDGE_GYM_1F_WARP 0x68
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ANIMATED_DOOR 0x69
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_UP_ESCALATOR 0x6A
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_DOWN_ESCALATOR 0x6B
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_DOOR 0x6C
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // MB_WATER_SOUTH_ARROW_WARP 0x6D
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_DEEP_SOUTH_WARP 0x6E
+ TILE_ATTRIBUTES(TRUE, TRUE, FALSE), // ? 0x6F
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_WARP_OR_BRIDGE 0x70
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_71 0x71
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_1 0x72
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_2 0x73
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_1 0x74
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_VERTICAL_LOG_2 0x75
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_1 0x76
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_PACIFIDLOG_HORIZONTAL_LOG_2 0x77
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_FORTREE_BRIDGE 0x78
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x79
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_1 0x7A
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_SOUTH_BRIDGE_2 0x7B
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_3 0x7C
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE120_NORTH_BRIDGE_4 0x7D
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_7E 0x7E
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ROUTE110_BRIDGE 0x7F
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_COUNTER 0x80
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x81
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x82
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PC 0x83
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CABLE_BOX_RESULTS_1 0x84
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_REGION_MAP 0x85
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TELEVISION 0x86
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEBLOCK_FEEDER 0x87
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x88
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SLOT_MACHINE 0x89
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_ROULETTE 0x8A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CLOSED_SOOTOPOLIS_GYM_DOOR 0x8B
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRICK_HOUSE_PUZZLE_DOOR 0x8C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_8D 0x8D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_RUNNING_SHOES_INSTRUCTION 0x8E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_QUESTIONNAIRE 0x8F
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE 0x90
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_RED_CAVE_OPEN 0x91
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE 0x92
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN 0x93
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE 0x94
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN 0x95
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_LEFT 0x96
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN 0x97
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB 0x98
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_SHRUB_OPEN 0x99
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE 0x9A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN 0x9B
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_RIGHT 0x9C
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN 0x9D
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x9E
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0x9F
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BERRY_TREE_SOIL 0xA0
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA1
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA2
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA3
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA4
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA5
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xA9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAD
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xAF A
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_PC 0xB0
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_REGISTER_PC 0xB1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B2 0xB2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B3 0xB3
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_B4 0xB4
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B5 0xB5
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_B6 0xB6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_B7 0xB7
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_BALLOON 0xB8
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_B9 0xB9
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_GLITTER_MAT 0xBA
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_JUMP_MAT 0xBB
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SPIN_MAT 0xBC
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_SOUND_MAT 0xBD
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BE 0xBE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BF 0xBF
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BED 0xC0
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C1 0xC1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C2 0xC2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C3 0xC3
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_SECRET_BASE_TV_SHIELD 0xC4
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_C5 0xC5
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C6 0xC6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SECRET_BASE_POSTER 0xC7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C8 0xC8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_C9 0xC9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CA 0xCA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CB 0xCB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CC 0xCC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CD 0xCD
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CE 0xCE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CF 0xCF
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_MUDDY_SLOPE 0xD0
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_BUMPY_SLOPE 0xD1
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_CRACKED_FLOOR 0xD2
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_VERTICAL_RAIL 0xD3
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_ISOLATED_HORIZONTAL_RAIL 0xD4
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_VERTICAL_RAIL 0xD5
+ TILE_ATTRIBUTES(TRUE, FALSE, FALSE), // MB_HORIZONTAL_RAIL 0xD6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xD7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xD8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xD9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDD
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xDF
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_PICTURE_BOOK_SHELF 0xE0
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BOOKSHELF 0xE1
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_POKEMON_CENTER_BOOKSHELF 0xE2
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_VASE 0xE3
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRASH_CAN 0xE4
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_SHOP_SHELF 0xE5
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_BLUEPRINT 0xE6
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_CABLE_BOX_RESULTS_2 0xE7
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_WIRELESS_BOX_RESULTS 0xE8
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_TRAINER_HILL_TIMER 0xE9
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // MB_UNKNOWN_CLOSED_DOOR 0xEA
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEB
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEC
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xED
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEE
+ TILE_ATTRIBUTES(FALSE, FALSE, FALSE), // ? 0xEF
+};
+
+// only used as default case for checking jump landing in field_ground_effect.
+bool8 ShouldDoJumpLandingDustEffect(u8 var)
+{
+ return TRUE;
+}
+
+bool8 MetatileBehavior_IsEncounterTile(u8 var)
+{
+ if ((sTileBitAttributes[var] & TILE_FLAG_ENCOUNTER_TILE) != 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsJumpEast(u8 var)
+{
+ if (var == MB_JUMP_EAST)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsJumpWest(u8 var)
+{
+ if (var == MB_JUMP_WEST)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsJumpNorth(u8 var)
+{
+ if (var == MB_JUMP_NORTH)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsJumpSouth(u8 var)
+{
+ if (var == MB_JUMP_SOUTH)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPokeGrass(u8 var)
+{
+ if (var == MB_TALL_GRASS || var == MB_LONG_GRASS)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSandOrDeepSand(u8 var)
+{
+ if (var == MB_SAND || var == MB_DEEP_SAND)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsDeepSand(u8 var)
+{
+ if (var == MB_DEEP_SAND)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsReflective(u8 var)
+{
+ if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_1A || var == MB_ICE || var == MB_SOOTOPOLIS_DEEP_WATER || var == MB_REFLECTION_UNDER_BRIDGE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsIce(u8 var)
+{
+ if (var == MB_ICE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWarpDoor(u8 var)
+{
+ if (var == MB_ANIMATED_DOOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsDoor(u8 var)
+{
+ if (var == MB_8D || var == MB_ANIMATED_DOOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsEscalator(u8 var)
+{
+ if (var == MB_UP_ESCALATOR || var == MB_DOWN_ESCALATOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_04(u8 var) // unused
+{
+ if (var == MB_04)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsLadder(u8 var)
+{
+ if (var == MB_LADDER)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsNonAnimDoor(u8 var)
+{
+ if (var == MB_NON_ANIMATED_DOOR || var == MB_WATER_DOOR || var == MB_DEEP_SOUTH_WARP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsDeepSouthWarp(u8 var)
+{
+ if (var == MB_DEEP_SOUTH_WARP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSurfableWaterOrUnderwater(u8 var)
+{
+ if ((sTileBitAttributes[var] & TILE_FLAG_SURFABLE) != 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsEastArrowWarp(u8 var)
+{
+ if (var == MB_EAST_ARROW_WARP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWestArrowWarp(u8 var)
+{
+ if (var == MB_WEST_ARROW_WARP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsNorthArrowWarp(u8 var)
+{
+ if (var == MB_NORTH_ARROW_WARP || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSouthArrowWarp(u8 var)
+{
+ if (var == MB_SOUTH_ARROW_WARP || var == MB_WATER_SOUTH_ARROW_WARP || var == MB_SHOAL_CAVE_ENTRANCE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsArrowWarp(u8 var) // unused
+{
+ u8 ret = FALSE;
+
+ if (MetatileBehavior_IsEastArrowWarp(var)
+ || MetatileBehavior_IsWestArrowWarp(var)
+ || MetatileBehavior_IsNorthArrowWarp(var)
+ || MetatileBehavior_IsSouthArrowWarp(var))
+ {
+ ret = TRUE;
+ }
+
+ return ret;
+}
+
+bool8 MetatileBehavior_IsMoveTile(u8 var)
+{
+ if ((var >= MB_WALK_EAST && var <= MB_TRICK_HOUSE_PUZZLE_8_FLOOR) || (var >= MB_EASTWARD_CURRENT && var <= MB_SOUTHWARD_CURRENT)
+ || var == MB_MUDDY_SLOPE || var == MB_CRACKED_FLOOR || var == MB_WATERFALL || var == MB_ICE || var == MB_SECRET_BASE_JUMP_MAT || var == MB_SECRET_BASE_SPIN_MAT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsIce_2(u8 var)
+{
+ if (var == MB_ICE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsTrickHouseSlipperyFloor(u8 var)
+{
+ if (var == MB_TRICK_HOUSE_PUZZLE_8_FLOOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_05(u8 var)
+{
+ if (var == MB_05)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWalkNorth(u8 var)
+{
+ if (var == MB_WALK_NORTH)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWalkSouth(u8 var)
+{
+ if (var == MB_WALK_SOUTH)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWalkWest(u8 var)
+{
+ if (var == MB_WALK_WEST)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWalkEast(u8 var)
+{
+ if (var == MB_WALK_EAST)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsNorthwardCurrent(u8 var)
+{
+ if (var == MB_NORTHWARD_CURRENT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSouthwardCurrent(u8 var)
+{
+ if (var == MB_SOUTHWARD_CURRENT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWestwardCurrent(u8 var)
+{
+ if (var == MB_WESTWARD_CURRENT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsEastwardCurrent(u8 var)
+{
+ if (var == MB_EASTWARD_CURRENT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSlideNorth(u8 var)
+{
+ if (var == MB_SLIDE_NORTH)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSlideSouth(u8 var)
+{
+ if (var == MB_SLIDE_SOUTH)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSlideWest(u8 var)
+{
+ if (var == MB_SLIDE_WEST)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSlideEast(u8 var)
+{
+ if (var == MB_SLIDE_EAST)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsCounter(u8 var)
+{
+ if (var == MB_COUNTER)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPlayerFacingTVScreen(u8 tile, u8 playerDir)
+{
+ if (playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it.
+ return FALSE;
+ else if (tile == MB_TELEVISION) // is the player's north tile a TV?
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPC(u8 var)
+{
+ if (var == MB_PC)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsCableBoxResults1(u8 var)
+{
+ if (var == MB_CABLE_BOX_RESULTS_1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseOpen(u8 var)
+{
+ if (var == MB_SECRET_BASE_SPOT_RED_CAVE_OPEN || var == MB_SECRET_BASE_SPOT_BROWN_CAVE_OPEN
+ || var == MB_SECRET_BASE_SPOT_YELLOW_CAVE_OPEN || var == MB_SECRET_BASE_SPOT_TREE_LEFT_OPEN
+ || var == MB_SECRET_BASE_SPOT_SHRUB_OPEN || var == MB_SECRET_BASE_SPOT_BLUE_CAVE_OPEN
+ || var == MB_SECRET_BASE_SPOT_TREE_RIGHT_OPEN)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseCave(u8 var)
+{
+ if (var == MB_SECRET_BASE_SPOT_RED_CAVE || var == MB_SECRET_BASE_SPOT_BROWN_CAVE || var == MB_SECRET_BASE_SPOT_YELLOW_CAVE || var == MB_SECRET_BASE_SPOT_BLUE_CAVE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseTree(u8 var)
+{
+ if (var == MB_SECRET_BASE_SPOT_TREE_LEFT || var == MB_SECRET_BASE_SPOT_TREE_RIGHT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseShrub(u8 var)
+{
+ if (var == MB_SECRET_BASE_SPOT_SHRUB)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBasePC(u8 var)
+{
+ if (var == MB_SECRET_BASE_PC)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseRegisterPC(u8 var)
+{
+ if (var == MB_SECRET_BASE_REGISTER_PC)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_B2(u8 var) // unused
+{
+ if (var == MB_B2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_B3(u8 var)
+{
+ if (var == MB_B3)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_B9(u8 var)
+{
+ if (var == MB_B9)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_C6(u8 var)
+{
+ if (var == MB_C6)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBasePoster(u8 var)
+{
+ if (var == MB_SECRET_BASE_POSTER)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsNormal(u8 var)
+{
+ if (var == MB_NORMAL)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_B7(u8 var)
+{
+ if (var == MB_B7)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_B2_Duplicate(u8 var) // unused
+{
+ if (var == MB_B2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_B5(u8 var)
+{
+ if (var == MB_B5)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_C3(u8 var)
+{
+ if (var == MB_C3)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_C2(u8 var)
+{
+ if (var == MB_C2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseBalloon(u8 var)
+{
+ if (var == MB_SECRET_BASE_BALLOON)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_BE(u8 var)
+{
+ if (var == MB_BE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseSoundMat(u8 var)
+{
+ if (var == MB_SECRET_BASE_SOUND_MAT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseGlitterMat(u8 var)
+{
+ if (var == MB_SECRET_BASE_GLITTER_MAT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_BF(u8 var)
+{
+ if (var == MB_BF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseTvOrShield(u8 var)
+{
+ if (var == MB_SECRET_BASE_TV_SHIELD)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_C5(u8 var)
+{
+ if (var == MB_C5)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_HasRipples(u8 var)
+{
+ if (var == MB_POND_WATER || var == MB_PUDDLE || var == MB_SOOTOPOLIS_DEEP_WATER)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPuddle(u8 var)
+{
+ if (var == MB_PUDDLE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsTallGrass(u8 var)
+{
+ if (var == MB_TALL_GRASS)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsLongGrass(u8 var)
+{
+ if (var == MB_LONG_GRASS)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsBerryTreeSoil(u8 var)
+{
+ if (var == MB_BERRY_TREE_SOIL)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsAsh(u8 var)
+{
+ if (var == MB_ASHGRASS)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsUnusedFootprintMetatile(u8 var)
+{
+ if (var == MB_25)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsBridge(u8 var)
+{
+ if ((var == MB_WARP_OR_BRIDGE || var == MB_71 || var == MB_ROUTE120_NORTH_BRIDGE_1 || var == MB_ROUTE120_NORTH_BRIDGE_2)
+ || (var == MB_ROUTE120_NORTH_BRIDGE_3 || var == MB_ROUTE120_NORTH_BRIDGE_4 || var == MB_7E || var == MB_ROUTE110_BRIDGE))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 MetatileBehavior_GetBridgeSth(u8 var)
+{
+ u8 result = var - MB_WARP_OR_BRIDGE;
+ if (result < 4)
+ return result;
+
+ result = var - MB_ROUTE120_SOUTH_BRIDGE_1;
+ if (result < 2)
+ return 2;
+
+ result = var - MB_ROUTE120_NORTH_BRIDGE_3;
+ if (result < 2)
+ return 3;
+
+ return 0;
+}
+
+u8 MetatileBehavior_8089510(u8 var)
+{
+ u8 result = var - MB_WARP_OR_BRIDGE;
+
+ if (result < 4)
+ return 1;
+ else
+ return 0;
+}
+
+bool8 MetatileBehavior_IsLandWildEncounter(u8 var)
+{
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == FALSE && MetatileBehavior_IsEncounterTile(var) == TRUE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWaterWildEncounter(u8 var)
+{
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) == TRUE && MetatileBehavior_IsEncounterTile(var) == TRUE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_0B(u8 var)
+{
+ if (var == MB_0B)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMountain(u8 var)
+{
+ if (var == MB_MOUNTAIN_TOP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsDiveable(u8 var)
+{
+ if (var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER || var == MB_SOOTOPOLIS_DEEP_WATER)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsUnableToEmerge(u8 var)
+{
+ if (var == MB_NO_SURFACING || var == MB_SEAWEED_NO_SURFACING)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsShallowFlowingWater(u8 var)
+{
+ if (var == MB_SHALLOW_WATER || var == MB_STAIRS_OUTSIDE_ABANDONED_SHIP || var == MB_SHOAL_CAVE_ENTRANCE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsThinIce(u8 var)
+{
+ if (var == MB_THIN_ICE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsCrackedIce(u8 var)
+{
+ if (var == MB_CRACKED_ICE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsDeepOrOceanWater(u8 var)
+{
+ if (var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMB_18_OrMB_1A(u8 var) // unused
+{
+ if (var == MB_18 || var == MB_1A)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSurfableAndNotWaterfall(u8 var)
+{
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(var) && MetatileBehavior_IsWaterfall(var) == FALSE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsEastBlocked(u8 var)
+{
+ if (var == MB_IMPASSABLE_EAST || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_SOUTHEAST || var == MB_C1 || var == MB_BE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWestBlocked(u8 var)
+{
+ if (var == MB_IMPASSABLE_WEST || var == MB_IMPASSABLE_NORTHWEST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_C1 || var == MB_BE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsNorthBlocked(u8 var)
+{
+ if (var == MB_IMPASSABLE_NORTH || var == MB_IMPASSABLE_NORTHEAST || var == MB_IMPASSABLE_NORTHWEST || var == MB_BED)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSouthBlocked(u8 var)
+{
+ if (var == MB_IMPASSABLE_SOUTH || var == MB_IMPASSABLE_SOUTHEAST || var == MB_IMPASSABLE_SOUTHWEST || var == MB_BED)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsShortGrass(u8 var)
+{
+ if (var == MB_SHORT_GRASS)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsHotSprings(u8 var)
+{
+ if (var == MB_HOT_SPRINGS)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWaterfall(u8 var)
+{
+ if (var == MB_WATERFALL)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsFortreeBridge(u8 var)
+{
+ if (var == MB_FORTREE_BRIDGE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPacifilogVerticalLog1(u8 var)
+{
+ if (var == MB_PACIFIDLOG_VERTICAL_LOG_1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPacifilogVerticalLog2(u8 var)
+{
+ if (var == MB_PACIFIDLOG_VERTICAL_LOG_2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPacifilogHorizontalLog1(u8 var)
+{
+ if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPacifilogHorizontalLog2(u8 var)
+{
+ if (var == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPacifidlogLog(u8 var)
+{
+ if (var == MB_PACIFIDLOG_VERTICAL_LOG_1 || var == MB_PACIFIDLOG_VERTICAL_LOG_2
+ || var == MB_PACIFIDLOG_HORIZONTAL_LOG_1 || var == MB_PACIFIDLOG_HORIZONTAL_LOG_2)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsTrickHousePuzzleDoor(u8 var)
+{
+ if (var == MB_TRICK_HOUSE_PUZZLE_DOOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsRegionMap(u8 var)
+{
+ if (var == MB_REGION_MAP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsClosedSootopolisGymDoor(u8 var)
+{
+ if (var == MB_CLOSED_SOOTOPOLIS_GYM_DOOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsUnknownClosedDoor(u8 var)
+{
+ if (var == MB_UNKNOWN_CLOSED_DOOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsRoulette(u8 var) // unused
+{
+ if (var == MB_ROULETTE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPokeblockFeeder(u8 var)
+{
+ if (var == MB_POKEBLOCK_FEEDER)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseJumpMat(u8 var)
+{
+ if (var == MB_SECRET_BASE_JUMP_MAT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSecretBaseSpinMat(u8 var)
+{
+ if (var == MB_SECRET_BASE_SPIN_MAT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsLavaridgeB1FWarp(u8 var)
+{
+ if (var == MB_LAVARIDGE_GYM_B1F_WARP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsLavaridge1FWarp(u8 var)
+{
+ if (var == MB_LAVARIDGE_GYM_1F_WARP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsAquaHideoutWarp(u8 var)
+{
+ if (var == MB_AQUA_HIDEOUT_WARP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsWarpOrBridge(u8 var)
+{
+ if (var == MB_WARP_OR_BRIDGE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMossdeepGymWarp(u8 var)
+{
+ if (var == MB_MOSSDEEP_GYM_WARP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+
+bool8 MetatileBehavior_IsSurfableFishableWater(u8 var)
+{
+ if (var == MB_POND_WATER || var == MB_OCEAN_WATER || var == MB_SEMI_DEEP_WATER || var == MB_DEEP_WATER
+ || var == MB_SOOTOPOLIS_DEEP_WATER || (var == MB_EASTWARD_CURRENT || var == MB_WESTWARD_CURRENT
+ || var == MB_NORTHWARD_CURRENT || var == MB_SOUTHWARD_CURRENT))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMtPyreHole(u8 var)
+{
+ if (var == MB_MT_PYRE_HOLE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsCrackedFloorHole(u8 var)
+{
+ if (var == MB_CRACKED_FLOOR_HOLE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsCrackedFloor(u8 var)
+{
+ if (var == MB_CRACKED_FLOOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsMuddySlope(u8 var)
+{
+ if (var == MB_MUDDY_SLOPE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsBumpySlope(u8 var)
+{
+ if (var == MB_BUMPY_SLOPE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsIsolatedVerticalRail(u8 var)
+{
+ if (var == MB_ISOLATED_VERTICAL_RAIL)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsIsolatedHorizontalRail(u8 var)
+{
+ if (var == MB_ISOLATED_HORIZONTAL_RAIL)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsVerticalRail(u8 var)
+{
+ if (var == MB_VERTICAL_RAIL)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsHorizontalRail(u8 var)
+{
+ if (var == MB_HORIZONTAL_RAIL)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsSeaweed(u8 var)
+{
+ if (var == MB_SEAWEED || var == MB_SEAWEED_NO_SURFACING)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsRunningDisallowed(u8 var)
+{
+ if (var == MB_NO_RUNNING || var == MB_LONG_GRASS || var == MB_HOT_SPRINGS || MetatileBehavior_IsPacifidlogLog(var) != FALSE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsCuttableGrass(u8 var)
+{
+ if (var == MB_TALL_GRASS || var == MB_LONG_GRASS || var == MB_ASHGRASS || var == MB_LONG_GRASS_SOUTH_EDGE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsRunningShoesInstruction(u8 var)
+{
+ if (var == MB_RUNNING_SHOES_INSTRUCTION)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPictureBookShelf(u8 var)
+{
+ if (var == MB_PICTURE_BOOK_SHELF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsBookShelf(u8 var)
+{
+ if (var == MB_BOOKSHELF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPokeCenterBookShelf(u8 var)
+{
+ if (var == MB_POKEMON_CENTER_BOOKSHELF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsVase(u8 var)
+{
+ if (var == MB_VASE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsTrashCan(u8 var)
+{
+ if (var == MB_TRASH_CAN)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsShopShelf(u8 var)
+{
+ if (var == MB_SHOP_SHELF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsBlueprint(u8 var)
+{
+ if (var == MB_BLUEPRINT)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsBattlePyramidWarp(u8 var)
+{
+ if (var == MB_BATTLE_PYRAMID_WARP)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsPlayerFacingWirelessBoxResults(u8 tile, u8 playerDir)
+{
+ if (playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it.
+ return FALSE;
+ else if (tile == MB_WIRELESS_BOX_RESULTS) // is the player's north tile the monitor with results?
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsCableBoxResults2(u8 tile, u8 playerDir)
+{
+ if (playerDir != CONNECTION_NORTH) // if the player isn't facing north, forget about it.
+ return FALSE;
+ else if (tile == MB_CABLE_BOX_RESULTS_2) // is the player's north tile the monitor with results?
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsQuestionnaire(u8 var)
+{
+ if (var == MB_QUESTIONNAIRE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsLongGrass_Duplicate(u8 var)
+{
+ if (var == MB_LONG_GRASS)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsLongGrassSouthEdge(u8 var)
+{
+ if (var == MB_LONG_GRASS_SOUTH_EDGE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 MetatileBehavior_IsTrainerHillTimer(u8 var)
+{
+ if (var == MB_TRAINER_HILL_TIMER)
+ return TRUE;
+ else
+ return FALSE;
+}
diff --git a/src/money.c b/src/money.c
index be64d9633..98f25a42a 100644
--- a/src/money.c
+++ b/src/money.c
@@ -1,8 +1,77 @@
#include "global.h"
#include "money.h"
+#include "event_data.h"
+#include "string_util.h"
+#include "text.h"
+#include "menu.h"
+#include "window.h"
+#include "sprite.h"
+#include "decompress.h"
+
+extern const u8 gText_PokedollarVar1[];
+
+extern const u8 gMenuMoneyGfx[];
+extern const u8 gMenuMoneyPal[];
#define MAX_MONEY 999999
+EWRAM_DATA static u8 sMoneyBoxWindowId = 0;
+EWRAM_DATA static u8 sMoneyLabelSpriteId = 0;
+
+#define MONEY_LABEL_TAG 0x2722
+
+static const struct OamData sOamData_MoneyLabel =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_MoneyLabel[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_MoneyLabel[] =
+{
+ sSpriteAnim_MoneyLabel,
+};
+
+static const struct SpriteTemplate sSpriteTemplate_MoneyLabel =
+{
+ .tileTag = MONEY_LABEL_TAG,
+ .paletteTag = MONEY_LABEL_TAG,
+ .oam = &sOamData_MoneyLabel,
+ .anims = sSpriteAnimTable_MoneyLabel,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct CompressedSpriteSheet sSpriteSheet_MoneyLabel =
+{
+ .data = gMenuMoneyGfx,
+ .size = 256,
+ .tag = MONEY_LABEL_TAG,
+};
+
+static const struct CompressedSpritePalette sSpritePalette_MoneyLabel =
+{
+ .data = gMenuMoneyPal,
+ .tag = MONEY_LABEL_TAG
+};
+
u32 GetMoney(u32* moneyPtr)
{
return *moneyPtr ^ gSaveBlock2Ptr->encryptionKey;
@@ -41,7 +110,7 @@ void AddMoney(u32* moneyPtr, u32 toAdd)
SetMoney(moneyPtr, toSet);
}
-void SubtractMoney(u32* moneyPtr, u32 toSub)
+void RemoveMoney(u32* moneyPtr, u32 toSub)
{
u32 toSet = GetMoney(moneyPtr);
@@ -53,3 +122,79 @@ void SubtractMoney(u32* moneyPtr, u32 toSub)
SetMoney(moneyPtr, toSet);
}
+
+bool8 IsEnoughForCostInVar0x8005(void)
+{
+ return IsEnoughMoney(&gSaveBlock1Ptr->money, gSpecialVar_0x8005);
+}
+
+void SubtractMoneyFromVar0x8005(void)
+{
+ RemoveMoney(&gSaveBlock1Ptr->money, gSpecialVar_0x8005);
+}
+
+void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed)
+{
+ PrintMoneyAmount(windowId, 0x26, 1, amount, speed);
+}
+
+void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed)
+{
+ u8 *txtPtr;
+ s32 strLength;
+
+ ConvertIntToDecimalStringN(gStringVar1, amount, STR_CONV_MODE_LEFT_ALIGN, 6);
+
+ strLength = 6 - StringLength(gStringVar1);
+ txtPtr = gStringVar4;
+
+ while (strLength-- > 0)
+ *(txtPtr++) = 0x77;
+
+ StringExpandPlaceholders(txtPtr, gText_PokedollarVar1);
+ PrintTextOnWindow(windowId, 1, gStringVar4, x, y, speed, NULL);
+}
+
+void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount)
+{
+ SetWindowBorderStyle(windowId, FALSE, tileStart, pallete);
+ PrintMoneyAmountInMoneyBox(windowId, amount, 0);
+}
+
+void ChangeAmountInMoneyBox(int amount)
+{
+ PrintMoneyAmountInMoneyBox(sMoneyBoxWindowId, amount, 0);
+}
+
+void DrawMoneyBox(int amount, u8 x, u8 y)
+{
+ struct WindowTemplate template;
+
+ SetWindowTemplateFields(&template, 0, x + 1, y + 1, 10, 2, 15, 8);
+ sMoneyBoxWindowId = AddWindow(&template);
+ FillWindowPixelBuffer(sMoneyBoxWindowId, 0);
+ PutWindowTilemap(sMoneyBoxWindowId);
+ CopyWindowToVram(sMoneyBoxWindowId, 1);
+ PrintMoneyAmountInMoneyBoxWithBorder(sMoneyBoxWindowId, 0x214, 14, amount);
+ AddMoneyLabelObject((8 * x) + 19, (8 * y) + 11);
+}
+
+void HideMoneyBox(void)
+{
+ RemoveMoneyLabelObject();
+ sub_8198070(sMoneyBoxWindowId, FALSE);
+ CopyWindowToVram(sMoneyBoxWindowId, 2);
+ RemoveWindow(sMoneyBoxWindowId);
+}
+
+void AddMoneyLabelObject(u16 x, u16 y)
+{
+ LoadCompressedObjectPic(&sSpriteSheet_MoneyLabel);
+ LoadCompressedObjectPalette(&sSpritePalette_MoneyLabel);
+ sMoneyLabelSpriteId = CreateSprite(&sSpriteTemplate_MoneyLabel, x, y, 0);
+}
+
+void RemoveMoneyLabelObject(void)
+{
+ DestroySpriteAndFreeResources(&gSprites[sMoneyLabelSpriteId]);
+}
diff --git a/src/new_game.c b/src/new_game.c
index 5a482c593..d0666dd71 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -17,6 +17,7 @@
#include "easy_chat.h"
#include "event_data.h"
#include "money.h"
+#include "tv.h"
#include "coins.h"
#include "text.h"
@@ -28,7 +29,7 @@ extern u8 gUnknown_030060B0;
// TODO: replace those declarations with file headers
extern u16 GetGeneratedTrainerIdLower(void);
extern void ClearContestWinnerPicsInContestHall(void);
-extern void warp1_set(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPos, s8 yPos);
+extern void Overworld_SetWarpDestination(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPos, s8 yPos);
extern void warp_in(void);
extern void sub_80BB358(void);
extern void ResetBagScrollPositions(void);
@@ -36,7 +37,6 @@ extern void sub_813624C(void); // clears something pokeblock related
extern void ResetPokedex(void);
extern void sub_8084400(void);
extern void ClearMailData(void);
-extern void ClearTVShowData(void);
extern void ResetGabbyAndTy(void);
extern void ResetSecretBases(void);
extern void ResetLinkContestBoolean(void);
@@ -131,7 +131,7 @@ void sub_8084400(void)
void WarpToTruck(void)
{
- warp1_set(25, 40, -1, -1, -1); // inside of truck
+ Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck
warp_in();
}
diff --git a/src/palette.c b/src/palette.c
index aa9a84e4c..d4bb593da 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -1,5 +1,8 @@
#include "global.h"
+#include "blend_palette.h"
#include "palette.h"
+#include "decompress.h"
+#include "gpu_regs.h"
#include "task.h"
enum
@@ -28,7 +31,7 @@ struct PaletteStructTemplate
struct PaletteStruct
{
- struct PaletteStructTemplate *base;
+ const struct PaletteStructTemplate *base;
u32 ps_field_4_0:1;
u16 ps_field_4_1:1;
u32 baseDestOffset:9;
@@ -38,31 +41,6 @@ struct PaletteStruct
u8 ps_field_9;
};
-extern void LZDecompressWram(const void *src, void *dest);
-extern void SetGpuReg(u8 regOffset, u16 value);
-extern void sub_8149DFC(u8 a1);
-extern void sub_80A1670(u16 a1);
-extern void sub_80A2D54(u8 a1);
-extern void SetWordTaskArg(u8 taskId, u8 dataElem, u32 value);
-extern void _call_via_r1(u32 a1, void *a2);
-
-extern void BlendPalette(u16, u16, u8, u16);
-
-EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0};
-EWRAM_DATA u16 gPlttBufferFaded[0x200] = {0};
-EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0};
-EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0};
-EWRAM_DATA u32 gFiller_2037FE0 = 0;
-EWRAM_DATA u32 sPlttBufferTransferPending = 0;
-EWRAM_DATA u8 gPaletteDecompressionBuffer[0x400] = {0};
-
-extern struct PaletteStructTemplate gDummyPaletteStructTemplate;
-extern void *gUnknown_0852487C;
-extern u8 gUnknown_0852489C[];
-
-extern u16 gUnknown_03000F3C;
-extern void *gUnknown_03000F44;
-
static void unused_sub_80A1CDC(struct PaletteStruct *, u32 *);
static void unused_sub_80A1E40(struct PaletteStruct *, u32 *);
static void unused_sub_80A1F00(struct PaletteStruct *);
@@ -73,32 +51,29 @@ static u8 UpdateFastPaletteFade(void);
static u8 UpdateHardwarePaletteFade(void);
static void UpdateBlendRegisters(void);
static bool8 IsSoftwarePaletteFadeFinishing(void);
+static void sub_80A2D54(u8 taskId);
-void sub_80A1818(u16 a1)
-{
- void **v1 = &gUnknown_0852487C;
- CpuSet(v1[a1 & 0x3], gPlttBufferUnfaded + 0x80, 0x10);
- BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
- if ((u8)FindTaskIdByFunc(sub_8149DFC) != 0xFF )
- {
- gUnknown_03000F44 = sub_80A1670;
- gUnknown_03000F3C = 0x20;
- }
- return;
-}
+EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0};
+EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0};
+EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0};
+EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0};
+static EWRAM_DATA u32 gFiller_2037FE0 = 0;
+static EWRAM_DATA u32 sPlttBufferTransferPending = 0;
+EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0};
-void sub_80A1884(u16 a1)
-{
- void **v1 = &gUnknown_0852487C;
- CpuSet(v1[a1 & 0x3], gPlttBufferUnfaded + 0x80, 0x10);
- if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF )
- {
- BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
- if (!--gUnknown_03000F3C)
- gUnknown_03000F44 = 0;
- }
- return;
-}
+static const struct PaletteStructTemplate gDummyPaletteStructTemplate = {
+ .uid = 0xFFFF,
+ .pst_field_B_5 = 1
+};
+static const u8 gUnknown_0852489C[] = {
+ 0, 0, 0, 0, 0,
+ 5, 5, 5, 5, 5,
+ 11, 11, 11, 11, 11,
+ 16, 16, 16, 16, 16,
+ 21, 21, 21, 21, 21,
+ 27, 27, 27, 27, 27,
+ 31, 31
+};
void LoadCompressedPalette(const void *src, u16 offset, u16 size)
{
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index fe7809826..f56ade967 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -33,7 +33,7 @@ void ZeroMonData(struct Pokemon *mon)
SetMonData(mon, MON_DATA_MAX_HP, &arg);
SetMonData(mon, MON_DATA_ATK, &arg);
SetMonData(mon, MON_DATA_DEF, &arg);
- SetMonData(mon, MON_DATA_SPD, &arg);
+ SetMonData(mon, MON_DATA_SPEED, &arg);
SetMonData(mon, MON_DATA_SPATK, &arg);
SetMonData(mon, MON_DATA_SPDEF, &arg);
arg = 255;
@@ -128,7 +128,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
SetBoxMonData(boxMon, MON_DATA_HP_IV, &fixedIV);
SetBoxMonData(boxMon, MON_DATA_ATK_IV, &fixedIV);
SetBoxMonData(boxMon, MON_DATA_DEF_IV, &fixedIV);
- SetBoxMonData(boxMon, MON_DATA_SPD_IV, &fixedIV);
+ SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &fixedIV);
SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &fixedIV);
SetBoxMonData(boxMon, MON_DATA_SPDEF_IV, &fixedIV);
}
@@ -147,7 +147,7 @@ void CreateBoxMon(struct BoxPokemon *boxMon, u16 species, u8 level, u8 fixedIV,
value = Random();
iv = value & 0x1F;
- SetBoxMonData(boxMon, MON_DATA_SPD_IV, &iv);
+ SetBoxMonData(boxMon, MON_DATA_SPEED_IV, &iv);
iv = (value & 0x3E0) >> 5;
SetBoxMonData(boxMon, MON_DATA_SPATK_IV, &iv);
iv = (value & 0x7C00) >> 10;
@@ -234,7 +234,7 @@ void CreateMonWithIVsOTID(struct Pokemon *mon, u16 species, u8 level, u8 *ivs, u
SetMonData(mon, MON_DATA_HP_IV, &ivs[0]);
SetMonData(mon, MON_DATA_ATK_IV, &ivs[1]);
SetMonData(mon, MON_DATA_DEF_IV, &ivs[2]);
- SetMonData(mon, MON_DATA_SPD_IV, &ivs[3]);
+ SetMonData(mon, MON_DATA_SPEED_IV, &ivs[3]);
SetMonData(mon, MON_DATA_SPATK_IV, &ivs[4]);
SetMonData(mon, MON_DATA_SPDEF_IV, &ivs[5]);
CalculateMonStats(mon);
@@ -305,7 +305,7 @@ void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src)
SetMonData(mon, MON_DATA_HP_EV, &src->hpEV);
SetMonData(mon, MON_DATA_ATK_EV, &src->attackEV);
SetMonData(mon, MON_DATA_DEF_EV, &src->defenseEV);
- SetMonData(mon, MON_DATA_SPD_EV, &src->speedEV);
+ SetMonData(mon, MON_DATA_SPEED_EV, &src->speedEV);
SetMonData(mon, MON_DATA_SPATK_EV, &src->spAttackEV);
SetMonData(mon, MON_DATA_SPDEF_EV, &src->spDefenseEV);
value = src->altAbility;
@@ -317,7 +317,7 @@ void sub_806819C(struct Pokemon *mon, struct UnknownPokemonStruct *src)
value = src->defenseIV;
SetMonData(mon, MON_DATA_DEF_IV, &value);
value = src->speedIV;
- SetMonData(mon, MON_DATA_SPD_IV, &value);
+ SetMonData(mon, MON_DATA_SPEED_IV, &value);
value = src->spAttackIV;
SetMonData(mon, MON_DATA_SPATK_IV, &value);
value = src->spDefenseIV;
@@ -369,7 +369,7 @@ void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lv
SetMonData(mon, MON_DATA_HP_EV, &src->hpEV);
SetMonData(mon, MON_DATA_ATK_EV, &src->attackEV);
SetMonData(mon, MON_DATA_DEF_EV, &src->defenseEV);
- SetMonData(mon, MON_DATA_SPD_EV, &src->speedEV);
+ SetMonData(mon, MON_DATA_SPEED_EV, &src->speedEV);
SetMonData(mon, MON_DATA_SPATK_EV, &src->spAttackEV);
SetMonData(mon, MON_DATA_SPDEF_EV, &src->spDefenseEV);
value = src->altAbility;
@@ -381,7 +381,7 @@ void sub_8068338(struct Pokemon *mon, struct UnknownPokemonStruct *src, bool8 lv
value = src->defenseIV;
SetMonData(mon, MON_DATA_DEF_IV, &value);
value = src->speedIV;
- SetMonData(mon, MON_DATA_SPD_IV, &value);
+ SetMonData(mon, MON_DATA_SPEED_IV, &value);
value = src->spAttackIV;
SetMonData(mon, MON_DATA_SPATK_IV, &value);
value = src->spDefenseIV;
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index cf073570d..587773836 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -28,14 +28,14 @@ extern const u32 gBitTable[];
extern const struct SpriteTemplate gUnknown_08329D98[];
extern const struct SpriteTemplate gUnknown_08329DF8[];
extern const union AnimCmd* gUnknown_082FF70C[];
-extern const union AnimCmd* const * const gUnknown_08309AAC[];
+extern const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[];
extern const union AnimCmd* const * const gUnknown_08305D0C[];
extern const union AnimCmd* const * const gUnknown_0830536C[];
extern const u8 gText_BadEgg[];
extern const u8 gText_EggNickname[];
extern u8 GetBankSide(u8 bank);
-extern u8 GetBankByPlayerAI(u8 bank);
+extern u8 GetBankByIdentity(u8 bank);
extern u8 GetBankIdentity(u8 bank);
u8 CountAliveMonsInBattle(u8 caseId)
@@ -90,7 +90,7 @@ u8 sub_8069F34(u8 bank)
status ^= 1;
if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
- return GetBankByPlayerAI(status);
+ return GetBankByIdentity(status);
if (CountAliveMonsInBattle(BATTLE_ALIVE_EXCEPT_ACTIVE) > 1)
{
u8 val;
@@ -99,14 +99,14 @@ u8 sub_8069F34(u8 bank)
val = status ^ 2;
else
val = status;
- return GetBankByPlayerAI(val);
+ return GetBankByIdentity(val);
}
else
{
if ((gAbsentBankFlags & gBitTable[status]))
- return GetBankByPlayerAI(status ^ 2);
+ return GetBankByIdentity(status ^ 2);
else
- return GetBankByPlayerAI(status);
+ return GetBankByIdentity(status);
}
}
@@ -152,8 +152,8 @@ u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality)
void sub_806A068(u16 species, u8 bankIdentity)
{
- if (gBattleSpritesGfx != NULL)
- gUnknown_0202499C = gBattleSpritesGfx->templates[bankIdentity];
+ if (gMonSpritesGfxPtr != NULL)
+ gUnknown_0202499C = gMonSpritesGfxPtr->templates[bankIdentity];
else if (gUnknown_020249B4[0])
gUnknown_0202499C = gUnknown_020249B4[0]->templates[bankIdentity];
else if (gUnknown_020249B4[1])
@@ -165,9 +165,9 @@ void sub_806A068(u16 species, u8 bankIdentity)
if (bankIdentity == 0 || bankIdentity == 2)
gUnknown_0202499C.anims = gUnknown_082FF70C;
else if (species > 500)
- gUnknown_0202499C.anims = gUnknown_08309AAC[species - 500];
+ gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species - 500];
else
- gUnknown_0202499C.anims = gUnknown_08309AAC[species];
+ gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species];
}
void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity)
@@ -180,8 +180,8 @@ void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity)
}
else
{
- if (gBattleSpritesGfx != NULL)
- gUnknown_0202499C = gBattleSpritesGfx->templates[bankIdentity];
+ if (gMonSpritesGfxPtr != NULL)
+ gUnknown_0202499C = gMonSpritesGfxPtr->templates[bankIdentity];
else
gUnknown_0202499C = gUnknown_08329D98[bankIdentity];
gUnknown_0202499C.anims = gUnknown_0830536C[trainerSpriteId];
@@ -190,8 +190,8 @@ void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity)
void sub_806A1C0(u16 arg0, u8 bankIdentity)
{
- if (gBattleSpritesGfx != NULL)
- gUnknown_0202499C = gBattleSpritesGfx->templates[bankIdentity];
+ if (gMonSpritesGfxPtr != NULL)
+ gUnknown_0202499C = gMonSpritesGfxPtr->templates[bankIdentity];
else
gUnknown_0202499C = gUnknown_08329D98[bankIdentity];
gUnknown_0202499C.paletteTag = arg0;
@@ -330,7 +330,7 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8* data)
if (!ret)
ret = mon->defense;
break;
- case MON_DATA_SPD:
+ case MON_DATA_SPEED:
ret = GetDeoxysStat(mon, STAT_SPD);
if (!ret)
ret = mon->speed;
@@ -351,7 +351,7 @@ u32 GetMonData(struct Pokemon *mon, s32 field, u8* data)
case MON_DATA_DEF2:
ret = mon->defense;
break;
- case MON_DATA_SPD2:
+ case MON_DATA_SPEED2:
ret = mon->speed;
break;
case MON_DATA_SPATK2:
@@ -512,7 +512,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
case MON_DATA_DEF_EV:
retVal = substruct2->defenseEV;
break;
- case MON_DATA_SPD_EV:
+ case MON_DATA_SPEED_EV:
retVal = substruct2->speedEV;
break;
case MON_DATA_SPATK_EV:
@@ -566,7 +566,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
case MON_DATA_DEF_IV:
retVal = substruct3->defenseIV;
break;
- case MON_DATA_SPD_IV:
+ case MON_DATA_SPEED_IV:
retVal = substruct3->speedIV;
break;
case MON_DATA_SPATK_IV:
@@ -747,7 +747,7 @@ void SetMonData(struct Pokemon *mon, s32 field, const void *dataArg)
case MON_DATA_DEF:
SET16(mon->defense);
break;
- case MON_DATA_SPD:
+ case MON_DATA_SPEED:
SET16(mon->speed);
break;
case MON_DATA_SPATK:
@@ -880,7 +880,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
case MON_DATA_DEF_EV:
SET8(substruct2->defenseEV);
break;
- case MON_DATA_SPD_EV:
+ case MON_DATA_SPEED_EV:
SET8(substruct2->speedEV);
break;
case MON_DATA_SPATK_EV:
@@ -940,7 +940,7 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const void *dataArg)
case MON_DATA_DEF_IV:
SET8(substruct3->defenseIV);
break;
- case MON_DATA_SPD_IV:
+ case MON_DATA_SPEED_IV:
SET8(substruct3->speedIV);
break;
case MON_DATA_SPATK_IV:
@@ -1089,7 +1089,7 @@ u8 SendMonToPC(struct Pokemon* mon)
gSpecialVar_0x8012 = boxNo;
gSpecialVar_0x8013 = boxPos;
if (get_unknown_box_id() != boxNo)
- FlagReset(SYS_STORAGE_UNKNOWN_FLAG);
+ FlagClear(SYS_STORAGE_UNKNOWN_FLAG);
VarSet(VAR_STORAGE_UNKNOWN, boxNo);
return MON_GIVEN_TO_PC;
}
@@ -1308,10 +1308,9 @@ void sub_805EF84(u8 bank, bool8);
extern struct BattlePokemon gBattleMons[4];
-/*
-
void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex)
{
+ u16* hpSwitchout;
s32 i;
u8 nickname[POKEMON_NAME_LENGTH * 2];
@@ -1330,7 +1329,7 @@ void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex)
gBattleMons[bank].hpIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_HP_IV, NULL);
gBattleMons[bank].attackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK_IV, NULL);
gBattleMons[bank].defenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF_IV, NULL);
- gBattleMons[bank].speedIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPD_IV, NULL);
+ gBattleMons[bank].speedIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED_IV, NULL);
gBattleMons[bank].spAttackIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK_IV, NULL);
gBattleMons[bank].spDefenseIV = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF_IV, NULL);
gBattleMons[bank].personality = GetMonData(&gPlayerParty[partyIndex], MON_DATA_PERSONALITY, NULL);
@@ -1340,7 +1339,7 @@ void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex)
gBattleMons[bank].maxHP = GetMonData(&gPlayerParty[partyIndex], MON_DATA_MAX_HP, NULL);
gBattleMons[bank].attack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_ATK, NULL);
gBattleMons[bank].defense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_DEF, NULL);
- gBattleMons[bank].speed = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPD, NULL);
+ gBattleMons[bank].speed = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPEED, NULL);
gBattleMons[bank].spAttack = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPATK, NULL);
gBattleMons[bank].spDefense = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPDEF, NULL);
gBattleMons[bank].isEgg = GetMonData(&gPlayerParty[partyIndex], MON_DATA_IS_EGG, NULL);
@@ -1352,15 +1351,9 @@ void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex)
GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, nickname);
StringCopy10(gBattleMons[bank].nickname, nickname);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_OT_NAME, gBattleMons[bank].otName);
- // ewram memes from Ruby return
- #ifdef NONMATCHING
- gBattleStruct->hpOnSwitchout[GetBankSide(bank)] = gBattleMons[bank].hp;
- #else
- {
- u32 side = GetBankSide(bank);
- *(u16*)((void*)(gBattleStruct) + side) = gBattleMons[bank].hp;
- }
- #endif // NONMATCHING
+
+ hpSwitchout = &gBattleStruct->hpOnSwitchout[GetBankSide(bank)];
+ *hpSwitchout = gBattleMons[bank].hp;
for (i = 0; i < 8; i++)
gBattleMons[bank].statStages[i] = 6;
@@ -1369,4 +1362,3 @@ void CopyPlayerPartyMonToBattleData(u8 bank, u8 partyIndex)
sub_803FA70(bank);
sub_805EF84(bank, FALSE);
}
-*/
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 603732a34..5ff99aee2 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -216,7 +216,7 @@ void sub_806CF24(s32 stat)
gBankTarget = gBankInMenu;
StringCopy(gBattleTextBuff1, gStatNamesTable[gUnknown_08329EC8[stat]]);
StringCopy(gBattleTextBuff2, gText_StatRose);
- StrCpyDecodeToDisplayedStringBattle(gText_PkmnsStatChanged2);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnsStatChanged2);
}
u8 *sub_806CF78(u16 itemId)
@@ -251,7 +251,7 @@ u8 *sub_806CF78(u16 itemId)
else
{
gBankAttacker = gBankInMenu;
- StrCpyDecodeToDisplayedStringBattle(gText_PkmnGettingPumped);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnGettingPumped);
}
}
}
@@ -259,7 +259,7 @@ u8 *sub_806CF78(u16 itemId)
if (itemEffect[3] & 0x80)
{
gBankAttacker = gBankInMenu;
- StrCpyDecodeToDisplayedStringBattle(gText_PkmnShroudedInMist);
+ BattleStringExpandPlaceholdersToDisplayedString(gText_PkmnShroudedInMist);
}
return gDisplayedStringBattle;
@@ -486,8 +486,8 @@ u16 SpeciesToCryId(u16 species)
void sub_806D544(u16 species, u32 personality, u8 *dest)
{
if (species == SPECIES_SPINDA
- && dest != gBattleSpritesGfx->sprites[0]
- && dest != gBattleSpritesGfx->sprites[2])
+ && dest != gMonSpritesGfxPtr->sprites[0]
+ && dest != gMonSpritesGfxPtr->sprites[2])
{
int i;
for (i = 0; i < 4; i++)
@@ -601,9 +601,9 @@ bool8 sub_806D7EC(void)
return retVal;
}
-bool8 sub_806D82C(u8 id)
+bool16 sub_806D82C(u8 id)
{
- bool8 retVal = FALSE;
+ bool16 retVal = FALSE;
switch (gLinkPlayers[id].lp_field_18)
{
case 0:
@@ -1361,20 +1361,20 @@ void BoxMonRestorePP(struct BoxPokemon *boxMon)
void sub_806E994(void)
{
gLastUsedAbility = gBattleStruct->field_B0;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 4;
+
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = B_BUFF_MON_NICK_WITH_PREFIX;
gBattleTextBuff1[2] = gBattleStruct->field_49;
- gBattleTextBuff1[4] = EOS;
+ gBattleTextBuff1[4] = B_BUFF_EOS;
+
if (!GetBankSide(gBattleStruct->field_49))
gBattleTextBuff1[3] = pokemon_order_func(gBattlePartyID[gBattleStruct->field_49]);
else
gBattleTextBuff1[3] = gBattlePartyID[gBattleStruct->field_49];
- gBattleTextBuff2[0] = 0xFD;
- gBattleTextBuff2[1] = 4;
- gBattleTextBuff2[2] = gBankInMenu;
- gBattleTextBuff2[3] = pokemon_order_func(gBattlePartyID[gBankInMenu]);
- gBattleTextBuff2[4] = EOS;
- StrCpyDecodeBattle(gText_PkmnsXPreventsSwitching, gStringVar4);
+
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBankInMenu, pokemon_order_func(gBattlePartyID[gBankInMenu]))
+
+ BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4);
}
struct PokeItem
@@ -1388,7 +1388,7 @@ extern const struct PokeItem gAlteringCaveWildMonHeldItems[9];
static s32 GetWildMonTableIdInAlteringCave(u16 species)
{
s32 i;
- for (i = 0; i < 9; i++)
+ for (i = 0; i < (s32) ARRAY_COUNT(gAlteringCaveWildMonHeldItems); i++)
if (gAlteringCaveWildMonHeldItems[i].species == species)
return i;
return 0;
@@ -1519,8 +1519,6 @@ void BattleAnimateFrontSprite(struct Sprite* sprite, u16 species, bool8 noCry, u
DoMonFrontSpriteAnimation(sprite, species, noCry, arg3);
}
-bool8 HasTwoFramesAnimation(u16 species);
-
extern void SpriteCallbackDummy_2(struct Sprite*);
extern void sub_817F60C(struct Sprite*);
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 12d98bfd8..1758fba32 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -57,7 +57,7 @@ static u32 GetMonSizeHash(struct Pokemon *pkmn)
u16 hpIV = GetMonData(pkmn, MON_DATA_HP_IV) & 0xF;
u16 attackIV = GetMonData(pkmn, MON_DATA_ATK_IV) & 0xF;
u16 defenseIV = GetMonData(pkmn, MON_DATA_DEF_IV) & 0xF;
- u16 speedIV = GetMonData(pkmn, MON_DATA_SPD_IV) & 0xF;
+ u16 speedIV = GetMonData(pkmn, MON_DATA_SPEED_IV) & 0xF;
u16 spAtkIV = GetMonData(pkmn, MON_DATA_SPATK_IV) & 0xF;
u16 spDefIV = GetMonData(pkmn, MON_DATA_SPDEF_IV) & 0xF;
u32 hibyte = ((attackIV ^ defenseIV) * hpIV) ^ (personality & 0xFF);
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
new file mode 100644
index 000000000..3e409244c
--- /dev/null
+++ b/src/pokemon_storage_system.c
@@ -0,0 +1,15 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03000F78[0x188];
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
new file mode 100755
index 000000000..838e91d90
--- /dev/null
+++ b/src/pokemon_summary_screen.c
@@ -0,0 +1,3679 @@
+#include "global.h"
+#include "battle.h"
+#include "bg.h"
+#include "decompress.h"
+#include "item.h"
+#include "items.h"
+#include "link.h"
+#include "m4a.h"
+#include "main.h"
+#include "malloc.h"
+#include "moves.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "songs.h"
+#include "sound.h"
+#include "species.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "window.h"
+
+struct ContestMove
+{
+ u8 effect;
+ u8 type;
+ u8 comboID;
+ u8 combo[4];
+};
+
+struct ContestEffect
+{
+ u8 type;
+ u8 appeal;
+ u8 jam;
+};
+
+
+
+extern struct UnkSummaryStruct* gUnknown_0203CF1C;
+extern struct BgTemplate gUnknown_0861CBB4;
+extern u8 gUnknown_0203CF20;
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern s8 gUnknown_0861CC1C[];
+extern u8 gUnknown_08329D22[];
+extern u8 gUnknown_0203CF21;
+extern u16 gSpecialVar_0x8005;
+extern struct UnkStruct_61CC04 gUnknown_0861CC04;
+extern struct UnkStruct_61CC04 gUnknown_0861CC10;
+extern struct UnkStruct_61CC04 gUnknown_0861CBEC;
+extern struct UnkStruct_61CC04 gUnknown_0861CBF8;
+extern u16 gUnknown_08DC3CD4[];
+extern struct ContestMove gContestMoves[];
+extern struct ContestEffect gContestEffects[];
+extern struct WindowTemplate gUnknown_0861CC24;
+extern struct TextColor gUnknown_0861CD2C[];
+extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
+extern u8 gText_MaleSymbol[];
+extern u8 gText_FemaleSymbol[];
+extern u8 gUnknown_0861CDD3[];
+extern void (*const gUnknown_0861CE54[])();
+extern void (*const gUnknown_0861CE64[])(u8 taskId);
+extern struct WindowTemplate gUnknown_0861CCCC;
+extern u8 gUnknown_0861CE74[];
+extern u8 gUnknown_0861CE7B[];
+extern struct WindowTemplate gUnknown_0861CCEC;
+extern struct WindowTemplate gUnknown_0861CD14;
+
+extern void sub_806F2AC(u8 a, u8 b);
+void sub_81C488C(u8 a);
+extern void do_scheduled_bg_tilemap_copies_to_vram(void);
+extern u8 sub_81221EC();
+extern u8 sub_81221AC();
+extern void SetVBlankHBlankCallbacksToNull();
+extern void sub_8121DA0();
+extern void clear_scheduled_bg_copies_to_vram();
+extern void remove_some_task();
+extern void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable);
+extern void ShowBg(u8 a);
+extern void SetGpuReg(u8 regOffset, u16 value);
+extern void schedule_bg_copy_tilemap_to_vram(u8 a);
+extern void SetBgTilemapBuffer(u8 bg, void *tilemap);
+extern u8 gUnknown_08D9862C;
+extern u8 gUnknown_08D98CC8;
+extern u8 gUnknown_08D987FC;
+extern u8 gUnknown_08D9898C;
+extern u8 gUnknown_08D98B28;
+extern u8 gUnknown_08D9853C;
+extern u8 gUnknown_08D85620;
+extern struct CompressedSpriteSheet gUnknown_0861CFBC;
+extern struct CompressedSpriteSheet gUnknown_0861D074;
+extern struct CompressedSpriteSheet gUnknown_0861D0F8;
+extern struct CompressedSpritePalette gUnknown_0861D100;
+extern struct CompressedSpritePalette gUnknown_0861D07C;
+extern u8 gUnknown_08D97B84;
+extern u8 gUnknown_08D97D0C;
+extern void reset_temp_tile_data_buffers();
+extern void decompress_and_copy_tile_data_to_vram(u8 a, void* tiledata, u8 b, u8 c, u8 d);
+extern u8 free_temp_tile_data_buffers_if_possible();
+extern void sub_8069004(struct BoxPokemon* a, void* b);
+extern void sub_81C1E20(u8 taskId);
+extern u8 *GetMonNickname(struct Pokemon *mon, u8 *dest);
+extern u16 SpeciesToPokedexNum(u16 species);
+extern u8 gText_UnkCtrlF908Clear01[];
+extern u8 gText_LevelSymbol[];
+extern u8 gText_PkmnInfo[];
+extern u8 gText_PkmnSkills[];
+extern u8 gText_BattleMoves[];
+extern u8 gText_ContestMoves[];
+extern u8 gText_Cancel2[];
+extern u8 gText_Info[];
+extern u8 gText_Switch[];
+extern u8 gText_RentalPkmn[];
+extern u8 gText_TypeSlash[];
+extern u8 gText_HP4[];
+extern u8 gText_Attack3[];
+extern u8 gText_Defense3[];
+extern u8 gText_SpAtk4[];
+extern u8 gText_SpDef4[];
+extern u8 gText_Speed2[];
+extern u8 gText_ExpPoints[];
+extern u8 gText_NextLv[];
+extern u8 gText_Status[];
+extern u8 gText_Power[];
+extern u8 gText_Accuracy2[];
+extern u8 gText_Appeal[];
+extern u8 gText_Jam[];
+extern u8 gText_OTSlash[];
+extern u8 gText_UnkCtrlF907F908[];
+extern u8 gAbilityNames[][13];
+extern u8 *gAbilityDescriptionPointers[];
+extern u8 gText_XNature[];
+extern u8 gText_XNatureHatchedAtYZ[];
+extern u8 gText_XNatureHatchedSomewhereAt[];
+extern u8 gText_XNatureMetAtYZ[];
+extern u8 gText_XNatureMetSomewhereAt[];
+extern u8 gText_XNatureFatefulEncounter[];
+extern u8 gText_XNatureProbablyMetAt[];
+extern u8 gText_XNatureObtainedInTrade[];
+extern u8 *gNatureNamePointers[];
+extern u8 gText_EmptyString5[];
+extern u32 gBattleTypeFlags;
+extern u8 gText_FiveMarks[];
+extern u8 gText_EggWillTakeALongTime[];
+extern u8 gText_EggAboutToHatch[];
+extern u8 gText_EggWillHatchSoon[];
+extern u8 gText_EggWillTakeSomeTime[];
+extern u8 gText_PeculiarEggNicePlace[];
+extern u8 gText_PeculiarEggTrade[];
+extern u8 gText_EggFromTraveler[];
+extern u8 gText_EggFromHotSprings[];
+extern u8 gText_OddEggFoundByCouple[];
+extern u8 gText_None[];
+extern u8 gText_RibbonsVar1[];
+extern u8 gUnknown_0861CE82[];
+extern u8 gUnknown_0861CE8E[];
+extern u8 gText_OneDash[];
+extern u8 gText_TwoDashes[];
+extern u8 gText_ThreeDashes[];
+extern u8 gUnknown_0861CE97[];
+extern struct BattleMove gBattleMoves[];
+
+extern u32 ChangeBgX(u8 bg, u32 value, u8 op);
+extern void sub_8199C30(u8 a, u8 b, u8 c, u8 d, u8 e, u8 f);
+extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor* colors, s8 speed, u8 *str);
+extern s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
+extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
+extern bool8 sub_81A6BF4();
+extern bool8 sub_81B9E94();
+extern void sub_81AFBF0();
+extern u8 sub_81AFC0C(u8 a, u8 *b);
+extern void sub_81AFC28(u8 *a, u8 *b);
+extern void sub_8124610(u8 *a, u8 b);
+extern int GetPlayerIDAsU32();
+extern u8 GetCurrentPpToMaxPpState(u8 a, u8 b);
+
+void sub_81BFAE4(void);
+void sub_81BFE24();
+u8 sub_81BFEB0();
+void sub_81C2554();
+void sub_81C1BA0();
+void sub_81C0098(struct Pokemon* a);
+bool8 sub_81C00F0(struct Pokemon* a);
+void sub_81C25E8();
+void sub_81C286C();
+void sub_81C2D9C(u8 a);
+void sub_81C0348();
+void sub_81C2AFC(u8 a);
+void sub_81C4190();
+void sub_81C42C8();
+u8 sub_81C45F4(void* a, u16* b);
+void sub_81C4984();
+void sub_81C4A08();
+void sub_81C4A88();
+void sub_81C4280();
+void sub_81C0510(u8 taskId);
+void sub_81C171C(u8 taskId);
+void sub_8121E10();
+u8 sub_81B205C(struct Pokemon* a);
+void sub_81C1DA4(u16 a, s16 b);
+void sub_81C1EFC(u16 a, s16 b, u16 c);
+void sub_81C240C(u16 a);
+void sub_81C2194(u16 *a, u16 b, u8 c);
+void sub_81C2074(u16 a, s16 b);
+void sub_81C2524();
+void sub_81C2228(struct Pokemon* mon);
+void sub_81C0484(u8 taskId);
+void sub_81C4898();
+void sub_806F47C(u8 a);
+u8 GetLRKeysState();
+void sub_81C0604(u8 taskId, s8 a);
+void sub_81C0A8C(u8 taskId, s8 a);
+void sub_81C48F0();
+void sub_81C0E48(u8 taskId);
+void sub_81C0704(u8 taskId);
+s8 sub_81C09B4(s8 a);
+s8 sub_81C08F8(s8 a);
+void sub_81C4204(u8 a, u8 b);
+void sub_81C20F0(u8 taskId);
+bool8 sub_81C0A50(struct Pokemon* mon);
+void sub_81C49E0();
+void sub_81C0E24();
+void sub_81C2C38(u8 a);
+void sub_81C0B8C(u8 taskId);
+void sub_81C0CC4(u8 taskId);
+void sub_81C2DE4(u8 a);
+void sub_81C424C();
+void sub_81C0C68(u8 taskId);
+void sub_81C0D44(u8 taskId);
+void sub_81C22CC(struct Pokemon* mon);
+void sub_81C0F44(u8 taskId);
+void sub_81C3E9C(u16 a);
+void sub_81C3F44();
+void sub_81C44F0();
+void sub_81C4AF8(u8 a);
+void sub_81C1070(s16* a, s8 b, u8* c);
+void sub_81C11F4(u8 a);
+void sub_81C129C(u8 a);
+bool8 sub_81C1040();
+void sub_81C4064();
+void sub_81C4C60(u8 a);
+void sub_81C12E4(u8 taskId);
+void sub_81C4C84(u8 a);
+void sub_81C13B0(u8 a, u8 b);
+void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b);
+void sub_81C15EC(struct BoxPokemon *mon, u8 a, u8 b);
+void sub_81C40A0(u8 a, u8 b);
+void sub_81C4568(u8 a, u8 b);
+void sub_81C174C(u8 taskId);
+bool8 sub_81C18A8();
+void sub_81C18F4(u8 a);
+u8 sub_81B6D14(u16 a);
+void sub_81C1940(u8 taskId);
+void sub_81C4154();
+void sub_81C1F80(u8 taskId);
+void sub_81C2628();
+void sub_81C2794();
+void sub_81C27DC(struct Pokemon *mon, u16 a);
+void sub_81C2D68(u8 a);
+void sub_81C335C();
+void sub_81C33CC();
+void sub_81C3428();
+void sub_81C349C();
+void sub_81C2EC4();
+void sub_81C2F5C();
+void sub_81C2FD8();
+void sub_81C302C();
+void sub_81C307C();
+void sub_81C3194();
+void sub_81C31C0();
+bool8 sub_81C3304();
+void sub_81C31F0(u8 *a);
+u8 sub_81C3220();
+bool8 sub_81C32BC();
+void sub_81C35E4();
+void sub_81C3690();
+void sub_81C3710();
+void sub_81C37D8();
+void sub_81C3808();
+void sub_81C3890();
+void sub_81C38C0();
+void sub_81C3B08(u8 a);
+void sub_81C3E2C(u8 a);
+void sub_81C4D18();
+
+void SetBgAttribute(u8 bg, u8 attributeId, u8 value);
+
+bool8 sub_81BFB10();
+u8 sub_81B1250();
+
+union UnkUnion
+{
+ struct Pokemon mon[6];
+ struct BoxPokemon boxMon[6];
+};
+
+
+u8 sub_80D214C(union UnkUnion* a, u8 b, u8 c, u8 d);
+
+struct PokeSummary
+{
+ u16 species; // 0x0
+ u16 species2; // 0x2
+ u8 isEgg; // 0x4
+ u8 level; // 0x5
+ u8 ribbons; // 0x6
+ u8 unk7; // 0x7
+ u8 altAbility; // 0x8
+ u8 metLocation; // 0x9
+ u8 metLevel; // 0xA
+ u8 metGame; // 0xB
+ u32 pid; // 0xC
+ u32 exp; // 0x10
+ u16 moves[4]; // 0x14
+ u8 pp[4]; // 0x1C
+ u16 currentHP; // 0x20
+ u16 maxHP; // 0x22
+ u16 atk; // 0x24
+ u16 def; // 0x26
+ u16 spatk; // 0x28
+ u16 spdef; // 0x2A
+ u16 speed; // 0x2C
+ u16 item; // 0x2E
+ u16 friendship; // 0x30
+ u8 OTGender; // 0x32
+ u8 nature; // 0x33
+ u8 ppBonuses; // 0x34
+ u8 sanity; // 0x35
+ u8 OTName[8]; // 0x36
+ u8 unk3E[9]; // 0x3E
+ u32 OTID; // 0x48
+};
+
+struct UnkSummaryStruct
+{
+ /*0x00*/ union UnkUnion *unk0;
+ /*0x04*/ void *unk4;
+ /*0x08*/ void *unk8;
+ /*0x0C*/ struct Pokemon currentMon;
+ /*0x70*/ struct PokeSummary summary;
+ u16 unkTilemap0[0x400];
+ u16 unkTilemap0_1[0x400];
+ u16 unkTilemap1[0x400];
+ u16 unkTilemap1_1[0x400];
+ u16 unkTilemap2[0x400];
+ u16 unkTilemap2_1[0x400];
+ u16 unkTilemap3[0x400];
+ u16 unkTilemap3_1[0x400];
+ u8 unk40BC;
+ u8 unk40BD;
+ u8 unk40BE;
+ u8 unk40BF;
+ u8 unk40C0;
+ u8 unk40C1;
+ u8 unk40C2;
+ u8 unk40C3;
+ u16 unk40C4;
+ u8 unk40C6;
+ u8 unk40C7;
+ u8 unk40C8;
+ u8 unk40C9;
+ u8 unk40CA;
+ u8 unk40CB[8];
+ u8 unk40D3;
+ u8 unk40D4;
+ u8 unk40D5;
+ u8 unk_filler5[0x19];
+ u8 unk40EF;
+ s16 unk40F0;
+ u8 unk_filler4[6];
+};
+
+void sub_81BF8EC(u8 a, void *b, u8 c, u8 d, void *e)
+{
+ u8 byte;
+ gUnknown_0203CF1C = AllocZeroed(sizeof(struct UnkSummaryStruct));
+ gUnknown_0203CF1C->unk40BC = a;
+ gUnknown_0203CF1C->unk0 = b;
+ gUnknown_0203CF1C->unk40BE = c;
+ gUnknown_0203CF1C->unk40BF = d;
+ gUnknown_0203CF1C->unk4 = e;
+ if (a == 2)
+ gUnknown_0203CF1C->unk40BD = 1;
+ else
+ gUnknown_0203CF1C->unk40BD = 0;
+ switch (a)
+ {
+ case 0:
+ case 2:
+ gUnknown_0203CF1C->unk40C1 = 0;
+ gUnknown_0203CF1C->unk40C2 = 3;
+ break;
+ case 1:
+ gUnknown_0203CF1C->unk40C1 = 0;
+ gUnknown_0203CF1C->unk40C2 = 3;
+ gUnknown_0203CF1C->unk40C8 = 1;
+ break;
+ case 3:
+ gUnknown_0203CF1C->unk40C1 = 2;
+ gUnknown_0203CF1C->unk40C2 = 3;
+ gUnknown_0203CF1C->unk40C3 = 1;
+ break;
+ }
+ byte = gUnknown_0203CF1C->unk40C1;
+ gUnknown_0203CF1C->unk40C0 = byte;
+ sub_81C488C(0xFF);
+ if (gMonSpritesGfxPtr == 0)
+ sub_806F2AC(0, 0);
+ SetMainCallback2(sub_81BFAE4);
+}
+
+void sub_81BFA38(void *a, u8 b, u8 c, void *d, u16 e)
+{
+ sub_81BF8EC(3, a, b, c, d);
+ gUnknown_0203CF1C->unk40C4 = e;
+}
+
+void sub_81BFA80(u8 a, void *b, u8 c, u8 d, void *e)
+{
+ sub_81BF8EC(a, b, c, d, e);
+ gUnknown_0203CF1C->unk40EF = 1;
+}
+
+void sub_81BFAB4(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+void sub_81BFAD0(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_81BFAE4()
+{
+ while (1)
+ {
+ if (sub_81221EC() == 1 || sub_81BFB10() == TRUE || sub_81221AC() == 1)
+ break;
+ }
+}
+
+bool8 sub_81BFB10(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankHBlankCallbacksToNull();
+ sub_8121DA0();
+ clear_scheduled_bg_copies_to_vram();
+ gMain.state++;
+ break;
+ case 1:
+ remove_some_task();
+ gMain.state++;
+ break;
+ case 2:
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = 1;
+ gMain.state++;
+ break;
+ case 3:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 5:
+ sub_81BFE24();
+ gUnknown_0203CF1C->unk40F0 = 0;
+ gMain.state++;
+ break;
+ case 6:
+ if (sub_81BFEB0() != 0)
+ gMain.state++;
+ break;
+ case 7:
+ sub_81C2554();
+ gMain.state++;
+ break;
+ case 8:
+ sub_81C1BA0();
+ gMain.state++;
+ break;
+ case 9:
+ sub_81C0098(&gUnknown_0203CF1C->currentMon);
+ gUnknown_0203CF1C->unk40F0 = 0;
+ gMain.state++;
+ break;
+ case 10:
+ if (sub_81C00F0(&gUnknown_0203CF1C->currentMon) != 0)
+ gMain.state++;
+ break;
+ case 11:
+ sub_81C25E8();
+ gMain.state++;
+ break;
+ case 12:
+ sub_81C286C();
+ gMain.state++;
+ break;
+ case 13:
+ sub_81C2D9C(gUnknown_0203CF1C->unk40C0);
+ gMain.state++;
+ break;
+ case 14:
+ sub_81C0348();
+ gMain.state++;
+ break;
+ case 15:
+ sub_81C2AFC(gUnknown_0203CF1C->unk40C0);
+ gMain.state++;
+ break;
+ case 16:
+ sub_81C4190();
+ sub_81C42C8();
+ gUnknown_0203CF1C->unk40F0 = 0;
+ gMain.state++;
+ break;
+ case 17:
+ gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &gUnknown_0203CF1C->unk40F0);
+ if (gUnknown_0203CF1C->unk40D3 != 0xFF)
+ {
+ gUnknown_0203CF1C->unk40F0 = 0;
+ gMain.state++;
+ }
+ break;
+ case 18:
+ sub_81C4984(&gUnknown_0203CF1C->currentMon);
+ gMain.state++;
+ break;
+ case 19:
+ sub_81C4A08(&gUnknown_0203CF1C->currentMon);
+ gMain.state++;
+ break;
+ case 20:
+ sub_81C4A88();
+ gMain.state++;
+ break;
+ case 21:
+ sub_81C4280();
+ gMain.state++;
+ break;
+ case 22:
+ if (gUnknown_0203CF1C->unk40BC != 3)
+ CreateTask(sub_81C0510, 0);
+ else
+ CreateTask(sub_81C171C, 0);
+ gMain.state++;
+ break;
+ case 23:
+ BlendPalettes(-1, 16, 0);
+ gMain.state++;
+ break;
+ case 24:
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gPaletteFade.bufferTransferDisabled = 0;
+ gMain.state++;
+ break;
+ default:
+ SetVBlankCallback(sub_81BFAD0);
+ SetMainCallback2(sub_81BFAB4);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_81BFE24()
+{
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, &gUnknown_0861CBB4, 4);
+ SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap2);
+ SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap1);
+ SetBgTilemapBuffer(3, &gUnknown_0203CF1C->unkTilemap0);
+ sub_8121E10();
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ schedule_bg_copy_tilemap_to_vram(3);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0x1040);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+}
+
+u8 sub_81BFEB0()
+{
+ switch (gUnknown_0203CF1C->unk40F0)
+ {
+ case 0:
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(1, &gUnknown_08D97D0C, 0, 0, 0);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 1:
+ if (free_temp_tile_data_buffers_if_possible() != 1)
+ {
+ LZDecompressWram(&gUnknown_08D9862C, gUnknown_0203CF1C->unkTilemap0);
+ gUnknown_0203CF1C->unk40F0++;
+ }
+ break;
+ case 2:
+ LZDecompressWram(&gUnknown_08D98CC8, gUnknown_0203CF1C->unkTilemap0_1);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 3:
+ LZDecompressWram(&gUnknown_08D987FC, gUnknown_0203CF1C->unkTilemap1_1);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 4:
+ LZDecompressWram(&gUnknown_08D9898C, gUnknown_0203CF1C->unkTilemap2_1);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 5:
+ LZDecompressWram(&gUnknown_08D98B28, gUnknown_0203CF1C->unkTilemap3_1);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 6:
+ LoadCompressedPalette(&gUnknown_08D9853C, 0, 0x100);
+ LoadPalette(&gUnknown_08D85620, 0x81, 0x1E);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 7:
+ LoadCompressedObjectPic(&gUnknown_0861CFBC);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 8:
+ LoadCompressedObjectPic(&gUnknown_0861D074);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 9:
+ LoadCompressedObjectPic(&gUnknown_0861D0F8);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 10:
+ LoadCompressedObjectPalette(&gUnknown_0861D100);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 11:
+ LoadCompressedObjectPalette(&gUnknown_0861D07C);
+ gUnknown_0203CF1C->unk40F0++;
+ break;
+ case 12:
+ LoadCompressedPalette(&gUnknown_08D97B84, 0x1D0, 0x60);
+ gUnknown_0203CF1C->unk40F0 = 0;
+ return 1;
+ }
+ return 0;
+}
+
+void sub_81C0098(struct Pokemon *mon)
+{
+ if (gUnknown_0203CF1C->unk40BD == 0)
+ {
+ struct Pokemon *partyMon = gUnknown_0203CF1C->unk0->mon;
+ *mon = partyMon[gUnknown_0203CF1C->unk40BE];
+ }
+ else
+ {
+ struct BoxPokemon *boxMon = gUnknown_0203CF1C->unk0->boxMon;
+ sub_8069004(&boxMon[gUnknown_0203CF1C->unk40BE], mon);
+ }
+}
+
+bool8 sub_81C00F0(struct Pokemon *a)
+{
+ u32 i;
+ struct PokeSummary *sum = &gUnknown_0203CF1C->summary;
+ switch (gUnknown_0203CF1C->unk40F0)
+ {
+ case 0:
+ sum->species = GetMonData(a, MON_DATA_SPECIES);
+ sum->species2 = GetMonData(a, MON_DATA_SPECIES2);
+ sum->exp = GetMonData(a, MON_DATA_EXP);
+ sum->level = GetMonData(a, MON_DATA_LEVEL);
+ sum->altAbility = GetMonData(a, MON_DATA_ALT_ABILITY);
+ sum->item = GetMonData(a, MON_DATA_HELD_ITEM);
+ sum->pid = GetMonData(a, MON_DATA_PERSONALITY);
+ sum->sanity = GetMonData(a, MON_DATA_SANITY_BIT1);
+ if (sum->sanity != 0)
+ sum->isEgg = 1;
+ else
+ sum->isEgg = GetMonData(a, MON_DATA_IS_EGG);
+ break;
+ case 1:
+ for (i = 0; i < 4; i++)
+ {
+ sum->moves[i] = GetMonData(a, MON_DATA_MOVE1+i);
+ sum->pp[i] = GetMonData(a, MON_DATA_PP1+i);
+ }
+ sum->ppBonuses = GetMonData(a, MON_DATA_PP_BONUSES);
+ break;
+ case 2:
+ if ((struct Pokemon*)gUnknown_0203CF1C->unk0 == gPlayerParty || gUnknown_0203CF1C->unk40BC == 2 || gUnknown_0203CF1C->unk40EF == 1)
+ {
+ sum->nature = GetNature(a);
+ sum->currentHP = GetMonData(a, MON_DATA_HP);
+ sum->maxHP = GetMonData(a, MON_DATA_MAX_HP);
+ sum->atk = GetMonData(a, MON_DATA_ATK);
+ sum->def = GetMonData(a, MON_DATA_DEF);
+ sum->spatk = GetMonData(a, MON_DATA_SPATK);
+ sum->spdef = GetMonData(a, MON_DATA_SPDEF);
+ sum->speed = GetMonData(a, MON_DATA_SPEED);
+ }
+ else
+ {
+ sum->nature = GetNature(a);
+ sum->currentHP = GetMonData(a, MON_DATA_HP);
+ sum->maxHP = GetMonData(a, MON_DATA_MAX_HP);
+ sum->atk = GetMonData(a, MON_DATA_ATK2);
+ sum->def = GetMonData(a, MON_DATA_DEF2);
+ sum->spatk = GetMonData(a, MON_DATA_SPATK2);
+ sum->spdef = GetMonData(a, MON_DATA_SPDEF2);
+ sum->speed = GetMonData(a, MON_DATA_SPEED2);
+ }
+ break;
+ case 3:
+ GetMonData(a, MON_DATA_OT_NAME, &sum->OTName);
+ ConvertInternationalString((u8*)&sum->OTName, GetMonData(a, MON_DATA_LANGUAGE));
+ sum->unk7 = sub_81B205C(a);
+ sum->OTGender = GetMonData(a, MON_DATA_OT_GENDER);
+ sum->OTID = GetMonData(a, MON_DATA_OT_ID);
+ sum->metLocation = GetMonData(a, MON_DATA_MET_LOCATION);
+ sum->metLevel = GetMonData(a, MON_DATA_MET_LEVEL);
+ sum->metGame = GetMonData(a, MON_DATA_MET_GAME);
+ sum->friendship = GetMonData(a, MON_DATA_FRIENDSHIP);
+ break;
+ default:
+ sum->ribbons = GetMonData(a, MON_DATA_RIBBON_COUNT);
+ return TRUE;
+ }
+ gUnknown_0203CF1C->unk40F0++;
+ return FALSE;
+}
+
+void sub_81C0348(void)
+{
+ if (gUnknown_0203CF1C->unk40C0 != 2 && gUnknown_0203CF1C->unk40C0 != 3)
+ {
+ sub_81C1DA4(0, 255);
+ sub_81C1EFC(0, 255, 0);
+ }
+ else
+ {
+ sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0);
+ SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap3);
+ SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap2);
+ ChangeBgX(2, 0x10000, 1);
+ ClearWindowTilemap(0x13);
+ ClearWindowTilemap(0xD);
+ }
+ if (gUnknown_0203CF1C->summary.unk7 == 0)
+ {
+ sub_81C2074(0, 0xFF);
+ }
+ else
+ {
+ if (gUnknown_0203CF1C->unk40C0 != 2 && gUnknown_0203CF1C->unk40C0 != 3)
+ PutWindowTilemap(0xD);
+ }
+ sub_81C2524();
+ sub_81C2228(&gUnknown_0203CF1C->currentMon);
+}
+
+void sub_81C0434()
+{
+ FreeAllWindowBuffers();
+ Free(gUnknown_0203CF1C);
+}
+
+void sub_81C044C(u8 taskId)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = sub_81C0484;
+}
+
+void sub_81C0484(u8 taskId)
+{
+ if (sub_81221EC() != 1 && !gPaletteFade.active)
+ {
+ SetMainCallback2(gUnknown_0203CF1C->unk4);
+ gUnknown_0203CF20 = gUnknown_0203CF1C->unk40BE;
+ sub_81C4898();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ if (gMonSpritesGfxPtr == 0)
+ sub_806F47C(0);
+ sub_81C0434();
+ DestroyTask(taskId);
+ }
+}
+
+void sub_81C0510(u8 taskId)
+{
+ if (sub_81221EC() != 1 && !gPaletteFade.active)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ sub_81C0604(taskId, -1);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ sub_81C0604(taskId, 1);
+ }
+ else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysState() == 1)
+ {
+ sub_81C0A8C(taskId, -1);
+ }
+ else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysState() == 2)
+ {
+ sub_81C0A8C(taskId, 1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (gUnknown_0203CF1C->unk40C0 != 1)
+ {
+ if (gUnknown_0203CF1C->unk40C0 == 0)
+ {
+ sub_81C48F0();
+ PlaySE(SE_SELECT);
+ sub_81C044C(taskId);
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_81C0E48(taskId);
+ }
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_81C48F0();
+ PlaySE(SE_SELECT);
+ sub_81C044C(taskId);
+ }
+ }
+}
+
+void sub_81C0604(u8 taskId, s8 a)
+{
+ s8 r4_2;
+
+ if (gUnknown_0203CF1C->unk40C3 == 0)
+ {
+ if (gUnknown_0203CF1C->unk40BD == 1)
+ {
+ if (gUnknown_0203CF1C->unk40C0 != 0)
+ {
+ if (a == 1)
+ a = 0;
+ else
+ a = 2;
+ }
+ else
+ {
+ if (a == 1)
+ a = 1;
+ else
+ a = 3;
+ }
+ r4_2 = sub_80D214C(gUnknown_0203CF1C->unk0, gUnknown_0203CF1C->unk40BE, gUnknown_0203CF1C->unk40BF, a);
+ }
+ else if (sub_81B1250() == 1)
+ {
+ r4_2 = sub_81C09B4(a);
+ }
+ else
+ {
+ r4_2 = sub_81C08F8(a);
+ }
+
+ if (r4_2 != -1)
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_0203CF1C->summary.unk7 != 0)
+ {
+ sub_81C4204(2, 1);
+ ClearWindowTilemap(0xD);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_81C2074(0, 2);
+ }
+ gUnknown_0203CF1C->unk40BE = r4_2;
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = sub_81C0704;
+ }
+ }
+}
+
+void sub_81C0704(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ StopCryAndClearCrySongs();
+ break;
+ case 1:
+ sub_81C4898();
+ DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D3]);
+ break;
+ case 2:
+ DestroySpriteAndFreeResources(&gSprites[gUnknown_0203CF1C->unk40D4]);
+ break;
+ case 3:
+ sub_81C0098(&gUnknown_0203CF1C->currentMon);
+ gUnknown_0203CF1C->unk40F0 = 0;
+ break;
+ case 4:
+ if (sub_81C00F0(&gUnknown_0203CF1C->currentMon) == FALSE)
+ return;
+ break;
+ case 5:
+ sub_81C49E0(&gUnknown_0203CF1C->currentMon);
+ break;
+ case 6:
+ sub_81C4A08(&gUnknown_0203CF1C->currentMon);
+ break;
+ case 7:
+ if (gUnknown_0203CF1C->summary.unk7)
+ sub_81C2074(10, -2);
+ sub_81C2228(&gUnknown_0203CF1C->currentMon);
+ data[1] = 0;
+ break;
+ case 8:
+ gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &data[1]);
+ if (gUnknown_0203CF1C->unk40D3 == 0xFF)
+ return;
+ gSprites[gUnknown_0203CF1C->unk40D3].data2 = 1;
+ sub_81C0E24();
+ data[1] = 0;
+ break;
+ case 9:
+ sub_81C4280();
+ break;
+ case 10:
+ sub_81C25E8();
+ break;
+ case 11:
+ sub_81C2D9C(gUnknown_0203CF1C->unk40C0);
+ sub_81C2524();
+ break;
+ case 12:
+ gSprites[gUnknown_0203CF1C->unk40D3].data2 = 0;
+ break;
+ default:
+ if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0)
+ {
+ data[0] = 0;
+ gTasks[taskId].func = sub_81C0510;
+ }
+ return;
+ }
+ data[0]++;
+}
+
+s8 sub_81C08F8(s8 a)
+{
+ struct Pokemon *mon = gUnknown_0203CF1C->unk0->mon;
+
+ if (gUnknown_0203CF1C->unk40C0 == 0)
+ {
+ if (a == -1 && gUnknown_0203CF1C->unk40BE == 0)
+ return -1;
+ if (a == 1 && gUnknown_0203CF1C->unk40BE >= gUnknown_0203CF1C->unk40BF)
+ return -1;
+ return gUnknown_0203CF1C->unk40BE + a;
+ }
+ else
+ {
+ s8 index = gUnknown_0203CF1C->unk40BE;
+
+ do
+ {
+ index += a;
+ if (index < 0 || index > gUnknown_0203CF1C->unk40BF)
+ return -1;
+ } while (GetMonData(&mon[index], MON_DATA_IS_EGG) != 0);
+ return index;
+ }
+}
+
+s8 sub_81C09B4(s8 a)
+{
+ struct Pokemon *mon = gUnknown_0203CF1C->unk0->mon;
+ s8 r5 = 0;
+ u8 i;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (gUnknown_0861CC1C[i] == gUnknown_0203CF1C->unk40BE)
+ {
+ r5 = i;
+ break;
+ }
+ }
+
+ while (1)
+ {
+ int b;
+ s8* c = &gUnknown_0861CC1C[0];
+
+ r5 += a;
+ if (r5 < 0 || r5 >= 6)
+ return -1;
+ b = c[r5];
+ if (sub_81C0A50(&mon[b]) == TRUE)
+ return b;
+ }
+}
+
+bool8 sub_81C0A50(struct Pokemon* mon)
+{
+ if (GetMonData(mon, MON_DATA_SPECIES) == 0)
+ return FALSE;
+ else if (gUnknown_0203CF1C->unk40BE != 0 || GetMonData(mon, MON_DATA_IS_EGG) == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_81C0A8C(u8 taskId, s8 b)
+{
+ struct PokeSummary *summary = &gUnknown_0203CF1C->summary;
+ s16 *data = gTasks[taskId].data;
+
+ if (summary->isEgg)
+ return;
+ if (b == -1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C1)
+ return;
+ if (b == 1 && gUnknown_0203CF1C->unk40C0 == gUnknown_0203CF1C->unk40C2)
+ return;
+ PlaySE(SE_SELECT);
+ sub_81C2C38(gUnknown_0203CF1C->unk40C0);
+ gUnknown_0203CF1C->unk40C0 += b;
+ data[0] = 0;
+ if (b == 1)
+ SetTaskFuncWithFollowupFunc(taskId, sub_81C0B8C, gTasks[taskId].func);
+ else
+ SetTaskFuncWithFollowupFunc(taskId, sub_81C0CC4, gTasks[taskId].func);
+ sub_81C2DE4(gUnknown_0203CF1C->unk40C0);
+ sub_81C424C();
+}
+
+void sub_81C0B8C(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (data[0] == 0)
+ {
+ if (gUnknown_0203CF1C->unk40C9 == 0)
+ {
+ data[1] = 1;
+ SetBgAttribute(1, 7, 1);
+ SetBgAttribute(2, 7, 2);
+ schedule_bg_copy_tilemap_to_vram(1);
+ }
+ else
+ {
+ data[1] = 2;
+ SetBgAttribute(2, 7, 1);
+ SetBgAttribute(1, 7, 2);
+ schedule_bg_copy_tilemap_to_vram(2);
+ }
+ ChangeBgX(data[1], 0, 0);
+ SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->unk40C0 << 12) + 0xBC));
+ ShowBg(1);
+ ShowBg(2);
+ }
+ ChangeBgX(data[1], 0x2000, 1);
+ data[0] += 32;
+ if (data[0] > 0xFF)
+ gTasks[taskId].func = sub_81C0C68;
+}
+
+void sub_81C0C68(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ gUnknown_0203CF1C->unk40C9 ^= 1;
+ data[1] = 0;
+ data[0] = 0;
+ sub_81C1BA0();
+ sub_81C2AFC(gUnknown_0203CF1C->unk40C0);
+ sub_81C4280();
+ sub_81C0E24();
+ SwitchTaskToFollowupFunc(taskId);
+}
+
+void sub_81C0CC4(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (data[0] == 0)
+ {
+ if (gUnknown_0203CF1C->unk40C9 == 0)
+ data[1] = 2;
+ else
+ data[1] = 1;
+ ChangeBgX(data[1], 0x10000, 0);
+ }
+ ChangeBgX(data[1], 0x2000, 2);
+ data[0] += 32;
+ if (data[0] > 0xFF)
+ gTasks[taskId].func = sub_81C0D44;
+}
+
+void sub_81C0D44(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ if (gUnknown_0203CF1C->unk40C9 == 0)
+ {
+ SetBgAttribute(1, 7, 1);
+ SetBgAttribute(2, 7, 2);
+ schedule_bg_copy_tilemap_to_vram(2);
+ }
+ else
+ {
+ SetBgAttribute(2, 7, 1);
+ SetBgAttribute(1, 7, 2);
+ schedule_bg_copy_tilemap_to_vram(1);
+ }
+ if (gUnknown_0203CF1C->unk40C0 > 1)
+ {
+ SetBgTilemapBuffer(data[1], (u8*)gUnknown_0203CF1C + ((gUnknown_0203CF1C->unk40C0 << 12) + 0xFFFFF0BC));
+ ChangeBgX(data[1], 0x10000, 0);
+ }
+ ShowBg(1);
+ ShowBg(2);
+ gUnknown_0203CF1C->unk40C9 ^= 1;
+ data[1] = 0;
+ data[0] = 0;
+ sub_81C1BA0();
+ sub_81C2AFC(gUnknown_0203CF1C->unk40C0);
+ sub_81C4280();
+ sub_81C0E24();
+ SwitchTaskToFollowupFunc(taskId);
+}
+
+void sub_81C0E24()
+{
+ if (gUnknown_0203CF1C->unk40C0 == 1)
+ sub_81C22CC(&gUnknown_0203CF1C->currentMon);
+}
+
+void sub_81C0E48(u8 taskId)
+{
+ u16 move;
+ gUnknown_0203CF1C->unk40C6 = 0;
+ move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6];
+ ClearWindowTilemap(0x13);
+ if (gSprites[gUnknown_0203CF1C->unk40D5].invisible == 0)
+ ClearWindowTilemap(0xD);
+ sub_81C1DA4(9, -3);
+ sub_81C1EFC(9, -3, move);
+ if (gUnknown_0203CF1C->unk40C8 == 0)
+ {
+ ClearWindowTilemap(5);
+ PutWindowTilemap(6);
+ }
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0);
+ sub_81C3E9C(move);
+ sub_81C3F44();
+ sub_81C44F0();
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ sub_81C4AF8(8);
+ gTasks[taskId].func = sub_81C0F44;
+}
+
+void sub_81C0F44(u8 taskId)
+{
+ u8 id = taskId;
+ s16 *data = gTasks[taskId].data;
+
+ if (sub_81221EC() != 1)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ data[0] = 4;
+ sub_81C1070(data, -1, &gUnknown_0203CF1C->unk40C6);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ data[0] = 4;
+ sub_81C1070(data, 1, &gUnknown_0203CF1C->unk40C6);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (gUnknown_0203CF1C->unk40C8 == 1
+ || (gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4))
+ {
+ PlaySE(SE_SELECT);
+ sub_81C11F4(taskId);
+ }
+ else if (sub_81C1040() == TRUE)
+ {
+ PlaySE(SE_SELECT);
+ sub_81C129C(taskId);
+ }
+ else
+ {
+ PlaySE(SE_HAZURE);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_81C11F4(id);
+ }
+ }
+}
+
+bool8 sub_81C1040(void)
+{
+ u8 i;
+ for (i = 1; i < 4; i++)
+ {
+ if (gUnknown_0203CF1C->summary.moves[i] != 0)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_81C1070(s16 *a, s8 b, u8 *c)
+{
+ s8 i;
+ s8 moveIndex;
+ u16 move;
+
+ PlaySE(SE_SELECT);
+ moveIndex = *c;
+ for (i = 0; i < 4; i++)
+ {
+ moveIndex += b;
+ if (moveIndex > a[0])
+ moveIndex = 0;
+ else if (moveIndex < 0)
+ moveIndex = a[0];
+ if (moveIndex == 4)
+ {
+ move = gUnknown_0203CF1C->unk40C4;
+ break;
+ }
+ move = gUnknown_0203CF1C->summary.moves[moveIndex];
+ if (move != 0)
+ break;
+ }
+ sub_81C240C(move);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ sub_81C3E9C(move);
+ if ((*c == 4 && gUnknown_0203CF1C->unk40C4 == 0) || a[1] == 1)
+ {
+ ClearWindowTilemap(19);
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ ClearWindowTilemap(13);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_81C1DA4(9, -3);
+ sub_81C1EFC(9, -3, move);
+ }
+ if (*c != 4 && moveIndex == 4 && gUnknown_0203CF1C->unk40C4 == 0)
+ {
+ ClearWindowTilemap(14);
+ ClearWindowTilemap(15);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_81C1DA4(0, 3);
+ sub_81C1EFC(0, 3, 0);
+ }
+ *c = moveIndex;
+ if (c == &gUnknown_0203CF1C->unk40C6)
+ sub_81C4D18(8);
+ else
+ sub_81C4D18(18);
+}
+
+void sub_81C11F4(u8 taskId)
+{
+ sub_81C4C60(8);
+ ClearWindowTilemap(6);
+ PutWindowTilemap(5);
+ sub_81C3E9C(0);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 1);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 1);
+ sub_81C4064();
+ if (gUnknown_0203CF1C->unk40C6 != 4)
+ {
+ ClearWindowTilemap(14);
+ ClearWindowTilemap(15);
+ sub_81C1DA4(0, 3);
+ sub_81C1EFC(0, 3, 0);
+ }
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81C0510;
+}
+
+void sub_81C129C(u8 taskId)
+{
+ gUnknown_0203CF1C->unk40C7 = gUnknown_0203CF1C->unk40C6;
+ sub_81C4C84(1);
+ sub_81C4AF8(18);
+ gTasks[taskId].func = sub_81C12E4;
+}
+
+void sub_81C12E4(u8 taskId)
+{
+ u8 a = taskId;
+ s16* data = gTasks[taskId].data;
+ if (sub_81221EC() != 1)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ data[0] = 3;
+ sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->unk40C7);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ data[0] = 3;
+ sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->unk40C7);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (gUnknown_0203CF1C->unk40C6 == gUnknown_0203CF1C->unk40C7)
+ {
+ sub_81C13B0(taskId, 0);
+ }
+ else
+ sub_81C13B0(taskId, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ sub_81C13B0(a, 0);
+ }
+}
+
+void sub_81C13B0(u8 taskId, u8 b)
+{
+ u16 move;
+ PlaySE(SE_SELECT);
+ sub_81C4C84(0);
+ sub_81C4C60(18);
+ if (b == 1)
+ {
+ if (gUnknown_0203CF1C->unk40BD == 0)
+ {
+ struct Pokemon *why = gUnknown_0203CF1C->unk0->mon;
+ sub_81C14BC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7);
+ }
+ else
+ {
+ struct BoxPokemon *why = gUnknown_0203CF1C->unk0->boxMon;
+ sub_81C15EC(&why[gUnknown_0203CF1C->unk40BE], gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7);
+ }
+ sub_81C0098(&gUnknown_0203CF1C->currentMon);
+ sub_81C40A0(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7);
+ sub_81C4568(gUnknown_0203CF1C->unk40C6, gUnknown_0203CF1C->unk40C7);
+ gUnknown_0203CF1C->unk40C6 = gUnknown_0203CF1C->unk40C7;
+ }
+ move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6];
+ sub_81C3E9C(move);
+ sub_81C240C(move);
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+ gTasks[taskId].func = sub_81C0F44;
+}
+
+
+#ifdef NONMATCHING
+void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId)
+{
+ u16 localMoveTo;
+ u16 localMoveFrom;
+ u8 localPpTo;
+ u8 localPpFrom;
+ u8 localPpBonuses;
+ u16* moveFromPtr;
+ u16* moveToPtr;
+ u8* ppFromPtr;
+ u8* ppToPtr;
+ u8* ppBonusesPtr;
+
+ moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId];
+ localMoveFrom = *moveFromPtr;
+
+ moveToPtr = &gUnknown_0203CF1C->summary.moves[swappingToId];
+ localMoveTo = *moveToPtr;
+
+ ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId];
+ localPpFrom = *ppFromPtr;
+
+ ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId];
+ localPpTo = *ppToPtr;
+
+ ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses;
+ localPpBonuses = *ppBonusesPtr;
+
+{
+ u8 bitsFrom, bitsTo;
+
+ bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1);
+ bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1);
+
+
+ localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]);
+ localPpBonuses &= ~(gUnknown_08329D22[swappingToId]);
+
+ localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1)));
+}
+
+ SetMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo);
+ SetMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom);
+
+ SetMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo);
+ SetMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom);
+
+ SetMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses);
+
+ *moveFromPtr = localMoveTo;
+ *moveToPtr = localMoveFrom;
+
+ *ppFromPtr = localPpTo;
+ *ppToPtr = localPpFrom;
+
+ *ppBonusesPtr = localPpBonuses;
+}
+#else
+__attribute__((naked))
+void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x28\n\
+ adds r7, r0, 0\n\
+ adds r4, r1, 0\n\
+ adds r6, r2, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ ldr r0, =gUnknown_0203CF1C\n\
+ ldr r2, [r0]\n\
+ lsls r0, r4, 1\n\
+ mov r10, r0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x84\n\
+ adds r0, r1, r0\n\
+ str r0, [sp, 0x8]\n\
+ ldrh r0, [r0]\n\
+ mov r3, sp\n\
+ adds r3, 0x2\n\
+ str r3, [sp, 0x1C]\n\
+ strh r0, [r3]\n\
+ lsls r0, r6, 1\n\
+ mov r9, r0\n\
+ add r1, r9\n\
+ str r1, [sp, 0xC]\n\
+ ldrh r1, [r1]\n\
+ mov r0, sp\n\
+ strh r1, [r0]\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x8C\n\
+ adds r3, r1, r4\n\
+ str r3, [sp, 0x10]\n\
+ ldrb r0, [r3]\n\
+ mov r3, sp\n\
+ adds r3, 0x5\n\
+ str r3, [sp, 0x24]\n\
+ strb r0, [r3]\n\
+ adds r1, r6\n\
+ str r1, [sp, 0x14]\n\
+ ldrb r0, [r1]\n\
+ mov r1, sp\n\
+ adds r1, 0x4\n\
+ str r1, [sp, 0x20]\n\
+ strb r0, [r1]\n\
+ adds r2, 0xA4\n\
+ str r2, [sp, 0x18]\n\
+ ldrb r0, [r2]\n\
+ mov r5, sp\n\
+ adds r5, 0x6\n\
+ strb r0, [r5]\n\
+ ldr r1, =gUnknown_08329D22\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ mov r8, r0\n\
+ ldrb r0, [r5]\n\
+ adds r2, r0, 0\n\
+ mov r3, r8\n\
+ ands r2, r3\n\
+ mov r3, r10\n\
+ asrs r2, r3\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r1, r6, r1\n\
+ ldrb r1, [r1]\n\
+ mov r12, r1\n\
+ adds r1, r0, 0\n\
+ mov r3, r12\n\
+ ands r1, r3\n\
+ mov r3, r9\n\
+ asrs r1, r3\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r3, r8\n\
+ bics r0, r3\n\
+ strb r0, [r5]\n\
+ ldrb r0, [r5]\n\
+ mov r3, r12\n\
+ bics r0, r3\n\
+ strb r0, [r5]\n\
+ mov r0, r9\n\
+ lsls r2, r0\n\
+ mov r3, r10\n\
+ lsls r1, r3\n\
+ adds r2, r1\n\
+ ldrb r0, [r5]\n\
+ orrs r0, r2\n\
+ strb r0, [r5]\n\
+ adds r1, r4, 0\n\
+ adds r1, 0xD\n\
+ adds r0, r7, 0\n\
+ mov r2, sp\n\
+ bl SetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xD\n\
+ adds r0, r7, 0\n\
+ ldr r2, [sp, 0x1C]\n\
+ bl SetMonData\n\
+ adds r4, 0x11\n\
+ adds r0, r7, 0\n\
+ adds r1, r4, 0\n\
+ ldr r2, [sp, 0x20]\n\
+ bl SetMonData\n\
+ adds r6, 0x11\n\
+ adds r0, r7, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x24]\n\
+ bl SetMonData\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x15\n\
+ adds r2, r5, 0\n\
+ bl SetMonData\n\
+ mov r0, sp\n\
+ ldrh r0, [r0]\n\
+ ldr r1, [sp, 0x8]\n\
+ strh r0, [r1]\n\
+ ldr r3, [sp, 0x1C]\n\
+ ldrh r0, [r3]\n\
+ ldr r1, [sp, 0xC]\n\
+ strh r0, [r1]\n\
+ ldr r3, [sp, 0x20]\n\
+ ldrb r0, [r3]\n\
+ ldr r1, [sp, 0x10]\n\
+ strb r0, [r1]\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ ldr r1, [sp, 0x14]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ ldr r3, [sp, 0x18]\n\
+ strb r0, [r3]\n\
+ add sp, 0x28\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+#ifdef NONMATCHING
+void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId)
+{
+ u16 localMoveTo;
+ u16 localMoveFrom;
+ u8 localPpTo;
+ u8 localPpFrom;
+ u8 localPpBonuses;
+ u16* moveFromPtr;
+ u16* moveToPtr;
+ u8* ppFromPtr;
+ u8* ppToPtr;
+ u8* ppBonusesPtr;
+
+ moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId];
+ localMoveFrom = *moveFromPtr;
+
+ moveToPtr = &gUnknown_0203CF1C->summary.moves[swappingToId];
+ localMoveTo = *moveToPtr;
+
+ ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId];
+ localPpFrom = *ppFromPtr;
+
+ ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId];
+ localPpTo = *ppToPtr;
+
+ ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses;
+ localPpBonuses = *ppBonusesPtr;
+
+{
+ u8 bitsFrom, bitsTo;
+
+ bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1);
+ bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1);
+
+
+ localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]);
+ localPpBonuses &= ~(gUnknown_08329D22[swappingToId]);
+
+ localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1)));
+}
+
+ SetBoxMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo);
+ SetBoxMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom);
+
+ SetBoxMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo);
+ SetBoxMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom);
+
+ SetBoxMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses);
+
+ *moveFromPtr = localMoveTo;
+ *moveToPtr = localMoveFrom;
+
+ *ppFromPtr = localPpTo;
+ *ppToPtr = localPpFrom;
+
+ *ppBonusesPtr = localPpBonuses;
+}
+#else
+__attribute__((naked))
+void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x28\n\
+ adds r7, r0, 0\n\
+ adds r4, r1, 0\n\
+ adds r6, r2, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ ldr r0, =gUnknown_0203CF1C\n\
+ ldr r2, [r0]\n\
+ lsls r0, r4, 1\n\
+ mov r10, r0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x84\n\
+ adds r0, r1, r0\n\
+ str r0, [sp, 0x8]\n\
+ ldrh r0, [r0]\n\
+ mov r3, sp\n\
+ adds r3, 0x2\n\
+ str r3, [sp, 0x1C]\n\
+ strh r0, [r3]\n\
+ lsls r0, r6, 1\n\
+ mov r9, r0\n\
+ add r1, r9\n\
+ str r1, [sp, 0xC]\n\
+ ldrh r1, [r1]\n\
+ mov r0, sp\n\
+ strh r1, [r0]\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x8C\n\
+ adds r3, r1, r4\n\
+ str r3, [sp, 0x10]\n\
+ ldrb r0, [r3]\n\
+ mov r3, sp\n\
+ adds r3, 0x5\n\
+ str r3, [sp, 0x24]\n\
+ strb r0, [r3]\n\
+ adds r1, r6\n\
+ str r1, [sp, 0x14]\n\
+ ldrb r0, [r1]\n\
+ mov r1, sp\n\
+ adds r1, 0x4\n\
+ str r1, [sp, 0x20]\n\
+ strb r0, [r1]\n\
+ adds r2, 0xA4\n\
+ str r2, [sp, 0x18]\n\
+ ldrb r0, [r2]\n\
+ mov r5, sp\n\
+ adds r5, 0x6\n\
+ strb r0, [r5]\n\
+ ldr r1, =gUnknown_08329D22\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ mov r8, r0\n\
+ ldrb r0, [r5]\n\
+ adds r2, r0, 0\n\
+ mov r3, r8\n\
+ ands r2, r3\n\
+ mov r3, r10\n\
+ asrs r2, r3\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r1, r6, r1\n\
+ ldrb r1, [r1]\n\
+ mov r12, r1\n\
+ adds r1, r0, 0\n\
+ mov r3, r12\n\
+ ands r1, r3\n\
+ mov r3, r9\n\
+ asrs r1, r3\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r3, r8\n\
+ bics r0, r3\n\
+ strb r0, [r5]\n\
+ ldrb r0, [r5]\n\
+ mov r3, r12\n\
+ bics r0, r3\n\
+ strb r0, [r5]\n\
+ mov r0, r9\n\
+ lsls r2, r0\n\
+ mov r3, r10\n\
+ lsls r1, r3\n\
+ adds r2, r1\n\
+ ldrb r0, [r5]\n\
+ orrs r0, r2\n\
+ strb r0, [r5]\n\
+ adds r1, r4, 0\n\
+ adds r1, 0xD\n\
+ adds r0, r7, 0\n\
+ mov r2, sp\n\
+ bl SetBoxMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xD\n\
+ adds r0, r7, 0\n\
+ ldr r2, [sp, 0x1C]\n\
+ bl SetBoxMonData\n\
+ adds r4, 0x11\n\
+ adds r0, r7, 0\n\
+ adds r1, r4, 0\n\
+ ldr r2, [sp, 0x20]\n\
+ bl SetBoxMonData\n\
+ adds r6, 0x11\n\
+ adds r0, r7, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x24]\n\
+ bl SetBoxMonData\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x15\n\
+ adds r2, r5, 0\n\
+ bl SetBoxMonData\n\
+ mov r0, sp\n\
+ ldrh r0, [r0]\n\
+ ldr r1, [sp, 0x8]\n\
+ strh r0, [r1]\n\
+ ldr r3, [sp, 0x1C]\n\
+ ldrh r0, [r3]\n\
+ ldr r1, [sp, 0xC]\n\
+ strh r0, [r1]\n\
+ ldr r3, [sp, 0x20]\n\
+ ldrb r0, [r3]\n\
+ ldr r1, [sp, 0x10]\n\
+ strb r0, [r1]\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ ldr r1, [sp, 0x14]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ ldr r3, [sp, 0x18]\n\
+ strb r0, [r3]\n\
+ add sp, 0x28\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_81C171C(u8 taskId)
+{
+ sub_81C44F0();
+ sub_81C4AF8(8);
+ gTasks[taskId].func = sub_81C174C;
+}
+
+void sub_81C174C(u8 taskId)
+{
+ s16* data = gTasks[taskId].data;
+
+ if (sub_81221EC() != 1)
+ {
+ if (gPaletteFade.active != 1)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ data[0] = 4;
+ sub_81C1070(data, -1, &gUnknown_0203CF1C->unk40C6);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ data[0] = 4;
+ sub_81C1070(data, 1, &gUnknown_0203CF1C->unk40C6);
+ }
+ else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
+ {
+ sub_81C0A8C(taskId, -1);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
+ {
+ sub_81C0A8C(taskId, 1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (sub_81C18A8() == TRUE)
+ {
+ sub_81C48F0();
+ PlaySE(SE_SELECT);
+ gUnknown_0203CF21 = gUnknown_0203CF1C->unk40C6;
+ gSpecialVar_0x8005 = gUnknown_0203CF21;
+ sub_81C044C(taskId);
+ }
+ else
+ {
+ PlaySE(0x20);
+ sub_81C18F4(taskId);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ u32 var1;
+ sub_81C48F0();
+ PlaySE(SE_SELECT);
+ gUnknown_0203CF21 = 4;
+ gSpecialVar_0x8005 = 4;
+ sub_81C044C(taskId);
+ }
+ }
+ }
+}
+
+bool8 sub_81C18A8()
+{
+ if (gUnknown_0203CF1C->unk40C6 == 4 || gUnknown_0203CF1C->unk40C4 == 0 || sub_81B6D14(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]) != 1)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_81C18F4(u8 taskId)
+{
+ ClearWindowTilemap(14);
+ ClearWindowTilemap(15);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_81C1DA4(0, 3);
+ sub_81C1EFC(0, 3, 0);
+ sub_81C4154();
+ gTasks[taskId].func = sub_81C1940;
+}
+
+void sub_81C1940(u8 taskId)
+{
+ s16* data = gTasks[taskId].data;
+ u16 move;
+ if (FuncIsActiveTask(sub_81C1E20) != 1)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ data[1] = 1;
+ data[0] = 4;
+ sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->unk40C6);
+ data[1] = 0;
+ gTasks[taskId].func = sub_81C174C;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ data[1] = 1;
+ data[0] = 4;
+ sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->unk40C6);
+ data[1] = 0;
+ gTasks[taskId].func = sub_81C174C;
+ }
+ else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
+ {
+ if (gUnknown_0203CF1C->unk40C0 != 2)
+ {
+
+ ClearWindowTilemap(19);
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ ClearWindowTilemap(13);
+ move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6];
+ gTasks[taskId].func = sub_81C174C;
+ sub_81C0A8C(taskId, -1);
+ sub_81C1DA4(9, -2);
+ sub_81C1EFC(9, -2, move);
+ }
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
+ {
+ if (gUnknown_0203CF1C->unk40C0 != 3)
+ {
+ ClearWindowTilemap(19);
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ ClearWindowTilemap(13);
+ move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6];
+ gTasks[taskId].func = sub_81C174C;
+ sub_81C0A8C(taskId, 1);
+ sub_81C1DA4(9, -2);
+ sub_81C1EFC(9, -2, move);
+ }
+ }
+ else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ ClearWindowTilemap(19);
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ ClearWindowTilemap(13);
+ move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6];
+ sub_81C3E9C(move);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_81C1DA4(9, -3);
+ sub_81C1EFC(9, -3, move);
+ gTasks[taskId].func = sub_81C174C;
+ }
+ }
+}
+
+u8 sub_81C1B94()
+{
+ return gUnknown_0203CF21;
+}
+
+void sub_81C1BA0()
+{
+ u16 *alloced = Alloc(32);
+ u8 i;
+ for (i = 0; i < 4; i++)
+ {
+ u8 j = i << 1;
+ if (i < gUnknown_0203CF1C->unk40C1)
+ {
+ alloced[j+0] = 0x40;
+ alloced[j+1] = 0x40;
+ alloced[j+8] = 0x50;
+ alloced[j+9] = 0x50;
+ }
+ else if (i > gUnknown_0203CF1C->unk40C2)
+ {
+ alloced[j+0] = 0x4A;
+ alloced[j+1] = 0x4A;
+ alloced[j+8] = 0x5A;
+ alloced[j+9] = 0x5A;
+ }
+ else if (i < gUnknown_0203CF1C->unk40C0)
+ {
+ alloced[j+0] = 0x46;
+ alloced[j+1] = 0x47;
+ alloced[j+8] = 0x56;
+ alloced[j+9] = 0x57;
+ }
+ else if (i == gUnknown_0203CF1C->unk40C0)
+ {
+ if (i != gUnknown_0203CF1C->unk40C2)
+ {
+ alloced[j+0] = 0x41;
+ alloced[j+1] = 0x42;
+ alloced[j+8] = 0x51;
+ alloced[j+9] = 0x52;
+ }
+ else
+ {
+ alloced[j+0] = 0x4B;
+ alloced[j+1] = 0x4C;
+ alloced[j+8] = 0x5B;
+ alloced[j+9] = 0x5C;
+ }
+ }
+ else if (i != gUnknown_0203CF1C->unk40C2)
+ {
+ alloced[j+0] = 0x43;
+ alloced[j+1] = 0x44;
+ alloced[j+8] = 0x53;
+ alloced[j+9] = 0x54;
+ }
+ else
+ {
+ alloced[j+0] = 0x48;
+ alloced[j+1] = 0x49;
+ alloced[j+8] = 0x58;
+ alloced[j+9] = 0x59;
+ }
+ }
+ CopyToBgTilemapBufferRect_ChangePalette(3, alloced, 11, 0, 8, 2, 16);
+ schedule_bg_copy_tilemap_to_vram(3);
+ Free(alloced);
+}
+
+struct UnkStruct_61CC04
+{
+ u8 *ptr;
+ u8 field_4;
+ u8 field_5;
+ u8 field_6;
+ u8 field_7;
+ u8 field_8;
+ u8 field_9;
+};
+
+#ifdef NONMATCHING
+void sub_81C1CB0(struct UnkStruct_61CC04 *a, u16 *b, u8 c, u8 d)
+{
+ u8 *alloced = Alloc(a->field_6 * (a->field_7 << 1));
+ CpuFill16(a->field_4, alloced, a->field_7*a->field_6);
+ if (a->field_6 != c)
+ {
+ if (!d)
+ {
+ for (d;d < a->field_7; d++)
+ {
+ CpuCopy16(&a->ptr + ((c + a->field_6*d)), alloced + ((a->field_6*d) << 1), (a->field_6 - c) * 2);
+ }
+ }
+ else
+ {
+ for (d = 0;d < a->field_7; d++)
+ {
+ CpuCopy16(&a->ptr + (a->field_6*d), alloced + ((c + a->field_6*d) << 1), (a->field_6 - c) * 2);
+ }
+ }
+ }
+ d = 0;
+ while (d < a->field_7)
+ {
+ CpuCopy16(alloced + ((a->field_6*d) << 1), b + ((((a->field_9 + d) << 5) + a->field_8) << 1), a->field_6 * 2);
+ d++;
+ }
+ Free(alloced);
+}
+#else
+__attribute__((naked))
+void sub_81C1CB0(struct UnkStruct_61CC04 *a, u16 *b, u8 c, u8 d)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0x4\n\
+ adds r4, r0, 0\n\
+ mov r8, r1\n\
+ lsls r2, 24\n\
+ lsrs r6, r2, 24\n\
+ lsls r3, 24\n\
+ lsrs r5, r3, 24\n\
+ ldrb r1, [r4, 0x6]\n\
+ ldrb r0, [r4, 0x7]\n\
+ lsls r0, 1\n\
+ muls r0, r1\n\
+ bl Alloc\n\
+ adds r7, r0, 0\n\
+ mov r1, sp\n\
+ ldrh r0, [r4, 0x4]\n\
+ strh r0, [r1]\n\
+ ldrb r1, [r4, 0x7]\n\
+ ldrb r0, [r4, 0x6]\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ movs r0, 0x80\n\
+ lsls r0, 17\n\
+ orrs r2, r0\n\
+ mov r0, sp\n\
+ adds r1, r7, 0\n\
+ bl CpuSet\n\
+ ldrb r0, [r4, 0x6]\n\
+ cmp r0, r6\n\
+ beq _081C1D60\n\
+ cmp r5, 0\n\
+ bne _081C1D30\n\
+ movs r5, 0\n\
+ ldrb r0, [r4, 0x7]\n\
+ cmp r5, r0\n\
+ bcs _081C1D60\n\
+_081C1D00:\n\
+ ldrb r2, [r4, 0x6]\n\
+ adds r1, r2, 0\n\
+ muls r1, r5\n\
+ adds r3, r6, r1\n\
+ lsls r3, 1\n\
+ ldr r0, [r4]\n\
+ adds r0, r3\n\
+ lsls r1, 1\n\
+ adds r1, r7, r1\n\
+ subs r2, r6\n\
+ ldr r3, =0x001fffff\n\
+ ands r2, r3\n\
+ bl CpuSet\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldrb r3, [r4, 0x7]\n\
+ cmp r5, r3\n\
+ bcc _081C1D00\n\
+ b _081C1D60\n\
+ .pool\n\
+_081C1D30:\n\
+ movs r5, 0\n\
+ ldrb r0, [r4, 0x7]\n\
+ cmp r5, r0\n\
+ bcs _081C1D60\n\
+_081C1D38:\n\
+ ldrb r2, [r4, 0x6]\n\
+ adds r1, r2, 0\n\
+ muls r1, r5\n\
+ lsls r3, r1, 1\n\
+ ldr r0, [r4]\n\
+ adds r0, r3\n\
+ adds r1, r6, r1\n\
+ lsls r1, 1\n\
+ adds r1, r7, r1\n\
+ subs r2, r6\n\
+ ldr r3, =0x001fffff\n\
+ ands r2, r3\n\
+ bl CpuSet\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldrb r3, [r4, 0x7]\n\
+ cmp r5, r3\n\
+ bcc _081C1D38\n\
+_081C1D60:\n\
+ movs r5, 0\n\
+ b _081C1D8A\n\
+ .pool\n\
+_081C1D68:\n\
+ ldrb r2, [r4, 0x6]\n\
+ adds r0, r2, 0\n\
+ muls r0, r5\n\
+ lsls r0, 1\n\
+ adds r0, r7, r0\n\
+ ldrb r1, [r4, 0x9]\n\
+ adds r1, r5\n\
+ lsls r1, 5\n\
+ ldrb r3, [r4, 0x8]\n\
+ adds r1, r3\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ bl CpuSet\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+_081C1D8A:\n\
+ ldrb r0, [r4, 0x7]\n\
+ cmp r5, r0\n\
+ bcc _081C1D68\n\
+ adds r0, r7, 0\n\
+ bl Free\n\
+ add sp, 0x4\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_81C1DA4(u16 a, s16 b)
+{
+ if (b > gUnknown_0861CC04.field_6)
+ b = gUnknown_0861CC04.field_6;
+ if (b == 0 || b == gUnknown_0861CC04.field_6)
+ {
+ sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], b, 1);
+ }
+ else
+ {
+ u8 taskId = FindTaskIdByFunc(sub_81C1E20);
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_81C1E20, 8);
+ }
+ gTasks[taskId].data[0] = b;
+ gTasks[taskId].data[1] = a;
+ }
+}
+
+void sub_81C1E20(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[1] += data[0];
+ if (data[1] < 0)
+ {
+ data[1] = 0;
+ }
+ else if (data[1] > gUnknown_0861CC04.field_6)
+ {
+ data[1] = gUnknown_0861CC04.field_6;
+ }
+ sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], data[1], 1);
+ if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6)
+ {
+ if (data[0] < 0)
+ {
+ if (gUnknown_0203CF1C->unk40C0 == 2)
+ PutWindowTilemap(14);
+
+ }
+ else
+ {
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ PutWindowTilemap(13);
+ PutWindowTilemap(19);
+ }
+ schedule_bg_copy_tilemap_to_vram(0);
+ DestroyTask(taskId);
+ }
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81C1EFC(u16 a, s16 b, u16 move)
+{
+ if (b > gUnknown_0861CC10.field_6)
+ b = gUnknown_0861CC10.field_6;
+ if (b == 0 || b == gUnknown_0861CC10.field_6)
+ sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], b, 1);
+ else
+ {
+ u8 taskId = FindTaskIdByFunc(sub_81C1F80);
+ if (taskId == 0xFF)
+ taskId = CreateTask(sub_81C1F80, 8);
+ gTasks[taskId].data[0] = b;
+ gTasks[taskId].data[1] = a;
+ gTasks[taskId].data[2] = move;
+ }
+}
+
+void sub_81C1F80(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[1] += data[0];
+ if (data[1] < 0)
+ {
+ data[1] = 0;
+ }
+ else if (data[1] > gUnknown_0861CC10.field_6)
+ {
+ data[1] = gUnknown_0861CC10.field_6;
+ }
+ sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], data[1], 1);
+ if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6)
+ {
+ if (data[0] < 0)
+ {
+ if (gUnknown_0203CF1C->unk40C0 == 3 && FuncIsActiveTask(sub_81C0B8C) == 0)
+ PutWindowTilemap(15);
+ sub_81C240C(data[2]);
+ }
+ else
+ {
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ {
+ PutWindowTilemap(13);
+ }
+ PutWindowTilemap(19);
+ }
+ schedule_bg_copy_tilemap_to_vram(0);
+ DestroyTask(taskId);
+ }
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81C2074(u16 a, s16 b)
+{
+ if (b > gUnknown_0861CBEC.field_6)
+ b = gUnknown_0861CBEC.field_6;
+ if (b == 0 || b == gUnknown_0861CBEC.field_6)
+ {
+ sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], b, 0);
+ sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], b, 0);
+ }
+ else
+ {
+ u8 taskId = CreateTask(sub_81C20F0, 8);
+ gTasks[taskId].data[0] = b;
+ gTasks[taskId].data[1] = a;
+ }
+}
+
+void sub_81C20F0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[1] += data[0];
+ if (data[1] < 0)
+ data[1] = 0;
+ else if (data[1] > gUnknown_0861CBEC.field_6)
+ data[1] = gUnknown_0861CBEC.field_6;
+ sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0);
+ sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0);
+ schedule_bg_copy_tilemap_to_vram(3);
+ if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6)
+ {
+ if (data[0] < 0)
+ {
+ sub_81C4A88();
+ PutWindowTilemap(13);
+ schedule_bg_copy_tilemap_to_vram(0);
+ }
+ DestroyTask(taskId);
+ }
+}
+
+// somebody send help this is a complete fucking mess
+#ifdef NONMATCHING
+void sub_81C2194(u16 *a, u16 b, u8 c)
+{
+ u16 i;
+ int var;
+ b *= 0x1000;
+ var = 0x56A;
+
+ if (c == 0)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ a[(i + var) << 1] = gUnknown_08DC3CD4[i] + b;
+ a[((i + var) << 1) + 0x40] = gUnknown_08DC3CD4[i] + b;
+ a[((i + var) << 1) + 0x80] = gUnknown_08DC3CD4[i + 20] + b;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 20; i++)
+ {
+ a[(i + var)] = gUnknown_08DC3CD4[i + 20] + b;
+ a[((i + var)) + 0x40] = gUnknown_08DC3CD4[i + 40] + b;
+ a[((i + var)) + 0x80] = gUnknown_08DC3CD4[i + 40] + b;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_81C2194(u16 *a, u16 b, u8 c)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r6, r0, 0\n\
+ lsls r2, 24\n\
+ lsls r1, 28\n\
+ lsrs r4, r1, 16\n\
+ ldr r7, =0x0000056a\n\
+ cmp r2, 0\n\
+ bne _081C21E4\n\
+ movs r3, 0\n\
+ ldr r5, =gUnknown_08DC3CD4\n\
+_081C21A8:\n\
+ adds r2, r7, r3\n\
+ lsls r2, 1\n\
+ adds r2, r6\n\
+ lsls r0, r3, 1\n\
+ adds r0, r5\n\
+ ldrh r1, [r0]\n\
+ adds r1, r4, r1\n\
+ strh r1, [r2]\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x40\n\
+ strh r1, [r0]\n\
+ adds r2, 0x80\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x14\n\
+ lsls r0, 1\n\
+ adds r0, r5\n\
+ ldrh r0, [r0]\n\
+ adds r0, r4, r0\n\
+ strh r0, [r2]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x13\n\
+ bls _081C21A8\n\
+ b _081C221C\n\
+ .pool\n\
+_081C21E4:\n\
+ movs r3, 0\n\
+ ldr r5, =gUnknown_08DC3CD4\n\
+_081C21E8:\n\
+ adds r1, r7, r3\n\
+ lsls r1, 1\n\
+ adds r1, r6\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x14\n\
+ lsls r0, 1\n\
+ adds r0, r5\n\
+ ldrh r0, [r0]\n\
+ adds r0, r4, r0\n\
+ strh r0, [r1]\n\
+ adds r2, r1, 0\n\
+ adds r2, 0x40\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x28\n\
+ lsls r0, 1\n\
+ adds r0, r5\n\
+ ldrh r0, [r0]\n\
+ adds r0, r4, r0\n\
+ strh r0, [r2]\n\
+ adds r1, 0x80\n\
+ strh r0, [r1]\n\
+ adds r0, r3, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ cmp r3, 0x13\n\
+ bls _081C21E8\n\
+_081C221C:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_81C2228(struct Pokemon *mon)
+{
+ if (!CheckPartyPokerus(mon, 0) && CheckPartyHasHadPokerus(mon, 0))
+ {
+ gUnknown_0203CF1C->unkTilemap0[0x223] = 0x2C;
+ gUnknown_0203CF1C->unkTilemap0_1[0x223] = 0x2C;
+ }
+ else
+ {
+ gUnknown_0203CF1C->unkTilemap0[0x223] = 0x81A;
+ gUnknown_0203CF1C->unkTilemap0_1[0x223] = 0x81A;
+ }
+ schedule_bg_copy_tilemap_to_vram(3);
+}
+
+void sub_81C228C(u8 a)
+{
+ if (a == 0)
+ sub_8199C30(3, 1, 4, 8, 8, 0);
+ else
+ sub_8199C30(3, 1, 4, 8, 8, 5);
+ schedule_bg_copy_tilemap_to_vram(3);
+}
+
+void sub_81C22CC(struct Pokemon *unused)
+{
+ s64 r6r7;
+ struct PokeSummary *summary = &gUnknown_0203CF1C->summary;
+ u16 *r9;
+ u8 i;
+
+ if (summary->level < MAX_MON_LEVEL)
+ {
+ u32 r1 = gExperienceTables[gBaseStats[summary->species].growthRate][summary->level + 1] - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level];
+ u32 r4 = summary->exp - gExperienceTables[gBaseStats[summary->species].growthRate][summary->level];
+
+ r6r7 = r4 * 64 / r1;
+ if (r6r7 == 0 && r4 != 0)
+ r6r7 = 1;
+ }
+ else
+ {
+ r6r7 = 0;
+ }
+
+ r9 = &gUnknown_0203CF1C->unkTilemap1_1[0x255];
+ for (i = 0; i < 8; i++)
+ {
+ if (r6r7 > 7)
+ r9[i] = 0x206A;
+ else
+ r9[i] = 0x2062 + (r6r7 % 8);
+ r6r7 -= 8;
+ if (r6r7 < 0)
+ r6r7 = 0;
+ }
+
+ if (GetBgTilemapBuffer(1) == gUnknown_0203CF1C->unkTilemap1)
+ schedule_bg_copy_tilemap_to_vram(1);
+ else
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81C240C(u16 move)
+{
+ u16* r5 = &gUnknown_0203CF1C->unkTilemap3_1[0];
+ u8 i;
+ u8 r4;
+ if (move != MOVE_NONE)
+ {
+ r4 = gContestEffects[gContestMoves[move].effect].appeal;
+ if (r4 != 0xFF)
+ r4 /= 10;
+ for (i = 0;i < 8; i++)
+ {
+ if (r4 != 0xFF && i < r4)
+ {
+ r5[((i>>2)*32)+(i&3)+0x1E6] = 0x103A;
+ }
+ else
+ r5[((i>>2)*32)+(i&3)+0x1E6] = 0x1039;
+ }
+ r4 = gContestEffects[gContestMoves[move].effect].jam;
+ if (r4 != 0xFF)
+ r4 /= 10;
+ for (i = 0;i < 8; i++)
+ {
+ if (r4 != 0xFF && i < r4)
+ {
+ r5[((i>>2)*32)+(i&3)+0x226] = 0x103C;
+ }
+ else
+ r5[((i>>2)*32)+(i&3)+0x226] = 0x103D;
+ }
+ }
+}
+
+void sub_81C2524()
+{
+ if (gUnknown_0203CF1C->summary.isEgg != 0)
+ ChangeBgX(3, 0x10000, 0);
+ else
+ ChangeBgX(3, 0, 0);
+}
+
+void sub_81C2554()
+{
+ u8 i;
+ InitWindows(&gUnknown_0861CC24);
+ DeactivateAllTextPrinters();
+ for (i = 0; i < 20; i++)
+ FillWindowPixelBuffer(i, 0);
+ for (i = 0; i < 8; i++)
+ gUnknown_0203CF1C->unk40CB[i] |= 0xFF;
+}
+
+void sub_81C25A4(u8 a, u8 *b, u8 c, u8 d, u8 e, u8 f)
+{
+ AddTextPrinterParametrized2(a, 1, c, d, 0, e, &gUnknown_0861CD2C[f], 0, b);
+}
+
+void sub_81C25E8()
+{
+ FillWindowPixelBuffer(17, 0);
+ FillWindowPixelBuffer(18, 0);
+ FillWindowPixelBuffer(19, 0);
+ if (gUnknown_0203CF1C->summary.isEgg == 0)
+ sub_81C2628();
+ else
+ sub_81C2794();
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+void sub_81C2628()
+{
+ u8 strArray[16];
+ struct Pokemon *mon = &gUnknown_0203CF1C->currentMon;
+ struct PokeSummary *summary = &gUnknown_0203CF1C->summary;
+ u16 r5 = SpeciesToPokedexNum(summary->species);
+ if (r5 != 0xFFFF)
+ {
+ StringCopy(gStringVar1, &gText_UnkCtrlF908Clear01[0]);
+ ConvertIntToDecimalStringN(gStringVar2, r5, 2, 3);
+ StringAppend(gStringVar1, gStringVar2);
+ if (IsMonShiny(mon) == 0)
+ {
+ sub_81C25A4(17, gStringVar1, 0, 1, 0, 1);
+ sub_81C228C(0);
+ }
+ else
+ {
+ sub_81C25A4(17, gStringVar1, 0, 1, 0, 7);
+ sub_81C228C(1);
+ }
+ PutWindowTilemap(17);
+ }
+ else
+ {
+ ClearWindowTilemap(17);
+ if (IsMonShiny(mon) == 0)
+ sub_81C228C(0);
+ else
+ sub_81C228C(1);
+ }
+ StringCopy(gStringVar1, &gText_LevelSymbol[0]);
+ ConvertIntToDecimalStringN(gStringVar2, summary->level, 0, 3);
+ StringAppend(gStringVar1, gStringVar2);
+ sub_81C25A4(19, gStringVar1, 0x18, 17, 0, 1);
+ GetMonNickname(mon, gStringVar1);
+ sub_81C25A4(18, gStringVar1, 0, 1, 0, 1);
+ strArray[0] = CHAR_SLASH;
+ StringCopy(&strArray[1], &gSpeciesNames[summary->species2][0]);
+ sub_81C25A4(19, &strArray[0], 0, 1, 0, 1);
+ sub_81C27DC(mon, summary->species2);
+ PutWindowTilemap(18);
+ PutWindowTilemap(19);
+}
+
+void sub_81C2794()
+{
+ GetMonNickname(&gUnknown_0203CF1C->currentMon, gStringVar1);
+ sub_81C25A4(18, gStringVar1, 0, 1, 0, 1);
+ PutWindowTilemap(18);
+ ClearWindowTilemap(17);
+ ClearWindowTilemap(19);
+}
+
+void sub_81C27DC(struct Pokemon *mon, u16 a)
+{
+ if (a != SPECIES_NIDORAN_M && a != SPECIES_NIDORAN_F)
+ {
+ u8 gender = GetMonGender(mon);
+ switch (gender)
+ {
+ case 0:
+ sub_81C25A4(0x13, &gText_MaleSymbol[0], 0x39, 17, 0, 3);
+ break;
+ case 0xFE:
+ sub_81C25A4(0x13, &gText_FemaleSymbol[0], 0x39, 17, 0, 4);
+ break;
+ }
+ }
+}
+
+void sub_81C2838(u8 a, bool8 b, u32 c)
+{
+ BlitBitmapToWindow(a, (b) ? &gUnknown_0861CDD3[0] : &gUnknown_0861CDD3[0] - 0x80, c, 0, 16, 16);
+}
+
+void sub_81C286C()
+{
+ int r4;
+ int r2;
+ int temp;
+ sub_81C25A4(0, gText_PkmnInfo, 2, 1, 0, 1);
+ sub_81C25A4(1, gText_PkmnSkills, 2, 1, 0, 1);
+ sub_81C25A4(2, gText_BattleMoves, 2, 1, 0, 1);
+ sub_81C25A4(3, gText_ContestMoves, 2, 1, 0, 1);
+ r4 = GetStringRightAlignXOffset(1, gText_Cancel2, 0x3E);
+ r2 = r4 - 16;
+ if (r2 < 0)
+ r2 = 0;
+ sub_81C2838(4, 0, r2);
+ sub_81C25A4(4, gText_Cancel2, r4, 1, 0, 0);
+ r4 = GetStringRightAlignXOffset(1, gText_Info, 0x3E);
+ r2 = r4 - 16;
+ if (r2 < 0)
+ r2 = 0;
+ sub_81C2838(5, 0, r2);
+ sub_81C25A4(5, gText_Info, r4, 1, 0, 0);
+ r4 = GetStringRightAlignXOffset(1, gText_Switch, 0x3E);
+ r2 = r4 - 16;
+ if (r2 < 0)
+ r2 = 0;
+ sub_81C2838(6, 0, r2);
+ sub_81C25A4(6, gText_Switch, r4, 1, 0, 0);
+ sub_81C25A4(8, gText_RentalPkmn, 0, 1, 0, 1);
+ sub_81C25A4(9, gText_TypeSlash, 0, 1, 0, 0);
+ temp = 6;
+ temp += GetStringCenterAlignXOffset(1, gText_HP4, 42);
+ sub_81C25A4(10, gText_HP4, temp, 1, 0, 1);
+ temp = 6;
+ temp += GetStringCenterAlignXOffset(1, gText_Attack3, 42);
+ sub_81C25A4(10, gText_Attack3, temp, 17, 0, 1);
+ temp = 6;
+ temp += GetStringCenterAlignXOffset(1, gText_Defense3, 42);
+ sub_81C25A4(10, gText_Defense3, temp, 33, 0, 1);
+ temp = 2;
+ temp += GetStringCenterAlignXOffset(1, gText_SpAtk4, 36);
+ sub_81C25A4(11, gText_SpAtk4, temp, 1, 0, 1);
+ temp = 2;
+ temp += GetStringCenterAlignXOffset(1, gText_SpDef4, 36);
+ sub_81C25A4(11, gText_SpDef4, temp, 17, 0, 1);
+ temp = 2;
+ temp += GetStringCenterAlignXOffset(1, gText_Speed2, 36);
+ sub_81C25A4(11, gText_Speed2, temp, 33, 0, 1);
+ sub_81C25A4(12, gText_ExpPoints, 6, 1, 0, 1);
+ sub_81C25A4(12, gText_NextLv, 6, 17, 0, 1);
+ sub_81C25A4(13, gText_Status, 2, 1, 0, 1);
+ sub_81C25A4(14, gText_Power, 0, 1, 0, 1);
+ sub_81C25A4(14, gText_Accuracy2, 0, 17, 0, 1);
+ sub_81C25A4(15, gText_Appeal, 0, 1, 0, 1);
+ sub_81C25A4(15, gText_Jam, 0, 17, 0, 1);
+}
+
+void sub_81C2AFC(u8 a)
+{
+ u8 i;
+ ClearWindowTilemap(0);
+ ClearWindowTilemap(1);
+ ClearWindowTilemap(2);
+ ClearWindowTilemap(3);
+ switch (a)
+ {
+ case 0:
+ PutWindowTilemap(0);
+ PutWindowTilemap(4);
+ if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE)
+ PutWindowTilemap(8);
+ PutWindowTilemap(9);
+ break;
+ case 1:
+ PutWindowTilemap(1);
+ PutWindowTilemap(10);
+ PutWindowTilemap(11);
+ PutWindowTilemap(12);
+ break;
+ case 2:
+ PutWindowTilemap(2);
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ {
+ if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4))
+ PutWindowTilemap(14);
+ }
+ else
+ PutWindowTilemap(5);
+ break;
+ case 3:
+ PutWindowTilemap(3);
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ {
+ if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4))
+ PutWindowTilemap(15);
+ }
+ else
+ PutWindowTilemap(5);
+ break;
+ }
+ for (i = 0; i < 8; i++)
+ {
+ PutWindowTilemap(gUnknown_0203CF1C->unk40CB[i]);
+ }
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+void sub_81C2C38(u8 a)
+{
+ u8 i;
+ switch (a)
+ {
+ case 0:
+ ClearWindowTilemap(4);
+ if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE)
+ ClearWindowTilemap(8);
+ ClearWindowTilemap(9);
+ break;
+ case 1:
+ ClearWindowTilemap(10);
+ ClearWindowTilemap(11);
+ ClearWindowTilemap(12);
+ break;
+ case 2:
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ {
+ if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4))
+ ClearWindowTilemap(14);
+ }
+ else
+ ClearWindowTilemap(5);
+ break;
+ case 3:
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ {
+ if(!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4))
+ ClearWindowTilemap(15);
+ }
+ else
+ ClearWindowTilemap(5);
+ break;
+ }
+ for (i = 0; i < 8; i++)
+ sub_81C2D68(i);
+ schedule_bg_copy_tilemap_to_vram(0);
+}
+
+
+
+#ifdef NONMATCHING
+u8 sub_81C2D2C(struct WindowTemplate *template, u8 a)
+{
+ u8 *r4 = gUnknown_0203CF1C->unk40CB;
+ if (r4[a] == 0xFF)
+ {
+ r4[a] = AddWindow(&template[a]);
+ FillWindowPixelBuffer(r4[a], 0);
+ }
+ return r4[a];
+}
+#else
+__attribute__((naked))
+u8 sub_81C2D2C(struct WindowTemplate *template, u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ adds r3, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r2, r1, 24\n\
+ ldr r0, =gUnknown_0203CF1C\n\
+ ldr r4, =0x000040cb\n\
+ adds r1, r2, r4\n\
+ ldr r0, [r0]\n\
+ adds r4, r0, r1\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0xFF\n\
+ bne _081C2D56\n\
+ lsls r0, r2, 3\n\
+ adds r0, r3, r0\n\
+ bl AddWindow\n\
+ strb r0, [r4]\n\
+ ldrb r0, [r4]\n\
+ movs r1, 0\n\
+ bl FillWindowPixelBuffer\n\
+_081C2D56:\n\
+ ldrb r0, [r4]\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+#ifdef NONMATCHING
+void sub_81C2D68(u8 a)
+{
+ u8 *r4 = gUnknown_0203CF1C->unk40CB;
+ if (r4[a] != 0xFF)
+ {
+ ClearWindowTilemap(r4[a]);
+ RemoveWindow(r4[a]);
+ r4[a] = 0xFF;
+ }
+}
+#else
+__attribute__((naked))
+void sub_81C2D68(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r1, =gUnknown_0203CF1C\n\
+ ldr r2, =0x000040cb\n\
+ adds r0, r2\n\
+ ldr r1, [r1]\n\
+ adds r4, r1, r0\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0xFF\n\
+ beq _081C2D8C\n\
+ bl ClearWindowTilemap\n\
+ ldrb r0, [r4]\n\
+ bl RemoveWindow\n\
+ movs r0, 0xFF\n\
+ strb r0, [r4]\n\
+_081C2D8C:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_81C2D9C(u8 a)
+{
+ u16 i;
+ for (i = 0; i < 8; i++)
+ {
+ if (gUnknown_0203CF1C->unk40CB[i] != 0xFF)
+ FillWindowPixelBuffer(gUnknown_0203CF1C->unk40CB[i], 0);
+ }
+ gUnknown_0861CE54[a]();
+}
+
+void sub_81C2DE4(u8 a)
+{
+ CreateTask(gUnknown_0861CE64[a], 16);
+}
+
+void sub_81C2E00()
+{
+ if (gUnknown_0203CF1C->summary.isEgg)
+ {
+ sub_81C335C();
+ sub_81C33CC();
+ sub_81C3428();
+ sub_81C349C();
+ }
+ else
+ {
+ sub_81C2EC4();
+ sub_81C2F5C();
+ sub_81C2FD8();
+ sub_81C302C();
+ sub_81C307C();
+ sub_81C3194();
+ }
+}
+
+void sub_81C2E40(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s16 dataa = data[0] - 1;
+ switch (dataa)
+ {
+ case 0:
+ sub_81C2EC4();
+ break;
+ case 1:
+ sub_81C2F5C();
+ break;
+ case 2:
+ sub_81C2FD8();
+ break;
+ case 3:
+ sub_81C302C();
+ break;
+ case 4:
+ sub_81C307C();
+ break;
+ case 5:
+ sub_81C3194();
+ break;
+ case 6:
+ DestroyTask(taskId);
+ return;
+ }
+ data[0]++;
+}
+
+void sub_81C2EC4()
+{
+ u8 r5;
+ int r2;
+ if (sub_81A6BF4() != 1 && sub_81B9E94() != 1)
+ {
+ r5 = sub_81C2D2C(&gUnknown_0861CCCC, 0);
+ sub_81C25A4(r5, gText_OTSlash, 0, 1, 0, 1);
+ r2 = GetStringWidth(1, gText_OTSlash, 0);
+ if (gUnknown_0203CF1C->summary.OTGender == 0)
+ sub_81C25A4(r5, gUnknown_0203CF1C->summary.OTName, r2, 1, 0, 5);
+ else
+ sub_81C25A4(r5, gUnknown_0203CF1C->summary.OTName, r2, 1, 0, 6);
+ }
+}
+
+void sub_81C2F5C()
+{
+ int r4;
+ if (sub_81A6BF4() != TRUE && sub_81B9E94() != TRUE)
+ {
+ ConvertIntToDecimalStringN(StringCopy(gStringVar1, gText_UnkCtrlF907F908), (u16)gUnknown_0203CF1C->summary.OTID, 2, 5);
+ r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38);
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1);
+ }
+}
+
+void sub_81C2FD8()
+{
+ u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility);
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityNames[ability], 0, 1, 0, 1);
+}
+
+void sub_81C302C()
+{
+ u8 ability = GetAbilityBySpecies(gUnknown_0203CF1C->summary.species, gUnknown_0203CF1C->summary.altAbility);
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), gAbilityDescriptionPointers[ability], 0, 17, 0, 0);
+}
+
+void sub_81C307C()
+{
+ struct PokeSummary *sum = &gUnknown_0203CF1C->summary;
+ u8 *text;
+ sub_81AFBF0();
+ sub_81AFC0C(0, gUnknown_0861CE74);
+ sub_81AFC0C(1, gUnknown_0861CE7B);
+ sub_81C31C0();
+ if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || sub_81C3304() == TRUE)
+ sub_81AFC28(gStringVar4, gText_XNature);
+ else
+ {
+ u8 *alloced1 = Alloc(32);
+ u8 *alloced2 = Alloc(32);
+ sub_81C31F0(alloced1);
+ if (sum->metLocation <= 0xD4)
+ {
+ sub_8124610(alloced2, sum->metLocation);
+ sub_81AFC0C(4, alloced2);
+ }
+ if (sub_81C3220() == 1)
+ {
+ if (sum->metLevel == 0)
+ text = (sum->metLocation > 0xD4) ? gText_XNatureHatchedSomewhereAt : gText_XNatureHatchedAtYZ;
+ else
+ text = (sum->metLocation > 0xD4) ? gText_XNatureMetSomewhereAt : gText_XNatureMetAtYZ;
+ }
+ else if (sum->metLocation == 0xFF)
+ text = gText_XNatureFatefulEncounter;
+ else if (sum->metLocation != 0xFE && sub_81C32BC())
+ text = (sum->metLocation > 0xD4) ? gText_XNatureObtainedInTrade : gText_XNatureProbablyMetAt;
+ else
+ text = gText_XNatureObtainedInTrade;
+ sub_81AFC28(gStringVar4, text);
+ Free(alloced1);
+ Free(alloced2);
+ }
+}
+
+void sub_81C3194()
+{
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 3), gStringVar4, 0, 1, 0, 0);
+}
+
+void sub_81C31C0()
+{
+ struct UnkSummaryStruct *sumStruct = gUnknown_0203CF1C;
+ sub_81AFC0C(2, gNatureNamePointers[sumStruct->summary.nature]);
+ sub_81AFC0C(5, gText_EmptyString5);
+}
+
+void sub_81C31F0(u8 *a)
+{
+ u8 level = gUnknown_0203CF1C->summary.metLevel;
+ if (level == 0)
+ level = 5;
+ ConvertIntToDecimalStringN(a, level, 0, 3);
+ sub_81AFC0C(3, a);
+}
+
+u8 sub_81C3220()
+{
+ struct PokeSummary *sum = &gUnknown_0203CF1C->summary;
+ u32 r4;
+ u8 r5;
+ if (gUnknown_0203CF1C->unk0 == (union UnkUnion *)&gEnemyParty)
+ {
+ u8 multiID = GetMultiplayerId()^1;
+ r4 = (u16)gLinkPlayers[multiID].trainerId;
+ r5 = gLinkPlayers[multiID].gender;
+ StringCopy(gStringVar1, gLinkPlayers[multiID].name);
+ }
+ else
+ {
+ r4 = GetPlayerIDAsU32() & 0xFFFF;
+ r5 = gSaveBlock2Ptr->playerGender;
+ StringCopy(gStringVar1, gSaveBlock2Ptr->playerName);
+ }
+ if (r5 != sum->OTGender || r4 != (sum->OTID & 0xFFFF) || StringCompareWithoutExtCtrlCodes(gStringVar1, sum->OTName))
+ {
+ return 0;
+ }
+ return 1;
+}
+
+bool8 sub_81C32BC()
+{
+ struct PokeSummary *sum = &gUnknown_0203CF1C->summary;
+ u8 r0 = sum->metGame - 1;
+ if (r0 <= 4)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 sub_81C32E0()
+{
+ struct PokeSummary *sum = &gUnknown_0203CF1C->summary;
+ u8 r0 = sum->metGame - 1;
+ if (r0 <= 2)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 sub_81C3304()
+{
+ if ((gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER) && gMain.inBattle)
+ {
+ if (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+void sub_81C335C()
+{
+ u8 r4 = sub_81C2D2C(&gUnknown_0861CCCC, 0);
+ u32 r5 = GetStringWidth(1, gText_OTSlash, 0);
+ sub_81C25A4(r4, gText_OTSlash, 0, 1, 0, 1);
+ sub_81C25A4(r4, gText_FiveMarks, r5, 1, 0, 1);
+}
+#else
+__attribute__((naked))
+void sub_81C335C()
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5,r6}\n\
+ sub sp, 0x8\n\
+ ldr r0, =gUnknown_0861CCCC\n\
+ movs r1, 0\n\
+ bl sub_81C2D2C\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ ldr r0, =gText_OTSlash\n\
+ mov r8, r0\n\
+ movs r0, 0x1\n\
+ mov r1, r8\n\
+ movs r2, 0\n\
+ bl GetStringWidth\n\
+ adds r5, r0, 0\n\
+ movs r0, 0\n\
+ mov r9, r0\n\
+ str r0, [sp]\n\
+ movs r6, 0x1\n\
+ str r6, [sp, 0x4]\n\
+ adds r0, r4, 0\n\
+ mov r1, r8\n\
+ movs r2, 0\n\
+ movs r3, 0x1\n\
+ bl sub_81C25A4\n\
+ ldr r1, =gText_FiveMarks\n\
+ lsls r5, 24\n\
+ lsrs r5, 24\n\
+ mov r0, r9\n\
+ str r0, [sp]\n\
+ str r6, [sp, 0x4]\n\
+ adds r0, r4, 0\n\
+ adds r2, r5, 0\n\
+ movs r3, 0x1\n\
+ bl sub_81C25A4\n\
+ add sp, 0x8\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_81C33CC()
+{
+ int r4;
+ StringCopy(gStringVar1, gText_UnkCtrlF907F908);
+ StringAppend(gStringVar1, gText_FiveMarks);
+ r4 = GetStringRightAlignXOffset(1, gStringVar1, 0x38);
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 1), gStringVar1, r4, 1, 0, 1);
+}
+
+void sub_81C3428()
+{
+ u8 *text;
+ struct PokeSummary *sum = &gUnknown_0203CF1C->summary;
+ if (gUnknown_0203CF1C->summary.sanity == 1)
+ text = gText_EggWillTakeALongTime;
+ else if (sum->friendship <= 5)
+ text = gText_EggAboutToHatch;
+ else if (sum->friendship <= 10)
+ text = gText_EggWillHatchSoon;
+ else if (sum->friendship <= 40)
+ text = gText_EggWillTakeSomeTime;
+ else
+ text = gText_EggWillTakeALongTime;
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 2), text, 0, 1, 0, 0);
+}
+
+void sub_81C349C()
+{
+ u8 *text;
+ struct PokeSummary *sum = &gUnknown_0203CF1C->summary;
+ if (gUnknown_0203CF1C->summary.sanity != 1)
+ {
+ if (sum->metLocation == 0xFF)
+ text = gText_PeculiarEggNicePlace;
+ else if (sub_81C32BC() == 0 || sub_81C3220() == 0)
+ text = gText_PeculiarEggTrade;
+ else if (sum->metLocation == 0xFD)
+ text = (sub_81C32E0() == TRUE) ? gText_EggFromHotSprings : gText_EggFromTraveler;
+ else
+ text = gText_OddEggFoundByCouple;
+ }
+ else
+ text = gText_OddEggFoundByCouple;
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCCC, 3), text, 0, 1, 0, 0);
+}
+
+void sub_81C3530()
+{
+ sub_81C35E4();
+ sub_81C3690();
+ sub_81C3710();
+ sub_81C37D8();
+ sub_81C3808();
+ sub_81C3890();
+ sub_81C38C0();
+}
+
+void sub_81C3554(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s16 dataa = data[0] - 1;
+ switch (dataa)
+ {
+ case 0:
+ sub_81C35E4();
+ break;
+ case 1:
+ sub_81C3690();
+ break;
+ case 2:
+ sub_81C3710();
+ break;
+ case 3:
+ sub_81C37D8();
+ break;
+ case 4:
+ sub_81C3808();
+ break;
+ case 5:
+ sub_81C3890();
+ break;
+ case 6:
+ sub_81C38C0();
+ break;
+ case 7:
+ DestroyTask(taskId);
+ return;
+ }
+ data[0]++;
+}
+
+void sub_81C35E4()
+{
+ u8 *text;
+ int offset;
+ if (gUnknown_0203CF1C->summary.item == ITEM_ENIGMA_BERRY && sub_81B1250() == 1 && (gUnknown_0203CF1C->unk40BE == 1 || gUnknown_0203CF1C->unk40BE == 4 || gUnknown_0203CF1C->unk40BE == 5))
+ {
+ text = (u8*)ItemId_GetItem(ITEM_ENIGMA_BERRY);
+ }
+ else if (gUnknown_0203CF1C->summary.item == ITEM_NONE)
+ text = gText_None;
+ else
+ {
+ CopyItemName(gUnknown_0203CF1C->summary.item, gStringVar1);
+ text = gStringVar1;
+ }
+ offset = GetStringCenterAlignXOffset(1, text, 0x48) + 6;
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 0), text, offset, 1, 0, 0);
+}
+
+void sub_81C3690()
+{
+ u8 *text;
+ int offset;
+ if (gUnknown_0203CF1C->summary.ribbons == 0)
+ text = gText_None;
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.ribbons, 1, 2);
+ StringExpandPlaceholders(gStringVar4, gText_RibbonsVar1);
+ text = gStringVar4;
+ }
+ offset = GetStringCenterAlignXOffset(1, text, 0x46) + 6;
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 1), text, offset, 1, 0, 0);
+}
+
+void sub_81C3710()
+{
+ u8 *alloced1 = Alloc(8);
+ u8 *alloced2 = Alloc(8);
+ u8 *alloced3 = Alloc(8);
+ u8 *alloced4 = Alloc(8);
+ ConvertIntToDecimalStringN(alloced1, gUnknown_0203CF1C->summary.currentHP, 1, 3);
+ ConvertIntToDecimalStringN(alloced2, gUnknown_0203CF1C->summary.maxHP, 1, 3);
+ ConvertIntToDecimalStringN(alloced3, gUnknown_0203CF1C->summary.atk, 1, 7);
+ ConvertIntToDecimalStringN(alloced4, gUnknown_0203CF1C->summary.def, 1, 7);
+ sub_81AFBF0();
+ sub_81AFC0C(0, alloced1);
+ sub_81AFC0C(1, alloced2);
+ sub_81AFC0C(2, alloced3);
+ sub_81AFC0C(3, alloced4);
+ sub_81AFC28(gStringVar4, gUnknown_0861CE82);
+ Free(alloced1);
+ Free(alloced2);
+ Free(alloced3);
+ Free(alloced4);
+}
+
+void sub_81C37D8()
+{
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 2), gStringVar4, 4, 1, 0, 0);
+}
+
+void sub_81C3808()
+{
+ ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.spatk, 1, 3);
+ ConvertIntToDecimalStringN(gStringVar2, gUnknown_0203CF1C->summary.spdef, 1, 3);
+ ConvertIntToDecimalStringN(gStringVar3, gUnknown_0203CF1C->summary.speed, 1, 3);
+ sub_81AFBF0();
+ sub_81AFC0C(0, gStringVar1);
+ sub_81AFC0C(1, gStringVar2);
+ sub_81AFC0C(2, gStringVar3);
+ sub_81AFC28(gStringVar4, gUnknown_0861CE8E);
+}
+
+void sub_81C3890()
+{
+ sub_81C25A4(sub_81C2D2C(&gUnknown_0861CCEC, 3), gStringVar4, 2, 1, 0, 0);
+}
+
+void sub_81C38C0()
+{
+ struct PokeSummary *sum = &gUnknown_0203CF1C->summary;
+ u8 r6 = sub_81C2D2C(&gUnknown_0861CCEC, 4);
+ int offset;
+ u32 expToNextLevel;
+ ConvertIntToDecimalStringN(gStringVar1, sum->exp, 1, 7);
+ offset = GetStringRightAlignXOffset(1, gStringVar1, 0x2A) + 2;
+ sub_81C25A4(r6, gStringVar1, offset, 1, 0, 0);
+ if (sum->level < MAX_MON_LEVEL)
+ expToNextLevel = gExperienceTables[gBaseStats[sum->species].growthRate][sum->level + 1] - sum->exp;
+ else
+ expToNextLevel = 0;
+ ConvertIntToDecimalStringN(gStringVar1, expToNextLevel, 1, 6);
+ offset = GetStringRightAlignXOffset(1, gStringVar1, 0x2A) + 2;
+ sub_81C25A4(r6, gStringVar1, offset, 17, 0, 0);
+}
+
+void sub_81C3984()
+{
+ sub_81C3B08(0);
+ sub_81C3B08(1);
+ sub_81C3B08(2);
+ sub_81C3B08(3);
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ {
+ sub_81C3F44();
+ if (gUnknown_0203CF1C->unk40C6 == 4)
+ {
+ if (gUnknown_0203CF1C->unk40C4 != 0)
+ sub_81C3E9C(gUnknown_0203CF1C->unk40C4);
+ }
+ else
+ sub_81C3E9C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]);
+ }
+}
+
+void sub_81C39F0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s16 dataa = data[0] - 1;
+
+ switch (dataa)
+ {
+ case 0:
+ sub_81C3B08(0);
+ break;
+ case 1:
+ sub_81C3B08(1);
+ break;
+ case 2:
+ sub_81C3B08(2);
+ break;
+ case 3:
+ sub_81C3B08(3);
+ break;
+ case 4:
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ sub_81C3F44();
+ break;
+ case 5:
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ {
+ if (gUnknown_0203CF1C->unk40C6 == 4)
+ data[1] = gUnknown_0203CF1C->unk40C4;
+ else
+ data[1] = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6];
+ }
+ break;
+ case 6:
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ {
+ if (!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4))
+ sub_81C3E9C(data[1]);
+ }
+ break;
+ case 7:
+ DestroyTask(taskId);
+ return;
+ }
+ data[0]++;
+}
+
+#ifdef NONMATCHING
+void sub_81C3B08(u8 a)
+{
+ struct UnkSummaryStruct *r10 = gUnknown_0203CF1C;
+ u8 r8 = sub_81C2D2C(&gUnknown_0861CD14, 0);
+ u8 sp = sub_81C2D2C(&gUnknown_0861CD14, 1);
+ u8 r6;
+ u8 r5;
+ u8 *text;
+ int offset;
+ u16 move;
+ if (r10->summary.moves[a] != 0)
+ {
+ move = r10->summary.moves[a];
+ r6 = CalculatePPWithBonus(move, r10->summary.ppBonuses, a);
+ sub_81C25A4(r8, gMoveNames[move], 0, (a<<4) + 1, 0, 1);
+ ConvertIntToDecimalStringN(gStringVar1, r10->summary.pp[a], 1, 2);
+ ConvertIntToDecimalStringN(gStringVar2, r6, 1, 2);
+ sub_81AFBF0();
+ sub_81AFC0C(0, gStringVar1);
+ sub_81AFC0C(1, gStringVar2);
+ sub_81AFC28(gStringVar4, gUnknown_0861CE97);
+ text = gStringVar4;
+ r5 = GetCurrentPpToMaxPpState(r10->summary.pp[a], r6) + 9;
+ offset = GetStringRightAlignXOffset(1, text, 0x2C);
+ }
+ else
+ {
+ sub_81C25A4(r8, gText_OneDash, 0, (a<<4) + 1, 0, 1);
+ text = gText_TwoDashes;
+ r5 = 12;
+ offset = GetStringCenterAlignXOffset(1, text, 0x2C);
+ }
+ sub_81C25A4(sp, text, offset, (a<<4), 0, r5);
+}
+#else
+__attribute__((naked))
+void sub_81C3B08(u8 a)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r0, =gUnknown_0203CF1C\n\
+ ldr r0, [r0]\n\
+ mov r10, r0\n\
+ ldr r4, =gUnknown_0861CD14\n\
+ adds r0, r4, 0\n\
+ movs r1, 0\n\
+ bl sub_81C2D2C\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl sub_81C2D2C\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x8]\n\
+ lsls r1, r7, 1\n\
+ mov r0, r10\n\
+ adds r0, 0x84\n\
+ adds r0, r1\n\
+ ldrh r5, [r0]\n\
+ cmp r5, 0\n\
+ beq _081C3C00\n\
+ mov r0, r10\n\
+ adds r0, 0xA4\n\
+ ldrb r1, [r0]\n\
+ adds r0, r5, 0\n\
+ adds r2, r7, 0\n\
+ bl CalculatePPWithBonus\n\
+ adds r6, r0, 0\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ movs r0, 0xD\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, =gMoveNames\n\
+ adds r1, r0\n\
+ lsls r0, r7, 4\n\
+ mov r9, r0\n\
+ mov r3, r9\n\
+ adds r3, 0x1\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x1\n\
+ str r0, [sp, 0x4]\n\
+ mov r0, r8\n\
+ movs r2, 0\n\
+ bl sub_81C25A4\n\
+ ldr r0, =gStringVar1\n\
+ mov r8, r0\n\
+ mov r5, r10\n\
+ adds r5, 0x8C\n\
+ adds r5, r7\n\
+ ldrb r1, [r5]\n\
+ movs r2, 0x1\n\
+ movs r3, 0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ ldr r4, =gStringVar2\n\
+ adds r0, r4, 0\n\
+ adds r1, r6, 0\n\
+ movs r2, 0x1\n\
+ movs r3, 0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ bl sub_81AFBF0\n\
+ movs r0, 0\n\
+ mov r1, r8\n\
+ bl sub_81AFC0C\n\
+ movs r0, 0x1\n\
+ adds r1, r4, 0\n\
+ bl sub_81AFC0C\n\
+ ldr r4, =gStringVar4\n\
+ ldr r1, =gUnknown_0861CE97\n\
+ adds r0, r4, 0\n\
+ bl sub_81AFC28\n\
+ adds r7, r4, 0\n\
+ ldrb r0, [r5]\n\
+ adds r1, r6, 0\n\
+ bl GetCurrentPpToMaxPpState\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r5, r0, 0\n\
+ adds r5, 0x9\n\
+ movs r0, 0x1\n\
+ adds r1, r7, 0\n\
+ movs r2, 0x2C\n\
+ bl GetStringRightAlignXOffset\n\
+ mov r4, r9\n\
+ b _081C3C26\n\
+ .pool\n\
+_081C3C00:\n\
+ ldr r1, =gText_OneDash\n\
+ lsls r4, r7, 4\n\
+ adds r3, r4, 0x1\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ str r5, [sp]\n\
+ movs r0, 0x1\n\
+ str r0, [sp, 0x4]\n\
+ mov r0, r8\n\
+ movs r2, 0\n\
+ bl sub_81C25A4\n\
+ ldr r7, =gText_TwoDashes\n\
+ movs r5, 0xC\n\
+ movs r0, 0x1\n\
+ adds r1, r7, 0\n\
+ movs r2, 0x2C\n\
+ bl GetStringCenterAlignXOffset\n\
+_081C3C26:\n\
+ lsls r2, r0, 24\n\
+ lsrs r2, 24\n\
+ adds r3, r4, 0x1\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ lsls r0, r5, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x4]\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r1, r7, 0\n\
+ bl sub_81C25A4\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_81C3C5C(u16 move)
+{
+ u8 *text;
+ if (move != 0)
+ {
+ FillWindowPixelRect(14, 0, 0x35, 0, 0x13, 0x20);
+ if (gBattleMoves[move].power <= 1)
+ text = gText_ThreeDashes;
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].power, 1, 3);
+ text = gStringVar1;
+ }
+ sub_81C25A4(14, text, 0x35, 1, 0, 0);
+ if (gBattleMoves[move].accuracy == 0)
+ text = gText_ThreeDashes;
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gBattleMoves[move].accuracy, 1, 3);
+ text = gStringVar1;
+ }
+ sub_81C25A4(14, text, 0x35, 17, 0, 0);
+ }
+}
+
+void sub_81C3D08()
+{
+ sub_81C3B08(0);
+ sub_81C3B08(1);
+ sub_81C3B08(2);
+ sub_81C3B08(3);
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ {
+ sub_81C3F44();
+ sub_81C3E2C(gUnknown_0203CF1C->unk40C6);
+ }
+}
+
+void sub_81C3D54(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s16 dataa = data[0] - 1;
+
+ switch (dataa)
+ {
+ case 0:
+ sub_81C3B08(0);
+ break;
+ case 1:
+ sub_81C3B08(1);
+ break;
+ case 2:
+ sub_81C3B08(2);
+ break;
+ case 3:
+ sub_81C3B08(3);
+ break;
+ case 4:
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ sub_81C3F44();
+ break;
+ case 5:
+ if (gUnknown_0203CF1C->unk40BC == 3)
+ {
+ if (!(gUnknown_0203CF1C->unk40C4 == 0 && gUnknown_0203CF1C->unk40C6 == 4))
+ sub_81C3E2C(gUnknown_0203CF1C->unk40C6);
+ }
+ break;
+ case 6:
+ DestroyTask(taskId);
+ return;
+ }
+ data[0]++;
+} \ No newline at end of file
diff --git a/src/record_mixing.c b/src/record_mixing.c
new file mode 100644
index 000000000..151835e5e
--- /dev/null
+++ b/src/record_mixing.c
@@ -0,0 +1,28 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA bool8 gUnknown_03001130;
+IWRAM_DATA struct SecretBaseRecord *gUnknown_03001134;
+IWRAM_DATA TVShow *gUnknown_03001138;
+IWRAM_DATA struct UnknownSaveStruct2ABC *gUnknown_0300113C;
+IWRAM_DATA OldMan *gUnknown_03001140;
+IWRAM_DATA struct EasyChatPair *gUnknown_03001144;
+IWRAM_DATA struct DaycareData *gUnknown_03001148;
+IWRAM_DATA void *gUnknown_0300114C; // gSaveBlock2Ptr->field_64C
+IWRAM_DATA LilycoveLady *gUnknown_03001150;
+IWRAM_DATA void *gUnknown_03001154; // gSaveBlock2Ptr->field_0DC;
+IWRAM_DATA void *gUnknown_03001158; // gSaveBlock2Ptr->field_64C
+IWRAM_DATA u32 gUnknown_0300115C;
+IWRAM_DATA u8 gUnknown_03001160[8];
+IWRAM_DATA u32 gUnknown_03001168[3];
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c
index b786ff9f8..d4dbc5f42 100644
--- a/src/reset_save_heap.c
+++ b/src/reset_save_heap.c
@@ -5,7 +5,7 @@
#include "load_save.h"
#include "save.h"
#include "new_game.h"
-#include "rom4.h"
+#include "overworld.h"
#include "malloc.h"
void sub_81700F8(void)
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
new file mode 100644
index 000000000..343ddb9c0
--- /dev/null
+++ b/src/reshow_battle_screen.c
@@ -0,0 +1,354 @@
+#include "global.h"
+#include "reshow_battle_screen.h"
+#include "battle.h"
+#include "palette.h"
+#include "main.h"
+#include "unknown_task.h"
+#include "text.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "battle_controllers.h"
+#include "link.h"
+#include "sprite.h"
+#include "species.h"
+#include "battle_interface.h"
+
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_BG3_X;
+extern u16 gBattle_BG3_Y;
+extern u8 gReservedSpritePaletteCount;
+extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
+extern u8 gBankInMenu;
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u8 gNoOfAllBanks;
+extern u32 gBattleTypeFlags;
+extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
+extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
+extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
+extern struct SpriteTemplate gUnknown_0202499C;
+
+extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[];
+
+extern void dp12_8087EA4(void);
+extern void trs_config(void);
+extern bool8 IsDoubleBattle(void);
+extern u8 sub_80A614C(u8 bank);
+extern u8 sub_80A6138(u8 bank);
+extern u8 sub_80A82E4(u8 bank);
+extern void sub_806A068(u16 species, u8 bankIdentity);
+extern void sub_806A12C(u16 backPicId, u8 bankIdentity);
+extern u8 sub_80A5C6C(u8 bank, u8 caseId);
+
+// this file's functions
+static void CB2_ReshowBattleScreenAfterMenu(void);
+static bool8 LoadBankSpriteGfx(u8 bank);
+static void CreateBankSprite(u8 bank);
+static void CreateHealthboxSprite(u8 bank);
+static void sub_80A95F4(void);
+
+void nullsub_35(void)
+{
+
+}
+
+void ReshowBattleScreenAfterMenu(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ gBattleScripting.reshowMainState = 0;
+ gBattleScripting.reshowHelperState = 0;
+ SetMainCallback2(CB2_ReshowBattleScreenAfterMenu);
+}
+
+static void CB2_ReshowBattleScreenAfterMenu(void)
+{
+ switch (gBattleScripting.reshowMainState)
+ {
+ case 0:
+ dp12_8087EA4();
+ trs_config();
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ ResetPaletteFade();
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ break;
+ case 1:
+ CpuFastFill(0, (void*)(VRAM), VRAM_SIZE);
+ break;
+ case 2:
+ LoadBattleTextboxAndBackground();
+ break;
+ case 3:
+ ResetSpriteData();
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ break;
+ case 5:
+ sub_805E350();
+ break;
+ case 6:
+ if (BattleLoadAllHealthBoxesGfx(gBattleScripting.reshowHelperState))
+ {
+ gBattleScripting.reshowHelperState = 0;
+ }
+ else
+ {
+ gBattleScripting.reshowHelperState++;
+ gBattleScripting.reshowMainState--;
+ }
+ break;
+ case 7:
+ if (!LoadBankSpriteGfx(0))
+ gBattleScripting.reshowMainState--;
+ break;
+ case 8:
+ if (!LoadBankSpriteGfx(1))
+ gBattleScripting.reshowMainState--;
+ break;
+ case 9:
+ if (!LoadBankSpriteGfx(2))
+ gBattleScripting.reshowMainState--;
+ break;
+ case 10:
+ if (!LoadBankSpriteGfx(3))
+ gBattleScripting.reshowMainState--;
+ break;
+ case 11:
+ CreateBankSprite(0);
+ break;
+ case 12:
+ CreateBankSprite(1);
+ break;
+ case 13:
+ CreateBankSprite(2);
+ break;
+ case 14:
+ CreateBankSprite(3);
+ break;
+ case 15:
+ CreateHealthboxSprite(0);
+ break;
+ case 16:
+ CreateHealthboxSprite(1);
+ break;
+ case 17:
+ CreateHealthboxSprite(2);
+ break;
+ case 18:
+ CreateHealthboxSprite(3);
+ break;
+ case 19:
+ {
+ u8 opponentBank;
+ u16 species;
+
+ LoadAndCreateEnemyShadowSprites();
+
+ opponentBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ SetBankEnemyShadowSpriteCallback(opponentBank, species);
+
+ if (IsDoubleBattle())
+ {
+ opponentBank = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ SetBankEnemyShadowSpriteCallback(opponentBank, species);
+ }
+
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gBankInMenu], 0);
+
+ if (gLinkVSyncDisabled != 0 && gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_800E0E8();
+ sub_800DFB4(0, 0);
+ }
+ }
+ break;
+ default:
+ SetVBlankCallback(VBlankCB_Battle);
+ sub_80A95F4();
+ BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetMainCallback2(BattleMainCB2);
+ sub_805EF14();
+ break;
+ }
+
+ gBattleScripting.reshowMainState++;
+}
+
+static void sub_80A95F4(void)
+{
+ struct BGCntrlBitfield *regBgcnt1, *regBgcnt2;
+
+ regBgcnt1 = (struct BGCntrlBitfield *)(&REG_BG1CNT);
+ regBgcnt1->charBaseBlock = 0;
+
+ regBgcnt2 = (struct BGCntrlBitfield *)(&REG_BG2CNT);
+ regBgcnt2->charBaseBlock = 0;
+}
+
+static bool8 LoadBankSpriteGfx(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ {
+ if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSpriteGfx(bank, FALSE);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ LoadBackTrainerBankSpriteGfx(gSaveBlock2Ptr->playerGender, bank);
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ LoadBackTrainerBankSpriteGfx(BACK_PIC_WALLY, bank);
+ else if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSpriteGfx(bank, FALSE);
+
+ gBattleScripting.reshowHelperState = 0;
+ }
+ return TRUE;
+}
+
+// todo: get rid of it once the struct is declared in a header
+struct MonCoords
+{
+ // This would use a bitfield, but sub_8079F44
+ // uses it as a u8 and casting won't match.
+ u8 coords; // u8 x:4, y:4;
+ u8 y_offset;
+};
+extern const struct MonCoords gTrainerBackPicCoords[];
+
+static void CreateBankSprite(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ u8 posY;
+
+ if (gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
+ posY = sub_80A614C(bank);
+ else
+ posY = sub_80A6138(bank);
+
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ {
+ if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ return;
+
+ sub_806A068(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), posY, sub_80A82E4(bank));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data0 = bank;
+ gSprites[gBankSpriteIds[bank]].data2 = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM)
+ gSprites[gBankSpriteIds[bank]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ {
+ sub_806A12C(gSaveBlock2Ptr->playerGender, GetBankIdentity(IDENTITY_PLAYER_MON1));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, 0x50,
+ (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80,
+ sub_80A82E4(0));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data0 = bank;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ {
+ sub_806A12C(BACK_PIC_WALLY, GetBankIdentity(0));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, 0x50,
+ (8 - gTrainerBackPicCoords[BACK_PIC_WALLY].coords) * 4 + 80,
+ sub_80A82E4(0));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data0 = bank;
+ }
+ else
+ {
+ if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ return;
+
+ sub_806A068(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), posY, sub_80A82E4(bank));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data0 = bank;
+ gSprites[gBankSpriteIds[bank]].data2 = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM)
+ gSprites[gBankSpriteIds[bank]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
+ }
+
+ gSprites[gBankSpriteIds[bank]].invisible = gBattleSpritesDataPtr->bankData[bank].invisible;
+ }
+}
+
+static void CreateHealthboxSprite(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ u8 healthboxSpriteId;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ healthboxSpriteId = CreateSafariPlayerHealthboxSprites();
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ return;
+ else
+ healthboxSpriteId = CreateBankHealthboxSprites(bank);
+
+ gHealthBoxesIds[bank] = healthboxSpriteId;
+ SetBankHealthboxSpritePos(bank);
+ SetHealthboxSpriteVisible(healthboxSpriteId);
+
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gEnemyParty[gBattlePartyID[bank]], HEALTHBOX_ALL);
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[gBattlePartyID[bank]], HEALTHBOX_SAFARI_ALL_TEXT);
+ else
+ UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[gBattlePartyID[bank]], HEALTHBOX_ALL);
+
+ if (GetBankIdentity(bank) == IDENTITY_OPPONENT_MON2 || GetBankIdentity(bank) == IDENTITY_PLAYER_MON2)
+ DummyBattleInterfaceFunc(gHealthBoxesIds[bank], TRUE);
+ else
+ DummyBattleInterfaceFunc(gHealthBoxesIds[bank], FALSE);
+
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ {
+ if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ SetHealthboxSpriteInvisible(healthboxSpriteId);
+ }
+ else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
+ {
+ if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ SetHealthboxSpriteInvisible(healthboxSpriteId);
+ }
+ }
+}
diff --git a/src/roamer.c b/src/roamer.c
new file mode 100644
index 000000000..cbe1b6312
--- /dev/null
+++ b/src/roamer.c
@@ -0,0 +1,218 @@
+#include "global.h"
+#include "roamer.h"
+#include "pokemon.h"
+#include "rng.h"
+#include "species.h"
+#include "event_data.h"
+
+enum
+{
+ MAP_GRP = 0, // map group
+ MAP_NUM = 1, // map number
+};
+
+EWRAM_DATA static u8 sLocationHistory[3][2] = {0};
+EWRAM_DATA static u8 sRoamerLocation[2] = {0};
+
+static const u8 sRoamerLocations[][6] =
+{
+ { 0x19, 0x1A, 0x20, 0x21, 0x31, 0xFF },
+ { 0x1A, 0x19, 0x20, 0x21, 0xFF, 0xFF },
+ { 0x20, 0x1A, 0x19, 0x21, 0xFF, 0xFF },
+ { 0x21, 0x20, 0x19, 0x1A, 0x22, 0x26 },
+ { 0x22, 0x21, 0x23, 0xFF, 0xFF, 0xFF },
+ { 0x23, 0x22, 0x24, 0xFF, 0xFF, 0xFF },
+ { 0x24, 0x23, 0x25, 0x26, 0xFF, 0xFF },
+ { 0x25, 0x24, 0x26, 0xFF, 0xFF, 0xFF },
+ { 0x26, 0x25, 0x21, 0xFF, 0xFF, 0xFF },
+ { 0x27, 0x24, 0x28, 0x29, 0xFF, 0xFF },
+ { 0x28, 0x27, 0x2A, 0xFF, 0xFF, 0xFF },
+ { 0x29, 0x27, 0x2A, 0xFF, 0xFF, 0xFF },
+ { 0x2A, 0x28, 0x29, 0x2B, 0xFF, 0xFF },
+ { 0x2B, 0x2A, 0x2C, 0xFF, 0xFF, 0xFF },
+ { 0x2C, 0x2B, 0x2D, 0xFF, 0xFF, 0xFF },
+ { 0x2D, 0x2C, 0x2E, 0xFF, 0xFF, 0xFF },
+ { 0x2E, 0x2D, 0x2F, 0xFF, 0xFF, 0xFF },
+ { 0x2F, 0x2E, 0x30, 0xFF, 0xFF, 0xFF },
+ { 0x30, 0x2F, 0x31, 0xFF, 0xFF, 0xFF },
+ { 0x31, 0x30, 0x19, 0xFF, 0xFF, 0xFF },
+ { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },
+};
+
+void ClearRoamerData(void)
+{
+ memset(&gSaveBlock1Ptr->roamer, 0, sizeof(struct Roamer));
+ (&gSaveBlock1Ptr->roamer)->species = SPECIES_LATIAS;
+}
+
+void ClearRoamerLocationData(void)
+{
+ u8 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ sLocationHistory[i][MAP_GRP] = 0;
+ sLocationHistory[i][MAP_NUM] = 0;
+ }
+
+ sRoamerLocation[MAP_GRP] = 0;
+ sRoamerLocation[MAP_NUM] = 0;
+}
+
+static void CreateInitialRoamerMon(bool16 createLatios)
+{
+ if (!createLatios)
+ (&gSaveBlock1Ptr->roamer)->species = SPECIES_LATIAS;
+ else
+ (&gSaveBlock1Ptr->roamer)->species = SPECIES_LATIOS;
+
+ CreateMon(&gEnemyParty[0], (&gSaveBlock1Ptr->roamer)->species, 40, 0x20, 0, 0, 0, 0);
+ (&gSaveBlock1Ptr->roamer)->level = 40;
+ (&gSaveBlock1Ptr->roamer)->status = 0;
+ (&gSaveBlock1Ptr->roamer)->active = TRUE;
+ (&gSaveBlock1Ptr->roamer)->ivs = GetMonData(&gEnemyParty[0], MON_DATA_IVS);
+ (&gSaveBlock1Ptr->roamer)->personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY);
+ (&gSaveBlock1Ptr->roamer)->hp = GetMonData(&gEnemyParty[0], MON_DATA_MAX_HP);
+ (&gSaveBlock1Ptr->roamer)->cool = GetMonData(&gEnemyParty[0], MON_DATA_COOL);
+ (&gSaveBlock1Ptr->roamer)->beauty = GetMonData(&gEnemyParty[0], MON_DATA_BEAUTY);
+ (&gSaveBlock1Ptr->roamer)->cute = GetMonData(&gEnemyParty[0], MON_DATA_CUTE);
+ (&gSaveBlock1Ptr->roamer)->smart = GetMonData(&gEnemyParty[0], MON_DATA_SMART);
+ (&gSaveBlock1Ptr->roamer)->tough = GetMonData(&gEnemyParty[0], MON_DATA_TOUGH);
+ sRoamerLocation[MAP_GRP] = 0;
+ sRoamerLocation[MAP_NUM] = sRoamerLocations[Random() % 20][0];
+}
+
+void InitRoamer(void)
+{
+ ClearRoamerData();
+ ClearRoamerLocationData();
+ CreateInitialRoamerMon(gSpecialVar_0x8004);
+}
+
+void UpdateLocationHistoryForRoamer(void)
+{
+ sLocationHistory[2][MAP_GRP] = sLocationHistory[1][MAP_GRP];
+ sLocationHistory[2][MAP_NUM] = sLocationHistory[1][MAP_NUM];
+
+ sLocationHistory[1][MAP_GRP] = sLocationHistory[0][MAP_GRP];
+ sLocationHistory[1][MAP_NUM] = sLocationHistory[0][MAP_NUM];
+
+ sLocationHistory[0][MAP_GRP] = gSaveBlock1Ptr->location.mapGroup;
+ sLocationHistory[0][MAP_NUM] = gSaveBlock1Ptr->location.mapNum;
+}
+
+void RoamerMoveToOtherLocationSet(void)
+{
+ u8 val = 0;
+ struct Roamer *roamer = &gSaveBlock1Ptr->roamer;
+
+ if (!roamer->active)
+ return;
+
+ sRoamerLocation[MAP_GRP] = val;
+
+ while (1)
+ {
+ val = sRoamerLocations[Random() % 20][0];
+ if (sRoamerLocation[MAP_NUM] != val)
+ {
+ sRoamerLocation[MAP_NUM] = val;
+ return;
+ }
+ }
+}
+
+void RoamerMove(void)
+{
+ u8 locSet = 0;
+
+ if ((Random() % 16) == 0)
+ {
+ RoamerMoveToOtherLocationSet();
+ }
+ else
+ {
+ struct Roamer *roamer = &gSaveBlock1Ptr->roamer;
+
+ if (!roamer->active)
+ return;
+
+ while (locSet < 20)
+ {
+ if (sRoamerLocation[MAP_NUM] == sRoamerLocations[locSet][0])
+ {
+ u8 mapNum;
+ while (1)
+ {
+ mapNum = sRoamerLocations[locSet][(Random() % 5) + 1];
+ if (!(sLocationHistory[2][MAP_GRP] == 0 && sLocationHistory[2][MAP_NUM] == mapNum) && mapNum != 0xFF)
+ break;
+ }
+ sRoamerLocation[MAP_NUM] = mapNum;
+ return;
+ }
+ locSet++;
+ }
+ }
+}
+
+bool8 IsRoamerAt(u8 mapGroup, u8 mapNum)
+{
+ struct Roamer *roamer = &gSaveBlock1Ptr->roamer;
+
+ if (roamer->active && mapGroup == sRoamerLocation[MAP_GRP] && mapNum == sRoamerLocation[MAP_NUM])
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void CreateRoamerMonInstance(void)
+{
+ struct Pokemon *mon;
+ struct Roamer *roamer;
+
+ mon = &gEnemyParty[0];
+ ZeroEnemyPartyMons();
+ roamer = &gSaveBlock1Ptr->roamer;
+ CreateMonWithIVsPersonality(mon, roamer->species, roamer->level, roamer->ivs, roamer->personality);
+ SetMonData(mon, MON_DATA_STATUS, &gSaveBlock1Ptr->roamer.status);
+ SetMonData(mon, MON_DATA_HP, &gSaveBlock1Ptr->roamer.hp);
+ SetMonData(mon, MON_DATA_COOL, &gSaveBlock1Ptr->roamer.cool);
+ SetMonData(mon, MON_DATA_BEAUTY, &gSaveBlock1Ptr->roamer.beauty);
+ SetMonData(mon, MON_DATA_CUTE, &gSaveBlock1Ptr->roamer.cute);
+ SetMonData(mon, MON_DATA_SMART, &gSaveBlock1Ptr->roamer.smart);
+ SetMonData(mon, MON_DATA_TOUGH, &gSaveBlock1Ptr->roamer.tough);
+}
+
+bool8 TryStartRoamerEncounter(void)
+{
+ if (IsRoamerAt(gSaveBlock1Ptr->location.mapGroup, gSaveBlock1Ptr->location.mapNum) == TRUE && (Random() % 4) == 0)
+ {
+ CreateRoamerMonInstance();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void UpdateRoamerHPStatus(struct Pokemon *mon)
+{
+ (&gSaveBlock1Ptr->roamer)->hp = GetMonData(mon, MON_DATA_HP);
+ (&gSaveBlock1Ptr->roamer)->status = GetMonData(mon, MON_DATA_STATUS);
+
+ RoamerMoveToOtherLocationSet();
+}
+
+void SetRoamerInactive(void)
+{
+ struct Roamer *roamer = &gSaveBlock1Ptr->roamer;
+ roamer->active = FALSE;
+}
+
+void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
+{
+ *mapGroup = sRoamerLocation[MAP_GRP];
+ *mapNum = sRoamerLocation[MAP_NUM];
+}
diff --git a/src/rom4.c b/src/rom4.c
new file mode 100644
index 000000000..c538595f2
--- /dev/null
+++ b/src/rom4.c
@@ -0,0 +1,19 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+IWRAM_DATA void *gUnknown_03000E0C;
+IWRAM_DATA u8 gUnknown_03000E10[4];
+IWRAM_DATA u8 (*gUnknown_03000E14)(u32);
+IWRAM_DATA u8 gUnknown_03000E18;
+IWRAM_DATA u8 gUnknown_03000E19;
+IWRAM_DATA void *rom4_c_unused_03000e1c;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/safari_zone.c b/src/safari_zone.c
index 3e25468bf..77c6bbd61 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -60,7 +60,7 @@ void SetSafariZoneFlag(void)
void ResetSafariZoneFlag(void)
{
- FlagReset(SYS_SAFARI_MODE);
+ FlagClear(SYS_SAFARI_MODE);
}
void EnterSafariMode(void)
@@ -114,7 +114,7 @@ void sub_80FC190(void)
{
SetMainCallback2(c2_exit_to_overworld_2_switch);
}
- else if (gBattleOutcome == 8)
+ else if (gBattleOutcome == BATTLE_SAFARI_OUT_OF_BALLS)
{
ScriptContext2_RunNewScript(gUnknown_082A4B4C);
warp_in();
@@ -139,7 +139,7 @@ static void ClearAllPokeblockFeeders(void)
memset(sPokeblockFeeders, 0, sizeof(sPokeblockFeeders));
}
-static void GetPokeblockFeederInFront(void)
+void GetPokeblockFeederInFront(void)
{
s16 x, y;
u16 i;
diff --git a/src/save.c b/src/save.c
index 5ca855247..2c1b26ca9 100644
--- a/src/save.c
+++ b/src/save.c
@@ -2,17 +2,19 @@
#include "gba/flash_internal.h"
#include "save.h"
#include "game_stat.h"
+#include "task.h"
-extern struct SaveSectionOffsets gSaveSectionOffsets[0xE];
extern struct SaveSectionLocation gRamSaveSectionLocations[0xE];
extern u8 gDecompressionBuffer[];
extern u32 gFlashMemoryPresent;
extern u16 gUnknown_03006294;
+extern bool8 gSoftResetDisabled;
+
+extern const struct SaveSectionOffsets gSaveSectionOffsets[0xE];
extern void DoSaveFailedScreen(u8); // save_failed_screen
extern void LoadSerializedGame(void); // load_save
extern bool32 ProgramFlashSectorAndVerify(u8 sector, u8 *data);
-extern void ReadFlash(u8 sector, u32 arg1, void* data, u32 size);
// iwram common
u16 gLastWrittenSector;
@@ -576,84 +578,27 @@ u16 CalculateChecksum(void *data, u16 size)
return ((checksum >> 16) + checksum);
}
-#ifdef NONMATCHING
-// the initial allocation of the pointer and toAdd variable doesnt match up with the original function. however, forcing it is impossible since gRamSaveSectionLocations is loaded first.
void UpdateSaveAddresses(void)
{
int i = 0;
- gRamSaveSectionLocations[i].data = gSaveBlock2Ptr + gSaveSectionOffsets[0].toAdd;
- gRamSaveSectionLocations[i].size = gSaveSectionOffsets[0].size;
- for(i = 1; i < 5; i++)
+ gRamSaveSectionLocations[i].data = (void*)(gSaveBlock2Ptr) + gSaveSectionOffsets[i].toAdd;
+ gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size;
+
+ for (i = 1; i < 5; i++)
{
- gRamSaveSectionLocations[i].data = gSaveBlock1Ptr + gSaveSectionOffsets[i].toAdd;
+ gRamSaveSectionLocations[i].data = (void*)(gSaveBlock1Ptr) + gSaveSectionOffsets[i].toAdd;
gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size;
}
- for(i = 5; i < 14; i++)
+ for (i = 5; i < 14; i++)
{
- gRamSaveSectionLocations[i].data = gPokemonStoragePtr + gSaveSectionOffsets[i].toAdd;
+ gRamSaveSectionLocations[i].data = (void*)(gPokemonStoragePtr) + gSaveSectionOffsets[i].toAdd;
gRamSaveSectionLocations[i].size = gSaveSectionOffsets[i].size;
+
+ i++;i--; // needed to match
}
}
-#else
-__attribute__((naked))
-void UpdateSaveAddresses(void)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- ldr r3, =gRamSaveSectionLocations\n\
- ldr r0, =gSaveBlock2Ptr\n\
- ldr r2, =gSaveSectionOffsets\n\
- ldrh r1, [r2]\n\
- ldr r0, [r0]\n\
- adds r0, r1\n\
- str r0, [r3]\n\
- ldrh r0, [r2, 0x2]\n\
- strh r0, [r3, 0x4]\n\
- ldr r5, =gSaveBlock1Ptr\n\
- adds r3, 0x8\n\
- adds r2, 0x4\n\
- movs r4, 0x3\n\
-_081531AC:\n\
- ldrh r0, [r2]\n\
- ldr r1, [r5]\n\
- adds r1, r0\n\
- str r1, [r3]\n\
- ldrh r0, [r2, 0x2]\n\
- strh r0, [r3, 0x4]\n\
- adds r3, 0x8\n\
- adds r2, 0x4\n\
- subs r4, 0x1\n\
- cmp r4, 0\n\
- bge _081531AC\n\
- movs r4, 0x5\n\
- ldr r1, =gRamSaveSectionLocations\n\
- ldr r5, =gPokemonStoragePtr\n\
- ldr r0, =gSaveSectionOffsets\n\
- adds r3, r1, 0\n\
- adds r3, 0x28\n\
- adds r2, r0, 0\n\
- adds r2, 0x14\n\
-_081531D2:\n\
- ldrh r0, [r2]\n\
- ldr r1, [r5]\n\
- adds r1, r0\n\
- str r1, [r3]\n\
- ldrh r0, [r2, 0x2]\n\
- strh r0, [r3, 0x4]\n\
- adds r3, 0x8\n\
- adds r2, 0x4\n\
- adds r4, 0x1\n\
- cmp r4, 0xD\n\
- ble _081531D2\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif
extern u32 GetGameStat(u8 index); // rom4
extern void IncrementGameStat(u8 index); // rom4
@@ -860,7 +805,7 @@ u32 sub_81535DC(u8 sector, u8* dst)
if (sector != 30 && sector != 31)
return 0xFF;
- ReadFlash(sector, 0, &gSaveDataBuffer, sizeof(struct SaveSection));
+ ReadFlash(sector, 0, (u8 *)&gSaveDataBuffer, sizeof(struct SaveSection));
if (*(u32*)(&gSaveDataBuffer.data[0]) != 0xB39D)
return 0xFF;
// copies whole save section except u32 counter
@@ -894,3 +839,85 @@ u32 sub_8153634(u8 sector, u8* src)
return 0xFF;
return 1;
}
+
+extern void save_serialize_map(void);
+extern void sub_8076D5C(void);
+extern void sav2_gender2_inplace_and_xFE(void);
+extern void sub_800ADF8(void);
+extern bool8 sub_800A520(void);
+
+void sub_8153688(u8 taskId)
+{
+ s16* taskData = gTasks[taskId].data;
+
+ switch (taskData[0])
+ {
+ case 0:
+ gSoftResetDisabled = TRUE;
+ taskData[0] = 1;
+ break;
+ case 1:
+ sub_800ADF8();
+ taskData[0] = 2;
+ break;
+ case 2:
+ if (sub_800A520())
+ {
+ if (taskData[2] == 0)
+ save_serialize_map();
+ taskData[0] = 3;
+ }
+ break;
+ case 3:
+ if (taskData[2] == 0)
+ sub_8076D5C();
+ sub_8153380();
+ taskData[0] = 4;
+ break;
+ case 4:
+ if (++taskData[1] == 5)
+ {
+ taskData[1] = 0;
+ taskData[0] = 5;
+ }
+ break;
+ case 5:
+ if (sub_81533AC())
+ taskData[0] = 6;
+ else
+ taskData[0] = 4;
+ break;
+ case 6:
+ sub_81533E0();
+ taskData[0] = 7;
+ break;
+ case 7:
+ if (taskData[2] == 0)
+ sav2_gender2_inplace_and_xFE();
+ sub_800ADF8();
+ taskData[0] = 8;
+ break;
+ case 8:
+ if (sub_800A520())
+ {
+ sub_8153408();
+ taskData[0] = 9;
+ }
+ break;
+ case 9:
+ sub_800ADF8();
+ taskData[0] = 10;
+ break;
+ case 10:
+ if (sub_800A520())
+ taskData[0]++;
+ break;
+ case 11:
+ if (++taskData[1] > 5)
+ {
+ gSoftResetDisabled = FALSE;
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
new file mode 100755
index 000000000..3f49b89e6
--- /dev/null
+++ b/src/save_failed_screen.c
@@ -0,0 +1,426 @@
+#include "global.h"
+#include "text.h"
+#include "main.h"
+#include "palette.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "task.h"
+#include "window.h"
+#include "menu.h"
+#include "save.h"
+#include "gba/flash_internal.h"
+
+#define MSG_WIN_TOP 12
+#define CLOCK_WIN_TOP (MSG_WIN_TOP - 4)
+
+extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, u8 *str);
+
+extern void (*gGameContinueCallback)(void);
+
+extern u32 gDamagedSaveSectors;
+
+extern const u8 gBirchHelpGfx[];
+extern const u8 gBirchBagTilemap[];
+extern const u8 gBirchGrassTilemap[];
+extern const u16 gBirchBagGrassPal[];
+extern const u16 gUnknown_0850FEFC[];
+extern const u16 gUnknown_0860F074[];
+extern const u32 gUnknown_0850E87C[];
+extern struct SaveSection gSaveDataBuffer;
+
+extern u8 gText_SaveFailedCheckingBackup[];
+extern u8 gText_BackupMemoryDamaged[];
+extern u8 gText_CheckCompleted[];
+extern u8 gText_SaveCompleteGameCannotContinue[];
+extern u8 gText_SaveCompletePressA[];
+extern u8 gText_GamePlayCannotBeContinued[];
+
+extern u8 gDecompressionBuffer[];
+
+// gSaveFailedClockInfo enum
+enum
+{
+ CLOCK_RUNNING,
+ DEBUG_TIMER
+};
+
+// gSaveFailedWindowIds enum
+enum
+{
+ TEXT_WIN_ID,
+ CLOCK_WIN_ID
+};
+
+EWRAM_DATA u16 gSaveFailedType = {0};
+EWRAM_DATA u16 gSaveFailedClockInfo[2] = {0};
+EWRAM_DATA u8 gSaveFailedUnused1[12] = {0};
+EWRAM_DATA u8 gSaveFailedWindowIds[2] = {0};
+EWRAM_DATA u8 gSaveFailedUnused2[4] = {0};
+
+static const struct OamData sClockOamData =
+{
+ 160, // Y
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0,
+ 0,
+ 0
+};
+
+static const struct BgTemplate gUnknown_085EFD88[3] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0,
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 14,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0,
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 15,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0,
+ },
+};
+
+static const struct WindowTemplate gUnknown_085EFD94[] =
+{
+ {
+ .priority = 255,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 0,
+ .height = 0,
+ .paletteNum = 0,
+ .baseBlock = 0,
+ }
+};
+
+static const struct WindowTemplate gUnknown_085EFD9C[] =
+{
+ {
+ .priority = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 13,
+ .width = 28,
+ .height = 6,
+ .paletteNum = 15,
+ .baseBlock = 1,
+ }
+};
+
+static const struct WindowTemplate gUnknown_085EFDA4[] =
+{
+ {
+ .priority = 0,
+ .tilemapLeft = 14,
+ .tilemapTop = 9,
+ .width = 2,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 169,
+ }
+};
+
+static const u8 sClockFrames[8][3] =
+{
+ { 1, 0, 0 },
+ { 5, 0, 0 },
+ { 9, 0, 0 },
+ { 5, 0, 1 },
+ { 1, 0, 1 },
+ { 5, 1, 1 },
+ { 9, 1, 0 },
+ { 5, 1, 0 },
+};
+
+static const u8 gSaveFailedClockPal[] = INCBIN_U8("graphics/misc/clock_small.gbapal");
+static const u8 gSaveFailedClockGfx[] = INCBIN_U8("graphics/misc/clock_small.4bpp.lz");
+
+static void CB2_SaveFailedScreen(void);
+static void CB2_WipeSave(void);
+static void CB2_GameplayCannotBeContinued(void);
+static void CB2_FadeAndReturnToTitleScreen(void);
+static void CB2_ReturnToTitleScreen(void);
+static void VBlankCB_UpdateClockGraphics(void);
+static bool8 VerifySectorWipe(u16 sector);
+static bool8 WipeSectors(u32);
+
+// although this is a general text printer, it's only used in this file.
+static void SaveFailedScreenTextPrint(u8 *text, u8 var1, u8 var2)
+{
+ struct TextColor color;
+
+ color.fgColor = 0;
+ color.bgColor = 15;
+ color.shadowColor = 3;
+ AddTextPrinterParametrized2(gSaveFailedWindowIds[TEXT_WIN_ID], 1, var1 * 8, var2 * 8 + 1, 0, 0, &color, 0, text);
+}
+
+void DoSaveFailedScreen(u8 saveType)
+{
+ SetMainCallback2(CB2_SaveFailedScreen);
+ gSaveFailedType = saveType;
+ gSaveFailedClockInfo[CLOCK_RUNNING] = FALSE;
+ gSaveFailedClockInfo[DEBUG_TIMER] = 0;
+ gSaveFailedWindowIds[TEXT_WIN_ID] = 0;
+ gSaveFailedWindowIds[CLOCK_WIN_ID] = 0;
+}
+
+static void VBlankCB(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_SaveFailedScreen(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ // how come this doesnt use the Dma manager?
+ DmaFill16(3, 0, VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, OAM, OAM_SIZE);
+ DmaFill16(3, 0, PLTT, PLTT_SIZE);
+ LZ77UnCompVram(gBirchHelpGfx, (void *)VRAM);
+ LZ77UnCompVram(gBirchBagTilemap, (void *)(VRAM + 0x7000));
+ LZ77UnCompVram(gBirchGrassTilemap, (void *)(VRAM + 0x7800));
+ LZ77UnCompVram(gSaveFailedClockGfx, (void *)(VRAM + 0x10020));
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_085EFD88, 3);
+ SetBgTilemapBuffer(0, (void *)&gDecompressionBuffer[0x2000]);
+ CpuFill32(0, &gDecompressionBuffer[0x2000], 0x800);
+ LoadBgTiles(0, gUnknown_0850E87C, 0x120, 0x214);
+ InitWindows(gUnknown_085EFD94);
+ // AddWindowWithoutTileMap returns a u16/integer, but the info is clobbered into a u8 here resulting in lost info. Bug?
+ gSaveFailedWindowIds[TEXT_WIN_ID] = AddWindowWithoutTileMap(gUnknown_085EFD9C);
+ SetWindowAttribute(gSaveFailedWindowIds[TEXT_WIN_ID], 7, (u32)&gDecompressionBuffer[0x2800]);
+ gSaveFailedWindowIds[CLOCK_WIN_ID] = AddWindowWithoutTileMap(gUnknown_085EFDA4);
+ SetWindowAttribute(gSaveFailedWindowIds[CLOCK_WIN_ID], 7, (u32)&gDecompressionBuffer[0x3D00]);
+ DeactivateAllTextPrinters();
+ ResetSpriteData();
+ ResetTasks();
+ ResetPaletteFade();
+ LoadPalette(gBirchBagGrassPal, 0, 0x40);
+ LoadPalette(gSaveFailedClockPal, 0x100, 0x20);
+ LoadPalette(gUnknown_0850FEFC, 0xE0, 0x20);
+ LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
+ SetWindowBorderStyle(gSaveFailedWindowIds[TEXT_WIN_ID], FALSE, 0x214, 0xE);
+ SetWindowBorderStyle(gSaveFailedWindowIds[CLOCK_WIN_ID], FALSE, 0x214, 0xE);
+ FillWindowPixelBuffer(gSaveFailedWindowIds[CLOCK_WIN_ID], 0x11); // backwards?
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ CopyWindowToVram(gSaveFailedWindowIds[CLOCK_WIN_ID], 2); // again?
+ CopyWindowToVram(gSaveFailedWindowIds[TEXT_WIN_ID], 1);
+ SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ EnableInterrupts(1);
+ SetVBlankCallback(VBlankCB);
+ SetGpuReg(0, 0x1040);
+ ShowBg(0);
+ ShowBg(2);
+ ShowBg(3);
+ gMain.state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ SetMainCallback2(CB2_WipeSave);
+ SetVBlankCallback(VBlankCB_UpdateClockGraphics);
+ }
+ break;
+ }
+}
+
+static void CB2_WipeSave(void)
+{
+ u8 wipeTries = 0;
+
+ gSaveFailedClockInfo[CLOCK_RUNNING] = TRUE;
+
+ while (gDamagedSaveSectors != 0 && wipeTries < 3)
+ {
+ if (WipeSectors(gDamagedSaveSectors) != FALSE)
+ {
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0);
+ SetMainCallback2(CB2_GameplayCannotBeContinued);
+ return;
+ }
+
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ SaveFailedScreenTextPrint(gText_CheckCompleted, 1, 0);
+ HandleSavingData(gSaveFailedType);
+
+ if (gDamagedSaveSectors != 0)
+ {
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ SaveFailedScreenTextPrint(gText_SaveFailedCheckingBackup, 1, 0);
+ }
+
+ wipeTries++;
+ }
+
+ if (wipeTries == 3)
+ {
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ SaveFailedScreenTextPrint(gText_BackupMemoryDamaged, 1, 0);
+ }
+ else
+ {
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+
+ if (gGameContinueCallback == NULL)
+ SaveFailedScreenTextPrint(gText_SaveCompleteGameCannotContinue, 1, 0);
+ else
+ SaveFailedScreenTextPrint(gText_SaveCompletePressA, 1, 0);
+ }
+
+ SetMainCallback2(CB2_FadeAndReturnToTitleScreen);
+}
+
+static void CB2_GameplayCannotBeContinued(void)
+{
+ gSaveFailedClockInfo[CLOCK_RUNNING] = FALSE;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ FillWindowPixelBuffer(gSaveFailedWindowIds[TEXT_WIN_ID], 0x11);
+ SaveFailedScreenTextPrint(gText_GamePlayCannotBeContinued, 1, 0);
+ SetVBlankCallback(VBlankCB);
+ SetMainCallback2(CB2_FadeAndReturnToTitleScreen);
+ }
+}
+
+static void CB2_FadeAndReturnToTitleScreen(void)
+{
+ gSaveFailedClockInfo[CLOCK_RUNNING] = FALSE;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ SetVBlankCallback(VBlankCB);
+ SetMainCallback2(CB2_ReturnToTitleScreen);
+ }
+}
+
+static void CB2_ReturnToTitleScreen(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ if (gGameContinueCallback == NULL) // no callback exists, so do a soft reset.
+ {
+ DoSoftReset();
+ }
+ else
+ {
+ SetMainCallback2((MainCallback)gGameContinueCallback);
+ gGameContinueCallback = NULL;
+ }
+ }
+}
+
+static void VBlankCB_UpdateClockGraphics(void)
+{
+ unsigned int n = (gMain.vblankCounter2 >> 3) & 7;
+
+ gMain.oamBuffer[0] = sClockOamData;
+ gMain.oamBuffer[0].x = 112;
+ gMain.oamBuffer[0].y = (CLOCK_WIN_TOP + 1) * 8;;
+
+ if (gSaveFailedClockInfo[CLOCK_RUNNING] != FALSE)
+ {
+ gMain.oamBuffer[0].tileNum = sClockFrames[n][0];
+ gMain.oamBuffer[0].matrixNum = (sClockFrames[n][2] << 4) | (sClockFrames[n][1] << 3);
+ }
+ else
+ {
+ gMain.oamBuffer[0].tileNum = 1;
+ }
+
+ CpuFastCopy(gMain.oamBuffer, (void *)OAM, 4);
+
+ if (gSaveFailedClockInfo[DEBUG_TIMER])
+ gSaveFailedClockInfo[DEBUG_TIMER]--;
+}
+
+static bool8 VerifySectorWipe(u16 sector)
+{
+ u32 *ptr = (u32 *)&gSaveDataBuffer;
+ u16 i;
+
+ ReadFlash(sector, 0, (u8 *)ptr, 4096);
+
+ for (i = 0; i < 0x400; i++, ptr++)
+ if (*ptr)
+ return TRUE;
+
+ return FALSE;
+}
+
+static bool8 WipeSector(u16 sector)
+{
+ u16 i, j;
+ bool8 failed = TRUE;
+
+ for (i = 0; failed && i < 130; i++)
+ {
+ for (j = 0; j < 0x1000; j++)
+ ProgramFlashByte(sector, j, 0);
+
+ failed = VerifySectorWipe(sector);
+ }
+
+ return failed;
+}
+
+static bool8 WipeSectors(u32 sectorBits)
+{
+ u16 i;
+
+ for (i = 0; i < 0x20; i++)
+ if ((sectorBits & (1 << i)) && !WipeSector(i))
+ sectorBits &= ~(1 << i);
+
+ if (sectorBits == 0)
+ return FALSE;
+ else
+ return TRUE;
+}
diff --git a/src/save_location.c b/src/save_location.c
new file mode 100755
index 000000000..61a5fd30d
--- /dev/null
+++ b/src/save_location.c
@@ -0,0 +1,146 @@
+#include "global.h"
+#include "save_location.h"
+#include "map_constants.h"
+
+// used to make the list defines a little less ugly.
+#define MAP(name) ((MAP_GROUP_##name << 8) + (MAP_ID_##name))
+
+// specialSaveWarp flags
+#define POKECENTER_SAVEWARP (1 << 1)
+#define LOBBY_SAVEWARP (1 << 2)
+#define UNK_SPECIAL_SAVE_WARP_FLAG_3 (1 << 3)
+
+static bool32 IsCurMapInLocationList(const u16 *list)
+{
+ u16 locSum = (gSaveBlock1Ptr->location.mapGroup << 8) + (gSaveBlock1Ptr->location.mapNum);
+
+ // im sure it was written a different way, but for the love of christ I cant figure out how to write it different where it still matches.
+ if (*list != 0xFFFF)
+ {
+ u16 termValue = 0xFFFF;
+ const u16 *localList;
+ for (localList = list; *localList != termValue; localList++)
+ if (*localList == locSum)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+// TODO: Not require a packed u16 array for these lists
+static const u16 sSaveLocationPokeCenterList[] =
+{
+ MAP(OLDALE_TOWN_POKEMON_CENTER_1F),
+ MAP(OLDALE_TOWN_POKEMON_CENTER_2F),
+ MAP(DEWFORD_TOWN_POKEMON_CENTER_1F),
+ MAP(DEWFORD_TOWN_POKEMON_CENTER_2F),
+ MAP(LAVARIDGE_TOWN_POKEMON_CENTER_1F),
+ MAP(LAVARIDGE_TOWN_POKEMON_CENTER_2F),
+ MAP(FALLARBOR_TOWN_POKEMON_CENTER_1F),
+ MAP(FALLARBOR_TOWN_POKEMON_CENTER_2F),
+ MAP(VERDANTURF_TOWN_POKEMON_CENTER_1F),
+ MAP(VERDANTURF_TOWN_POKEMON_CENTER_2F),
+ MAP(PACIFIDLOG_TOWN_POKEMON_CENTER_1F),
+ MAP(PACIFIDLOG_TOWN_POKEMON_CENTER_2F),
+ MAP(PETALBURG_CITY_POKEMON_CENTER_1F),
+ MAP(PETALBURG_CITY_POKEMON_CENTER_2F),
+ MAP(SLATEPORT_CITY_POKEMON_CENTER_1F),
+ MAP(SLATEPORT_CITY_POKEMON_CENTER_2F),
+ MAP(MAUVILLE_CITY_POKEMON_CENTER_1F),
+ MAP(MAUVILLE_CITY_POKEMON_CENTER_2F),
+ MAP(RUSTBORO_CITY_POKEMON_CENTER_1F),
+ MAP(RUSTBORO_CITY_POKEMON_CENTER_2F),
+ MAP(FORTREE_CITY_POKEMON_CENTER_1F),
+ MAP(FORTREE_CITY_POKEMON_CENTER_2F),
+ MAP(LILYCOVE_CITY_POKEMON_CENTER_1F),
+ MAP(LILYCOVE_CITY_POKEMON_CENTER_2F),
+ MAP(MOSSDEEP_CITY_POKEMON_CENTER_1F),
+ MAP(MOSSDEEP_CITY_POKEMON_CENTER_2F),
+ MAP(SOOTOPOLIS_CITY_POKEMON_CENTER_1F),
+ MAP(SOOTOPOLIS_CITY_POKEMON_CENTER_2F),
+ MAP(EVER_GRANDE_CITY_POKEMON_CENTER_1F),
+ MAP(EVER_GRANDE_CITY_POKEMON_CENTER_2F),
+ MAP(EVER_GRANDE_CITY_POKEMON_LEAGUE_1F),
+ MAP(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F),
+ MAP(BATTLE_FRONTIER_POKEMON_CENTER_1F),
+ MAP(BATTLE_FRONTIER_POKEMON_CENTER_2F),
+ MAP(SINGLE_BATTLE_COLOSSEUM),
+ MAP(TRADE_CENTER),
+ MAP(RECORD_CORNER),
+ MAP(DOUBLE_BATTLE_COLOSSEUM),
+ 0xFFFF,
+};
+
+static bool32 IsCurMapPokeCenter(void)
+{
+ return IsCurMapInLocationList(sSaveLocationPokeCenterList);
+}
+
+static const u16 sSaveLocationReloadLocList[] = // there's only 1 location, and it's presumed its for the save reload feature for battle tower
+{
+ MAP(BATTLE_TOWER_LOBBY),
+ 0xFFFF,
+};
+
+static bool32 IsCurMapReloadLocation(void)
+{
+ return IsCurMapInLocationList(sSaveLocationReloadLocList);
+}
+
+// nulled out list. unknown what this would have been
+static const u16 sUnknown_0861440E[] =
+{
+ 0xFFFF,
+};
+
+bool32 sub_81AFCEC(void)
+{
+ return IsCurMapInLocationList(sUnknown_0861440E);
+}
+
+static void TrySetPokeCenterWarpStatus(void)
+{
+ if (IsCurMapPokeCenter() == FALSE)
+ gSaveBlock2Ptr->specialSaveWarp &= ~(POKECENTER_SAVEWARP);
+ else
+ gSaveBlock2Ptr->specialSaveWarp |= POKECENTER_SAVEWARP;
+}
+
+static void TrySetReloadWarpStatus(void)
+{
+ if (!IsCurMapReloadLocation())
+ gSaveBlock2Ptr->specialSaveWarp &= ~(LOBBY_SAVEWARP);
+ else
+ gSaveBlock2Ptr->specialSaveWarp |= LOBBY_SAVEWARP;
+}
+
+// this function definitely sets a warp status, but because the list is empty, it's unknown what this does yet.
+static void sub_81AFD5C(void)
+{
+ if (!sub_81AFCEC())
+ gSaveBlock2Ptr->specialSaveWarp &= ~(UNK_SPECIAL_SAVE_WARP_FLAG_3);
+ else
+ gSaveBlock2Ptr->specialSaveWarp |= UNK_SPECIAL_SAVE_WARP_FLAG_3;
+}
+
+void TrySetMapSaveWarpStatus(void)
+{
+ TrySetPokeCenterWarpStatus();
+ TrySetReloadWarpStatus();
+ sub_81AFD5C();
+}
+
+void sub_81AFDA0(void)
+{
+ gSaveBlock2Ptr->field_A8 |= 0x8000;
+ gSaveBlock2Ptr->field_A8 |= 0x1;
+ gSaveBlock2Ptr->field_A8 |= 0x2;
+ gSaveBlock2Ptr->field_A8 |= 0x4;
+ gSaveBlock2Ptr->field_A8 |= 0x10;
+ gSaveBlock2Ptr->field_A8 |= 0x20;
+ gSaveBlock2Ptr->field_A8 |= 0x8;
+}
+
+void sub_81AFDD0(void)
+{
+ gSaveBlock2Ptr->specialSaveWarp |= 0x80;
+}
diff --git a/src/scrcmd.c b/src/scrcmd.c
new file mode 100644
index 000000000..af314609c
--- /dev/null
+++ b/src/scrcmd.c
@@ -0,0 +1,2452 @@
+#include "global.h"
+#include "battle_frontier_2.h"
+#include "battle_setup.h"
+#include "berry.h"
+#include "clock.h"
+#include "coins.h"
+#include "contest_link_80F57C4.h"
+#include "contest_painting.h"
+#include "data2.h"
+#include "decoration.h"
+#include "decoration_inventory.h"
+#include "event_data.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_message_box.h"
+#include "field_player_avatar.h"
+#include "field_screen_effect.h"
+#include "field_specials.h"
+#include "field_tasks.h"
+#include "field_weather.h"
+#include "fieldmap.h"
+#include "item.h"
+#include "lilycove_lady.h"
+#include "main.h"
+#include "map_obj_lock.h"
+#include "menu.h"
+#include "money.h"
+#include "mystery_event_script.h"
+#include "new_menu_helpers.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pokemon_3.h"
+#include "pokemon_storage_system.h"
+#include "rng.h"
+#include "overworld.h"
+#include "rtc.h"
+#include "script.h"
+#include "script_menu.h"
+#include "script_movement.h"
+#include "script_pokemon_80F8.h"
+#include "script_pokemon_81B9.h"
+#include "shop.h"
+#include "slot_machine.h"
+#include "sound.h"
+#include "string_util.h"
+#include "text.h"
+#include "text_window.h"
+#include "trainer_see.h"
+#include "tv.h"
+#include "window.h"
+
+typedef u16 (*SpecialFunc)(void);
+typedef void (*NativeFunc)(void);
+
+extern u32 gUnknown_020375C0;
+
+static EWRAM_DATA u32 gUnknown_020375C4 = 0;
+static EWRAM_DATA u16 sPauseCounter = 0;
+static EWRAM_DATA u16 sMovingNpcId = 0;
+static EWRAM_DATA u16 sMovingNpcMapBank = 0;
+static EWRAM_DATA u16 sMovingNpcMapId = 0;
+static EWRAM_DATA u16 sFieldEffectScriptId = 0;
+
+extern u16 gSpecialVar_0x8000;
+extern u16 gSpecialVar_0x8001;
+extern u16 gSpecialVar_0x8002;
+extern u16 gSpecialVar_0x8004;
+
+extern u16 gScriptResult;
+
+extern u16 gScriptContestCategory;
+
+IWRAM_DATA u8 gUnknown_03000F30;
+
+extern const SpecialFunc gSpecials[];
+extern const u8 *gStdScripts[];
+extern const u8 *gStdScripts_End[];
+
+void sub_809BDB4(void);
+
+// This is defined in here so the optimizer can't see its value when compiling
+// script.c.
+void * const gNullScriptPtr = NULL;
+
+static const u8 sScriptConditionTable[6][3] =
+{
+// < = >
+ 1, 0, 0, // <
+ 0, 1, 0, // =
+ 0, 0, 1, // >
+ 1, 1, 0, // <=
+ 0, 1, 1, // >=
+ 1, 0, 1, // !=
+};
+
+static u8 * const sScriptStringVars[] =
+{
+ gStringVar1,
+ gStringVar2,
+ gStringVar3,
+};
+
+bool8 ScrCmd_nop(struct ScriptContext *ctx)
+{
+ return FALSE;
+}
+
+bool8 ScrCmd_nop1(struct ScriptContext *ctx)
+{
+ return FALSE;
+}
+
+bool8 ScrCmd_end(struct ScriptContext *ctx)
+{
+ StopScript(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_gotonative(struct ScriptContext *ctx)
+{
+ bool8 (*addr)(void) = (bool8 (*)(void))ScriptReadWord(ctx);
+
+ SetupNativeScript(ctx, addr);
+ return TRUE;
+}
+
+bool8 ScrCmd_special(struct ScriptContext *ctx)
+{
+ u16 index = ScriptReadHalfword(ctx);
+
+ gSpecials[index]();
+ return FALSE;
+}
+
+bool8 ScrCmd_specialvar(struct ScriptContext *ctx)
+{
+ u16 *var = GetVarPointer(ScriptReadHalfword(ctx));
+
+ *var = gSpecials[ScriptReadHalfword(ctx)]();
+ return FALSE;
+}
+
+bool8 ScrCmd_callnative(struct ScriptContext *ctx)
+{
+ NativeFunc func = (NativeFunc)ScriptReadWord(ctx);
+
+ func();
+ return FALSE;
+}
+
+bool8 ScrCmd_waitstate(struct ScriptContext *ctx)
+{
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_goto(struct ScriptContext *ctx)
+{
+ const u8 *ptr = (const u8 *)ScriptReadWord(ctx);
+
+ ScriptJump(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_return(struct ScriptContext *ctx)
+{
+ ScriptReturn(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_call(struct ScriptContext *ctx)
+{
+ const u8 *ptr = (const u8 *)ScriptReadWord(ctx);
+
+ ScriptCall(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_goto_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ const u8 *ptr = (const u8 *)ScriptReadWord(ctx);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ ScriptJump(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_call_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ const u8 *ptr = (const u8 *)ScriptReadWord(ctx);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ ScriptCall(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_setvaddress(struct ScriptContext *ctx)
+{
+ u32 addr1 = (u32)ctx->scriptPtr - 1;
+ u32 addr2 = ScriptReadWord(ctx);
+
+ gUnknown_020375C4 = addr2 - addr1;
+ return FALSE;
+}
+
+bool8 ScrCmd_vgoto(struct ScriptContext *ctx)
+{
+ u32 addr = ScriptReadWord(ctx);
+
+ ScriptJump(ctx, (u8 *)(addr - gUnknown_020375C4));
+ return FALSE;
+}
+
+bool8 ScrCmd_vcall(struct ScriptContext *ctx)
+{
+ u32 addr = ScriptReadWord(ctx);
+
+ ScriptCall(ctx, (u8 *)(addr - gUnknown_020375C4));
+ return FALSE;
+}
+
+bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ const u8 *ptr = (const u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ ScriptJump(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_vcall_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ const u8 *ptr = (const u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ ScriptCall(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_gotostd(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+ const u8 **ptr = &gStdScripts[index];
+
+ if (ptr < gStdScripts_End)
+ ScriptJump(ctx, *ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_callstd(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+ const u8 **ptr = &gStdScripts[index];
+
+ if (ptr < gStdScripts_End)
+ ScriptCall(ctx, *ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_gotostd_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ u8 index = ScriptReadByte(ctx);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ {
+ const u8 **ptr = &gStdScripts[index];
+ if (ptr < gStdScripts_End)
+ ScriptJump(ctx, *ptr);
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_callstd_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ u8 index = ScriptReadByte(ctx);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ {
+ const u8 **ptr = &gStdScripts[index];
+ if (ptr < gStdScripts_End)
+ ScriptCall(ctx, *ptr);
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_gotoram(struct ScriptContext *ctx)
+{
+ ScriptJump(ctx, (const u8 *)gUnknown_020375C0);
+ return FALSE;
+}
+
+bool8 ScrCmd_killscript(struct ScriptContext *ctx)
+{
+ ClearRamScript();
+ StopScript(ctx);
+ return TRUE;
+}
+
+bool8 ScrCmd_setmysteryeventstatus(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+
+ SetMysteryEventScriptStatus(value);
+ return FALSE;
+}
+
+bool8 ScrCmd_loadword(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+
+ ctx->data[index] = ScriptReadWord(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_loadbytefromaddr(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+
+ ctx->data[index] = *(const u8 *)ScriptReadWord(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_writebytetoaddr(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+
+ *(u8 *)ScriptReadWord(ctx) = value;
+ return FALSE;
+}
+
+bool8 ScrCmd_loadbyte(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+
+ ctx->data[index] = ScriptReadByte(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_setptrbyte(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+
+ *(u8 *)ScriptReadWord(ctx) = ctx->data[index];
+ return FALSE;
+}
+
+bool8 ScrCmd_copylocal(struct ScriptContext *ctx)
+{
+ u8 destIndex = ScriptReadByte(ctx);
+ u8 srcIndex = ScriptReadByte(ctx);
+
+ ctx->data[destIndex] = ctx->data[srcIndex];
+ return FALSE;
+}
+
+bool8 ScrCmd_copybyte(struct ScriptContext *ctx)
+{
+ u8 *ptr = (u8 *)ScriptReadWord(ctx);
+ *ptr = *(const u8 *)ScriptReadWord(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_setvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr = ScriptReadHalfword(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_copyvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr = *GetVarPointer(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_setorcopyvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr = VarGet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+u8 compare_012(u16 a1, u16 a2)
+{
+ if (a1 < a2)
+ return 0;
+ if (a1 == a2)
+ return 1;
+ return 2;
+}
+
+// comparelocaltolocal
+bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx)
+{
+ const u8 value1 = ctx->data[ScriptReadByte(ctx)];
+ const u8 value2 = ctx->data[ScriptReadByte(ctx)];
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+// comparelocaltoimm
+bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx)
+{
+ const u8 value1 = ctx->data[ScriptReadByte(ctx)];
+ const u8 value2 = ScriptReadByte(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx)
+{
+ const u8 value1 = ctx->data[ScriptReadByte(ctx)];
+ const u8 value2 = *(const u8 *)ScriptReadWord(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx)
+{
+ const u8 value1 = *(const u8 *)ScriptReadWord(ctx);
+ const u8 value2 = ctx->data[ScriptReadByte(ctx)];
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx)
+{
+ const u8 value1 = *(const u8 *)ScriptReadWord(ctx);
+ const u8 value2 = ScriptReadByte(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx)
+{
+ const u8 value1 = *(const u8 *)ScriptReadWord(ctx);
+ const u8 value2 = *(const u8 *)ScriptReadWord(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx)
+{
+ const u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx));
+ const u16 value2 = ScriptReadHalfword(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx)
+{
+ const u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx));
+ const u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx));
+
+ ctx->comparisonResult = compare_012(*ptr1, *ptr2);
+ return FALSE;
+}
+
+bool8 ScrCmd_addvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr += ScriptReadHalfword(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_subvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr -= VarGet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_random(struct ScriptContext *ctx)
+{
+ u16 max = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = Random() % max;
+ return FALSE;
+}
+
+bool8 ScrCmd_additem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u32 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = AddBagItem(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_removeitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u32 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = RemoveBagItem(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u32 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = CheckBagHasSpace(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u32 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = CheckBagHasItem(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = GetPocketByItemId(itemId);
+ return FALSE;
+}
+
+bool8 ScrCmd_addpcitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u16 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = AddPCItem(itemId, quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u16 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = CheckPCHasItem(itemId, quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_adddecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = DecorationAdd(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_removedecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = DecorationRemove(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkdecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = DecorationCheckSpace(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_hasdecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = CheckHasDecoration(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_setflag(struct ScriptContext *ctx)
+{
+ FlagSet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_clearflag(struct ScriptContext *ctx)
+{
+ FlagClear(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_checkflag(struct ScriptContext *ctx)
+{
+ ctx->comparisonResult = FlagGet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx)
+{
+ IncrementGameStat(ScriptReadByte(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_animdarklevel(struct ScriptContext *ctx)
+{
+ sub_80B009C(ScriptReadByte(ctx));
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_setdarklevel(struct ScriptContext *ctx)
+{
+ u16 flashLevel = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetFlashLevel(flashLevel);
+ return FALSE;
+}
+
+static bool8 IsPaletteNotActive(void)
+{
+ if (!gPaletteFade.active)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_fadescreen(struct ScriptContext *ctx)
+{
+ fade_screen(ScriptReadByte(ctx), 0);
+ SetupNativeScript(ctx, IsPaletteNotActive);
+ return TRUE;
+}
+
+bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx)
+{
+ u8 mode = ScriptReadByte(ctx);
+ u8 delay = ScriptReadByte(ctx);
+
+ fade_screen(mode, delay);
+ SetupNativeScript(ctx, IsPaletteNotActive);
+ return TRUE;
+}
+
+bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx)
+{
+ u8 mode = ScriptReadByte(ctx);
+
+ switch (mode)
+ {
+ case 1:
+ default:
+ CpuCopy32(gPlttBufferUnfaded, gPaletteDecompressionBuffer, PLTT_DECOMP_BUFFER_SIZE);
+ fade_screen(mode, 0);
+ break;
+ case 0:
+ case 2:
+ CpuCopy32(gPaletteDecompressionBuffer, gPlttBufferUnfaded, PLTT_DECOMP_BUFFER_SIZE);
+ fade_screen(mode, 0);
+ break;
+ }
+
+ SetupNativeScript(ctx, IsPaletteNotActive);
+ return TRUE;
+}
+
+static bool8 RunPauseTimer(void)
+{
+ sPauseCounter--;
+
+ if (sPauseCounter == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_delay(struct ScriptContext *ctx)
+{
+ sPauseCounter = ScriptReadHalfword(ctx);
+ SetupNativeScript(ctx, RunPauseTimer);
+ return TRUE;
+}
+
+bool8 ScrCmd_initclock(struct ScriptContext *ctx)
+{
+ u8 hour = VarGet(ScriptReadHalfword(ctx));
+ u8 minute = VarGet(ScriptReadHalfword(ctx));
+
+ RtcInitLocalTimeOffset(hour, minute);
+ return FALSE;
+}
+
+bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx)
+{
+ DoTimeBasedEvents();
+ return FALSE;
+}
+
+bool8 ScrCmd_gettime(struct ScriptContext *ctx)
+{
+ RtcCalcLocalTime();
+ gSpecialVar_0x8000 = gLocalTime.hours;
+ gSpecialVar_0x8001 = gLocalTime.minutes;
+ gSpecialVar_0x8002 = gLocalTime.seconds;
+ return FALSE;
+}
+
+bool8 ScrCmd_setweather(struct ScriptContext *ctx)
+{
+ u16 weather = VarGet(ScriptReadHalfword(ctx));
+
+ SetSav1Weather(weather);
+ return FALSE;
+}
+
+bool8 ScrCmd_resetweather(struct ScriptContext *ctx)
+{
+ sub_80AEDBC();
+ return FALSE;
+}
+
+bool8 ScrCmd_doweather(struct ScriptContext *ctx)
+{
+ DoCurrentWeather();
+ return FALSE;
+}
+
+bool8 ScrCmd_tileeffect(struct ScriptContext *ctx)
+{
+ ActivatePerStepCallback(ScriptReadByte(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_setmaplayoutindex(struct ScriptContext *ctx)
+{
+ u16 value = VarGet(ScriptReadHalfword(ctx));
+
+ sub_8085524(value);
+ return FALSE;
+}
+
+bool8 ScrCmd_warp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF734();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpsilent(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sp13E_warp_to_last_warp();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpdoor(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF7D0();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warphole(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u16 x;
+ u16 y;
+
+ PlayerGetDestCoords(&x, &y);
+ if (mapGroup == 0xFF && mapNum == 0xFF)
+ sub_8084EBC(x - 7, y - 7);
+ else
+ Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7);
+ sp13F_fall_to_last_warp();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpteleport(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF848();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpD7(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF87C();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_setwarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setdynamicwarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ saved_warp2_set_2(0, mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ sub_8084E2C(mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setholewarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ sub_8084E80(mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setescapewarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ sub_8084DD4(mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx)
+{
+ u16 *pX = GetVarPointer(ScriptReadHalfword(ctx));
+ u16 *pY = GetVarPointer(ScriptReadHalfword(ctx));
+
+ *pX = gSaveBlock1Ptr->pos.x;
+ *pY = gSaveBlock1Ptr->pos.y;
+ return FALSE;
+}
+
+bool8 ScrCmd_countpokemon(struct ScriptContext *ctx)
+{
+ gScriptResult = CalculatePlayerPartyCount();
+ return FALSE;
+}
+
+bool8 ScrCmd_playse(struct ScriptContext *ctx)
+{
+ PlaySE(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+static bool8 WaitForSoundEffectFinish(void)
+{
+ if (!IsSEPlaying())
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_waitse(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, WaitForSoundEffectFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_playfanfare(struct ScriptContext *ctx)
+{
+ PlayFanfare(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+static bool8 WaitForFanfareFinish(void)
+{
+ return IsFanfareTaskInactive();
+}
+
+bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, WaitForFanfareFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_playbgm(struct ScriptContext *ctx)
+{
+ u16 songId = ScriptReadHalfword(ctx);
+ bool8 val = ScriptReadByte(ctx);
+
+ if (val == TRUE)
+ Overworld_SetSavedMusic(songId);
+ PlayNewMapMusic(songId);
+ return FALSE;
+}
+
+bool8 ScrCmd_savebgm(struct ScriptContext *ctx)
+{
+ Overworld_SetSavedMusic(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_fadedefaultbgm(struct ScriptContext *ctx)
+{
+ Overworld_ChangeMusicToDefault();
+ return FALSE;
+}
+
+bool8 ScrCmd_fadenewbgm(struct ScriptContext *ctx)
+{
+ Overworld_ChangeMusicTo(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_fadeoutbgm(struct ScriptContext *ctx)
+{
+ u8 speed = ScriptReadByte(ctx);
+
+ if (speed != 0)
+ FadeOutBGMTemporarily(4 * speed);
+ else
+ FadeOutBGMTemporarily(4);
+ SetupNativeScript(ctx, IsBGMPausedOrStopped);
+ return TRUE;
+}
+
+bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx)
+{
+ u8 speed = ScriptReadByte(ctx);
+
+ if (speed != 0)
+ FadeInBGM(4 * speed);
+ else
+ FadeInBGM(4);
+ return FALSE;
+}
+
+bool8 ScrCmd_applymovement(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ const void *movementScript = (const void *)ScriptReadWord(ctx);
+
+ ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript);
+ sMovingNpcId = localId;
+ return FALSE;
+}
+
+bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ const void *movementScript = (const void *)ScriptReadWord(ctx);
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript);
+ sMovingNpcId = localId;
+ return FALSE;
+}
+
+static bool8 WaitForMovementFinish(void)
+{
+ return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank);
+}
+
+bool8 ScrCmd_waitmovement(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+
+ if (localId != 0)
+ sMovingNpcId = localId;
+ sMovingNpcMapBank = gSaveBlock1Ptr->location.mapGroup;
+ sMovingNpcMapId = gSaveBlock1Ptr->location.mapNum;
+ SetupNativeScript(ctx, WaitForMovementFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapBank;
+ u8 mapId;
+
+ if (localId != 0)
+ sMovingNpcId = localId;
+ mapBank = ScriptReadByte(ctx);
+ mapId = ScriptReadByte(ctx);
+ sMovingNpcMapBank = mapBank;
+ sMovingNpcMapId = mapId;
+ SetupNativeScript(ctx, WaitForMovementFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_removeobject(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+
+ RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_addobject(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(ScriptReadHalfword(ctx));
+
+ show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_addobject_at(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ show_sprite(objectId, mapNum, mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ sub_808EBA8(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetMapObjTemplateCoords(localId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+
+ sub_808F254(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_showobject(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 0);
+ return FALSE;
+}
+
+bool8 ScrCmd_hideobject(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 1);
+ return FALSE;
+}
+
+bool8 ScrCmd_setobjectpriority(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 priority = ScriptReadByte(ctx);
+
+ sub_808E78C(localId, mapNum, mapGroup, priority + 83);
+ return FALSE;
+}
+
+bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ sub_808E7E4(localId, mapNum, mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_faceplayer(struct ScriptContext *ctx)
+{
+ if (gMapObjects[gSelectedMapObject].active)
+ {
+ FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject],
+ player_get_direction_lower_nybble());
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_turnobject(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 direction = ScriptReadByte(ctx);
+
+ FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, direction);
+ return FALSE;
+}
+
+bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 movementType = ScriptReadByte(ctx);
+
+ Overworld_SetMapObjTemplateMovementType(localId, movementType);
+ return FALSE;
+}
+
+bool8 ScrCmd_createvobject(struct ScriptContext *ctx)
+{
+ u8 graphicsId = ScriptReadByte(ctx);
+ u8 v2 = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u32 y = VarGet(ScriptReadHalfword(ctx));
+ u8 elevation = ScriptReadByte(ctx);
+ u8 direction = ScriptReadByte(ctx);
+
+ sprite_new(graphicsId, v2, x, y, elevation, direction);
+ return FALSE;
+}
+
+bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
+{
+ u8 v1 = ScriptReadByte(ctx);
+ u8 direction = ScriptReadByte(ctx);
+
+ sub_8097B78(v1, direction);
+ return FALSE;
+}
+
+bool8 ScrCmd_lockall(struct ScriptContext *ctx)
+{
+ if (is_c1_link_related_active())
+ {
+ return FALSE;
+ }
+ else
+ {
+ ScriptFreezeMapObjects();
+ SetupNativeScript(ctx, sub_80983C4);
+ return TRUE;
+ }
+}
+
+bool8 ScrCmd_lock(struct ScriptContext *ctx)
+{
+ if (is_c1_link_related_active())
+ {
+ return FALSE;
+ }
+ else
+ {
+ if (gMapObjects[gSelectedMapObject].active)
+ {
+ LockSelectedMapObject();
+ SetupNativeScript(ctx, sub_809847C);
+ }
+ else
+ {
+ ScriptFreezeMapObjects();
+ SetupNativeScript(ctx, sub_80983C4);
+ }
+ return TRUE;
+ }
+}
+
+bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
+{
+ u8 objectId;
+
+ HideFieldMessageBox();
+ objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ sub_80D338C();
+ UnfreezeMapObjects();
+ return FALSE;
+}
+
+bool8 ScrCmd_release(struct ScriptContext *ctx)
+{
+ u8 objectId;
+
+ HideFieldMessageBox();
+ if (gMapObjects[gSelectedMapObject].active)
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]);
+ objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ sub_80D338C();
+ UnfreezeMapObjects();
+ return FALSE;
+}
+
+bool8 ScrCmd_message(struct ScriptContext *ctx)
+{
+ const u8 *msg = (const u8 *)ScriptReadWord(ctx);
+
+ if (msg == NULL)
+ msg = (const u8 *)ctx->data[0];
+ ShowFieldMessage(msg);
+ return FALSE;
+}
+
+bool8 ScrCmd_pokenavcall(struct ScriptContext *ctx)
+{
+ const u8 *msg = (const u8 *)ScriptReadWord(ctx);
+
+ if (msg == NULL)
+ msg = (const u8 *)ctx->data[0];
+ sub_8098238(msg);
+ return FALSE;
+}
+
+bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx)
+{
+ const u8 *msg = (const u8 *)ScriptReadWord(ctx);
+
+ if (msg == NULL)
+ msg = (const u8 *)ctx->data[0];
+ gTextFlags.flag_2 = TRUE;
+ gTextFlags.flag_3 = TRUE;
+ ShowFieldAutoScrollMessage(msg);
+ return FALSE;
+}
+
+bool8 ScrCmd_cmdDB(struct ScriptContext *ctx)
+{
+ const u8 *msg = (const u8 *)ScriptReadWord(ctx);
+
+ if (msg == NULL)
+ msg = (const u8 *)ctx->data[0];
+ sub_81973A4();
+ sub_81973C4(0, 1);
+ PrintTextOnWindow(0, 1, msg, 0, 1, 0, 0);
+ return FALSE;
+}
+
+bool8 ScrCmd_waitmessage(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, IsFieldMessageBoxHidden);
+ return TRUE;
+}
+
+bool8 ScrCmd_closemessage(struct ScriptContext *ctx)
+{
+ HideFieldMessageBox();
+ return FALSE;
+}
+
+static bool8 WaitForAorBPress(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ return TRUE;
+ if (gMain.newKeys & B_BUTTON)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 ScrCmd_waitbutton(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, WaitForAorBPress);
+ return TRUE;
+}
+
+bool8 ScrCmd_yesnobox(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+
+ if (ScriptMenu_YesNo(left, top) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 ScrCmd_multichoice(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+
+ if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 defaultChoice = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+
+ if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 ScrCmd_drawbox(struct ScriptContext *ctx)
+{
+ /*u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 right = ScriptReadByte(ctx);
+ u8 bottom = ScriptReadByte(ctx);
+
+ MenuDrawTextWindow(left, top, right, bottom);*/
+ return FALSE;
+}
+
+bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 numColumns = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+
+ if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 ScrCmd_erasebox(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 right = ScriptReadByte(ctx);
+ u8 bottom = ScriptReadByte(ctx);
+
+ // MenuZeroFillWindowRect(left, top, right, bottom);
+ return FALSE;
+}
+
+bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+
+ /*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }*/
+ return FALSE;
+}
+
+bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx)
+{
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+
+ ScriptMenu_ShowPokemonPic(species, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx)
+{
+ bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc();
+
+ if (func == NULL)
+ return FALSE;
+ SetupNativeScript(ctx, func);
+ return TRUE;
+}
+
+bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx)
+{
+ u8 v1 = ScriptReadByte(ctx);
+
+ if (v1)
+ sub_812FDA8(v1);
+ ShowContestWinner();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+// Lots of math, can't figure it out.
+/*
+bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
+{
+ u8 *ptr = (u8 *)ScriptReadWord(ctx);
+ struct WindowTemplate template1;
+ struct WindowTemplate template2;
+ int i;
+ u8 width;
+ u8 height;
+ int temp1;
+ int temp2;
+ u8 x;
+ u8 y;
+
+ StringExpandPlaceholders(gStringVar4, ptr + 6);
+
+ width = GetStringWidth(6, gStringVar4, -1) / 8;
+
+ if (width > 0x1C)
+ width = 0x1C;
+
+ for (i = 0, height = 4; gStringVar4[i] != 0xFF;)
+ {
+ if (gStringVar4[i++] == 0xFE)
+ height += 3;
+ }
+
+ if (height > 0x12)
+ height = 0x12;
+
+ x = width + 2;
+ temp1 = (0x1E - x) / 2;
+ x = temp1 + 1;
+ temp1 = ((x - temp1 - 1) * 8 + 3);
+
+ y = height + 2;
+ temp2 = (0x14 - y) / 2;
+ y = temp2 + 2;
+ temp2 = ((y - temp2 - 1) * 8);
+
+ sub_8198A50(&template1, 0, x, y, width, height, 0xF, 0x1);
+ template2 = template1;
+ gUnknown_03000F30 = AddWindow(&template2);
+ sub_809882C(gUnknown_03000F30, 0x214, 0xE0);
+ sub_81973FC(gUnknown_03000F30, 0);
+ PutWindowTilemap(gUnknown_03000F30);
+ FillWindowPixelBuffer(gUnknown_03000F30, 0x11);
+ PrintTextOnWindow(gUnknown_03000F30, 6, gStringVar4, temp1, temp2, 0xFF, 0x0);
+ CopyWindowToVram(gUnknown_03000F30, 3);
+ return FALSE;
+}*/
+__attribute__((naked))
+bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
+{
+ asm("push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, #0x20\n\
+ bl ScriptReadWord\n\
+ add r1, r0, #0\n\
+ ldr r4, =gStringVar4\n\
+ add r1, #0x6\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ mov r2, #0x1\n\
+ neg r2, r2\n\
+ mov r0, #0x6\n\
+ add r1, r4, #0\n\
+ bl GetStringWidth\n\
+ lsr r0, #3\n\
+ lsl r0, #24\n\
+ lsr r7, r0, #24\n\
+ cmp r7, #0x1C\n\
+ bls _0809AE9C\n\
+ mov r7, #0x1C\n\
+_0809AE9C:\n\
+ mov r5, #0x4\n\
+ ldrb r0, [r4]\n\
+ add r2, r7, #0x2\n\
+ add r1, sp, #0x18\n\
+ mov r8, r1\n\
+ cmp r0, #0xFF\n\
+ beq _0809AEC0\n\
+ add r1, r4, #0\n\
+_0809AEAC:\n\
+ ldrb r0, [r1]\n\
+ add r1, #0x1\n\
+ cmp r0, #0xFE\n\
+ bne _0809AEBA\n\
+ add r0, r5, #0x3\n\
+ lsl r0, #24\n\
+ lsr r5, r0, #24\n\
+_0809AEBA:\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0xFF\n\
+ bne _0809AEAC\n\
+_0809AEC0:\n\
+ cmp r5, #0x12\n\
+ bls _0809AEC6\n\
+ mov r5, #0x12\n\
+_0809AEC6:\n\
+ lsl r0, r2, #24\n\
+ lsr r0, #24\n\
+ mov r2, #0x1E\n\
+ sub r2, r0\n\
+ lsr r0, r2, #31\n\
+ add r2, r0\n\
+ asr r2, #1\n\
+ lsl r2, #24\n\
+ add r0, r5, #0x2\n\
+ lsl r0, #24\n\
+ lsr r0, #24\n\
+ mov r4, #0x14\n\
+ sub r4, r0\n\
+ lsr r0, r4, #31\n\
+ add r4, r0\n\
+ asr r4, #1\n\
+ lsl r4, #24\n\
+ lsr r6, r2, #24\n\
+ mov r0, #0x80\n\
+ lsl r0, #17\n\
+ add r2, r0\n\
+ lsr r2, #24\n\
+ lsr r3, r4, #24\n\
+ mov r1, #0x80\n\
+ lsl r1, #18\n\
+ add r4, r1\n\
+ lsr r4, #24\n\
+ sub r6, r2, r6\n\
+ sub r6, #0x1\n\
+ lsl r6, #3\n\
+ add r6, #0x3\n\
+ lsl r6, #24\n\
+ lsr r6, #24\n\
+ sub r4, r3\n\
+ sub r4, #0x1\n\
+ lsl r4, #27\n\
+ lsr r4, #24\n\
+ add r3, #0x1\n\
+ lsl r3, #24\n\
+ lsr r3, #24\n\
+ str r7, [sp]\n\
+ str r5, [sp, #0x4]\n\
+ mov r0, #0xF\n\
+ str r0, [sp, #0x8]\n\
+ mov r0, #0x1\n\
+ str r0, [sp, #0xC]\n\
+ add r0, sp, #0x10\n\
+ mov r1, #0\n\
+ bl sub_8198A50\n\
+ ldr r0, [sp, #0x10]\n\
+ ldr r1, [sp, #0x14]\n\
+ str r0, [sp, #0x18]\n\
+ str r1, [sp, #0x1C]\n\
+ ldr r5, =gUnknown_03000F30\n\
+ mov r0, r8\n\
+ bl AddWindow\n\
+ strb r0, [r5]\n\
+ ldrb r0, [r5]\n\
+ mov r1, #0x85\n\
+ lsl r1, #2\n\
+ mov r2, #0xE0\n\
+ bl sub_809882C\n\
+ ldrb r0, [r5]\n\
+ mov r1, #0\n\
+ bl sub_81973FC\n\
+ ldrb r0, [r5]\n\
+ bl PutWindowTilemap\n\
+ ldrb r0, [r5]\n\
+ mov r1, #0x11\n\
+ bl FillWindowPixelBuffer\n\
+ ldrb r0, [r5]\n\
+ ldr r2, =gStringVar4\n\
+ str r4, [sp]\n\
+ mov r1, #0xFF\n\
+ str r1, [sp, #0x4]\n\
+ mov r1, #0\n\
+ str r1, [sp, #0x8]\n\
+ mov r1, #0x6\n\
+ add r3, r6, #0\n\
+ bl PrintTextOnWindow\n\
+ ldrb r0, [r5]\n\
+ mov r1, #0x3\n\
+ bl CopyWindowToVram\n\
+ mov r0, #0\n\
+ add sp, #0x20\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .pool");
+}
+
+bool8 ScrCmd_cmdDA(struct ScriptContext *ctx)
+{
+ sub_809BDB4();
+ return FALSE;
+}
+
+bool8 ScrCmd_vmessage(struct ScriptContext *ctx)
+{
+ u32 v1 = ScriptReadWord(ctx);
+
+ ShowFieldMessage((u8 *)(v1 - gUnknown_020375C4));
+ return FALSE;
+}
+
+bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], gSpeciesNames[species]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+
+ u8 *dest = sScriptStringVars[stringVarIndex];
+ u8 partyIndex = GetLeadMonIndex();
+ u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL);
+ StringCopy(dest, gSpeciesNames[species]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
+
+ GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]);
+ StringGetEnd10(sScriptStringVars[stringVarIndex]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getitemname(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+
+ CopyItemName(itemId, sScriptStringVars[stringVarIndex]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getitemnameplural(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u16 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ CopyItemNameHandlePlural(itemId, sScriptStringVars[stringVarIndex], quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_getdecorname(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], gDecorations[decorId].name);
+ return FALSE;
+}
+
+bool8 ScrCmd_getmovename(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 moveId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], gMoveNames[moveId]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 v1 = VarGet(ScriptReadHalfword(ctx));
+ u8 v2 = sub_80EF370(v1);
+
+ ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2);
+ return FALSE;
+}
+
+bool8 ScrCmd_getstdstring(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], gUnknown_0858BAF0[index]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getcontesttype(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ sub_818E868(sScriptStringVars[stringVarIndex], index);
+ return FALSE;
+}
+
+bool8 ScrCmd_getstring(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ const u8 *text = (u8 *)ScriptReadWord(ctx);
+
+ StringCopy(sScriptStringVars[stringVarIndex], text);
+ return FALSE;
+}
+
+bool8 ScrCmd_vloadword(struct ScriptContext *ctx)
+{
+ const u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4);
+
+ StringExpandPlaceholders(gStringVar4, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_vgetstring(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u32 addr = ScriptReadWord(ctx);
+
+ const u8 *src = (u8 *)(addr - gUnknown_020375C4);
+ u8 *dest = sScriptStringVars[stringVarIndex];
+ StringCopy(dest, src);
+ return FALSE;
+}
+
+bool8 ScrCmd_getboxname(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 boxId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], GetBoxNamePtr(boxId));
+ return FALSE;
+}
+
+bool8 ScrCmd_givepoke(struct ScriptContext *ctx)
+{
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u8 level = ScriptReadByte(ctx);
+ u16 item = VarGet(ScriptReadHalfword(ctx));
+ u32 unkParam1 = ScriptReadWord(ctx);
+ u32 unkParam2 = ScriptReadWord(ctx);
+ u8 unkParam3 = ScriptReadByte(ctx);
+
+ gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3);
+ return FALSE;
+}
+
+bool8 ScrCmd_giveegg(struct ScriptContext *ctx)
+{
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = ScriptGiveEgg(species);
+ return FALSE;
+}
+
+bool8 ScrCmd_setpokemove(struct ScriptContext *ctx)
+{
+ u8 partyIndex = ScriptReadByte(ctx);
+ u8 slot = ScriptReadByte(ctx);
+ u16 move = ScriptReadHalfword(ctx);
+
+ ScriptSetMonMoveSlot(partyIndex, move, slot);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkpokemove(struct ScriptContext *ctx)
+{
+ u8 i;
+ u16 moveId = ScriptReadHalfword(ctx);
+
+ gScriptResult = 6;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL);
+ if (!species)
+ break;
+ // UB: GetMonData() arguments don't match function definition
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && pokemon_has_move(&gPlayerParty[i], moveId) == TRUE)
+ {
+ gScriptResult = i;
+ gSpecialVar_0x8004 = species;
+ break;
+ }
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_givemoney(struct ScriptContext *ctx)
+{
+ u32 amount = ScriptReadWord(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ AddMoney(&gSaveBlock1Ptr->money, amount);
+ return FALSE;
+}
+
+bool8 ScrCmd_takemoney(struct ScriptContext *ctx)
+{
+ u32 amount = ScriptReadWord(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ RemoveMoney(&gSaveBlock1Ptr->money, amount);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkmoney(struct ScriptContext *ctx)
+{
+ u32 amount = ScriptReadWord(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ gScriptResult = IsEnoughMoney(&gSaveBlock1Ptr->money, amount);
+ return FALSE;
+}
+
+bool8 ScrCmd_showmoneybox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ DrawMoneyBox(GetMoney(&gSaveBlock1Ptr->money), x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx)
+{
+ /*u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);*/
+
+ HideMoneyBox();
+ return FALSE;
+}
+
+bool8 ScrCmd_updatemoneybox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ ChangeAmountInMoneyBox(GetMoney(&gSaveBlock1Ptr->money));
+ return FALSE;
+}
+
+bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+
+ ShowCoinsWindow(GetCoins(), x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+
+ HideCoinsWindow();
+ return FALSE;
+}
+
+bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+
+ PrintCoinsString(GetCoins());
+ return FALSE;
+}
+
+bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx)
+{
+ ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr);
+ return FALSE;
+}
+
+bool8 ScrCmd_battlebegin(struct ScriptContext *ctx)
+{
+ BattleSetup_StartTrainerBattle();
+ return TRUE;
+}
+
+bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx)
+{
+ ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle();
+ return FALSE;
+}
+
+bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx)
+{
+ ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript();
+ return FALSE;
+}
+
+bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx)
+{
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ ctx->comparisonResult = HasTrainerAlreadyBeenFought(index);
+ return FALSE;
+}
+
+bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx)
+{
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ trainer_flag_set(index);
+ return FALSE;
+}
+
+bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx)
+{
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ trainer_flag_clear(index);
+ return FALSE;
+}
+
+bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx)
+{
+ u16 species = ScriptReadHalfword(ctx);
+ u8 level = ScriptReadByte(ctx);
+ u16 item = ScriptReadHalfword(ctx);
+
+ CreateScriptedWildMon(species, level, item);
+ return FALSE;
+}
+
+bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx)
+{
+ BattleSetup_StartScriptedWildBattle();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_pokemart(struct ScriptContext *ctx)
+{
+ const void *ptr = (void *)ScriptReadWord(ctx);
+
+ CreatePokemartMenu(ptr);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx)
+{
+ const void *ptr = (void *)ScriptReadWord(ctx);
+
+ CreateDecorationShop1Menu(ptr);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx)
+{
+ const void *ptr = (void *)ScriptReadWord(ctx);
+
+ CreateDecorationShop2Menu(ptr);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx)
+{
+ u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx));
+
+ PlaySlotMachine(slotMachineIndex, c2_exit_to_overworld_1_continue_scripts_restart_music);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_plantberrytree(struct ScriptContext *ctx)
+{
+ u8 treeId = ScriptReadByte(ctx);
+ u8 berry = ScriptReadByte(ctx);
+ u8 growthStage = ScriptReadByte(ctx);
+
+ if (berry == 0)
+ PlantBerryTree(treeId, 0, growthStage, FALSE);
+ else
+ PlantBerryTree(treeId, berry, growthStage, FALSE);
+ return FALSE;
+}
+
+bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx)
+{
+ u16 value = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = GetPriceReduction(value);
+ return FALSE;
+}
+
+bool8 ScrCmd_choosecontestpkmn(struct ScriptContext *ctx)
+{
+ sub_81B9404();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+
+bool8 ScrCmd_startcontest(struct ScriptContext *ctx)
+{
+ sub_80F840C();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx)
+{
+ sub_80F8484();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx)
+{
+ sub_80F84C4(gScriptContestCategory);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx)
+{
+ u16 effectId = VarGet(ScriptReadHalfword(ctx));
+
+ sFieldEffectScriptId = effectId;
+ FieldEffectStart(sFieldEffectScriptId);
+ return FALSE;
+}
+
+bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx)
+{
+ u8 argNum = ScriptReadByte(ctx);
+
+ gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+static bool8 WaitForFieldEffectFinish(void)
+{
+ if (!FieldEffectActiveListContains(sFieldEffectScriptId))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx)
+{
+ sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx));
+ SetupNativeScript(ctx, WaitForFieldEffectFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_sethealplace(struct ScriptContext *ctx)
+{
+ u16 healLocationId = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetHealLocationWarp(healLocationId);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx)
+{
+ gScriptResult = gSaveBlock2Ptr->playerGender;
+ return FALSE;
+}
+
+bool8 ScrCmd_playpokecry(struct ScriptContext *ctx)
+{
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u16 mode = VarGet(ScriptReadHalfword(ctx));
+
+ PlayCry5(species, mode);
+ return FALSE;
+}
+
+bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, IsCryFinished);
+ return TRUE;
+}
+
+bool8 ScrCmd_setmaptile(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+ u16 tileId = VarGet(ScriptReadHalfword(ctx));
+ u16 v8 = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ if (!v8)
+ MapGridSetMetatileIdAt(x, y, tileId);
+ else
+ MapGridSetMetatileIdAt(x, y, tileId | 0xC00);
+ return FALSE;
+}
+
+bool8 ScrCmd_opendoor(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ PlaySE(GetDoorSoundEffect(x, y));
+ FieldAnimateDoorOpen(x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_closedoor(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ FieldAnimateDoorClose(x, y);
+ return FALSE;
+}
+
+static bool8 IsDoorAnimationStopped(void)
+{
+ if (!FieldIsDoorAnimationRunning())
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_waitdooranim(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, IsDoorAnimationStopped);
+ return TRUE;
+}
+
+bool8 ScrCmd_setdooropen(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ FieldSetDoorOpened(x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ FieldSetDoorClosed(x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_addelevmenuitem(struct ScriptContext *ctx)
+{
+ u8 v3 = ScriptReadByte(ctx);
+ u16 v5 = VarGet(ScriptReadHalfword(ctx));
+ u16 v7 = VarGet(ScriptReadHalfword(ctx));
+ u16 v9 = VarGet(ScriptReadHalfword(ctx));
+
+ //ScriptAddElevatorMenuItem(v3, v5, v7, v9);
+ return FALSE;
+}
+
+bool8 ScrCmd_showelevmenu(struct ScriptContext *ctx)
+{
+ /*ScriptShowElevatorMenu();
+ ScriptContext1_Stop();
+ return TRUE;*/
+ return FALSE;
+}
+
+bool8 ScrCmd_checkcoins(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr = GetCoins();
+ return FALSE;
+}
+
+bool8 ScrCmd_givecoins(struct ScriptContext *ctx)
+{
+ u16 coins = VarGet(ScriptReadHalfword(ctx));
+
+ if (GiveCoins(coins) == TRUE)
+ gScriptResult = 0;
+ else
+ gScriptResult = 1;
+ return FALSE;
+}
+
+bool8 ScrCmd_takecoins(struct ScriptContext *ctx)
+{
+ u16 coins = VarGet(ScriptReadHalfword(ctx));
+
+ if (TakeCoins(coins) == TRUE)
+ gScriptResult = 0;
+ else
+ gScriptResult = 1;
+ return FALSE;
+}
+
+bool8 ScrCmd_mossdeepgym1(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(ScriptReadHalfword(ctx));
+
+ sMovingNpcId = sub_81A89A0(v1);
+ return FALSE;
+}
+
+bool8 ScrCmd_mossdeepgym2(struct ScriptContext *ctx)
+{
+ sub_81A8AF8();
+ return FALSE;
+}
+
+bool8 ScrCmd_mossdeepgym3(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(ScriptReadHalfword(ctx));
+
+ sub_81A8934(v1);
+ return FALSE;
+}
+
+bool8 ScrCmd_mossdeepgym4(struct ScriptContext *ctx)
+{
+ sub_81A895C();
+ return FALSE;
+}
+
+bool8 ScrCmd_cmdD8(struct ScriptContext *ctx)
+{
+ gSelectedMapObject = sub_80B47BC();
+ return FALSE;
+}
+
+bool8 ScrCmd_cmdD9(struct ScriptContext *ctx)
+{
+ if (is_c1_link_related_active())
+ {
+ return FALSE;
+ }
+ else
+ {
+ if (gMapObjects[gSelectedMapObject].active)
+ {
+ sub_8098630();
+ SetupNativeScript(ctx, sub_8098734);
+ }
+ return TRUE;
+ }
+}
+
+// This command will force the Pokémon to be obedient, you don't get to choose which value to set its obedience to
+bool8 ScrCmd_setpokeobedient(struct ScriptContext *ctx)
+{
+ bool8 obedient = TRUE;
+ u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
+
+ SetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, &obedient);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkpokeobedience(struct ScriptContext *ctx)
+{
+ u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL);
+ return FALSE;
+}
+
+bool8 ScrCmd_cmdCF(struct ScriptContext *ctx)
+{
+ const u8* v1 = sub_8099244();
+
+ if (v1)
+ {
+ ((u8*)gUnknown_020375C0) = ctx->scriptPtr;
+ ScriptJump(ctx, v1);
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_warpD1(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_808D074(player_get_direction_lower_nybble());
+ sub_80B0244();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_setpokemetlocation(struct ScriptContext *ctx)
+{
+ u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
+ u8 location = ScriptReadByte(ctx);
+
+ if (partyIndex < PARTY_SIZE)
+ SetMonData(&gPlayerParty[partyIndex], MON_DATA_MET_LOCATION, &location);
+ return FALSE;
+}
+
+void sub_809BDB4(void)
+{
+ sub_819746C(gUnknown_03000F30, 1);
+ RemoveWindow(gUnknown_03000F30);
+}
+
+bool8 ScrCmd_gettrainerclass(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 trainerClassId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], GetTrainerClassNameFromId(trainerClassId));
+ return FALSE;
+}
+
+bool8 ScrCmd_gettrainername(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 trainerClassId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], GetTrainerNameFromId(trainerClassId));
+ return FALSE;
+}
+
+void sub_809BE48(u16 npcId)
+{
+ sMovingNpcId = npcId;
+}
+
+bool8 ScrCmd_warpE0(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF79C();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
diff --git a/src/script.c b/src/script.c
index b2809a137..5a1c5daa9 100644
--- a/src/script.c
+++ b/src/script.c
@@ -134,12 +134,12 @@ const u8 *ScriptPop(struct ScriptContext *ctx)
return ctx->stack[ctx->stackDepth];
}
-void ScriptJump(struct ScriptContext *ctx, u8 *ptr)
+void ScriptJump(struct ScriptContext *ctx, const u8 *ptr)
{
ctx->scriptPtr = ptr;
}
-void ScriptCall(struct ScriptContext *ctx, u8 *ptr)
+void ScriptCall(struct ScriptContext *ctx, const u8 *ptr)
{
ScriptPush(ctx, ctx->scriptPtr);
ctx->scriptPtr = ptr;
diff --git a/src/script_menu.c b/src/script_menu.c
new file mode 100644
index 000000000..04f1e82b7
--- /dev/null
+++ b/src/script_menu.c
@@ -0,0 +1,16 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u8 gUnknown_03001124[6];
+IWRAM_DATA u32 filler_0300112c;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/sprite.c b/src/sprite.c
index 17b0f181a..daa019019 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -594,7 +594,7 @@ u8 CreateSpriteAt(u8 index, const struct SpriteTemplate *template, s16 x, s16 y,
return index;
}
-u8 CreateSpriteAndAnimate(struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority)
+u8 CreateSpriteAndAnimate(const struct SpriteTemplate *template, s16 x, s16 y, u8 subpriority)
{
u8 i;
diff --git a/src/start_menu.c b/src/start_menu.c
index ac393ce2e..37331a922 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -170,13 +170,13 @@ extern const u8 gText_BattlePyramidFloor[];
void DisplayPyramidFloorWindow(void)
{
// TODO: fix location
- if (*(u16*)(&gSaveBlock2Ptr->field_CAA[8]) == 7)
+ if (gSaveBlock2Ptr->field_CAA[4] == 7)
sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_1);
else
sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_2);
PutWindowTilemap(sBattlePyramidFloorWindowId);
sub_81973FC(sBattlePyramidFloorWindowId, 0);
- StringCopy(gStringVar1, gUnknown_08510510[*(u16*)(&gSaveBlock2Ptr->field_CAA[8])]);
+ StringCopy(gStringVar1, gUnknown_08510510[gSaveBlock2Ptr->field_CAA[4]]);
StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);
PrintTextOnWindow(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
CopyWindowToVram(sBattlePyramidFloorWindowId, 2);
@@ -207,7 +207,7 @@ static bool32 PrintStartMenuItemsMultistep(s16 *index, u32 n)
do
{
- if (sStartMenuItems[sCurrentStartMenuActions[_index]].func == StartMenu_PlayerName)
+ if (sStartMenuItems[sCurrentStartMenuActions[_index]].func.u8_void == StartMenu_PlayerName)
{
}
diff --git a/src/string_util.c b/src/string_util.c
index 92e9f19e8..ea50ba5a5 100644
--- a/src/string_util.c
+++ b/src/string_util.c
@@ -625,7 +625,7 @@ u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color)
return dest;
}
-bool32 sub_8009228(u8 *str)
+bool32 IsStringJapanese(u8 *str)
{
while (*str != EOS)
{
diff --git a/src/text.c b/src/text.c
index 0081a8244..8108a6867 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1,9 +1,9 @@
#include "global.h"
-#include "text.h"
#include "main.h"
#include "palette.h"
#include "string_util.h"
#include "window.h"
+#include "text.h"
extern void FillBitmapRect4Bit(struct Bitmap *surface, u16 x, u16 y, u16 width, u16 height, u8 fillValue);
extern void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16 height);
@@ -32,11 +32,7 @@ u8 gUnknown_03002FB0[0x20];
u8 gUnknown_03002FD0[0x20];
u8 gUnknown_03002FF0[0x20];
u8 gGlyphDimensions[0x2];
-struct {
- u8 flag_0:1;
- u8 flag_1:1;
- u8 flag_2:1;
-} gTextFlags;
+TextFlags gTextFlags;
const u8 gFontHalfRowOffsets[] = {
0x00, 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x03, 0x06, 0x07, 0x08, 0x06, 0x00, 0x01, 0x02, 0x00,
@@ -149,7 +145,7 @@ void DeactivateAllTextPrinters (void)
gTextPrinters[printer].sub_union.sub.active = 0;
}
-u16 PrintTextOnWindow(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16))
+u16 PrintTextOnWindow(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16))
{
struct TextSubPrinter subPrinter;
@@ -1972,7 +1968,7 @@ bool8 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter)
}
}
-bool8 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
+bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
{
bool8 result = FALSE;
if (gTextFlags.flag_2 != 0)
@@ -1991,9 +1987,9 @@ bool8 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter)
return result;
}
-bool8 TextPrinterWait(struct TextPrinter *textPrinter)
+bool16 TextPrinterWait(struct TextPrinter *textPrinter)
{
- bool8 result = FALSE;
+ bool16 result = FALSE;
if (gTextFlags.flag_2 != 0)
{
result = TextPrinterWaitAutoMode(textPrinter);
diff --git a/src/tileset_anims.c b/src/tileset_anims.c
new file mode 100644
index 000000000..4ad787e1c
--- /dev/null
+++ b/src/tileset_anims.c
@@ -0,0 +1,1411 @@
+
+// Includes
+#include "global.h"
+#include "palette.h"
+#include "blend_palette.h"
+#include "battle_transition.h"
+#include "task.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+static EWRAM_DATA struct {
+ const u16 *src;
+ u16 *dest;
+ u16 size;
+} sTilesetDMA3TransferBuffer[20] = {0};
+
+static u8 sTilesetDMA3TransferBufferSize;
+static u16 sPrimaryTilesetCBCounter;
+static u16 sPrimaryTilesetCBBufferSize;
+static u16 sSecondaryTilesetCBCounter;
+static u16 sSecondaryTilesetCBBufferSize;
+static void (*sPrimaryTilesetCB)(u16);
+static void (*sSecondaryTilesetCB)(u16);
+
+// Static ROM declarations
+
+static void cur_mapheader_run_tileset1_func(void);
+static void cur_mapheader_run_tileset2_func(void);
+
+// .rodata
+
+
+const u16 gUnknown_085105C4[] = INCBIN_U16("data/tilesets/primary/general/anim/0/1.4bpp");
+
+const u16 gUnknown_08510644[] = INCBIN_U16("data/tilesets/primary/general/anim/0/0.4bpp");
+
+const u16 gUnknown_085106C4[] = INCBIN_U16("data/tilesets/primary/general/anim/0/2.4bpp");
+
+const u16 tileset_anims_space_0[16] = {};
+
+const u16 *const gTilesetAnims_General0[] = {
+ gUnknown_08510644,
+ gUnknown_085105C4,
+ gUnknown_08510644,
+ gUnknown_085106C4
+};
+
+const u16 gUnknown_08510774[] = INCBIN_U16("data/tilesets/primary/general/anim/1/0.4bpp");
+
+const u16 gUnknown_08510B34[] = INCBIN_U16("data/tilesets/primary/general/anim/1/1.4bpp");
+
+const u16 gUnknown_08510EF4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/2.4bpp");
+
+const u16 gUnknown_085112B4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/3.4bpp");
+
+const u16 gUnknown_08511674[] = INCBIN_U16("data/tilesets/primary/general/anim/1/4.4bpp");
+
+const u16 gUnknown_08511A34[] = INCBIN_U16("data/tilesets/primary/general/anim/1/5.4bpp");
+
+const u16 gUnknown_08511DF4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/6.4bpp");
+
+const u16 gUnknown_085121B4[] = INCBIN_U16("data/tilesets/primary/general/anim/1/7.4bpp");
+
+const u16 *const gTilesetAnims_General1[] = {
+ gUnknown_08510774,
+ gUnknown_08510B34,
+ gUnknown_08510EF4,
+ gUnknown_085112B4,
+ gUnknown_08511674,
+ gUnknown_08511A34,
+ gUnknown_08511DF4,
+ gUnknown_085121B4
+};
+
+const u16 gUnknown_08512594[] = INCBIN_U16("data/tilesets/primary/general/anim/2/0.4bpp");
+
+const u16 gUnknown_085126D4[] = INCBIN_U16("data/tilesets/primary/general/anim/2/1.4bpp");
+
+const u16 gUnknown_08512814[] = INCBIN_U16("data/tilesets/primary/general/anim/2/2.4bpp");
+
+const u16 gUnknown_08512954[] = INCBIN_U16("data/tilesets/primary/general/anim/2/3.4bpp");
+
+const u16 gUnknown_08512A94[] = INCBIN_U16("data/tilesets/primary/general/anim/2/4.4bpp");
+
+const u16 gUnknown_08512BD4[] = INCBIN_U16("data/tilesets/primary/general/anim/2/5.4bpp");
+
+const u16 gUnknown_08512D14[] = INCBIN_U16("data/tilesets/primary/general/anim/2/6.4bpp");
+
+const u16 *const gTilesetAnims_General2[] = {
+ gUnknown_08512594,
+ gUnknown_085126D4,
+ gUnknown_08512814,
+ gUnknown_08512954,
+ gUnknown_08512A94,
+ gUnknown_08512BD4,
+ gUnknown_08512D14,
+ gUnknown_08512594
+};
+
+const u16 gUnknown_08512E74[] = INCBIN_U16("data/tilesets/primary/general/anim/3/0.4bpp");
+
+const u16 gUnknown_08512F34[] = INCBIN_U16("data/tilesets/primary/general/anim/3/1.4bpp");
+
+const u16 gUnknown_08512FF4[] = INCBIN_U16("data/tilesets/primary/general/anim/3/2.4bpp");
+
+const u16 gUnknown_085130B4[] = INCBIN_U16("data/tilesets/primary/general/anim/3/3.4bpp");
+
+const u16 *const gTilesetAnims_General3[] = {
+ gUnknown_08512E74,
+ gUnknown_08512F34,
+ gUnknown_08512FF4,
+ gUnknown_085130B4
+};
+
+const u16 gUnknown_08513184[] = INCBIN_U16("data/tilesets/primary/general/anim/4/0.4bpp");
+
+const u16 gUnknown_085132C4[] = INCBIN_U16("data/tilesets/primary/general/anim/4/1.4bpp");
+
+const u16 gUnknown_08513404[] = INCBIN_U16("data/tilesets/primary/general/anim/4/2.4bpp");
+
+const u16 gUnknown_08513544[] = INCBIN_U16("data/tilesets/primary/general/anim/4/3.4bpp");
+
+const u16 *const gTilesetAnims_General4[] = {
+ gUnknown_08513184,
+ gUnknown_085132C4,
+ gUnknown_08513404,
+ gUnknown_08513544
+};
+
+const u16 gUnknown_08513694[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/0.4bpp");
+
+const u16 gUnknown_08513714[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/1.4bpp");
+
+const u16 gUnknown_08513794[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/2.4bpp");
+
+const u16 gUnknown_08513814[] = INCBIN_U16("data/tilesets/secondary/lavaridge/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_Lavaridge0[] = {
+ gUnknown_08513694,
+ gUnknown_08513714,
+ gUnknown_08513794,
+ gUnknown_08513814
+};
+
+const u16 gUnknown_085138A4[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/0.4bpp");
+
+const u16 gUnknown_08513C64[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/1.4bpp");
+
+const u16 gUnknown_08514024[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/0/2.4bpp");
+
+const u16 *const gTilesetAnims_Pacifidlog0[] = {
+ gUnknown_085138A4,
+ gUnknown_08513C64,
+ gUnknown_08514024,
+ gUnknown_08513C64
+};
+
+const u16 gUnknown_085143F4[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/0.4bpp");
+
+const u16 gUnknown_08514474[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/1.4bpp");
+
+const u16 gUnknown_085144F4[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/2.4bpp");
+
+const u16 gUnknown_08514574[] = INCBIN_U16("data/tilesets/secondary/underwater/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_Underwater0[] = {
+ gUnknown_085143F4,
+ gUnknown_08514474,
+ gUnknown_085144F4,
+ gUnknown_08514574
+};
+
+const u16 gUnknown_08514604[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/0.4bpp");
+
+const u16 gUnknown_08514704[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/1.4bpp");
+
+const u16 gUnknown_08514804[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/2.4bpp");
+
+const u16 gUnknown_08514904[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/3.4bpp");
+
+const u16 gUnknown_08514A04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/4.4bpp");
+
+const u16 gUnknown_08514B04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/5.4bpp");
+
+const u16 gUnknown_08514C04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/6.4bpp");
+
+const u16 gUnknown_08514D04[] = INCBIN_U16("data/tilesets/secondary/pacifidlog/anim/1/7.4bpp");
+
+const u16 *const gTilesetAnims_Pacifidlog1[] = {
+ gUnknown_08514604,
+ gUnknown_08514704,
+ gUnknown_08514804,
+ gUnknown_08514904,
+ gUnknown_08514A04,
+ gUnknown_08514B04,
+ gUnknown_08514C04,
+ gUnknown_08514D04
+};
+
+const u16 gUnknown_08514E24[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/0.4bpp");
+
+const u16 gUnknown_08514EA4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/1.4bpp");
+
+const u16 gUnknown_08514F24[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/2.4bpp");
+
+const u16 gUnknown_08514FA4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/a/3.4bpp");
+
+const u16 gUnknown_08515024[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/1/a/1.4bpp");
+
+const u16 gUnknown_085150A4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/0.4bpp");
+
+const u16 gUnknown_08515124[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/1.4bpp");
+
+const u16 gUnknown_085151A4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/2.4bpp");
+
+const u16 gUnknown_08515224[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/0/b/3.4bpp");
+
+const u16 gUnknown_085152A4[] = INCBIN_U16("data/tilesets/secondary/mauville/anim/1/b/1.4bpp");
+
+const u16 tileset_anims_space_1[16] = {};
+
+u16 *const gTilesetAnims_MauvilleVDests0[] = {
+ (u16 *)(BG_VRAM + 0x4c00),
+ (u16 *)(BG_VRAM + 0x4c80),
+ (u16 *)(BG_VRAM + 0x4d00),
+ (u16 *)(BG_VRAM + 0x4d80),
+ (u16 *)(BG_VRAM + 0x4e00),
+ (u16 *)(BG_VRAM + 0x4e80),
+ (u16 *)(BG_VRAM + 0x4f00),
+ (u16 *)(BG_VRAM + 0x4f80)
+};
+
+u16 *const gTilesetAnims_MauvilleVDests1[] = {
+ (u16 *)(BG_VRAM + 0x5000),
+ (u16 *)(BG_VRAM + 0x5080),
+ (u16 *)(BG_VRAM + 0x5100),
+ (u16 *)(BG_VRAM + 0x5180),
+ (u16 *)(BG_VRAM + 0x5200),
+ (u16 *)(BG_VRAM + 0x5280),
+ (u16 *)(BG_VRAM + 0x5300),
+ (u16 *)(BG_VRAM + 0x5380)
+};
+
+const u16 *const gTilesetAnims_Mauville0a[] = {
+ gUnknown_08514E24,
+ gUnknown_08514E24,
+ gUnknown_08514EA4,
+ gUnknown_08514F24,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514FA4,
+ gUnknown_08514F24,
+ gUnknown_08514EA4
+};
+
+const u16 *const gTilesetAnims_Mauville0b[] = {
+ gUnknown_085150A4,
+ gUnknown_085150A4,
+ gUnknown_08515124,
+ gUnknown_085151A4,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_08515224,
+ gUnknown_085151A4,
+ gUnknown_08515124
+};
+
+const u16 *const gTilesetAnims_Mauville1a[] = {
+ gUnknown_08514E24,
+ gUnknown_08514E24,
+ gUnknown_08515024,
+ gUnknown_08515024
+};
+
+const u16 *const gTilesetAnims_Mauville1b[] = {
+ gUnknown_085150A4,
+ gUnknown_085150A4,
+ gUnknown_085152A4,
+ gUnknown_085152A4
+};
+
+const u16 gUnknown_08515404[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/0.4bpp");
+
+const u16 gUnknown_08515484[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/1.4bpp");
+
+const u16 gUnknown_08515504[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/2.4bpp");
+
+const u16 gUnknown_08515584[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/3.4bpp");
+
+const u16 gUnknown_08515604[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/4.4bpp");
+
+const u16 gUnknown_08515684[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/5.4bpp");
+
+const u16 gUnknown_08515704[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/6.4bpp");
+
+const u16 gUnknown_08515784[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/0/7.4bpp");
+
+u16 *const gTilesetAnims_RustboroVDests0[] = {
+ (u16 *)(BG_VRAM + 0x5000),
+ (u16 *)(BG_VRAM + 0x5080),
+ (u16 *)(BG_VRAM + 0x5100),
+ (u16 *)(BG_VRAM + 0x5180),
+ (u16 *)(BG_VRAM + 0x5200),
+ (u16 *)(BG_VRAM + 0x5280),
+ (u16 *)(BG_VRAM + 0x5300),
+ (u16 *)(BG_VRAM + 0x5380)
+};
+
+const u16 *const gTilesetAnims_Rustboro0[] = {
+ gUnknown_08515404,
+ gUnknown_08515484,
+ gUnknown_08515504,
+ gUnknown_08515584,
+ gUnknown_08515604,
+ gUnknown_08515684,
+ gUnknown_08515704,
+ gUnknown_08515784
+};
+
+const u16 gUnknown_08515844[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/1/0.4bpp");
+
+const u16 gUnknown_085158C4[] = INCBIN_U16("data/tilesets/secondary/rustboro/anim/1/1.4bpp");
+
+const u16 tileset_anims_space_2[16] = {};
+
+const u16 *const gTilesetAnims_Rustboro1[] = {
+ gUnknown_08515844,
+ gUnknown_085158C4
+};
+
+const u16 gUnknown_0851596C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/0.4bpp");
+
+const u16 gUnknown_085159EC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/1.4bpp");
+
+const u16 gUnknown_08515A6C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/2.4bpp");
+
+const u16 gUnknown_08515AEC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/3.4bpp");
+
+const u16 gUnknown_08515B6C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/0.4bpp");
+
+const u16 gUnknown_08515BEC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/1.4bpp");
+
+const u16 gUnknown_08515C6C[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/2.4bpp");
+
+const u16 gUnknown_08515CEC[] = INCBIN_U16("data/tilesets/secondary/cave/anim/unused/3.4bpp");
+
+const u16 tileset_anims_space_3[16] = {};
+
+const u16 *const gTilesetAnims_Lavaridge1_Cave0[] = {
+ gUnknown_0851596C,
+ gUnknown_085159EC,
+ gUnknown_08515A6C,
+ gUnknown_08515AEC
+};
+
+const u16 gUnknown_08515D9C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/0.4bpp");
+
+const u16 gUnknown_08515E1C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/1.4bpp");
+
+const u16 gUnknown_08515E9C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/2.4bpp");
+
+const u16 gUnknown_08515F1C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/3.4bpp");
+
+const u16 gUnknown_08515F9C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/4.4bpp");
+
+const u16 gUnknown_0851601C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/5.4bpp");
+
+const u16 gUnknown_0851609C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/6.4bpp");
+
+const u16 gUnknown_0851611C[] = INCBIN_U16("data/tilesets/secondary/ever_grande/anim/7.4bpp");
+
+const u16 tileset_anims_space_4[16] = {};
+
+u16 *const gTilesetAnims_EverGrandeVDests0[] = {
+ (u16 *)(BG_VRAM + 0x5c00),
+ (u16 *)(BG_VRAM + 0x5c80),
+ (u16 *)(BG_VRAM + 0x5d00),
+ (u16 *)(BG_VRAM + 0x5d80),
+ (u16 *)(BG_VRAM + 0x5e00),
+ (u16 *)(BG_VRAM + 0x5e80),
+ (u16 *)(BG_VRAM + 0x5f00),
+ (u16 *)(BG_VRAM + 0x5f80)
+};
+
+const u16 *const gTilesetAnims_EverGrande0[] = {
+ gUnknown_08515D9C,
+ gUnknown_08515E1C,
+ gUnknown_08515E9C,
+ gUnknown_08515F1C,
+ gUnknown_08515F9C,
+ gUnknown_0851601C,
+ gUnknown_0851609C,
+ gUnknown_0851611C
+};
+
+const u16 gUnknown_085161FC[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/0.4bpp");
+
+const u16 gUnknown_085162BC[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/1.4bpp");
+
+const u16 gUnknown_0851637C[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/2.4bpp");
+
+const u16 gUnknown_0851643C[] = INCBIN_U16("data/tilesets/secondary/dewford/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_Dewford0[] = {
+ gUnknown_085161FC,
+ gUnknown_085162BC,
+ gUnknown_0851637C,
+ gUnknown_0851643C
+};
+
+const u16 gUnknown_0851650C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/0.4bpp");
+
+const u16 gUnknown_085165CC[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/1.4bpp");
+
+const u16 gUnknown_0851668C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/2.4bpp");
+
+const u16 gUnknown_0851674C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_west/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_BattleFrontierOutsideWest0[] = {
+ gUnknown_0851650C,
+ gUnknown_085165CC,
+ gUnknown_0851668C,
+ gUnknown_0851674C
+};
+
+const u16 gUnknown_0851681C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/0.4bpp");
+
+const u16 gUnknown_085168DC[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/1.4bpp");
+
+const u16 gUnknown_0851699C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/2.4bpp");
+
+const u16 gUnknown_08516A5C[] = INCBIN_U16("data/tilesets/secondary/battle_frontier_outside_east/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_BattleFrontierOutsideEast0[] = {
+ gUnknown_0851681C,
+ gUnknown_085168DC,
+ gUnknown_0851699C,
+ gUnknown_08516A5C
+};
+
+const u16 gUnknown_08516B2C[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/0.4bpp");
+
+const u16 gUnknown_08516BAC[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/1.4bpp");
+
+const u16 gUnknown_08516C2C[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/2.4bpp");
+
+const u16 gUnknown_08516CAC[] = INCBIN_U16("data/tilesets/secondary/slateport/anim/3.4bpp");
+
+const u16 *const gTilesetAnims_Slateport0[] = {
+ gUnknown_08516B2C,
+ gUnknown_08516BAC,
+ gUnknown_08516C2C,
+ gUnknown_08516CAC
+};
+
+const u16 gUnknown_08516D3C[] = INCBIN_U16("data/tilesets/primary/building/anim/0.4bpp");
+
+const u16 gUnknown_08516DBC[] = INCBIN_U16("data/tilesets/primary/building/anim/1.4bpp");
+
+const u16 *const gTilesetAnims_InsideBuilding0[] = {
+ gUnknown_08516D3C,
+ gUnknown_08516DBC
+};
+
+const u16 gUnknown_08516E44[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/0.4bpp");
+
+const u16 gUnknown_08516FC4[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/1.4bpp");
+
+const u16 gUnknown_08517144[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/0/2.4bpp");
+
+const u16 gUnknown_085172C4[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/0.4bpp");
+
+const u16 gUnknown_08517544[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/1.4bpp");
+
+const u16 gUnknown_085177C4[] = INCBIN_U16("data/tilesets/secondary/sootopolis_gym/anim/1/2.4bpp");
+
+const u16 *const gTilesetAnims_SootopolisGym0[] = {
+ gUnknown_08516E44,
+ gUnknown_08516FC4,
+ gUnknown_08517144
+};
+
+const u16 *const gTilesetAnims_SootopolisGym1[] = {
+ gUnknown_085172C4,
+ gUnknown_08517544,
+ gUnknown_085177C4
+};
+
+const u16 gUnknown_08517A5C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/1/0.4bpp");
+
+const u16 gUnknown_08517ADC[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/1/1.4bpp");
+
+const u16 gUnknown_08517B5C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/0.4bpp");
+
+const u16 gUnknown_08517B7C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/1.4bpp");
+
+const u16 gUnknown_08517B9C[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/2.4bpp");
+
+const u16 gUnknown_08517BBC[] = INCBIN_U16("data/tilesets/secondary/elite_four/anim/0/3.4bpp");
+
+const u16 tileset_anims_space_5[16] = {};
+
+const u16 *const gTilesetAnims_EliteFour1[] = {
+ gUnknown_08517B5C,
+ gUnknown_08517B7C,
+ gUnknown_08517B9C,
+ gUnknown_08517BBC
+};
+
+const u16 *const gTilesetAnims_EliteFour0[] = {
+ gUnknown_08517A5C,
+ gUnknown_08517ADC
+};
+
+const u16 gUnknown_08517C14[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/0.4bpp");
+
+const u16 gUnknown_08517E14[] = INCBIN_U16("data/tilesets/secondary/mauville_gym/anim/1.4bpp");
+
+const u16 tileset_anims_space_6[16] = {};
+
+const u16 *const gTilesetAnims_MauvilleGym0[] = {
+ gUnknown_08517C14,
+ gUnknown_08517E14
+};
+
+const u16 gUnknown_0851803C[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/0.4bpp");
+
+const u16 gUnknown_0851815C[] = INCBIN_U16("data/tilesets/secondary/bike_shop/anim/1.4bpp");
+
+const u16 tileset_anims_space_7[16] = {};
+
+const u16 *const gTilesetAnims_BikeShop0[] = {
+ gUnknown_0851803C,
+ gUnknown_0851815C
+};
+
+const u16 gUnknown_085182A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/0.4bpp");
+
+const u16 gUnknown_08518EA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/1.4bpp");
+
+const u16 gUnknown_08519AA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/2.4bpp");
+
+const u16 gUnknown_0851A6A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/3.4bpp");
+
+const u16 gUnknown_0851B2A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/4.4bpp");
+
+const u16 gUnknown_0851BEA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/5.4bpp");
+
+const u16 gUnknown_0851CAA4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/6.4bpp");
+
+const u16 gUnknown_0851D6A4[] = INCBIN_U16("data/tilesets/secondary/sootopolis/anim/7.4bpp");
+
+const u16 tileset_anims_space_8[16] = {};
+
+const u16 gUnknown_0851E2C4[] = INCBIN_U16("data/tilesets/secondary/unused_1/0.4bpp");
+
+const u16 gUnknown_0851EAC4[] = INCBIN_U16("data/tilesets/secondary/unused_1/1.4bpp");
+
+const u16 gUnknown_0851F2C4[] = INCBIN_U16("data/tilesets/secondary/unused_1/2.4bpp");
+
+const u16 gUnknown_0851FAC4[] = INCBIN_U16("data/tilesets/secondary/unused_1/3.4bpp");
+
+const u16 *const gTilesetAnims_Sootopolis0[] = {
+ gUnknown_085182A4,
+ gUnknown_08518EA4,
+ gUnknown_08519AA4,
+ gUnknown_0851A6A4,
+ gUnknown_0851B2A4,
+ gUnknown_0851BEA4,
+ gUnknown_0851CAA4,
+ gUnknown_0851D6A4
+};
+
+const u16 gUnknown_085202E4[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/0.4bpp");
+
+const u16 gUnknown_085203E4[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/1.4bpp");
+
+const u16 gUnknown_085204E4[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/0/2.4bpp");
+
+const u16 tileset_anims_space_9[16] = {};
+
+const u16 gUnknown_08520604[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/0.4bpp");
+
+const u16 gUnknown_08520704[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/1.4bpp");
+
+const u16 gUnknown_08520804[] = INCBIN_U16("data/tilesets/secondary/battle_pyramid/anim/1/2.4bpp");
+
+const u16 tileset_anims_space_10[7808] = {};
+
+const u16 gUnknown_08524604[] = INCBIN_U16("data/tilesets/secondary/unused_2/0.4bpp");
+
+const u16 tileset_anims_space_11[224] = {};
+
+const u16 gUnknown_08524804[] = INCBIN_U16("data/tilesets/secondary/unused_2/1.4bpp");
+
+const u16 *const gTilesetAnims_BattlePyramid0[] = {
+ gUnknown_085202E4,
+ gUnknown_085203E4,
+ gUnknown_085204E4
+};
+
+const u16 *const gTilesetAnims_BattlePyramid1[] = {
+ gUnknown_08520604,
+ gUnknown_08520704,
+ gUnknown_08520804
+};
+
+extern const u16 gUnknown_08D85640[];
+extern const u16 gUnknown_08D85660[];
+extern const u16 gUnknown_08D85680[];
+extern const u16 gUnknown_08D856A0[];
+
+static const u16 *const gTilesetAnims_BattleDomePals0[] = {
+ gUnknown_08D85640,
+ gUnknown_08D85660,
+ gUnknown_08D85680,
+ gUnknown_08D856A0,
+};
+
+// .text
+
+static void ResetTilesetAnimBuffer(void)
+{
+ sTilesetDMA3TransferBufferSize = 0;
+ CpuFill32(0, sTilesetDMA3TransferBuffer, sizeof sTilesetDMA3TransferBuffer);
+}
+
+static void AppendTilesetAnimToBuffer(const u16 *src, u16 *dest, u16 size)
+{
+ if (sTilesetDMA3TransferBufferSize < 20)
+ {
+ sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].src = src;
+ sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].dest = dest;
+ sTilesetDMA3TransferBuffer[sTilesetDMA3TransferBufferSize].size = size;
+ sTilesetDMA3TransferBufferSize ++;
+ }
+}
+
+void TransferTilesetAnimsBuffer(void)
+{
+ int i;
+
+ for (i = 0; i < sTilesetDMA3TransferBufferSize; i ++)
+ {
+ DmaCopy16(3, sTilesetDMA3TransferBuffer[i].src, sTilesetDMA3TransferBuffer[i].dest, sTilesetDMA3TransferBuffer[i].size);
+ }
+ sTilesetDMA3TransferBufferSize = 0;
+}
+
+void cur_mapheader_run_tileset_funcs_after_some_cpuset(void)
+{
+ ResetTilesetAnimBuffer();
+ cur_mapheader_run_tileset1_func();
+ cur_mapheader_run_tileset2_func();
+}
+
+void sub_80A0A2C(void)
+{
+ cur_mapheader_run_tileset2_func();
+}
+
+void sub_80A0A38(void)
+{
+ ResetTilesetAnimBuffer();
+ if (++sPrimaryTilesetCBCounter >= sPrimaryTilesetCBBufferSize)
+ sPrimaryTilesetCBCounter = 0;
+ if (++sSecondaryTilesetCBCounter >= sSecondaryTilesetCBBufferSize)
+ sSecondaryTilesetCBCounter = 0;
+ if (sPrimaryTilesetCB)
+ sPrimaryTilesetCB(sPrimaryTilesetCBCounter);
+ if (sSecondaryTilesetCB)
+ sSecondaryTilesetCB(sSecondaryTilesetCBCounter);
+}
+
+static void cur_mapheader_run_tileset1_func(void)
+{
+ sPrimaryTilesetCBCounter = 0;
+ sPrimaryTilesetCBBufferSize = 0;
+ sPrimaryTilesetCB = NULL;
+ if (gMapHeader.mapData->primaryTileset && gMapHeader.mapData->primaryTileset->callback)
+ gMapHeader.mapData->primaryTileset->callback();
+}
+
+static void cur_mapheader_run_tileset2_func(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = 0;
+ sSecondaryTilesetCB = NULL;
+ if (gMapHeader.mapData->secondaryTileset && gMapHeader.mapData->secondaryTileset->callback)
+ gMapHeader.mapData->secondaryTileset->callback();
+}
+
+void TilesetCb_General(void)
+{
+ static void sub_80A0B70(u16);
+
+ sPrimaryTilesetCBCounter = 0;
+ sPrimaryTilesetCBBufferSize = 0x100;
+ sPrimaryTilesetCB = sub_80A0B70;
+}
+
+void TilesetCb_InsideBuilding(void)
+{
+ static void sub_80A0BB4(u16);
+
+ sPrimaryTilesetCBCounter = 0;
+ sPrimaryTilesetCBBufferSize = 0x100;
+ sPrimaryTilesetCB = sub_80A0BB4;
+}
+
+static void sub_80A0B70(u16 timer)
+{
+ static void sub_80A0BCC(u16);
+ static void sub_80A0BF4(u16);
+ static void sub_80A0C1C(u16);
+ static void sub_80A0C44(u16);
+ static void sub_80A12AC(u16);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A0BCC(timer >> 4);
+ if ((timer & 0x0F) == 1)
+ sub_80A0BF4(timer >> 4);
+ if ((timer & 0x0F) == 2)
+ sub_80A0C1C(timer >> 4);
+ if ((timer & 0x0F) == 3)
+ sub_80A0C44(timer >> 4);
+ if ((timer & 0x0F) == 4)
+ sub_80A12AC(timer >> 4);
+}
+
+static void sub_80A0BB4(u16 timer)
+{
+ static void sub_80A1688(u16);
+
+ if ((timer & 0x7) == 0)
+ sub_80A1688(timer >> 3);
+}
+
+static void sub_80A0BCC(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General0[idx], (u16 *)(BG_VRAM + 0x3F80), 0x80);
+}
+
+static void sub_80A0BF4(u16 timer)
+{
+ u8 idx;
+
+ idx = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General1[idx], (u16 *)(BG_VRAM + 0x3600), 0x3C0);
+}
+
+static void sub_80A0C1C(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General2[idx], (u16 *)(BG_VRAM + 0x3a00), 0x140);
+}
+
+static void sub_80A0C44(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General3[idx], (u16 *)(BG_VRAM + 0x3e00), 0xc0);
+}
+
+void TilesetCb_Petalburg(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_Rustboro(void)
+{
+ static void sub_80A103C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A103C;
+}
+
+void TilesetCb_Dewford(void)
+{
+ static void sub_80A10B8(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A10B8;
+}
+
+void TilesetCb_Slateport(void)
+{
+ static void sub_80A10D0(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A10D0;
+}
+
+void TilesetCb_Mauville(void)
+{
+ static void sub_80A10E8(u16);
+
+ sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A10E8;
+}
+
+void TilesetCb_Lavaridge(void)
+{
+ static void sub_80A115C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A115C;
+}
+
+void TilesetCb_Fallarbor(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_Fortree(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_Lilycove(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_Mossdeep(void)
+{
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = NULL;
+}
+
+void TilesetCb_EverGrande(void)
+{
+ static void sub_80A1188(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1188;
+}
+
+void TilesetCb_Pacifidlog(void)
+{
+ static void sub_80A11FC(u16);
+
+ sSecondaryTilesetCBCounter = sPrimaryTilesetCBCounter;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A11FC;
+}
+
+void TilesetCb_Sootopolis(void)
+{
+ static void sub_80A122C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A122C;
+}
+
+void TilesetCb_BattleFrontierOutsideWest(void)
+{
+ static void sub_80A127C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A127C;
+}
+
+void TilesetCb_BattleFrontierOutsideEast(void)
+{
+ static void sub_80A1294(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1294;
+}
+
+void TilesetCb_Underwater(void)
+{
+ static void sub_80A1244(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = 128;
+ sSecondaryTilesetCB = sub_80A1244;
+}
+
+void TilesetCb_SootopolisGym(void)
+{
+ static void sub_80A15D8(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = 240;
+ sSecondaryTilesetCB = sub_80A15D8;
+}
+
+void TilesetCb_Cave(void)
+{
+ static void sub_80A1260(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1260;
+}
+
+void TilesetCb_EliteFour(void)
+{
+ static void sub_80A15F0(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = 128;
+ sSecondaryTilesetCB = sub_80A15F0;
+}
+
+void TilesetCb_MauvilleGym(void)
+{
+ static void sub_80A15C0(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A15C0;
+}
+
+void TilesetCb_BikeShop(void)
+{
+ static void sub_80A161C(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A161C;
+}
+
+void TilesetCb_BattlePyramid(void)
+{
+ static void sub_80A1634(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1634;
+}
+
+void TilesetCb_BattleDome(void)
+{
+ static void sub_80A1658(u16);
+
+ sSecondaryTilesetCBCounter = 0;
+ sSecondaryTilesetCBBufferSize = sPrimaryTilesetCBBufferSize;
+ sSecondaryTilesetCB = sub_80A1658;
+}
+
+static void sub_80A103C(u16 timer)
+{
+ static void sub_80A1434(u16, u8);
+ static void sub_80A1470(u16);
+
+ if ((timer & 0x07) == 0)
+ {
+ sub_80A1434(timer >> 3, 0);
+ sub_80A1470(timer >> 3);
+ }
+ if ((timer & 0x07) == 1)
+ sub_80A1434(timer >> 3, 1);
+ if ((timer & 0x07) == 2)
+ sub_80A1434(timer >> 3, 2);
+ if ((timer & 0x07) == 3)
+ sub_80A1434(timer >> 3, 3);
+ if ((timer & 0x07) == 4)
+ sub_80A1434(timer >> 3, 4);
+ if ((timer & 0x07) == 5)
+ sub_80A1434(timer >> 3, 5);
+ if ((timer & 0x07) == 6)
+ sub_80A1434(timer >> 3, 6);
+ if ((timer & 0x07) == 7)
+ sub_80A1434(timer >> 3, 7);
+}
+
+static void sub_80A10B8(u16 timer)
+{
+ static void sub_80A1520(u16);
+
+ if ((timer & 7) == 0)
+ sub_80A1520(timer >> 3);
+}
+
+static void sub_80A10D0(u16 timer)
+{
+ static void sub_80A1598(u16);
+
+ if ((timer & 15) == 0)
+ sub_80A1598(timer >> 4);
+}
+
+static void sub_80A10E8(u16 timer)
+{
+ static void sub_80A1394(u16, u8);
+
+ if ((timer & 0x07) == 0)
+ sub_80A1394(timer >> 3, 0);
+ if ((timer & 0x07) == 1)
+ sub_80A1394(timer >> 3, 1);
+ if ((timer & 0x07) == 2)
+ sub_80A1394(timer >> 3, 2);
+ if ((timer & 0x07) == 3)
+ sub_80A1394(timer >> 3, 3);
+ if ((timer & 0x07) == 4)
+ sub_80A1394(timer >> 3, 4);
+ if ((timer & 0x07) == 5)
+ sub_80A1394(timer >> 3, 5);
+ if ((timer & 0x07) == 6)
+ sub_80A1394(timer >> 3, 6);
+ if ((timer & 0x07) == 7)
+ sub_80A1394(timer >> 3, 7);
+}
+
+static void sub_80A115C(u16 timer)
+{
+ static void sub_80A12D4(u8);
+ static void sub_80A1498(u16);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A12D4(timer >> 4);
+ if ((timer & 0x0F) == 1)
+ sub_80A1498(timer >> 4);
+}
+
+static void sub_80A1188(u16 timer)
+{
+ static void sub_80A14C0(u16, u8);
+
+ if ((timer & 0x07) == 0)
+ sub_80A14C0(timer >> 3, 0);
+ if ((timer & 0x07) == 1)
+ sub_80A14C0(timer >> 3, 1);
+ if ((timer & 0x07) == 2)
+ sub_80A14C0(timer >> 3, 2);
+ if ((timer & 0x07) == 3)
+ sub_80A14C0(timer >> 3, 3);
+ if ((timer & 0x07) == 4)
+ sub_80A14C0(timer >> 3, 4);
+ if ((timer & 0x07) == 5)
+ sub_80A14C0(timer >> 3, 5);
+ if ((timer & 0x07) == 6)
+ sub_80A14C0(timer >> 3, 6);
+ if ((timer & 0x07) == 7)
+ sub_80A14C0(timer >> 3, 7);
+}
+
+static void sub_80A11FC(u16 timer)
+{
+ static void sub_80A131C(u8);
+ static void sub_80A136C(u8);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A131C(timer >> 4);
+ if ((timer & 0x0F) == 1)
+ sub_80A136C(timer >> 4);
+}
+
+static void sub_80A122C(u16 timer)
+{
+ static void sub_80A1798(u16);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A1798(timer >> 4);
+}
+
+static void sub_80A1244(u16 timer)
+{
+ static void sub_80A1344(u8);
+
+ if ((timer & 0x0F) == 0)
+ sub_80A1344(timer >> 4);
+}
+
+static void sub_80A1260(u16 timer)
+{
+ static void sub_80A14F8(u16);
+
+ if ((timer & 0x0F) == 1)
+ sub_80A14F8(timer >> 4);
+}
+
+static void sub_80A127C(u16 timer)
+{
+ static void sub_80A1548(u16);
+
+ if ((timer & 0x07) == 0)
+ sub_80A1548(timer >> 3);
+}
+
+static void sub_80A1294(u16 timer)
+{
+ static void sub_80A1570(u16);
+
+ if ((timer & 0x07) == 0)
+ sub_80A1570(timer >> 3);
+}
+
+static void sub_80A12AC(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_General4[idx], (u16 *)(BG_VRAM + 0x3c00), 0x140);
+}
+
+static void sub_80A12D4(u8 timer)
+{
+ u8 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6400), 0x80);
+
+ idx = (timer + 2) % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge0[idx], (u16 *)(BG_VRAM + 0x6480), 0x80);
+}
+
+static void sub_80A131C(u8 timer)
+{
+ u8 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog0[idx], (u16 *)(BG_VRAM + 0x7a00), 0x3C0);
+}
+
+static void sub_80A1344(u8 timer)
+{
+ u8 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Underwater0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x80);
+}
+
+static void sub_80A136C(u8 timer)
+{
+ u8 idx;
+
+ idx = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Pacifidlog1[idx], (u16 *)(BG_VRAM + 0x7e00), 0x100);
+}
+
+static void sub_80A1394(u16 timer_div, u8 timer_mod)
+{
+ timer_div -= timer_mod;
+ if (timer_div < 12) // almost certainly a typo
+ {
+ timer_div %= 12;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville0a[timer_div], gTilesetAnims_MauvilleVDests0[timer_mod], 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville0b[timer_div], gTilesetAnims_MauvilleVDests1[timer_mod], 0x80);
+ }
+ else
+ {
+ timer_div %= 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville1a[timer_div], gTilesetAnims_MauvilleVDests0[timer_mod], 0x80);
+ AppendTilesetAnimToBuffer(gTilesetAnims_Mauville1b[timer_div], gTilesetAnims_MauvilleVDests1[timer_mod], 0x80);
+ }
+}
+
+static void sub_80A1434(u16 timer_div, u8 timer_mod)
+{
+ timer_div -= timer_mod;
+ timer_div %= 8;
+ if (gTilesetAnims_Rustboro0[timer_div])
+ AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro0[timer_div], gTilesetAnims_RustboroVDests0[timer_mod], 0x80);
+}
+
+static void sub_80A1470(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Rustboro1[idx], (u16 *)(BG_VRAM + 0x7800), 0x80);
+}
+
+static void sub_80A1498(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x5400), 0x80);
+}
+
+static void sub_80A14C0(u16 timer_div, u8 timer_mod)
+{
+ timer_div -= timer_mod;
+ timer_div %= 8;
+
+ AppendTilesetAnimToBuffer(gTilesetAnims_EverGrande0[timer_div], gTilesetAnims_EverGrandeVDests0[timer_mod], 0x80);
+}
+
+static void sub_80A14F8(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Lavaridge1_Cave0[idx], (u16 *)(BG_VRAM + 0x7400), 0x80);
+}
+
+static void sub_80A1520(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Dewford0[idx], (u16 *)(BG_VRAM + 0x5540), 0xC0);
+}
+
+static void sub_80A1548(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideWest0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0);
+}
+
+static void sub_80A1570(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattleFrontierOutsideEast0[idx], (u16 *)(BG_VRAM + 0x5b40), 0xC0);
+}
+
+static void sub_80A1598(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Slateport0[idx], (u16 *)(BG_VRAM + 0x5c00), 0x80);
+}
+
+static void sub_80A15C0(u16 timer)
+{
+ static void sub_80A1748(u16);
+
+ if ((timer & 1) == 0)
+ sub_80A1748(timer >> 1);
+}
+
+static void sub_80A15D8(u16 timer)
+{
+ static void sub_80A16B0(u16);
+
+ if ((timer & 7) == 0)
+ sub_80A16B0(timer >> 3);
+}
+
+static void sub_80A15F0(u16 timer)
+{
+ static void sub_80A1720(u16);
+ static void sub_80A16F8(u16);
+
+ if ((timer & 0x3f) == 1)
+ sub_80A1720(timer >> 6);
+ if ((timer & 0x07) == 1)
+ sub_80A16F8(timer >> 3);
+}
+static void sub_80A161C(u16 timer)
+{
+ static void sub_80A1770(u16);
+
+ if ((timer & 3) == 0)
+ sub_80A1770(timer >> 2);
+}
+
+static void sub_80A1634(u16 timer)
+{
+ static void sub_80A17C0(u16);
+ static void sub_80A17EC(u16);
+
+ if ((timer & 7) == 0)
+ {
+ sub_80A17C0(timer >> 3);
+ sub_80A17EC(timer >> 3);
+ }
+}
+
+static void sub_80A1658(u16 timer)
+{
+ static void sub_80A1818(u16);
+
+ if ((timer & 3) == 0)
+ sub_80A1818(timer >> 2);
+}
+
+static void sub_80A1670(u16 timer)
+{
+ static void sub_80A1884(u16);
+
+ if ((timer & 3) == 0)
+ sub_80A1884(timer >> 2);
+}
+
+static void sub_80A1688(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_InsideBuilding0[idx], (u16 *)(BG_VRAM + 0x3e00), 0x80);
+}
+
+static void sub_80A16B0(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 3;
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x180);
+ AppendTilesetAnimToBuffer(gTilesetAnims_SootopolisGym1[idx], (u16 *)(BG_VRAM + 0x7a00), 0x280);
+}
+
+static void sub_80A16F8(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 4;
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour1[idx], (u16 *)(BG_VRAM + 0x7f00), 0x20);
+}
+
+static void sub_80A1720(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_EliteFour0[idx], (u16 *)(BG_VRAM + 0x7c00), 0x80);
+}
+
+static void sub_80A1748(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_MauvilleGym0[idx], (u16 *)(BG_VRAM + 0x5200), 0x200);
+}
+
+static void sub_80A1770(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 2;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BikeShop0[idx], (u16 *)(BG_VRAM + 0x7e00), 0x120);
+}
+
+static void sub_80A1798(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 8;
+ AppendTilesetAnimToBuffer(gTilesetAnims_Sootopolis0[idx], (u16 *)(BG_VRAM + 0x5e00), 0xc00);
+}
+
+static void sub_80A17C0(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 3;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid0[idx], (u16 *)(BG_VRAM + 0x52e0), 0x100);
+}
+
+static void sub_80A17EC(u16 timer)
+{
+ u16 idx;
+
+ idx = timer % 3;
+ AppendTilesetAnimToBuffer(gTilesetAnims_BattlePyramid1[idx], (u16 *)(BG_VRAM + 0x50e0), 0x100);
+}
+
+static void sub_80A1818(u16 a1)
+{
+ CpuCopy16(gTilesetAnims_BattleDomePals0[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32);
+ BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
+ if ((u8)FindTaskIdByFunc(sub_8149DFC) != 0xFF )
+ {
+ sSecondaryTilesetCB = sub_80A1670;
+ sSecondaryTilesetCBBufferSize = 0x20;
+ }
+}
+
+static void sub_80A1884(u16 a1)
+{
+ CpuCopy16(gTilesetAnims_BattleDomePals0[a1 & 0x3], gPlttBufferUnfaded + 0x80, 32);
+ if ((u8)FindTaskIdByFunc(sub_8149DFC) == 0xFF )
+ {
+ BlendPalette(0x80, 0x10, gPaletteFade.y, gPaletteFade.blendColor & 0x7FFF);
+ if (!--sSecondaryTilesetCBBufferSize)
+ sSecondaryTilesetCB = NULL;
+ }
+}
diff --git a/src/tv.c b/src/tv.c
new file mode 100644
index 000000000..3c822b394
--- /dev/null
+++ b/src/tv.c
@@ -0,0 +1,7927 @@
+
+// Includes
+#include "global.h"
+#include "rtc.h"
+#include "overworld.h"
+#include "map_constants.h"
+#include "rng.h"
+#include "event_data.h"
+#include "fieldmap.h"
+#include "field_camera.h"
+#include "strings.h"
+#include "string_util.h"
+#include "international_string_util.h"
+#include "pokemon_storage_system.h"
+#include "field_message_box.h"
+#include "easy_chat.h"
+#include "species.h"
+#include "moves.h"
+#include "battle.h"
+#include "battle_tower.h"
+#include "contest.h"
+#include "items.h"
+#include "item.h"
+#include "link.h"
+#include "main.h"
+#include "event_scripts.h"
+#include "shop.h"
+#include "lilycove_lady.h"
+#include "rom6.h"
+#include "pokedex.h"
+#include "field_map_obj.h"
+#include "text.h"
+#include "script_menu.h"
+#include "naming_screen.h"
+#include "malloc.h"
+#include "region_map.h"
+#include "decoration.h"
+#include "secret_base.h"
+#include "tv.h"
+
+// Static type declarations
+
+#define rbernoulli(num, den) TV_BernoulliTrial(0xFFFF * (num) / (den))
+
+// Static RAM declarations
+
+s8 sCurTVShowSlot;
+u16 sTV_SecretBaseVisitMovesTemp[8];
+u8 sTV_DecorationsBuffer[16];
+struct {
+ u8 level;
+ u16 species;
+ u16 move;
+} sTV_SecretBaseVisitMonsTemp[10];
+
+IWRAM_DATA u8 sTVShowMixingNumPlayers;
+IWRAM_DATA u8 sTVShowNewsMixingNumPlayers;
+IWRAM_DATA s8 sTVShowMixingCurSlot;
+
+EWRAM_DATA u16 sPokemonAnglerSpecies = 0;
+EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0;
+EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0;
+EWRAM_DATA bool8 sFindThatGamerWhichGame = FALSE;
+EWRAM_DATA ALIGNED(4) u8 sRecordMixingPartnersWithoutShowsToShare = 0;
+EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0;
+EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {};
+
+// Static ROM declarations
+
+extern const u8 *const sTVBravoTrainerTextGroup[];
+extern const u8 *const sTVBravoTrainerBattleTowerTextGroup[];
+
+void ClearPokemonNews(void);
+u8 GetTVChannelByShowType(u8 kind);
+u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void);
+u8 CheckForBigMovieOrEmergencyNewsOnTV(void);
+void SetTVMetatilesOnMap(int width, int height, u16 tileId);
+u8 FindAnyTVNewsOnTheAir(void);
+bool8 IsTVShowInSearchOfTrainersAiring(void);
+void TakeTVShowInSearchOfTrainersOffTheAir(void);
+bool8 TV_BernoulliTrial(u16 ratio);
+s8 FindEmptyTVSlotBeyondFirstFiveShowsOfArray(TVShow *shows);
+bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag);
+void tv_store_id_3x(TVShow *show);
+void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx);
+s8 FindEmptyTVSlotWithinFirstFiveShowsOfArray(TVShow *shows);
+void FindActiveBroadcastByShowType_SetScriptResult(u8 kind);
+void InterviewBefore_BravoTrainerPkmnProfile(void);
+void InterviewBefore_NameRater(void);
+u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies);
+void sub_80EFA88(void);
+void sub_80EF93C(TVShow *shows);
+s8 sub_80EEE30(PokeNews *pokeNews);
+bool8 sub_80EF0E4(u8 newsKind);
+void ClearPokemonNewsI(u8 i);
+void sub_80F1254(TVShow *shows);
+void sub_80F12A4(TVShow *shows);
+void sub_80F0358(TVShow *player1, TVShow *player2, TVShow *player3, TVShow *player4);
+void sub_80F0C04(void);
+void sub_80F0708(void);
+void sub_80F0B64(void);
+s8 sub_80F06D0(TVShow *tvShows);
+bool8 sub_80F049C(TVShow *dest[], TVShow *src[], u8 idx);
+bool8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx);
+bool8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx);
+bool8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx);
+void sub_80F0B00(u8 showIdx);
+void sub_80F0B24(u16 species, u8 showIdx);
+void sub_80F0D60(PokeNews *player1, PokeNews *player2, PokeNews *player3, PokeNews *player4);
+void sub_80F0EEC(void);
+void sub_80F0F24(void);
+s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx);
+void sub_80F0E58(PokeNews *dest[], PokeNews *src[]);
+bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot);
+void TVShowDone(void);
+void InterviewAfter_FanClubLetter(void);
+void InterviewAfter_RecentHappenings(void);
+void InterviewAfter_PkmnFanClubOpinions(void);
+void InterviewAfter_DummyShow4(void);
+void InterviewAfter_BravoTrainerPokemonProfile(void);
+void InterviewAfter_BravoTrainerBattleTowerProfile(void);
+void InterviewAfter_ContestLiveUpdates(void);
+void UpdateWorldOfMastersAndPutItOnTheAir(void);
+void PutPokemonTodayFailedOnTheAir(void);
+void sub_80ED718(void);
+void sub_80EED88(void);
+void TV_SortPurchasesByQuantity(void);
+void sub_80ED8B4(u16 days);
+void UpdateMassOutbreakTimeLeft(u16 days);
+void sub_80EF120(u16 days);
+void sub_80EDA48(u16 days);
+void sub_80EEB98(u16 days);
+void PutFishingAdviceShowOnTheAir(void);
+void sub_80EDA80(void);
+u8 TV_MonDataIdxToRibbon(u8 monDataIdx);
+void sub_80EEBF4(u8 actionIdx);
+bool8 IsPriceDiscounted(u8 newsKind);
+void InterviewBefore_FanClubLetter(void);
+void InterviewBefore_RecentHappenings(void);
+void InterviewBefore_PkmnFanClubOpinions(void);
+void InterviewBefore_Dummy(void);
+void InterviewBefore_BravoTrainerBTProfile(void);
+void InterviewBefore_ContestLiveUpdates(void);
+void InterviewBefore_3CheersForPokeblocks(void);
+void InterviewBefore_FanClubSpecial(void);
+void ChangeBoxPokemonNickname_CB(void);
+void DoTVShowPokemonFanClubLetter(void);
+void DoTVShowRecentHappenings(void);
+void DoTVShowPokemonFanClubOpinions(void);
+void DoTVShowDummiedOut(void);
+void DoTVShowPokemonNewsMassOutbreak(void);
+void DoTVShowBravoTrainerPokemonProfile(void);
+void DoTVShowBravoTrainerBattleTower(void);
+void DoTVShowPokemonTodaySuccessfulCapture(void);
+void DoTVShowTodaysSmartShopper(void);
+void DoTVShowTheNameRaterShow(void);
+void DoTVShowPokemonContestLiveUpdates(void);
+void DoTVShowPokemonBattleUpdate(void);
+void DoTVShow3CheersForPokeblocks(void);
+void DoTVShowPokemonTodayFailedCapture(void);
+void DoTVShowPokemonAngler(void);
+void DoTVShowTheWorldOfMasters(void);
+void DoTVShowTodaysRivalTrainer(void);
+void DoTVShowDewfordTrendWatcherNetwork(void);
+void DoTVShowHoennTreasureInvestigators(void);
+void DoTVShowFindThatGamer(void);
+void DoTVShowBreakingNewsTV(void);
+void DoTVShowSecretBaseVisit(void);
+void DoTVShowPokemonLotteryWinnerFlashReport(void);
+void DoTVShowThePokemonBattleSeminar(void);
+void DoTVShowTrainerFanClubSpecial(void);
+void DoTVShowTrainerFanClub(void);
+void DoTVShowSpotTheCuties(void);
+void DoTVShowPokemonNewsBattleFrontier(void);
+void DoTVShowWhatsNo1InHoennToday(void);
+void DoTVShowSecretBaseSecrets(void);
+void DoTVShowSafariFanClub(void);
+void DoTVShowPokemonContestLiveUpdates2(void);
+
+// .rodata
+
+const struct {
+ u16 species;
+ u16 moves[4];
+ u8 level;
+ u8 location;
+} sPokeOutbreakSpeciesList[] = {
+ {
+ SPECIES_SEEDOT,
+ {MOVE_BIDE, MOVE_HARDEN, MOVE_LEECH_SEED},
+ 3, 0x11 // Route 102
+ },
+ {
+ SPECIES_NUZLEAF,
+ {MOVE_HARDEN, MOVE_GROWTH, MOVE_NATURE_POWER, MOVE_LEECH_SEED},
+ 15, 0x1D // Route 114
+ },
+ {
+ SPECIES_SEEDOT,
+ {MOVE_HARDEN, MOVE_GROWTH, MOVE_NATURE_POWER, MOVE_LEECH_SEED},
+ 13, 0x20 // Route 117
+ },
+ {
+ SPECIES_SEEDOT,
+ {MOVE_GIGA_DRAIN, MOVE_FRUSTRATION, MOVE_SOLAR_BEAM, MOVE_LEECH_SEED},
+ 25, 0x23 // Route 110
+ },
+ {
+ SPECIES_SKITTY,
+ {MOVE_GROWL, MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_ATTRACT},
+ 8, 0x1F // Route 116
+ }
+};
+
+// TODO: Figure out what these are, and define constants in include/flags.h
+const u16 sGoldSymbolFlags[] = {
+ SYS_TOWER_GOLD,
+ SYS_DOME_GOLD,
+ SYS_PALACE_GOLD,
+ SYS_ARENA_GOLD,
+ SYS_FACTORY_GOLD,
+ SYS_PIKE_GOLD,
+ SYS_PYRAMID_GOLD
+};
+
+const u16 sSilverSymbolFlags[] = {
+ SYS_TOWER_SILVER,
+ SYS_DOME_SILVER,
+ SYS_PALACE_SILVER,
+ SYS_ARENA_SILVER,
+ SYS_FACTORY_SILVER,
+ SYS_PIKE_SILVER,
+ SYS_PYRAMID_SILVER
+};
+
+// TODO: Figure out what these are, and define constants in include/vars.h
+const u16 sNumberOneVarsAndThresholds[][2] = {
+ {VAR_DAILY_SLOTS, 100},
+ {VAR_DAILY_ROULETTE, 50},
+ {VAR_DAILY_WILDS, 100},
+ {VAR_DAILY_BLENDER, 20},
+ {VAR_DAILY_PLANTED_BERRIES, 20},
+ {VAR_DAILY_PICKED_BERRIES, 20},
+ {VAR_DAILY_BP, 30}
+};
+
+const u8 *const sPokeNewsTextGroup_Upcoming[] = {
+ NULL,
+ gPokeNewsTextSlateport_Upcoming,
+ gPokeNewsTextGameCorner_Upcoming,
+ gPokeNewsTextLilycove_Upcoming,
+ gPokeNewsTextBlendMaster_Upcoming
+};
+
+const u8 *const sPokeNewsTextGroup_Ongoing[] = {
+ NULL,
+ gPokeNewsTextSlateport_Ongoing,
+ gPokeNewsTextGameCorner_Ongoing,
+ gPokeNewsTextLilycove_Ongoing,
+ gPokeNewsTextBlendMaster_Ongoing
+};
+
+const u8 *const sPokeNewsTextGroup_Ending[] = {
+ NULL,
+ gPokeNewsTextSlateport_Ending,
+ gPokeNewsTextGameCorner_Ending,
+ gPokeNewsTextLilycove_Ending,
+ gPokeNewsTextBlendMaster_Ending
+};
+
+u8 *const gTVStringVarPtrs[] = {
+ gStringVar1,
+ gStringVar2,
+ gStringVar3
+};
+
+const u8 *const sTVFanClubTextGroup[] = {
+ gTVFanClubText00,
+ gTVFanClubText01,
+ gTVFanClubText02,
+ gTVFanClubText03,
+ gTVFanClubText04,
+ gTVFanClubText05,
+ gTVFanClubText06,
+ gTVFanClubText07
+};
+
+const u8 *const sTVRecentHappeninssTextGroup[] = {
+ gTVRecentHappeningsText00,
+ gTVRecentHappeningsText01,
+ gTVRecentHappeningsText02,
+ gTVRecentHappeningsText03,
+ gTVRecentHappeningsText04,
+ gTVRecentHappeningsText05
+};
+
+const u8 *const sTVFanClubOpinionsTextGroup[] = {
+ gTVFanClubOpinionsText00,
+ gTVFanClubOpinionsText01,
+ gTVFanClubOpinionsText02,
+ gTVFanClubOpinionsText03,
+ gTVFanClubOpinionsText04
+};
+
+const u8 *const sTVMassOutbreakTextGroup[] = {
+ gTVMassOutbreakText00
+};
+
+const u8 *const sTVPokemonTodaySuccessfulTextGroup[] = {
+ gTVPokemonTodaySuccessfulText00,
+ gTVPokemonTodaySuccessfulText01,
+ gTVPokemonTodaySuccessfulText02,
+ gTVPokemonTodaySuccessfulText03,
+ gTVPokemonTodaySuccessfulText04,
+ gTVPokemonTodaySuccessfulText05,
+ gTVPokemonTodaySuccessfulText06,
+ gTVPokemonTodaySuccessfulText07,
+ gTVPokemonTodaySuccessfulText08,
+ gTVPokemonTodaySuccessfulText09,
+ gTVPokemonTodaySuccessfulText10,
+ gTVPokemonTodaySuccessfulText11
+};
+
+const u8 *const sTVTodaysSmartShopperTextGroup[] = {
+ gTVTodaysSmartShopperText00,
+ gTVTodaysSmartShopperText01,
+ gTVTodaysSmartShopperText02,
+ gTVTodaysSmartShopperText03,
+ gTVTodaysSmartShopperText04,
+ gTVTodaysSmartShopperText05,
+ gTVTodaysSmartShopperText06,
+ gTVTodaysSmartShopperText07,
+ gTVTodaysSmartShopperText08,
+ gTVTodaysSmartShopperText09,
+ gTVTodaysSmartShopperText10,
+ gTVTodaysSmartShopperText11,
+ gTVTodaysSmartShopperText12
+};
+
+const u8 *const sTVBravoTrainerTextGroup[] = {
+ gTVBravoTrainerText00,
+ gTVBravoTrainerText01,
+ gTVBravoTrainerText02,
+ gTVBravoTrainerText03,
+ gTVBravoTrainerText04,
+ gTVBravoTrainerText05,
+ gTVBravoTrainerText06,
+ gTVBravoTrainerText07,
+ gTVBravoTrainerText08
+};
+
+const u8 *const sTV3CheersForPokeblocksTextGroup[] = {
+ gTV3CheersForPokeblocksText00,
+ gTV3CheersForPokeblocksText01,
+ gTV3CheersForPokeblocksText02,
+ gTV3CheersForPokeblocksText03,
+ gTV3CheersForPokeblocksText04,
+ gTV3CheersForPokeblocksText05
+};
+
+const u8 *const sTVBravoTrainerBattleTowerTextGroup[] = {
+ gTVBravoTrainerBattleTowerText00,
+ gTVBravoTrainerBattleTowerText01,
+ gTVBravoTrainerBattleTowerText02,
+ gTVBravoTrainerBattleTowerText03,
+ gTVBravoTrainerBattleTowerText04,
+ gTVBravoTrainerBattleTowerText05,
+ gTVBravoTrainerBattleTowerText06,
+ gTVBravoTrainerBattleTowerText07,
+ gTVBravoTrainerBattleTowerText08,
+ gTVBravoTrainerBattleTowerText09,
+ gTVBravoTrainerBattleTowerText10,
+ gTVBravoTrainerBattleTowerText11,
+ gTVBravoTrainerBattleTowerText12,
+ gTVBravoTrainerBattleTowerText13,
+ gTVBravoTrainerBattleTowerText14
+};
+
+const u8 *const sTVContestLiveUpdatesTextGroup[] = {
+ gTVContestLiveUpdatesText00,
+ gTVContestLiveUpdatesText01,
+ gTVContestLiveUpdatesText02,
+ gTVContestLiveUpdatesText03,
+ gTVContestLiveUpdatesText04,
+ gTVContestLiveUpdatesText05,
+ gTVContestLiveUpdatesText06,
+ gTVContestLiveUpdatesText07,
+ gTVContestLiveUpdatesText08,
+ gTVContestLiveUpdatesText09,
+ gTVContestLiveUpdatesText10,
+ gTVContestLiveUpdatesText11,
+ gTVContestLiveUpdatesText12,
+ gTVContestLiveUpdatesText13,
+ gTVContestLiveUpdatesText14,
+ gTVContestLiveUpdatesText15,
+ gTVContestLiveUpdatesText16,
+ gTVContestLiveUpdatesText17,
+ gTVContestLiveUpdatesText18,
+ gTVContestLiveUpdatesText19,
+ gTVContestLiveUpdatesText20,
+ gTVContestLiveUpdatesText21,
+ gTVContestLiveUpdatesText22,
+ gTVContestLiveUpdatesText23,
+ gTVContestLiveUpdatesText24,
+ gTVContestLiveUpdatesText25,
+ gTVContestLiveUpdatesText26,
+ gTVContestLiveUpdatesText27,
+ gTVContestLiveUpdatesText28,
+ gTVContestLiveUpdatesText29,
+ gTVContestLiveUpdatesText30,
+ gTVContestLiveUpdatesText31,
+ gTVContestLiveUpdatesText32
+};
+
+const u8 *const sTVPokemonBattleUpdateTextGroup[] = {
+ gTVPokemonBattleUpdateText00,
+ gTVPokemonBattleUpdateText01,
+ gTVPokemonBattleUpdateText02,
+ gTVPokemonBattleUpdateText03,
+ gTVPokemonBattleUpdateText04,
+ gTVPokemonBattleUpdateText05,
+ gTVPokemonBattleUpdateText06,
+ gTVPokemonBattleUpdateText07
+};
+
+const u8 *const sTVTrainerFanClubSpecialTextGroup[] = {
+ gTVTrainerFanClubSpecialText00,
+ gTVTrainerFanClubSpecialText01,
+ gTVTrainerFanClubSpecialText02,
+ gTVTrainerFanClubSpecialText03,
+ gTVTrainerFanClubSpecialText04,
+ gTVTrainerFanClubSpecialText05
+};
+
+const u8 *const sTVNameRaterTextGroup[] = {
+ gTVNameRaterText00,
+ gTVNameRaterText01,
+ gTVNameRaterText02,
+ gTVNameRaterText03,
+ gTVNameRaterText04,
+ gTVNameRaterText05,
+ gTVNameRaterText06,
+ gTVNameRaterText07,
+ gTVNameRaterText08,
+ gTVNameRaterText09,
+ gTVNameRaterText10,
+ gTVNameRaterText11,
+ gTVNameRaterText12,
+ gTVNameRaterText13,
+ gTVNameRaterText14,
+ gTVNameRaterText15,
+ gTVNameRaterText16,
+ gTVNameRaterText17,
+ gTVNameRaterText18
+};
+
+const u8 *const sTVPokemonContestLiveUpdates2TextGroup[] = {
+ gTVPokemonContestLiveUpdates2Text00,
+ gTVPokemonContestLiveUpdates2Text01,
+ gTVPokemonContestLiveUpdates2Text02,
+ gTVPokemonContestLiveUpdates2Text03
+};
+
+const u8 *const sTVPokemonTodayFailedTextGroup[] = {
+ gTVPokemonTodayFailedText00,
+ gTVPokemonTodayFailedText01,
+ gTVPokemonTodayFailedText02,
+ gTVPokemonTodayFailedText03,
+ gTVPokemonTodayFailedText04,
+ gTVPokemonTodayFailedText05,
+ gTVPokemonTodayFailedText06
+};
+
+const u8 *const sTVPokemonAnslerTextGroup[] = {
+ gTVPokemonAnglerText00,
+ gTVPokemonAnglerText01
+};
+
+const u8 *const sTVWorldOfMastersTextGroup[] = {
+ gTVWorldOfMastersText00,
+ gTVWorldOfMastersText01,
+ gTVWorldOfMastersText02
+};
+
+const u8 *const sTVTodaysRivalTrainerTextGroup[] = {
+ gTVTodaysRivalTrainerText00,
+ gTVTodaysRivalTrainerText01,
+ gTVTodaysRivalTrainerText02,
+ gTVTodaysRivalTrainerText03,
+ gTVTodaysRivalTrainerText04,
+ gTVTodaysRivalTrainerText05,
+ gTVTodaysRivalTrainerText06,
+ gTVTodaysRivalTrainerText07,
+ gTVTodaysRivalTrainerText08,
+ gTVTodaysRivalTrainerText09,
+ gTVTodaysRivalTrainerText10
+};
+
+const u8 *const sTVDewfordTrendWatcherNetworkTextGroup[] = {
+ gTVDewfordTrendWatcherNetworkText00,
+ gTVDewfordTrendWatcherNetworkText01,
+ gTVDewfordTrendWatcherNetworkText02,
+ gTVDewfordTrendWatcherNetworkText03,
+ gTVDewfordTrendWatcherNetworkText04,
+ gTVDewfordTrendWatcherNetworkText05,
+ gTVDewfordTrendWatcherNetworkText06
+};
+
+const u8 *const sTVHoennTreasureInvestisatorsTextGroup[] = {
+ gTVHoennTreasureInvestigatorsText00,
+ gTVHoennTreasureInvestigatorsText01,
+ gTVHoennTreasureInvestigatorsText02
+};
+
+const u8 *const sTVFindThatGamerTextGroup[] = {
+ gTVFindThatGamerText00,
+ gTVFindThatGamerText01,
+ gTVFindThatGamerText02,
+ gTVFindThatGamerText03
+};
+
+const u8 *const sTVBreakinsNewsTextGroup[] = {
+ gTVBreakingNewsText00,
+ gTVBreakingNewsText01,
+ gTVBreakingNewsText02,
+ gTVBreakingNewsText03,
+ gTVBreakingNewsText04,
+ gTVBreakingNewsText05,
+ gTVBreakingNewsText06,
+ gTVBreakingNewsText07,
+ gTVBreakingNewsText08,
+ gTVBreakingNewsText09,
+ gTVBreakingNewsText10,
+ gTVBreakingNewsText11,
+ gTVBreakingNewsText12
+};
+
+const u8 *const sTVSecretBaseVisitTextGroup[] = {
+ gTVSecretBaseVisitText00,
+ gTVSecretBaseVisitText01,
+ gTVSecretBaseVisitText02,
+ gTVSecretBaseVisitText03,
+ gTVSecretBaseVisitText04,
+ gTVSecretBaseVisitText05,
+ gTVSecretBaseVisitText06,
+ gTVSecretBaseVisitText07,
+ gTVSecretBaseVisitText08,
+ gTVSecretBaseVisitText09,
+ gTVSecretBaseVisitText10,
+ gTVSecretBaseVisitText11,
+ gTVSecretBaseVisitText12,
+ gTVSecretBaseVisitText13
+};
+
+const u8 *const sTVPokemonLotteryWinnerFlashReportTextGroup[] = {
+ gTVPokemonLotteryWinnerFlashReportText00
+};
+
+const u8 *const sTVThePokemonBattleSeminarTextGroup[] = {
+ gTVThePokemonBattleSeminarText00,
+ gTVThePokemonBattleSeminarText01,
+ gTVThePokemonBattleSeminarText02,
+ gTVThePokemonBattleSeminarText03,
+ gTVThePokemonBattleSeminarText04,
+ gTVThePokemonBattleSeminarText05,
+ gTVThePokemonBattleSeminarText06
+};
+
+const u8 *const sTVTrainerFanClubTextGroup[] = {
+ gTVTrainerFanClubText00,
+ gTVTrainerFanClubText01,
+ gTVTrainerFanClubText02,
+ gTVTrainerFanClubText03,
+ gTVTrainerFanClubText04,
+ gTVTrainerFanClubText05,
+ gTVTrainerFanClubText06,
+ gTVTrainerFanClubText07,
+ gTVTrainerFanClubText08,
+ gTVTrainerFanClubText09,
+ gTVTrainerFanClubText10,
+ gTVTrainerFanClubText11
+};
+
+const u8 *const sTVCutiesTextGroup[] = {
+ gTVCutiesText00,
+ gTVCutiesText01,
+ gTVCutiesText02,
+ gTVCutiesText03,
+ gTVCutiesText04,
+ gTVCutiesText05,
+ gTVCutiesText06,
+ gTVCutiesText07,
+ gTVCutiesText08,
+ gTVCutiesText09,
+ gTVCutiesText10,
+ gTVCutiesText11,
+ gTVCutiesText12,
+ gTVCutiesText13,
+ gTVCutiesText14,
+ gTVCutiesText15
+};
+
+const u8 *const sTVPokemonNewsBattleFrontierTextGroup[] = {
+ gTVPokemonNewsBattleFrontierText00,
+ gTVPokemonNewsBattleFrontierText01,
+ gTVPokemonNewsBattleFrontierText02,
+ gTVPokemonNewsBattleFrontierText03,
+ gTVPokemonNewsBattleFrontierText04,
+ gTVPokemonNewsBattleFrontierText05,
+ gTVPokemonNewsBattleFrontierText06,
+ gTVPokemonNewsBattleFrontierText07,
+ gTVPokemonNewsBattleFrontierText08,
+ gTVPokemonNewsBattleFrontierText09,
+ gTVPokemonNewsBattleFrontierText10,
+ gTVPokemonNewsBattleFrontierText11,
+ gTVPokemonNewsBattleFrontierText12,
+ gTVPokemonNewsBattleFrontierText13,
+ gTVPokemonNewsBattleFrontierText14,
+ gTVPokemonNewsBattleFrontierText15,
+ gTVPokemonNewsBattleFrontierText16,
+ gTVPokemonNewsBattleFrontierText17,
+ gTVPokemonNewsBattleFrontierText18
+};
+
+const u8 *const sTVWhatsNo1InHoennTodayTextGroup[] = {
+ gTVWhatsNo1InHoennTodayText00,
+ gTVWhatsNo1InHoennTodayText01,
+ gTVWhatsNo1InHoennTodayText02,
+ gTVWhatsNo1InHoennTodayText03,
+ gTVWhatsNo1InHoennTodayText04,
+ gTVWhatsNo1InHoennTodayText05,
+ gTVWhatsNo1InHoennTodayText06,
+ gTVWhatsNo1InHoennTodayText07,
+ gTVWhatsNo1InHoennTodayText08
+};
+
+const u8 *const sTVSecretBaseSecretsTextGroup[] = {
+ gTVSecretBaseSecretsText00,
+ gTVSecretBaseSecretsText01,
+ gTVSecretBaseSecretsText02,
+ gTVSecretBaseSecretsText03,
+ gTVSecretBaseSecretsText04,
+ gTVSecretBaseSecretsText05,
+ gTVSecretBaseSecretsText06,
+ gTVSecretBaseSecretsText07,
+ gTVSecretBaseSecretsText08,
+ gTVSecretBaseSecretsText09,
+ gTVSecretBaseSecretsText10,
+ gTVSecretBaseSecretsText11,
+ gTVSecretBaseSecretsText12,
+ gTVSecretBaseSecretsText13,
+ gTVSecretBaseSecretsText14,
+ gTVSecretBaseSecretsText15,
+ gTVSecretBaseSecretsText16,
+ gTVSecretBaseSecretsText17,
+ gTVSecretBaseSecretsText18,
+ gTVSecretBaseSecretsText19,
+ gTVSecretBaseSecretsText20,
+ gTVSecretBaseSecretsText21,
+ gTVSecretBaseSecretsText22,
+ gTVSecretBaseSecretsText23,
+ gTVSecretBaseSecretsText24,
+ gTVSecretBaseSecretsText25,
+ gTVSecretBaseSecretsText26,
+ gTVSecretBaseSecretsText27,
+ gTVSecretBaseSecretsText28,
+ gTVSecretBaseSecretsText29,
+ gTVSecretBaseSecretsText30,
+ gTVSecretBaseSecretsText31,
+ gTVSecretBaseSecretsText32,
+ gTVSecretBaseSecretsText33,
+ gTVSecretBaseSecretsText34,
+ gTVSecretBaseSecretsText35,
+ gTVSecretBaseSecretsText36,
+ gTVSecretBaseSecretsText37,
+ gTVSecretBaseSecretsText38,
+ gTVSecretBaseSecretsText39,
+ gTVSecretBaseSecretsText40,
+ gTVSecretBaseSecretsText41,
+ gTVSecretBaseSecretsText42
+};
+
+const u8 *const sTVSafariFanClubTextGroup[] = {
+ gTVSafariFanClubText00,
+ gTVSafariFanClubText01,
+ gTVSafariFanClubText02,
+ gTVSafariFanClubText03,
+ gTVSafariFanClubText04,
+ gTVSafariFanClubText05,
+ gTVSafariFanClubText06,
+ gTVSafariFanClubText07,
+ gTVSafariFanClubText08,
+ gTVSafariFanClubText09,
+ gTVSafariFanClubText10
+};
+
+const u8 *const sTVInSearchOfTrainersTextGroup[] = {
+ gTVInSearchOfTrainersText00,
+ gTVInSearchOfTrainersText01,
+ gTVInSearchOfTrainersText02,
+ gTVInSearchOfTrainersText03,
+ gTVInSearchOfTrainersText04,
+ gTVInSearchOfTrainersText05,
+ gTVInSearchOfTrainersText06,
+ gTVInSearchOfTrainersText07,
+ gTVInSearchOfTrainersText08
+};
+
+const u8 sTVSecretBaseSecretsStateLookup[] = {
+ 0x0a,
+ 0x0b,
+ 0x0c,
+ 0x0d,
+ 0x0e,
+ 0x0f,
+ 0x10,
+ 0x11,
+ 0x12,
+ 0x13,
+ 0x14,
+ 0x17,
+ 0x18,
+ 0x19,
+ 0x1a,
+ 0x1b,
+ 0x1c,
+ 0x1d,
+ 0x1e,
+ 0x1f,
+ 0x20,
+ 0x21,
+ 0x22,
+ 0x23,
+ 0x24,
+ 0x25,
+ 0x26,
+ 0x27,
+ 0x28,
+ 0x29,
+ 0x2a,
+ 0x2b
+};
+
+// .text
+
+void ClearTVShowData(void)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows); i ++)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.kind = 0;
+ gSaveBlock1Ptr->tvShows[i].common.active = 0;
+ for (j = 0; j < sizeof(TVShow) - 2; j ++)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.pad02[j] = 0;
+ }
+ }
+ ClearPokemonNews();
+}
+
+u8 special_0x44(void)
+{
+ u8 i;
+ u8 j;
+ u8 selIdx;
+ TVShow *show;
+
+ for (i = 5; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 1; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == 0)
+ {
+ break;
+ }
+ }
+ j = Random() % i;
+ selIdx = j;
+ do
+ {
+ if (GetTVChannelByShowType(gSaveBlock1Ptr->tvShows[j].common.kind) != 4)
+ {
+ if (gSaveBlock1Ptr->tvShows[j].common.active == TRUE)
+ {
+ return j;
+ }
+ }
+ else
+ {
+ show = &gSaveBlock1Ptr->tvShows[j];
+ if (show->massOutbreak.daysLeft == 0 && show->massOutbreak.active == TRUE)
+ {
+ return j;
+ }
+ }
+ if (j == 0)
+ {
+ j = ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 2;
+ }
+ else
+ {
+ j --;
+ }
+ } while (j != selIdx);
+ return 0xFF;
+}
+
+u8 FindAnyTVShowOnTheAir(void)
+{
+ u8 response;
+
+ response = special_0x44();
+ if (response == 0xFF)
+ {
+ return 0xFF;
+ }
+ if (gSaveBlock1Ptr->outbreakPokemonSpecies != SPECIES_NONE && gSaveBlock1Ptr->tvShows[response].common.kind == TVSHOW_MASS_OUTBREAK)
+ {
+ return FindFirstActiveTVShowThatIsNotAMassOutbreak();
+ }
+ return response;
+}
+
+void UpdateTVScreensOnMap(int width, int height)
+{
+ FlagSet(SYS_TV_WATCH);
+ switch (CheckForBigMovieOrEmergencyNewsOnTV())
+ {
+ case 1:
+ SetTVMetatilesOnMap(width, height, 0x3);
+ break;
+ case 2:
+ break;
+ default:
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1Ptr->location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F)
+ {
+ SetTVMetatilesOnMap(width, height, 0x3);
+ }
+ else if (FlagGet(SYS_TV_START) && (FindAnyTVShowOnTheAir() != 0xff || FindAnyTVNewsOnTheAir() != 0xff || IsTVShowInSearchOfTrainersAiring()))
+ {
+ FlagClear(SYS_TV_WATCH);
+ SetTVMetatilesOnMap(width, height, 0x3);
+ }
+ break;
+ }
+}
+
+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) // is this tile a TV?
+ {
+ MapGridSetMetatileIdAt(x, y, tileId | 0xc00);
+ }
+ }
+ }
+}
+
+void TurnOffTVScreen(void)
+{
+ SetTVMetatilesOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height, 0x0002);
+ DrawWholeMapView();
+}
+
+void TurnOnTVScreen(void)
+{
+ SetTVMetatilesOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height, 0x0003);
+ DrawWholeMapView();
+}
+
+u8 special_0x45(void)
+{
+ return gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.kind;
+}
+
+u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void)
+{
+ u8 i;
+
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 1; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind != 0 && gSaveBlock1Ptr->tvShows[i].common.kind != TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->tvShows[i].common.active == TRUE)
+ {
+ return i;
+ }
+ }
+ return 0xFF;
+}
+
+u8 special_0x4a(void)
+{
+ TVShow *tvShow;
+
+ tvShow = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ if (tvShow->common.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->outbreakPokemonSpecies != SPECIES_NONE)
+ {
+ return FindFirstActiveTVShowThatIsNotAMassOutbreak();
+ }
+ return gSpecialVar_0x8004;
+}
+
+// IN SEARCH OF TRAINERS
+
+void ResetGabbyAndTy(void)
+{
+ gSaveBlock1Ptr->gabbyAndTyData.mon1 = SPECIES_NONE;
+ gSaveBlock1Ptr->gabbyAndTyData.mon2 = SPECIES_NONE;
+ gSaveBlock1Ptr->gabbyAndTyData.lastMove = MOVE_NONE;
+ gSaveBlock1Ptr->gabbyAndTyData.quote[0] = -1;
+ gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.onAir = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.valA_5 = 0;
+ gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2 = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2 = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2 = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2 = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.valB_4 = 0;
+ gSaveBlock1Ptr->gabbyAndTyData.mapnum = 0;
+ gSaveBlock1Ptr->gabbyAndTyData.battleNum = 0;
+}
+
+void GabbyAndTyBeforeInterview(void)
+{
+ u8 i;
+
+ gSaveBlock1Ptr->gabbyAndTyData.mon1 = gBattleResults.playerMon1Species;
+ gSaveBlock1Ptr->gabbyAndTyData.mon2 = gBattleResults.playerMon2Species;
+ gSaveBlock1Ptr->gabbyAndTyData.lastMove = gBattleResults.lastUsedMovePlayer;
+ if (gSaveBlock1Ptr->gabbyAndTyData.battleNum != 0xFF)
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.battleNum ++;
+ }
+ gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn = gBattleResults.unk5_0;
+ if (gBattleResults.playerFaintCounter != 0)
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = TRUE;
+ }
+ else
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = FALSE;
+ }
+ if (gBattleResults.unk3 != 0)
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = TRUE;
+ }
+ else
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = FALSE;
+ }
+ if (!gBattleResults.usedMasterBall)
+ {
+ for (i = 0; i < 11; i ++)
+ {
+ if (gBattleResults.catchAttempts[i])
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = TRUE;
+ break;
+ }
+ }
+ }
+ else
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = TRUE;
+ }
+ TakeTVShowInSearchOfTrainersOffTheAir();
+ if (gSaveBlock1Ptr->gabbyAndTyData.lastMove == MOVE_NONE)
+ {
+ FlagSet(0x0001);
+ }
+}
+
+void GabbyAndTyAfterInterview(void)
+{
+ gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2 = gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn;
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2 = gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2 = gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem;
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2 = gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall;
+ gSaveBlock1Ptr->gabbyAndTyData.onAir = TRUE;
+ gSaveBlock1Ptr->gabbyAndTyData.mapnum = gMapHeader.regionMapSectionId;
+ IncrementGameStat(GAME_STAT_GOT_INTERVIEWED);
+}
+
+void TakeTVShowInSearchOfTrainersOffTheAir(void)
+{
+ gSaveBlock1Ptr->gabbyAndTyData.onAir = FALSE;
+}
+
+u8 GabbyAndTyGetBattleNum(void)
+{
+ if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 5)
+ {
+ return (gSaveBlock1Ptr->gabbyAndTyData.battleNum % 3) + 6;
+ }
+ return gSaveBlock1Ptr->gabbyAndTyData.battleNum;
+}
+
+bool8 IsTVShowInSearchOfTrainersAiring(void)
+{
+ return gSaveBlock1Ptr->gabbyAndTyData.onAir;
+}
+
+bool8 GabbyAndTyGetLastQuote(void)
+{
+ if (gSaveBlock1Ptr->gabbyAndTyData.quote[0] == 0xFFFF)
+ {
+ return FALSE;
+ }
+ CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]);
+ gSaveBlock1Ptr->gabbyAndTyData.quote[0] = -1;
+ return TRUE;
+}
+
+u8 GabbyAndTyGetLastBattleTrivia(void)
+{
+ if (!gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2)
+ {
+ return 1;
+ }
+ if (gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2)
+ {
+ return 2;
+ }
+ if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2)
+ {
+ return 3;
+ }
+ if (gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2)
+ {
+ return 4;
+ }
+ return 0;
+}
+
+void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void)
+{
+ switch (GabbyAndTyGetBattleNum())
+ {
+ case 1:
+ gSpecialVar_0x8004 = 14;
+ gSpecialVar_0x8005 = 13;
+ break;
+ case 2:
+ gSpecialVar_0x8004 = 5;
+ gSpecialVar_0x8005 = 6;
+ break;
+ case 3:
+ gSpecialVar_0x8004 = 18;
+ gSpecialVar_0x8005 = 17;
+ break;
+ case 4:
+ gSpecialVar_0x8004 = 21;
+ gSpecialVar_0x8005 = 22;
+ break;
+ case 5:
+ gSpecialVar_0x8004 = 8;
+ gSpecialVar_0x8005 = 9;
+ break;
+ case 6:
+ gSpecialVar_0x8004 = 19;
+ gSpecialVar_0x8005 = 20;
+ break;
+ case 7:
+ gSpecialVar_0x8004 = 23;
+ gSpecialVar_0x8005 = 24;
+ break;
+ case 8:
+ gSpecialVar_0x8004 = 10;
+ gSpecialVar_0x8005 = 11;
+ break;
+ }
+}
+
+void InterviewAfter(void)
+{
+ switch (gSpecialVar_0x8005)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ InterviewAfter_FanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ InterviewAfter_RecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ InterviewAfter_PkmnFanClubOpinions();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ InterviewAfter_DummyShow4();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ InterviewAfter_BravoTrainerPokemonProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ InterviewAfter_BravoTrainerBattleTowerProfile();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ InterviewAfter_ContestLiveUpdates();
+ break;
+ }
+}
+
+void PutPokemonTodayCaughtOnAir(void)
+{
+ u8 i;
+ u16 ct;
+ TVShow *show;
+ u32 language2;
+ u16 itemLastUsed;
+
+ ct = 0;
+ sub_80EED88();
+ sub_80ED718();
+ if (gBattleResults.caughtMonSpecies == SPECIES_NONE)
+ {
+ PutPokemonTodayFailedOnTheAir();
+ }
+ else
+ {
+ UpdateWorldOfMastersAndPutItOnTheAir();
+ if (!rbernoulli(1, 1) && StringCompare(gSpeciesNames[gBattleResults.caughtMonSpecies], gBattleResults.caughtMonNick))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_CAUGHT, FALSE) != TRUE)
+ {
+ for (i = 0; i < 11; i ++)
+ {
+ ct += gBattleResults.catchAttempts[i];
+ }
+ if (ct != 0 || gBattleResults.usedMasterBall)
+ {
+ ct = 0;
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->pokemonToday.kind = TVSHOW_POKEMON_TODAY_CAUGHT;
+ show->pokemonToday.active = FALSE;
+ if (gBattleResults.usedMasterBall)
+ {
+ ct = 1;
+ itemLastUsed = ITEM_MASTER_BALL;
+ }
+ else
+ {
+ for (i = 0; i < 11; i ++)
+ {
+ ct += gBattleResults.catchAttempts[i];
+ }
+ if (ct > 0xFF)
+ {
+ ct = 0xFF;
+ }
+ itemLastUsed = gLastUsedItem;
+ }
+ show->pokemonToday.nBallsUsed = ct;
+ show->pokemonToday.ball = itemLastUsed;
+ StringCopy(show->pokemonToday.playerName, gSaveBlock2Ptr->playerName);
+ StringCopy(show->pokemonToday.nickname, gBattleResults.caughtMonNick);
+ language2 = sub_81DB604(show->pokemonToday.nickname);
+ StripExtCtrlCodes(show->pokemonToday.nickname);
+ show->pokemonToday.species = gBattleResults.caughtMonSpecies;
+ tv_store_id_3x(show);
+ show->pokemonToday.language = gGameLanguage;
+ show->pokemonToday.language2 = language2;
+ }
+ }
+ }
+ }
+}
+
+void UpdateWorldOfMastersAndPutItOnTheAir(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (show->worldOfMasters.kind != TVSHOW_WORLD_OF_MASTERS)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ show->worldOfMasters.steps = GetGameStat(GAME_STAT_STEPS);
+ show->worldOfMasters.kind = TVSHOW_WORLD_OF_MASTERS;
+ }
+ show->worldOfMasters.numPokeCaught ++;
+ show->worldOfMasters.caughtPoke = gBattleResults.caughtMonSpecies;
+ show->worldOfMasters.species = gBattleResults.playerMon1Species;
+ show->worldOfMasters.location = gMapHeader.regionMapSectionId;
+}
+
+void PutPokemonTodayFailedOnTheAir(void)
+{
+ u16 ct;
+ u8 i;
+ TVShow *show;
+
+ if (!rbernoulli(1, 1))
+ {
+ for (i = 0, ct = 0; i < 11; i ++)
+ {
+ ct += gBattleResults.catchAttempts[i];
+ }
+ if (ct > 0xFF)
+ {
+ ct = 0xFF;
+ }
+ if (ct > 2 && (gBattleOutcome == BATTLE_POKE_FLED || gBattleOutcome == BATTLE_WON))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_FAILED, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->pokemonTodayFailed.kind = TVSHOW_POKEMON_TODAY_FAILED;
+ show->pokemonTodayFailed.active = FALSE;
+ show->pokemonTodayFailed.species = gBattleResults.playerMon1Species;
+ show->pokemonTodayFailed.species2 = gBattleResults.lastOpponentSpecies;
+ show->pokemonTodayFailed.nBallsUsed = ct;
+ show->pokemonTodayFailed.outcome = gBattleOutcome;
+ show->pokemonTodayFailed.location = gMapHeader.regionMapSectionId;
+ StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->pokemonTodayFailed.language = gGameLanguage;
+ }
+ }
+ }
+}
+
+void tv_store_id_3x(TVShow *show)
+{
+ u32 id;
+
+ id = GetPlayerIDAsU32();
+ show->common.srcTrainerId2Lo = id;
+ show->common.srcTrainerId2Hi = id >> 8;
+ show->common.srcTrainerIdLo = id;
+ show->common.srcTrainerIdHi = id >> 8;
+ show->common.trainerIdLo = id;
+ show->common.trainerIdHi = id >> 8;
+}
+
+void tv_store_id_2x(TVShow *show)
+{
+ u32 id;
+
+ id = GetPlayerIDAsU32();
+ show->common.srcTrainerIdLo = id;
+ show->common.srcTrainerIdHi = id >> 8;
+ show->common.trainerIdLo = id;
+ show->common.trainerIdHi = id >> 8;
+}
+
+void InterviewAfter_ContestLiveUpdates(void)
+{
+ TVShow *show;
+ TVShow *show2;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (show->contestLiveUpdates.kind == TVSHOW_CONTEST_LIVE_UPDATES)
+ {
+ show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show2->contestLiveUpdates.kind = TVSHOW_CONTEST_LIVE_UPDATES;
+ show2->contestLiveUpdates.active = TRUE;
+ StringCopy(show2->contestLiveUpdates.playerName, gSaveBlock2Ptr->playerName);
+ show2->contestLiveUpdates.category = gScriptContestCategory;
+ show2->contestLiveUpdates.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL);
+ show2->contestLiveUpdates.winningSpecies = show->contestLiveUpdates.winningSpecies;
+ show2->contestLiveUpdates.appealFlags2 = show->contestLiveUpdates.appealFlags2;
+ show2->contestLiveUpdates.round1Rank = show->contestLiveUpdates.round1Rank;
+ show2->contestLiveUpdates.round2Rank = show->contestLiveUpdates.round2Rank;
+ show2->contestLiveUpdates.move = show->contestLiveUpdates.move;
+ show2->contestLiveUpdates.appealFlags1 = show->contestLiveUpdates.appealFlags1;
+ StringCopy(show2->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerName);
+ tv_store_id_2x(show2);
+ show2->contestLiveUpdates.language = gGameLanguage;
+ show2->contestLiveUpdates.winningTrainerLanguage = show->contestLiveUpdates.winningTrainerLanguage;
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ }
+}
+
+void PutBattleUpdateOnTheAir(u8 a0, u16 a1, u16 a2, u16 a3)
+{
+ TVShow *show;
+ u8 name[32];
+
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BATTLE_UPDATE);
+ if (gScriptResult != 1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->battleUpdate.kind = TVSHOW_BATTLE_UPDATE;
+ show->battleUpdate.active = TRUE;
+ StringCopy(show->battleUpdate.playerName, gSaveBlock2Ptr->playerName);
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ show->battleUpdate.battleType = 2;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ show->battleUpdate.battleType = 1;
+ }
+ else
+ {
+ show->battleUpdate.battleType = 0;
+ }
+ show->battleUpdate.move = a1;
+ show->battleUpdate.species2 = a2;
+ show->battleUpdate.species = a3;
+ StringCopy(name, gLinkPlayers[a0].name);
+ StripExtCtrlCodes(name);
+ StringCopy(show->battleUpdate.linkOpponentName, name);
+ tv_store_id_2x(show);
+ show->battleUpdate.language = gGameLanguage;
+ if (show->battleUpdate.language == LANGUAGE_JAPANESE || gLinkPlayers[a0].language == LANGUAGE_JAPANESE)
+ {
+ show->battleUpdate.linkOpponentLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->battleUpdate.linkOpponentLanguage = gLinkPlayers[a0].language;
+ }
+ }
+ }
+}
+
+bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language)
+{
+ TVShow *show;
+ u8 name[32];
+
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot == -1)
+ {
+ return FALSE;
+ }
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS);
+ if (gScriptResult == 1)
+ {
+ return FALSE;
+ }
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->threeCheers.kind = TVSHOW_3_CHEERS_FOR_POKEBLOCKS;
+ show->threeCheers.active = TRUE;
+ StringCopy(show->threeCheers.playerName, gSaveBlock2Ptr->playerName);
+ StringCopy(name, partnersName);
+ StripExtCtrlCodes(name);
+ StringCopy(show->threeCheers.worstBlenderName, name);
+ show->threeCheers.flavor = flavor;
+ show->threeCheers.unk_03_3 = unused;
+ show->threeCheers.sheen = sheen;
+ tv_store_id_2x(show);
+ show->threeCheers.language = gGameLanguage;
+ if (show->threeCheers.language == LANGUAGE_JAPANESE || language == LANGUAGE_JAPANESE)
+ {
+ show->threeCheers.worstBlenderLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->threeCheers.worstBlenderLanguage = language;
+ }
+ return TRUE;
+}
+
+void PutFanClubSpecialOnTheAir(void)
+{
+ TVShow *show;
+ u8 name[32];
+ u32 id;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8006];
+ show->fanClubSpecial.score = gSpecialVar_0x8005 * 10;
+ StringCopy(show->fanClubSpecial.playerName, gSaveBlock2Ptr->playerName);
+ show->fanClubSpecial.kind = TVSHOW_FAN_CLUB_SPECIAL;
+ show->fanClubSpecial.active = TRUE;
+ id = GetPlayerIDAsU32();
+ show->fanClubSpecial.idLo = id;
+ show->fanClubSpecial.idHi = id >> 8;
+ StringCopy(name, gStringVar1);
+ StripExtCtrlCodes(name);
+ StringCopy(show->fanClubSpecial.idolName, name);
+ tv_store_id_2x(show);
+ show->fanClubSpecial.language = gGameLanguage;
+ if (show->fanClubSpecial.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->unk_31A0 == LANGUAGE_JAPANESE)
+ {
+ show->fanClubSpecial.idolNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->fanClubSpecial.idolNameLanguage = gSaveBlock1Ptr->unk_31A0;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_1(u8 a0)
+{
+ TVShow *show;
+
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[24];
+ show->contestLiveUpdates.round1Rank = a0;
+ show->contestLiveUpdates.kind = TVSHOW_CONTEST_LIVE_UPDATES;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_2(u8 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->contestLiveUpdates.round2Rank = a0;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_3(u8 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->contestLiveUpdates.appealFlags1 = a0;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_4(u16 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->contestLiveUpdates.move = a0;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->contestLiveUpdates.winningSpecies = gUnknown_02039E00[a1].unk_00;
+ StringCopy(show->contestLiveUpdates.winningTrainerName, gUnknown_02039E00[a1].unk_0d);
+ StripExtCtrlCodes(show->contestLiveUpdates.winningTrainerName);
+ show->contestLiveUpdates.appealFlags2 = a0;
+ if (a1 + 1 > gUnknown_02039F30)
+ {
+ show->contestLiveUpdates.winningTrainerLanguage = gLinkPlayers[0].language;
+ }
+ else if (gGameLanguage == LANGUAGE_JAPANESE || gLinkPlayers[a1].language == LANGUAGE_JAPANESE)
+ {
+ show->contestLiveUpdates.winningTrainerLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->contestLiveUpdates.winningTrainerLanguage = gLinkPlayers[a1].language;
+ }
+ }
+}
+
+void InterviewAfter_BravoTrainerPokemonProfile(void)
+{
+ TVShow *show;
+ TVShow *show2;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (show->bravoTrainer.kind == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE)
+ {
+ show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show2->bravoTrainer.kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ show2->bravoTrainer.active = TRUE;
+ show2->bravoTrainer.species = show->bravoTrainer.species;
+ StringCopy(show2->bravoTrainer.playerName, gSaveBlock2Ptr->playerName);
+ StringCopy(show2->bravoTrainer.pokemonNickname, show->bravoTrainer.pokemonNickname);
+ show2->bravoTrainer.contestCategory = show->bravoTrainer.contestCategory;
+ show2->bravoTrainer.contestRank = show->bravoTrainer.contestRank;
+ show2->bravoTrainer.move = show->bravoTrainer.move;
+ show2->bravoTrainer.contestResult = show->bravoTrainer.contestResult;
+ show2->bravoTrainer.contestCategory = show->bravoTrainer.contestCategory;
+ tv_store_id_2x(show2);
+ show2->bravoTrainer.language = gGameLanguage;
+ if (show2->bravoTrainer.language == LANGUAGE_JAPANESE || show->bravoTrainer.pokemonNameLanguage == LANGUAGE_JAPANESE)
+ {
+ show2->bravoTrainer.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show2->bravoTrainer.pokemonNameLanguage = show->bravoTrainer.pokemonNameLanguage;
+ }
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ }
+}
+
+void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ InterviewBefore_BravoTrainerPkmnProfile();
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ show->bravoTrainer.move = a0;
+ show->bravoTrainer.kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ }
+}
+
+void BravoTrainerPokemonProfile_BeforeInterview2(u8 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->bravoTrainer.contestResult = a0;
+ show->bravoTrainer.contestCategory = gScriptContestCategory;
+ show->bravoTrainer.contestRank = gUnknown_02039F2E;
+ show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL);
+ GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname);
+ StripExtCtrlCodes(show->bravoTrainer.pokemonNickname);
+ show->bravoTrainer.pokemonNameLanguage = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_LANGUAGE);
+ }
+}
+
+void InterviewAfter_BravoTrainerBattleTowerProfile(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->bravoTrainerTower.kind = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
+ show->bravoTrainerTower.active = TRUE;
+ StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2Ptr->playerName);
+ StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2Ptr->field_BD8);
+ show->bravoTrainerTower.species = gSaveBlock2Ptr->field_BD4;
+ show->bravoTrainerTower.defeatedSpecies = gSaveBlock2Ptr->field_BD6;
+ show->bravoTrainerTower.numFights = sub_8164FCC(gSaveBlock2Ptr->field_D07, 0);
+ show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->field_D06;
+ if (gSaveBlock2Ptr->field_D07 == 0)
+ {
+ show->bravoTrainerTower.btLevel = 50;
+ }
+ else
+ {
+ show->bravoTrainerTower.btLevel = 100;
+ }
+ show->bravoTrainerTower.interviewResponse = gSpecialVar_0x8004;
+ tv_store_id_2x(show);
+ show->bravoTrainerTower.language = gGameLanguage;
+ if (show->bravoTrainerTower.language == LANGUAGE_JAPANESE || gSaveBlock2Ptr->field_BEB == LANGUAGE_JAPANESE)
+ {
+ show->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->bravoTrainerTower.pokemonNameLanguage = gSaveBlock2Ptr->field_BEB;
+ }
+}
+
+void SaveRecordedItemPurchasesForTVShow(void)
+{
+ TVShow *show;
+ u8 i;
+
+ if (!(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_TRAINER_HILL_LOBBY && gSaveBlock1Ptr->location.mapNum == MAP_ID_TRAINER_HILL_LOBBY) && !(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_BATTLE_FRONTIER_MART && gSaveBlock1Ptr->location.mapNum == MAP_ID_BATTLE_FRONTIER_MART) && !rbernoulli(1, 3))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SMART_SHOPPER, FALSE) != TRUE)
+ {
+ TV_SortPurchasesByQuantity();
+ if (gUnknown_02039F80[0].quantity >= 20)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->smartshopperShow.kind = TVSHOW_SMART_SHOPPER;
+ show->smartshopperShow.active = FALSE;
+ show->smartshopperShow.shopLocation = gMapHeader.regionMapSectionId;
+ for (i = 0; i < 3; i ++)
+ {
+ show->smartshopperShow.itemIds[i] = gUnknown_02039F80[i].itemId;
+ show->smartshopperShow.itemAmounts[i] = gUnknown_02039F80[i].quantity;
+ }
+ show->smartshopperShow.priceReduced = GetPriceReduction(1);
+ StringCopy(show->smartshopperShow.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->smartshopperShow.language = gGameLanguage;
+ }
+ }
+ }
+}
+
+void PutNameRaterShowOnTheAir(void)
+{
+ TVShow *show;
+
+ InterviewBefore_NameRater();
+ if (gScriptResult != 1)
+ {
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
+ if (StringLength(gSaveBlock2Ptr->playerName) > 1 && StringLength(gStringVar1) > 1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->nameRaterShow.kind = TVSHOW_NAME_RATER_SHOW;
+ show->nameRaterShow.active = TRUE;
+ show->nameRaterShow.species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
+ show->nameRaterShow.random = Random() % 3;
+ show->nameRaterShow.random2 = Random() % 2;
+ show->nameRaterShow.randomSpecies = TV_GetSomeOtherSpeciesAlreadySeenByPlayer(show->nameRaterShow.species);
+ StringCopy(show->nameRaterShow.trainerName, gSaveBlock2Ptr->playerName);
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, show->nameRaterShow.pokemonName);
+ StripExtCtrlCodes(show->nameRaterShow.pokemonName);
+ tv_store_id_2x(show);
+ show->nameRaterShow.language = gGameLanguage;
+ show->nameRaterShow.pokemonNameLanguage = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_LANGUAGE);
+ }
+ }
+}
+
+void StartMassOutbreak(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gSaveBlock1Ptr->outbreakPokemonSpecies = show->massOutbreak.species;
+ gSaveBlock1Ptr->outbreakLocationMapNum = show->massOutbreak.locationMapNum;
+ gSaveBlock1Ptr->outbreakLocationMapGroup = show->massOutbreak.locationMapGroup;
+ gSaveBlock1Ptr->outbreakPokemonLevel = show->massOutbreak.level;
+ gSaveBlock1Ptr->outbreakUnk1 = show->massOutbreak.var02;
+ gSaveBlock1Ptr->outbreakUnk2 = show->massOutbreak.var0E;
+ gSaveBlock1Ptr->outbreakPokemonMoves[0] = show->massOutbreak.moves[0];
+ gSaveBlock1Ptr->outbreakPokemonMoves[1] = show->massOutbreak.moves[1];
+ gSaveBlock1Ptr->outbreakPokemonMoves[2] = show->massOutbreak.moves[2];
+ gSaveBlock1Ptr->outbreakPokemonMoves[3] = show->massOutbreak.moves[3];
+ gSaveBlock1Ptr->outbreakUnk4 = show->massOutbreak.var03;
+ gSaveBlock1Ptr->outbreakPokemonProbability = show->massOutbreak.probability;
+ gSaveBlock1Ptr->outbreakDaysLeft = 2;
+}
+
+void PutLilycoveContestLadyShowOnTheAir(void)
+{
+ TVShow *show;
+
+ sub_80EFA88();
+ if (gScriptResult != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ sub_818E848(&show->contestLiveUpdates2.language);
+ show->contestLiveUpdates2.pokemonNameLanguage = LANGUAGE_ENGLISH;
+ show->contestLiveUpdates2.kind = TVSHOW_CONTEST_LIVE_UPDATES_2;
+ show->contestLiveUpdates2.active = TRUE;
+ sub_818E81C(show->contestLiveUpdates2.playerName);
+ sub_818E7E0(&show->contestLiveUpdates2.contestCategory, show->contestLiveUpdates2.nickname);
+ show->contestLiveUpdates2.pokeblockState = sub_818E880();
+ tv_store_id_2x(show);
+ }
+}
+
+void InterviewAfter_FanClubLetter(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->fanclubLetter.kind = TVSHOW_FAN_CLUB_LETTER;
+ show->fanclubLetter.active = TRUE;
+ StringCopy(show->fanclubLetter.playerName, gSaveBlock2Ptr->playerName);
+ show->fanclubLetter.species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
+ tv_store_id_2x(show);
+ show->fanclubLetter.language = gGameLanguage;
+}
+
+void InterviewAfter_RecentHappenings(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->recentHappenings.kind = TVSHOW_RECENT_HAPPENINGS;
+ show->recentHappenings.active = TRUE;
+ StringCopy(show->recentHappenings.playerName, gSaveBlock2Ptr->playerName);
+ show->recentHappenings.var02 = 0;
+ tv_store_id_2x(show);
+ show->recentHappenings.language = gGameLanguage;
+}
+
+void InterviewAfter_PkmnFanClubOpinions(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->fanclubOpinions.kind = TVSHOW_PKMN_FAN_CLUB_OPINIONS;
+ show->fanclubOpinions.active = TRUE;
+ show->fanclubOpinions.friendshipHighNybble = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_FRIENDSHIP, NULL) >> 4;
+ show->fanclubOpinions.questionAsked = gSpecialVar_0x8007;
+ StringCopy(show->fanclubOpinions.playerName, gSaveBlock2Ptr->playerName);
+ GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, show->fanclubOpinions.nickname);
+ StripExtCtrlCodes(show->fanclubOpinions.nickname);
+ show->fanclubOpinions.species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
+ tv_store_id_2x(show);
+ show->fanclubOpinions.language = gGameLanguage;
+ if (gGameLanguage == LANGUAGE_JAPANESE || GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
+ {
+ show->fanclubOpinions.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->fanclubOpinions.pokemonNameLanguage = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_LANGUAGE);
+ }
+}
+
+void InterviewAfter_DummyShow4()
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+}
+
+void sub_80ED718(void)
+{
+ u8 i;
+ u16 outbreakIdx;
+ TVShow *show;
+
+ if (FlagGet(SYS_GAME_CLEAR))
+ {
+ for (i = 0; i < 24; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK)
+ {
+ return;
+ }
+ }
+ if (!rbernoulli(1, 200))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ outbreakIdx = Random() % ARRAY_COUNT(sPokeOutbreakSpeciesList);
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->massOutbreak.kind = TVSHOW_MASS_OUTBREAK;
+ show->massOutbreak.active = TRUE;
+ show->massOutbreak.level = sPokeOutbreakSpeciesList[outbreakIdx].level;
+ show->massOutbreak.var02 = 0;
+ show->massOutbreak.var03 = 0;
+ show->massOutbreak.species = sPokeOutbreakSpeciesList[outbreakIdx].species;
+ show->massOutbreak.var0E = 0;
+ show->massOutbreak.moves[0] = sPokeOutbreakSpeciesList[outbreakIdx].moves[0];
+ show->massOutbreak.moves[1] = sPokeOutbreakSpeciesList[outbreakIdx].moves[1];
+ show->massOutbreak.moves[2] = sPokeOutbreakSpeciesList[outbreakIdx].moves[2];
+ show->massOutbreak.moves[3] = sPokeOutbreakSpeciesList[outbreakIdx].moves[3];
+ show->massOutbreak.locationMapNum = sPokeOutbreakSpeciesList[outbreakIdx].location;
+ show->massOutbreak.locationMapGroup = 0;
+ show->massOutbreak.var12 = 0;
+ show->massOutbreak.probability = 50;
+ show->massOutbreak.var15 = 0;
+ show->massOutbreak.daysLeft = 1;
+ tv_store_id_2x(show);
+ show->massOutbreak.language = gGameLanguage;
+ }
+ }
+ }
+}
+
+void EndMassOutbreak(void)
+{
+ gSaveBlock1Ptr->outbreakPokemonSpecies = SPECIES_NONE;
+ gSaveBlock1Ptr->outbreakLocationMapNum = 0;
+ gSaveBlock1Ptr->outbreakLocationMapGroup = 0;
+ gSaveBlock1Ptr->outbreakPokemonLevel = 0;
+ gSaveBlock1Ptr->outbreakUnk1 = 0;
+ gSaveBlock1Ptr->outbreakUnk2 = 0;
+ gSaveBlock1Ptr->outbreakPokemonMoves[0] = MOVE_NONE;
+ gSaveBlock1Ptr->outbreakPokemonMoves[1] = MOVE_NONE;
+ gSaveBlock1Ptr->outbreakPokemonMoves[2] = MOVE_NONE;
+ gSaveBlock1Ptr->outbreakPokemonMoves[3] = MOVE_NONE;
+ gSaveBlock1Ptr->outbreakUnk4 = 0;
+ gSaveBlock1Ptr->outbreakPokemonProbability = 0;
+ gSaveBlock1Ptr->outbreakDaysLeft = 0;
+}
+
+void sub_80ED888(u16 days)
+{
+
+ sub_80ED8B4(days);
+ UpdateMassOutbreakTimeLeft(days);
+ sub_80EF120(days);
+ sub_80EDA48(days);
+ sub_80EEB98(days);
+}
+
+void sub_80ED8B4(u16 days)
+{
+ u8 i;
+ TVShow *show;
+
+ if (gSaveBlock1Ptr->outbreakPokemonSpecies == SPECIES_NONE)
+ {
+ for (i = 0; i < 24; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].massOutbreak.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->tvShows[i].massOutbreak.active == TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[i];
+ if (show->massOutbreak.daysLeft < days)
+ {
+ show->massOutbreak.daysLeft = 0;
+ }
+ else
+ {
+ show->massOutbreak.daysLeft -= days;
+ }
+ break;
+ }
+ }
+ }
+}
+
+void UpdateMassOutbreakTimeLeft(u16 days)
+{
+ if (gSaveBlock1Ptr->outbreakDaysLeft <= days)
+ {
+ EndMassOutbreak();
+ }
+ else
+ {
+ gSaveBlock1Ptr->outbreakDaysLeft -= days;
+ }
+}
+
+void sub_80ED950(bool8 flag)
+{
+ if (flag)
+ {
+ if (sPokemonAnglerAttemptCounters >> 8 > 4)
+ {
+ PutFishingAdviceShowOnTheAir();
+ }
+ sPokemonAnglerAttemptCounters &= 0xFF;
+ if (sPokemonAnglerAttemptCounters != 0xFF)
+ {
+ sPokemonAnglerAttemptCounters += 0x01;
+ }
+ }
+ else
+ {
+ if ((u8)sPokemonAnglerAttemptCounters > 4)
+ {
+ PutFishingAdviceShowOnTheAir();
+ }
+ sPokemonAnglerAttemptCounters &= 0xFF00;
+ if (sPokemonAnglerAttemptCounters >> 8 != 0xFF)
+ {
+ sPokemonAnglerAttemptCounters += 0x0100;
+ }
+ }
+}
+
+void PutFishingAdviceShowOnTheAir(void)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FISHING_ADVICE, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->pokemonAngler.kind = TVSHOW_FISHING_ADVICE;
+ show->pokemonAngler.active = FALSE;
+ show->pokemonAngler.nBites = sPokemonAnglerAttemptCounters;
+ show->pokemonAngler.nFails = sPokemonAnglerAttemptCounters >> 8;
+ show->pokemonAngler.species = sPokemonAnglerSpecies;
+ StringCopy(show->pokemonAngler.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->pokemonAngler.language = gGameLanguage;
+ }
+}
+
+void sub_80EDA3C(u16 species)
+{
+ sPokemonAnglerSpecies = species;
+}
+
+void sub_80EDA48(u16 days)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (show->worldOfMasters.kind == TVSHOW_WORLD_OF_MASTERS)
+ {
+ if (show->worldOfMasters.numPokeCaught >= 20)
+ {
+ sub_80EDA80();
+ }
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ }
+}
+
+void sub_80EDA80(void)
+{
+ TVShow *show;
+ TVShow *show2;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (!rbernoulli(1, 1))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_WORLD_OF_MASTERS, FALSE) != TRUE)
+ {
+ show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show2->worldOfMasters.kind = TVSHOW_WORLD_OF_MASTERS;
+ show2->worldOfMasters.active = FALSE;
+ show2->worldOfMasters.numPokeCaught = show->worldOfMasters.numPokeCaught;
+ show2->worldOfMasters.steps = GetGameStat(GAME_STAT_STEPS) - show->worldOfMasters.steps;
+ show2->worldOfMasters.caughtPoke = show->worldOfMasters.caughtPoke;
+ show2->worldOfMasters.species = show->worldOfMasters.species;
+ show2->worldOfMasters.location = show->worldOfMasters.location;
+ StringCopy(show2->worldOfMasters.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show2);
+ show2->worldOfMasters.language = gGameLanguage;
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ }
+ }
+}
+
+void sub_80EDB44(void)
+{
+ TVShow *show;
+ u32 i;
+ u8 nBadges;
+
+ HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TODAYS_RIVAL_TRAINER, TRUE);
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->rivalTrainer.kind = TVSHOW_TODAYS_RIVAL_TRAINER;
+ show->rivalTrainer.active = FALSE;
+ for (i = BADGE01_GET, nBadges = 0; i < BADGE01_GET + 8; i ++)
+ {
+ if (FlagGet(i))
+ {
+ nBadges ++;
+ }
+ }
+ show->rivalTrainer.badgeCount = nBadges;
+ if (IsNationalPokedexEnabled())
+ {
+ show->rivalTrainer.dexCount = pokedex_count(0x01);
+ }
+ else
+ {
+ show->rivalTrainer.dexCount = sub_80C0844(0x01);
+ }
+ show->rivalTrainer.location = gMapHeader.regionMapSectionId;
+ show->rivalTrainer.mapDataId = gMapHeader.mapDataId;
+ show->rivalTrainer.nSilverSymbols = 0;
+ show->rivalTrainer.nGoldSymbols = 0;
+ for (i = 0; i < 7; i ++)
+ {
+ if (FlagGet(sSilverSymbolFlags[i]) == TRUE)
+ {
+ show->rivalTrainer.nSilverSymbols ++;
+ }
+ if (FlagGet(sGoldSymbolFlags[i]) == TRUE)
+ {
+ show->rivalTrainer.nGoldSymbols ++;
+ }
+ }
+ show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontierBattlePoints;
+ StringCopy(show->rivalTrainer.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->rivalTrainer.language = gGameLanguage;
+ }
+}
+
+void sub_80EDC60(const u16 *words)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TREND_WATCHER, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->trendWatcher.kind = TVSHOW_TREND_WATCHER;
+ show->trendWatcher.active = FALSE;
+ show->trendWatcher.gender = gSaveBlock2Ptr->playerGender;
+ show->trendWatcher.words[0] = words[0];
+ show->trendWatcher.words[1] = words[1];
+ StringCopy(show->trendWatcher.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->trendWatcher.language = gGameLanguage;
+ }
+}
+
+void sub_80EDCE8(void)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TREASURE_INVESTIGATORS, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->treasureInvestigators.kind = TVSHOW_TREASURE_INVESTIGATORS;
+ show->treasureInvestigators.active = FALSE;
+ show->treasureInvestigators.item = gSpecialVar_0x8005;
+ show->treasureInvestigators.location = gMapHeader.regionMapSectionId;
+ show->treasureInvestigators.mapDataId = gMapHeader.mapDataId;
+ StringCopy(show->treasureInvestigators.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->treasureInvestigators.language = gGameLanguage;
+ }
+}
+
+void sub_80EDD78(u16 nCoinsPaidOut)
+{
+ TVShow *show;
+ bool8 flag;
+ u16 nCoinsWon;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FIND_THAT_GAMER, FALSE) != TRUE)
+ {
+ flag = FALSE;
+ switch (sFindThatGamerWhichGame)
+ {
+ case FALSE:
+ if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 200)
+ {
+ flag = TRUE;
+ nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent;
+ break;
+ }
+ if (sFindThatGamerCoinsSpent >= 100 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 100)
+ {
+ nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut;
+ break;
+ }
+ return;
+ case TRUE:
+ if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 50)
+ {
+ flag = TRUE;
+ nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent;
+ break;
+ }
+ if (sFindThatGamerCoinsSpent >= 50 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 50)
+ {
+ nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut;
+ break;
+ }
+ return;
+ default:
+ return;
+ }
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->findThatGamer.kind = TVSHOW_FIND_THAT_GAMER;
+ show->findThatGamer.active = FALSE;
+ show->findThatGamer.nCoins = nCoinsWon;
+ show->findThatGamer.whichGame = sFindThatGamerWhichGame;
+ show->findThatGamer.won = flag;
+ StringCopy(show->findThatGamer.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->findThatGamer.language = gGameLanguage;
+ }
+}
+
+void sub_80EDE70(u16 nCoinsSpent)
+{
+ sFindThatGamerWhichGame = FALSE;
+ sFindThatGamerCoinsSpent = nCoinsSpent;
+}
+
+void sub_80EDE84(u16 nCoinsSpent)
+{
+ sFindThatGamerWhichGame = TRUE;
+ sFindThatGamerCoinsSpent = nCoinsSpent;
+}
+
+#ifdef NONMATCHING // FIXME: Register allocation shenanigans
+void sub_80EDE98(TVShow *show)
+{
+ u8 i;
+ u8 j;
+ u16 k;
+ u8 n;
+ u8 deco;
+ u8 x;
+
+ for (i = 0; i < 16; i ++)
+ {
+ sTV_DecorationsBuffer[i] = 0;
+ }
+ for (i = 0, n = 0; i < 16; i ++)
+ {
+ deco = gSaveBlock1Ptr->secretBases[0].decorations[i];
+ if (deco)
+ {
+ for (j = 0; j < 16; j ++)
+ {
+ if (sTV_DecorationsBuffer[j] == 0)
+ {
+ sTV_DecorationsBuffer[j] = deco;
+ n ++;
+ break;
+ }
+ if (sTV_DecorationsBuffer[j] == deco)
+ {
+ break;
+ }
+ }
+ }
+ }
+ if (n > 4)
+ {
+ show->secretBaseVisit.nDecorations = 4;
+ }
+ else
+ {
+ show->secretBaseVisit.nDecorations = n;
+ }
+ switch (show->secretBaseVisit.nDecorations)
+ {
+ case 0:
+ break;
+ case 1:
+ show->secretBaseVisit.decorations[0] = sTV_DecorationsBuffer[0];
+ break;
+ default:
+ for (k = 0; k < n * n; k ++)
+ {
+ i = Random() % n;
+ j = Random() % n;
+ x = sTV_DecorationsBuffer[i];
+ sTV_DecorationsBuffer[i] = sTV_DecorationsBuffer[j];
+ sTV_DecorationsBuffer[j] = x;
+ }
+ for (i = 0; i < show->secretBaseVisit.nDecorations; i ++)
+ {
+ show->secretBaseVisit.decorations[i] = sTV_DecorationsBuffer[i];
+ }
+ break;
+ }
+}
+#else
+__attribute__((naked))
+void sub_80EDE98(TVShow *show)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tmov r8, r0\n"
+ "\tmovs r3, 0\n"
+ "\tldr r6, =sTV_DecorationsBuffer\n"
+ "\tldr r7, =gSaveBlock1Ptr\n"
+ "\tadds r2, r6, 0\n"
+ "\tmovs r1, 0\n"
+ "_080EDEAC:\n"
+ "\tadds r0, r3, r2\n"
+ "\tstrb r1, [r0]\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0xF\n"
+ "\tbls _080EDEAC\n"
+ "\tmovs r3, 0\n"
+ "\tmovs r5, 0\n"
+ "_080EDEBE:\n"
+ "\tldr r0, [r7]\n"
+ "\tldr r1, =0x00001aae\n"
+ "\tadds r0, r1\n"
+ "\tadds r0, r3\n"
+ "\tldrb r4, [r0]\n"
+ "\tadds r3, 0x1\n"
+ "\tcmp r4, 0\n"
+ "\tbeq _080EDF0A\n"
+ "\tmovs r1, 0\n"
+ "\tldrb r0, [r6]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080EDEE8\n"
+ "\tstrb r4, [r6]\n"
+ "\tb _080EDF04\n"
+ "\t.pool\n"
+ "_080EDEE8:\n"
+ "\tadds r0, r1, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, r4\n"
+ "\tbeq _080EDF0A\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r1, r0, 24\n"
+ "\tcmp r1, 0xF\n"
+ "\tbhi _080EDF0A\n"
+ "\tadds r2, r1, r6\n"
+ "\tldrb r0, [r2]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080EDEE8\n"
+ "\tstrb r4, [r2]\n"
+ "_080EDF04:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "_080EDF0A:\n"
+ "\tlsls r0, r3, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0xF\n"
+ "\tbls _080EDEBE\n"
+ "\tcmp r5, 0x4\n"
+ "\tbls _080EDF1E\n"
+ "\tmovs r0, 0x4\n"
+ "\tmov r1, r8\n"
+ "\tstrb r0, [r1, 0x3]\n"
+ "\tb _080EDF22\n"
+ "_080EDF1E:\n"
+ "\tmov r0, r8\n"
+ "\tstrb r5, [r0, 0x3]\n"
+ "_080EDF22:\n"
+ "\tmov r1, r8\n"
+ "\tldrb r0, [r1, 0x3]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080EDFA4\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _080EDF34\n"
+ "\tldrb r0, [r6]\n"
+ "\tstrb r0, [r1, 0x4]\n"
+ "\tb _080EDFA4\n"
+ "_080EDF34:\n"
+ "\tmovs r6, 0\n"
+ "\tadds r7, r5, 0\n"
+ "\tmuls r7, r5\n"
+ "\tcmp r6, r7\n"
+ "\tbge _080EDF7E\n"
+ "\tldr r0, =sTV_DecorationsBuffer\n"
+ "\tmov r9, r0\n"
+ "_080EDF42:\n"
+ "\tbl Random\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl __modsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tbl Random\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl __modsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r1, r0, 24\n"
+ "\tmov r0, r9\n"
+ "\tadds r2, r4, r0\n"
+ "\tldrb r3, [r2]\n"
+ "\tadd r1, r9\n"
+ "\tldrb r0, [r1]\n"
+ "\tstrb r0, [r2]\n"
+ "\tstrb r3, [r1]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, r7\n"
+ "\tblt _080EDF42\n"
+ "_080EDF7E:\n"
+ "\tmovs r3, 0\n"
+ "\tmov r1, r8\n"
+ "\tldrb r1, [r1, 0x3]\n"
+ "\tcmp r3, r1\n"
+ "\tbcs _080EDFA4\n"
+ "\tmov r2, r8\n"
+ "\tadds r2, 0x4\n"
+ "\tldr r4, =sTV_DecorationsBuffer\n"
+ "_080EDF8E:\n"
+ "\tadds r1, r2, r3\n"
+ "\tadds r0, r3, r4\n"
+ "\tldrb r0, [r0]\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tmov r0, r8\n"
+ "\tldrb r0, [r0, 0x3]\n"
+ "\tcmp r3, r0\n"
+ "\tbcc _080EDF8E\n"
+ "_080EDFA4:\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.pool");
+}
+#endif
+
+void sub_80EDFB4(TVShow *show)
+{
+ u8 i;
+ u16 move;
+ u16 j;
+ u8 nMoves;
+ u8 nPokemon;
+ u16 sum;
+
+ for (i = 0, nPokemon = 0; i < PARTY_SIZE; i ++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ sTV_SecretBaseVisitMonsTemp[nPokemon].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ sTV_SecretBaseVisitMonsTemp[nPokemon].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
+ nMoves = 0;
+ move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE1);
+ if (move != MOVE_NONE)
+ {
+ sTV_SecretBaseVisitMovesTemp[nMoves] = move;
+ nMoves ++;
+ }
+ move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE2);
+ if (move != MOVE_NONE)
+ {
+ sTV_SecretBaseVisitMovesTemp[nMoves] = move;
+ nMoves ++;
+ }
+ move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE3);
+ if (move != MOVE_NONE)
+ {
+ sTV_SecretBaseVisitMovesTemp[nMoves] = move;
+ nMoves ++;
+ }
+ move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE4);
+ if (move != MOVE_NONE)
+ {
+ sTV_SecretBaseVisitMovesTemp[nMoves] = move;
+ nMoves ++;
+ }
+ sTV_SecretBaseVisitMonsTemp[nPokemon].move = sTV_SecretBaseVisitMovesTemp[Random() % nMoves];
+ nPokemon ++;
+ }
+ }
+ for (i = 0, sum = 0; i < nPokemon; i ++)
+ {
+ sum += sTV_SecretBaseVisitMonsTemp[i].level;
+ }
+ show->secretBaseVisit.avgLevel = sum / nPokemon;
+ j = Random() % nPokemon;
+ show->secretBaseVisit.species = sTV_SecretBaseVisitMonsTemp[j].species;
+ show->secretBaseVisit.move = sTV_SecretBaseVisitMonsTemp[j].move;
+}
+
+void TV_PutSecretBaseVisitOnTheAir(void)
+{
+ TVShow *show;
+
+ HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SECRET_BASE_VISIT, TRUE);
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->secretBaseVisit.kind = TVSHOW_SECRET_BASE_VISIT;
+ show->secretBaseVisit.active = FALSE;
+ StringCopy(show->secretBaseVisit.playerName, gSaveBlock2Ptr->playerName);
+ sub_80EDE98(show);
+ sub_80EDFB4(show);
+ tv_store_id_3x(show);
+ show->secretBaseVisit.language = gGameLanguage;
+ }
+}
+
+void sub_80EE184(void)
+{
+ TVShow *show;
+ u8 i;
+ u16 balls;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_BREAKING_NEWS, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->breakingNews.kind = TVSHOW_BREAKING_NEWS;
+ show->breakingNews.active = FALSE;
+ balls = 0;
+ for (i = 0; i < 11; i ++)
+ {
+ balls += gBattleResults.catchAttempts[i];
+ }
+ if (gBattleResults.usedMasterBall)
+ {
+ balls ++;
+ }
+ show->breakingNews.location = gMapHeader.regionMapSectionId;
+ StringCopy(show->breakingNews.playerName, gSaveBlock2Ptr->playerName);
+ show->breakingNews.poke1Species = gBattleResults.playerMon1Species;
+ switch (gBattleOutcome)
+ {
+ case BATTLE_LOST:
+ case BATTLE_DREW:
+ show->breakingNews.kind = TVSHOW_OFF_AIR;
+ return;
+ case BATTLE_CAUGHT:
+ show->breakingNews.outcome = 0;
+ break;
+ case BATTLE_WON:
+ show->breakingNews.outcome = 1;
+ break;
+ case BATTLE_RAN:
+ case BATTLE_PLAYER_TELEPORTED:
+ case BATTLE_SAFARI_OUT_OF_BALLS:
+ show->breakingNews.outcome = 2;
+ break;
+ case BATTLE_POKE_FLED:
+ case BATTLE_OPPONENT_TELEPORTED:
+ show->breakingNews.outcome = 3;
+ break;
+ }
+ show->breakingNews.lastOpponentSpecies = gBattleResults.lastOpponentSpecies;
+ switch (show->breakingNews.outcome)
+ {
+ case 0:
+ if (gBattleResults.usedMasterBall)
+ {
+ show->breakingNews.caughtMonBall = ITEM_MASTER_BALL;
+ }
+ else
+ {
+ show->breakingNews.caughtMonBall = gBattleResults.caughtMonBall;
+ }
+ show->breakingNews.balls = balls;
+ break;
+ case 1:
+ show->breakingNews.lastUsedMove = gBattleResults.lastUsedMovePlayer;
+ break;
+ case 2:
+ break;
+ case 3:
+ break;
+ }
+ tv_store_id_3x(show);
+ show->breakingNews.language = gGameLanguage;
+ }
+}
+
+void sub_80EE2CC(void)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_LOTTO_WINNER, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->lottoWinner.kind = TVSHOW_LOTTO_WINNER;
+ show->lottoWinner.active = FALSE;
+ StringCopy(show->lottoWinner.playerName, gSaveBlock2Ptr->playerName);
+ show->lottoWinner.whichPrize = 4 - gSpecialVar_0x8004;
+ show->lottoWinner.item = gSpecialVar_0x8005;
+ tv_store_id_3x(show);
+ show->lottoWinner.language = gGameLanguage;
+ }
+}
+
+void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove)
+{
+ TVShow *show;
+ u8 i;
+ u8 j;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_BATTLE_SEMINAR, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->battleSeminar.kind = TVSHOW_BATTLE_SEMINAR;
+ show->battleSeminar.active = FALSE;
+ StringCopy(show->battleSeminar.playerName, gSaveBlock2Ptr->playerName);
+ show->battleSeminar.foeSpecies = foeSpecies;
+ show->battleSeminar.species = species;
+ show->battleSeminar.move = movePtr[moveIdx];
+ for (i = 0, j = 0; i < 4; i ++)
+ {
+ if (i != moveIdx && movePtr[i])
+ {
+ show->battleSeminar.otherMoves[j] = movePtr[i];
+ j ++;
+ }
+ }
+ show->battleSeminar.nOtherMoves = j;
+ show->battleSeminar.betterMove = betterMove;
+ tv_store_id_3x(show);
+ show->battleSeminar.language = gGameLanguage;
+ }
+}
+
+void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SAFARI_FAN_CLUB, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->safariFanClub.kind = TVSHOW_SAFARI_FAN_CLUB;
+ show->safariFanClub.active = FALSE;
+ StringCopy(show->safariFanClub.playerName, gSaveBlock2Ptr->playerName);
+ show->safariFanClub.nMonsCaught = nMonsCaught;
+ show->safariFanClub.nPkblkUsed = nPkblkUsed;
+ tv_store_id_3x(show);
+ show->safariFanClub.language = gGameLanguage;
+ }
+}
+
+void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_CUTIES, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->cuties.kind = TVSHOW_CUTIES;
+ show->cuties.active = FALSE;
+ StringCopy(show->cuties.playerName, gSaveBlock2Ptr->playerName);
+ GetMonData(pokemon, MON_DATA_NICKNAME, show->cuties.nickname);
+ StripExtCtrlCodes(show->cuties.nickname);
+ show->cuties.nRibbons = GetRibbonCount(pokemon);
+ show->cuties.selectedRibbon = TV_MonDataIdxToRibbon(ribbonMonDataIdx);
+ tv_store_id_3x(show);
+ show->cuties.language = gGameLanguage;
+ if (show->cuties.language == LANGUAGE_JAPANESE || GetMonData(pokemon, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
+ {
+ show->cuties.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->cuties.pokemonNameLanguage = GetMonData(pokemon, MON_DATA_LANGUAGE);
+ }
+ }
+}
+
+u8 GetRibbonCount(struct Pokemon *pokemon)
+{
+ u8 nRibbons;
+
+ nRibbons = 0;
+ nRibbons += GetMonData(pokemon, MON_DATA_COOL_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_BEAUTY_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_CUTE_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_SMART_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_TOUGH_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_CHAMPION_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_WINNING_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_VICTORY_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_ARTIST_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_EFFORT_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_1);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_2);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_3);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_4);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_5);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_6);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_7);
+ return nRibbons;
+}
+
+u8 TV_MonDataIdxToRibbon(u8 monDataIdx)
+{
+ if (monDataIdx == MON_DATA_CHAMPION_RIBBON) return 0;
+ if (monDataIdx == MON_DATA_COOL_RIBBON) return 1;
+ if (monDataIdx == MON_DATA_BEAUTY_RIBBON) return 5;
+ if (monDataIdx == MON_DATA_CUTE_RIBBON) return 9;
+ if (monDataIdx == MON_DATA_SMART_RIBBON) return 13;
+ if (monDataIdx == MON_DATA_TOUGH_RIBBON) return 17;
+ if (monDataIdx == MON_DATA_WINNING_RIBBON) return 21;
+ if (monDataIdx == MON_DATA_VICTORY_RIBBON) return 22;
+ if (monDataIdx == MON_DATA_ARTIST_RIBBON) return 23;
+ if (monDataIdx == MON_DATA_EFFORT_RIBBON) return 24;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_1) return 25;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_2) return 26;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_3) return 27;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_4) return 28;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_5) return 29;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_6) return 30;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_7) return 31;
+ return 0;
+}
+
+void sub_80EE72C(void)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TRAINER_FAN_CLUB, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->trainerFanClub.kind = TVSHOW_TRAINER_FAN_CLUB;
+ show->trainerFanClub.active = FALSE;
+ StringCopy(show->trainerFanClub.playerName, gSaveBlock2Ptr->playerName);
+ show->trainerFanClub.words[0] = gSaveBlock1Ptr->unk2BB0[0];
+ show->trainerFanClub.words[1] = gSaveBlock1Ptr->unk2BB0[1];
+ tv_store_id_3x(show);
+ show->trainerFanClub.language = gGameLanguage;
+ }
+}
+
+bool8 sub_80EE7C0(void)
+{
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot == -1)
+ {
+ return TRUE;
+ }
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL);
+ if (gScriptResult == TRUE)
+ {
+ return TRUE;
+ }
+ if (gSaveBlock1Ptr->linkBattleRecords[0].name[0] == EOS)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80EE818(void)
+{
+ u32 playerId;
+ u8 showIdx;
+ TVShow *shows;
+
+ if (HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FRONTIER, FALSE) == TRUE)
+ {
+ shows = gSaveBlock1Ptr->tvShows;
+ playerId = GetPlayerIDAsU32();
+ for (showIdx = 5; showIdx < 24; showIdx ++)
+ {
+ if (shows[showIdx].common.kind == TVSHOW_FRONTIER && (playerId & 0xFF) == shows[showIdx].common.trainerIdLo && ((playerId >> 8) & 0xFF) == shows[showIdx].common.trainerIdHi)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, showIdx);
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ return TRUE;
+ }
+ }
+ }
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot == -1)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_80EE8C8(u16 winStreak, u8 facility)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->frontier.kind = TVSHOW_FRONTIER;
+ show->frontier.active = FALSE;
+ StringCopy(show->frontier.playerName, gSaveBlock2Ptr->playerName);
+ show->frontier.winStreak = winStreak;
+ show->frontier.facility = facility;
+ switch (facility)
+ {
+ case 1:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL);
+ break;
+ case 2:
+ show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL);
+ show->frontier.species4 = GetMonData(&gPlayerParty[3], MON_DATA_SPECIES, NULL);
+ break;
+ case 3:
+ show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ break;
+ case 4:
+ show->frontier.species1 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->field_CAA[0] - 1], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->field_CAA[1] - 1], MON_DATA_SPECIES, NULL);
+ break;
+ }
+ tv_store_id_3x(show);
+ show->frontier.language = gGameLanguage;
+ }
+}
+
+void sub_80EEA70(void)
+{
+ TVShow *show;
+ u8 strbuf[32];
+
+ if (HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SECRET_BASE_SECRETS, FALSE) != TRUE)
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->secretBaseSecrets.kind = TVSHOW_SECRET_BASE_SECRETS;
+ show->secretBaseSecrets.active = FALSE;
+ StringCopy(show->secretBaseSecrets.playerName, gSaveBlock2Ptr->playerName);
+ show->secretBaseSecrets.stepsInBase = VarGet(0x40ec);
+ sub_80E980C();
+ StringCopy(strbuf, gStringVar1);
+ StripExtCtrlCodes(strbuf);
+ StringCopy(show->secretBaseSecrets.baseOwnersName, strbuf);
+ show->secretBaseSecrets.item = VarGet(0x40ed);
+ show->secretBaseSecrets.flags = VarGet(0x40ee) + (VarGet(0x40ef) << 16);
+ tv_store_id_3x(show);
+ show->secretBaseSecrets.language = gGameLanguage;
+ if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language == LANGUAGE_JAPANESE)
+ {
+ show->secretBaseSecrets.baseOwnersNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->secretBaseSecrets.baseOwnersNameLanguage = gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language;
+ }
+ }
+ }
+}
+
+void sub_80EEB98(u16 days)
+{
+ u8 i;
+
+ for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i ++)
+ {
+ if (VarGet(sNumberOneVarsAndThresholds[i][0]) >= sNumberOneVarsAndThresholds[i][1])
+ {
+ sub_80EEBF4(i);
+ break;
+ }
+ }
+ for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i ++)
+ {
+ VarSet(sNumberOneVarsAndThresholds[i][0], 0);
+ }
+}
+
+void sub_80EEBF4(u8 actionIdx)
+{
+ TVShow *show;
+
+ HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_NUMBER_ONE, TRUE);
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->numberOne.kind = TVSHOW_NUMBER_ONE;
+ show->numberOne.active = FALSE;
+ StringCopy(show->numberOne.playerName, gSaveBlock2Ptr->playerName);
+ show->numberOne.actionIdx = actionIdx;
+ show->numberOne.count = VarGet(sNumberOneVarsAndThresholds[actionIdx][0]);
+ tv_store_id_3x(show);
+ show->numberOne.language = gGameLanguage;
+ }
+}
+
+void sub_80EEC80(void)
+{
+ VarSet(VAR_DAILY_SLOTS, VarGet(VAR_DAILY_SLOTS) + 1);
+}
+
+void sub_80EECA4(void)
+{
+ VarSet(VAR_DAILY_ROULETTE, VarGet(VAR_DAILY_ROULETTE) + 1);
+}
+
+void sub_80EECC8(void)
+{
+ VarSet(VAR_DAILY_WILDS, VarGet(VAR_DAILY_WILDS) + 1);
+}
+
+void sub_80EECEC(void)
+{
+ VarSet(VAR_DAILY_BLENDER, VarGet(VAR_DAILY_BLENDER) + 1);
+}
+
+void sub_80EED10(void)
+{
+ VarSet(VAR_DAILY_PLANTED_BERRIES, VarGet(VAR_DAILY_PLANTED_BERRIES) + 1);
+}
+
+void sub_80EED34(void)
+{
+ VarSet(VAR_DAILY_PICKED_BERRIES, VarGet(VAR_DAILY_PICKED_BERRIES) + gSpecialVar_0x8006);
+}
+
+void sub_80EED60(u16 delta)
+{
+ VarSet(VAR_DAILY_BP, VarGet(VAR_DAILY_BP) + delta);
+}
+
+// PokeNews
+
+void sub_80EED88(void)
+{
+ u8 newsKind;
+
+ if (FlagGet(SYS_GAME_CLEAR))
+ {
+ sCurTVShowSlot = sub_80EEE30(gSaveBlock1Ptr->pokeNews);
+ if (sCurTVShowSlot != -1 && rbernoulli(1, 100) != TRUE)
+ {
+ newsKind = (Random() % 4) + POKENEWS_SLATEPORT;
+ if (sub_80EF0E4(newsKind) != TRUE)
+ {
+ gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].kind = newsKind;
+ gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].days = 4;
+ gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].state = TRUE;
+ }
+ }
+ }
+}
+
+s8 sub_80EEE30(PokeNews *pokeNews)
+{
+ s8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ if (pokeNews[i].kind == 0)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+void ClearPokemonNews(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ ClearPokemonNewsI(i);
+ }
+}
+
+void ClearPokemonNewsI(u8 i)
+{
+ gSaveBlock1Ptr->pokeNews[i].kind = POKENEWS_NONE;
+ gSaveBlock1Ptr->pokeNews[i].state = FALSE;
+ gSaveBlock1Ptr->pokeNews[i].days = 0;
+}
+
+void sub_80EEEB8(void)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < 15; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind == POKENEWS_NONE)
+ {
+ for (j = i + 1; j < 16; j ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[j].kind != POKENEWS_NONE)
+ {
+ gSaveBlock1Ptr->pokeNews[i] = gSaveBlock1Ptr->pokeNews[j];
+ ClearPokemonNewsI(j);
+ break;
+ }
+ }
+ }
+ }
+}
+
+u8 FindAnyTVNewsOnTheAir(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind != POKENEWS_NONE && gSaveBlock1Ptr->pokeNews[i].state == TRUE && gSaveBlock1Ptr->pokeNews[i].days < 3)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+void DoPokeNews(void)
+{
+ u8 i;
+ u16 n;
+
+ i = FindAnyTVNewsOnTheAir();
+ if (i == 0xFF)
+ {
+ gScriptResult = FALSE;
+ }
+ else
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].days == 0)
+ {
+ gSaveBlock1Ptr->pokeNews[i].state = 2;
+ if (gLocalTime.hours < 20)
+ {
+ ShowFieldMessage(sPokeNewsTextGroup_Ongoing[gSaveBlock1Ptr->pokeNews[i].kind]);
+ }
+ else
+ {
+ ShowFieldMessage(sPokeNewsTextGroup_Ending[gSaveBlock1Ptr->pokeNews[i].kind]);
+ }
+ }
+ else
+ {
+ n = gSaveBlock1Ptr->pokeNews[i].days;
+ ConvertIntToDecimalStringN(gStringVar1, n, STR_CONV_MODE_LEFT_ALIGN, 1);
+ gSaveBlock1Ptr->pokeNews[i].state = 0;
+ ShowFieldMessage(sPokeNewsTextGroup_Upcoming[gSaveBlock1Ptr->pokeNews[i].kind]);
+ }
+ gScriptResult = TRUE;
+ }
+}
+
+bool8 GetPriceReduction(u8 newsKind)
+{
+ u8 i;
+
+ if (newsKind == 0)
+ {
+ return FALSE;
+ }
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].state == 2 && IsPriceDiscounted(newsKind))
+ {
+ return TRUE;
+ }
+ return FALSE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 IsPriceDiscounted(u8 newsKind)
+{
+ switch (newsKind)
+ {
+ case POKENEWS_SLATEPORT:
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1Ptr->location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 25)
+ {
+ return TRUE;
+ }
+ return FALSE;
+ case POKENEWS_LILYCOVE:
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1Ptr->location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
+ {
+ return TRUE;
+ }
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_80EF0E4(u8 newsKind)
+{
+ u8 i;
+ if (newsKind == POKENEWS_NONE)
+ {
+ return TRUE;
+ }
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void sub_80EF120(u16 days)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind != POKENEWS_NONE)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].days < days)
+ {
+ ClearPokemonNewsI(i);
+ }
+ else
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].state == 0 && FlagGet(SYS_GAME_CLEAR) == TRUE)
+ {
+ gSaveBlock1Ptr->pokeNews[i].state = 1;
+ }
+ gSaveBlock1Ptr->pokeNews[i].days -= days;
+ }
+ }
+ }
+ sub_80EEEB8();
+}
+
+void CopyContestRankToStringVar(u8 varIdx, u8 rank)
+{
+ switch (rank)
+ {
+ case 0: // NORMAL
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[5]);
+ break;
+ case 1: // SUPER
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[6]);
+ break;
+ case 2: // HYPER
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[7]);
+ break;
+ case 3: // MASTER
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[8]);
+ break;
+ }
+}
+
+void CopyContestCategoryToStringVar(u8 varIdx, u8 category)
+{
+ switch (category)
+ {
+ case 0: // COOL
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[0]);
+ break;
+ case 1: // BEAUTY
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[1]);
+ break;
+ case 2: // CUTE
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[2]);
+ break;
+ case 3: // SMART
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[3]);
+ break;
+ case 4: // TOUGH
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[4]);
+ break;
+ }
+}
+
+void SetContestCategoryStringVarForInterview(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
+}
+
+void TV_PrintIntToStringVar(u8 varIdx, int value)
+{
+ int nDigits;
+
+ nDigits = sub_80EF370(value);
+ ConvertIntToDecimalStringN(gTVStringVarPtrs[varIdx], value, STR_CONV_MODE_LEFT_ALIGN, nDigits);
+}
+
+size_t sub_80EF370(int value)
+{
+ if (value / 10 == 0)
+ {
+ return 1;
+ }
+ if (value / 100 == 0)
+ {
+ return 2;
+ }
+ if (value / 1000 == 0)
+ {
+ return 3;
+ }
+ if (value / 10000 == 0)
+ {
+ return 4;
+ }
+ if (value / 100000 == 0)
+ {
+ return 5;
+ }
+ if (value / 1000000 == 0)
+ {
+ return 6;
+ }
+ if (value / 10000000 == 0)
+ {
+ return 7;
+ }
+ if (value / 100000000 == 0)
+ {
+ return 8;
+ }
+ return 1;
+}
+
+void sub_80EF40C(u8 varIdx, TVShow *show)
+{
+ u8 i;
+ int price;
+
+ price = 0;
+ for (i = 0; i < 3; i ++)
+ {
+ if (show->smartshopperShow.itemIds[i] != ITEM_NONE)
+ {
+ price += itemid_get_market_price(show->smartshopperShow.itemIds[i]) * show->smartshopperShow.itemAmounts[i];
+ }
+ }
+ if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ TV_PrintIntToStringVar(varIdx, price >> 1);
+ }
+ else
+ {
+ TV_PrintIntToStringVar(varIdx, price);
+ }
+}
+
+bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag)
+{
+ u32 playerId;
+ TVShow *shows;
+ u8 i;
+
+ shows = gSaveBlock1Ptr->tvShows;
+ playerId = GetPlayerIDAsU32();
+ for (i = 5; i < 24; i ++)
+ {
+ if (shows[i].common.kind == kind && (playerId & 0xFF) == shows[i].common.trainerIdLo && ((playerId >> 8) & 0xFF) == shows[i].common.trainerIdHi)
+ {
+ if (flag == TRUE)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i);
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ }
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void TV_SortPurchasesByQuantity(void)
+{
+ u8 i;
+ u8 j;
+ u16 tmpId;
+ u16 tmpQn;
+
+ for (i = 0; i < 2; i ++)
+ {
+ for (j = i + 1; j < 3; j ++)
+ {
+ if (gUnknown_02039F80[i].quantity < gUnknown_02039F80[j].quantity)
+ {
+ tmpId = gUnknown_02039F80[i].itemId;
+ tmpQn = gUnknown_02039F80[i].quantity;
+ gUnknown_02039F80[i].itemId = gUnknown_02039F80[j].itemId;
+ gUnknown_02039F80[i].quantity = gUnknown_02039F80[j].quantity;
+ gUnknown_02039F80[j].itemId = tmpId;
+ gUnknown_02039F80[j].quantity = tmpQn;
+ }
+ }
+ }
+}
+
+void FindActiveBroadcastByShowType_SetScriptResult(u8 kind)
+{
+ u8 i;
+ for (i = 0; i < 5; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == kind)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.active == TRUE)
+ {
+ gScriptResult = TRUE;
+ }
+ else
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i);
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ sub_80EFA88();
+ }
+ return;
+ }
+ }
+ sub_80EFA88();
+}
+
+void InterviewBefore(void)
+{
+ gScriptResult = FALSE;
+ switch (gSpecialVar_0x8005)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ InterviewBefore_FanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ InterviewBefore_RecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ InterviewBefore_PkmnFanClubOpinions();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ InterviewBefore_Dummy();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ InterviewBefore_NameRater();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ InterviewBefore_BravoTrainerPkmnProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ InterviewBefore_BravoTrainerBTProfile();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ InterviewBefore_ContestLiveUpdates();
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ InterviewBefore_3CheersForPokeblocks();
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ InterviewBefore_FanClubSpecial();
+ break;
+ }
+}
+
+void InterviewBefore_FanClubLetter(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_LETTER);
+ if (!gScriptResult)
+ {
+ StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]);
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanclubLetter.words, 6);
+ }
+}
+
+void InterviewBefore_RecentHappenings(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_RECENT_HAPPENINGS);
+ if (!gScriptResult)
+ {
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].recentHappenings.words, 6);
+ }
+}
+
+void InterviewBefore_PkmnFanClubOpinions(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_PKMN_FAN_CLUB_OPINIONS);
+ if (!gScriptResult)
+ {
+ StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]);
+ GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2);
+ StringGetEnd10(gStringVar2);
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanclubOpinions.words, 2);
+ }
+}
+
+void InterviewBefore_Dummy(void)
+{
+ gScriptResult = TRUE;
+}
+
+void InterviewBefore_NameRater(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_NAME_RATER_SHOW);
+}
+
+void InterviewBefore_BravoTrainerPkmnProfile(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE);
+ if (!gScriptResult)
+ {
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainer.words, 2);
+ }
+}
+
+void InterviewBefore_ContestLiveUpdates(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_CONTEST_LIVE_UPDATES);
+}
+
+void InterviewBefore_3CheersForPokeblocks(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS);
+}
+
+void InterviewBefore_BravoTrainerBTProfile(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE);
+ if (!gScriptResult)
+ {
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainerTower.words, 1);
+ }
+}
+
+void InterviewBefore_FanClubSpecial(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL);
+ if (!gScriptResult)
+ {
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanClubSpecial.words, 1);
+ }
+}
+
+bool8 sub_80EF88C(u8 monIdx)
+{
+ struct Pokemon *pokemon;
+ u8 language;
+
+ pokemon = &gPlayerParty[monIdx];
+ GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
+ language = GetMonData(pokemon, MON_DATA_LANGUAGE, &language);
+ if (language == LANGUAGE_ENGLISH && !StringCompare(gSpeciesNames[GetMonData(pokemon, MON_DATA_SPECIES, NULL)], gStringVar1))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_80EF8F8(void)
+{
+ return sub_80EF88C(GetLeadMonIndex());
+}
+
+void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx)
+{
+ u8 i;
+
+ shows[idx].common.kind = TVSHOW_OFF_AIR;
+ shows[idx].common.active = FALSE;
+ for (i = 0; i < 34; i ++)
+ {
+ shows[idx].common.pad02[i] = 0;
+ }
+}
+
+void sub_80EF93C(TVShow *shows)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < 4; i ++)
+ {
+ if (shows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ for (j = i + 1; j < 5; j ++)
+ {
+ if (shows[j].common.kind != TVSHOW_OFF_AIR)
+ {
+ shows[i] = shows[j];
+ DeleteTVShowInArrayByIdx(shows, j);
+ break;
+ }
+ }
+ }
+ }
+ for (i = 5; i < 24; i ++)
+ {
+ if (shows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ for (j = i + 1; j < 24; j ++)
+ {
+ if (shows[j].common.kind != TVSHOW_OFF_AIR)
+ {
+ shows[i] = shows[j];
+ DeleteTVShowInArrayByIdx(shows, j);
+ break;
+ }
+ }
+ }
+ }
+}
+
+u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer_AndPrintName(u8 varIdx, u16 passedSpecies)
+{
+ u16 species;
+
+ species = TV_GetSomeOtherSpeciesAlreadySeenByPlayer(passedSpecies);
+ StringCopy(gTVStringVarPtrs[varIdx], gSpeciesNames[species]);
+ return species;
+}
+
+u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies)
+{
+ u16 species;
+ u16 initSpecies;
+
+ species = (Random() % (NUM_SPECIES - 1)) + 1;
+ initSpecies = species;
+ while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) != 1 || species == passedSpecies)
+ {
+ if (species == 1)
+ {
+ species = NUM_SPECIES - 1;
+ }
+ else
+ {
+ species --;
+ }
+ if (species == initSpecies)
+ {
+ species = passedSpecies;
+ return species;
+ }
+ };
+ return species;
+}
+
+void sub_80EFA88(void)
+{
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ gSpecialVar_0x8006 = sCurTVShowSlot;
+ if (sCurTVShowSlot == -1)
+ {
+ gScriptResult = TRUE;
+ }
+ else
+ {
+ gScriptResult = FALSE;
+ }
+}
+
+s8 FindEmptyTVSlotWithinFirstFiveShowsOfArray(TVShow *shows)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i ++)
+ {
+ if (shows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+s8 FindEmptyTVSlotBeyondFirstFiveShowsOfArray(TVShow *shows)
+{
+ s8 i;
+
+ for (i = 5; i < 24; i ++)
+ {
+ if (shows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+bool8 TV_BernoulliTrial(u16 ratio)
+{
+ if (Random() <= ratio)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void TV_FanClubLetter_RandomWordToStringVar3(TVShow *show)
+{
+ u8 i;
+
+ i = Random() % 6;
+ while (TRUE)
+ {
+ if (i == 6)
+ {
+ i = 0;
+ }
+ if (show->fanclubLetter.words[i] != 0xFFFF)
+ {
+ break;
+ }
+ i ++;
+ }
+ CopyEasyChatWord(gStringVar3, show->fanclubLetter.words[i]);
+}
+
+u8 TV_GetNicknameSumMod8(TVShow *show)
+{
+ u8 i;
+ u16 ct;
+
+ ct = 0;
+ for (i = 0; i < 11; i ++)
+ {
+ if (show->nameRaterShow.pokemonName[i] == EOS)
+ {
+ break;
+ }
+ ct += show->nameRaterShow.pokemonName[i];
+ }
+ return ct & 7;
+}
+
+void TV_GetNicknameSubstring(u8 varIdx, u8 whichPosition, u8 charParam, u16 whichString, u16 species, TVShow *show)
+{
+ u8 buff[16];
+ u8 i;
+ u16 strlen;
+
+ for (i = 0; i < 3; i ++)
+ {
+ buff[i] = EOS;
+ }
+ if (whichString == 0)
+ {
+ strlen = StringLength(show->nameRaterShow.trainerName);
+ if (charParam == 0)
+ {
+ buff[0] = show->nameRaterShow.trainerName[whichPosition];
+ }
+ else if (charParam == 1)
+ {
+ buff[0] = show->nameRaterShow.trainerName[strlen - whichPosition];
+ }
+ else if (charParam == 2)
+ {
+ buff[0] = show->nameRaterShow.trainerName[whichPosition];
+ buff[1] = show->nameRaterShow.trainerName[whichPosition + 1];
+ }
+ else
+ {
+ buff[0] = show->nameRaterShow.trainerName[strlen - (whichPosition + 2)];
+ buff[1] = show->nameRaterShow.trainerName[strlen - (whichPosition + 1)];
+ }
+ ConvertInternationalString(buff, show->nameRaterShow.language);
+ }
+ else if (whichString == 1)
+ {
+ strlen = StringLength(show->nameRaterShow.pokemonName);
+ if (charParam == 0)
+ {
+ buff[0] = show->nameRaterShow.pokemonName[whichPosition];
+ }
+ else if (charParam == 1)
+ {
+ buff[0] = show->nameRaterShow.pokemonName[strlen - whichPosition];
+ }
+ else if (charParam == 2)
+ {
+ buff[0] = show->nameRaterShow.pokemonName[whichPosition];
+ buff[1] = show->nameRaterShow.pokemonName[whichPosition + 1];
+ }
+ else
+ {
+ buff[0] = show->nameRaterShow.pokemonName[strlen - (whichPosition + 2)];
+ buff[1] = show->nameRaterShow.pokemonName[strlen - (whichPosition + 1)];
+ }
+ ConvertInternationalString(buff, show->nameRaterShow.pokemonNameLanguage);
+ }
+ else
+ {
+ strlen = StringLength(gSpeciesNames[species]);
+ if (charParam == 0)
+ {
+ buff[0] = gSpeciesNames[species][whichPosition];
+ }
+ else if (charParam == 1)
+ {
+ buff[0] = gSpeciesNames[species][strlen - whichPosition];
+ }
+ else if (charParam == 2)
+ {
+ buff[0] = gSpeciesNames[species][whichPosition];
+ buff[1] = gSpeciesNames[species][whichPosition + 1];
+ }
+ else
+ {
+ buff[0] = gSpeciesNames[species][strlen - (whichPosition + 2)];
+ buff[1] = gSpeciesNames[species][strlen - (whichPosition + 1)];
+ }
+ }
+ StringCopy(gTVStringVarPtrs[varIdx], buff);
+}
+
+bool8 TV_IsScriptShowKindAlreadyInQueue(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == gSpecialVar_0x8004)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 TV_PutNameRaterShowOnTheAirIfNicnkameChanged(void)
+{
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
+ if (!StringCompare(gStringVar3, gStringVar1))
+ {
+ return FALSE;
+ }
+ PutNameRaterShowOnTheAir();
+ return TRUE;
+}
+
+void ChangePokemonNickname(void)
+{
+ void ChangePokemonNickname_CB(void);
+
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2);
+ DoNamingScreen(3, gStringVar2, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL), GetMonGender(&gPlayerParty[gSpecialVar_0x8004]), GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_PERSONALITY, NULL), ChangePokemonNickname_CB);
+}
+
+void ChangePokemonNickname_CB(void)
+{
+ SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2);
+ c2_exit_to_overworld_1_continue_scripts_restart_music();
+}
+
+void ChangeBoxPokemonNickname(void)
+{
+ struct BoxPokemon *boxMon;
+
+ boxMon = GetBoxedMonPtr(gSpecialVar_0x8012, gSpecialVar_0x8013);
+ GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStringVar3);
+ GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStringVar2);
+ DoNamingScreen(3, gStringVar2, GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL), GetBoxMonGender(boxMon), GetBoxMonData(boxMon, MON_DATA_PERSONALITY, NULL), ChangeBoxPokemonNickname_CB);
+}
+
+void ChangeBoxPokemonNickname_CB(void)
+{
+ SetBoxMonNickFromAnyBox(gSpecialVar_0x8012, gSpecialVar_0x8013, gStringVar2);
+ c2_exit_to_overworld_1_continue_scripts_restart_music();
+}
+
+void TV_CopyNicknameToStringVar1AndEnsureTerminated(void)
+{
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
+ StringGetEnd10(gStringVar1);
+}
+
+void TV_CheckMonOTIDEqualsPlayerID(void)
+{
+ if (GetPlayerIDAsU32() == GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_ID, NULL))
+ {
+ gScriptResult = FALSE;
+ }
+ else
+ {
+ gScriptResult = TRUE;
+ }
+}
+
+u8 GetTVChannelByShowType(u8 kind)
+{
+ if (kind == TVSHOW_OFF_AIR)
+ {
+ return 0;
+ }
+ if (kind >= TVSHOW_FAN_CLUB_LETTER && kind < TVSHOW_POKEMON_TODAY_CAUGHT)
+ {
+ return 2;
+ }
+ if (kind >= TVSHOW_POKEMON_TODAY_CAUGHT && kind < TVSHOW_MASS_OUTBREAK)
+ {
+ return 3;
+ }
+ if (kind >= TVSHOW_MASS_OUTBREAK && kind < 61)
+ {
+ return 4;
+ }
+ return 0;
+}
+
+u32 GetPlayerIDAsU32(void)
+{
+ return (gSaveBlock2Ptr->playerTrainerId[3] << 24) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0];
+}
+
+u8 CheckForBigMovieOrEmergencyNewsOnTV(void)
+{
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
+ return 0;
+ }
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ if (gSaveBlock1Ptr->location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
+ return 0;
+ }
+ }
+ else
+ {
+ if (gSaveBlock1Ptr->location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F)
+ {
+ return 0;
+ }
+ }
+ if (FlagGet(SYS_TV_LATI) == TRUE)
+ {
+ return 1;
+ }
+ if (FlagGet(SYS_TV_HOME) == TRUE)
+ {
+ return 2;
+ }
+ return 1;
+}
+
+void GetMomOrDadStringForTVMessage(void)
+{
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ if (gSaveBlock1Ptr->location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
+ StringCopy(gStringVar1, gText_Mom);
+ VarSet(VAR_0x4003, 1);
+ }
+ }
+ else
+ {
+ if (gSaveBlock1Ptr->location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F)
+ {
+ StringCopy(gStringVar1, gText_Mom);
+ VarSet(VAR_0x4003, 1);
+ }
+ }
+ }
+ if (VarGet(VAR_0x4003) == 1)
+ {
+ StringCopy(gStringVar1, gText_Mom);
+ }
+ else if (VarGet(VAR_0x4003) == 2)
+ {
+ StringCopy(gStringVar1, gText_Dad);
+ }
+ else if (VarGet(VAR_0x4003) > 2)
+ {
+ if (VarGet(VAR_0x4003) % 2 == 0)
+ StringCopy(gStringVar1, gText_Mom);
+ else
+ StringCopy(gStringVar1, gText_Dad);
+ }
+ else
+ {
+ if (Random() % 2 != 0)
+ {
+ StringCopy(gStringVar1, gText_Mom);
+ VarSet(VAR_0x4003, 1);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gText_Dad);
+ VarSet(VAR_0x4003, 2);
+ }
+ }
+}
+
+void sub_80F01B8(void)
+{
+ VarSet(VAR_0x40BC, 0);
+ RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ FlagSet(0x396);
+}
+
+void sub_80F01E8(void *src, u32 size, u8 masterIdx)
+{
+ u8 i;
+ u16 version;
+ TVShow (*rmBuffer2)[4][25];
+ TVShow (*rmBuffer)[4][25];
+
+ rmBuffer2 = malloc(4 * 25 * sizeof(TVShow));
+ if (rmBuffer2 != NULL)
+ {
+ for (i = 0; i < 4; i ++)
+ {
+ memcpy((*rmBuffer2)[i], src + i * size, sizeof((*rmBuffer2)[i]));
+ }
+ rmBuffer = rmBuffer2;
+ for (i = 0; i < GetLinkPlayerCount(); i ++)
+ {
+ version = (u8)gLinkPlayers[i].version;
+ if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
+ {
+ sub_80F1254((*rmBuffer)[i]);
+ }
+ else if (version == VERSION_EMERALD && gLinkPlayers[i].language == LANGUAGE_JAPANESE)
+ {
+ sub_80F12A4((*rmBuffer)[i]);
+ }
+ }
+ switch (masterIdx)
+ {
+ case 0:
+ sub_80F0358(gSaveBlock1Ptr->tvShows, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 1:
+ sub_80F0358((*rmBuffer)[0], gSaveBlock1Ptr->tvShows, (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 2:
+ sub_80F0358((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->tvShows, (*rmBuffer)[3]);
+ break;
+ case 3:
+ sub_80F0358((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->tvShows);
+ break;
+ }
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ sub_80F0C04();
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ sub_80F0708();
+ sub_80F0B64();
+ free(rmBuffer2);
+ }
+}
+
+void sub_80F0358(TVShow player1[25], TVShow player2[25], TVShow player3[25], TVShow player4[25])
+{
+ u8 i;
+ u8 j;
+ TVShow **argslist[4];
+
+ argslist[0] = &player1;
+ argslist[1] = &player2;
+ argslist[2] = &player3;
+ argslist[3] = &player4;
+ sTVShowMixingNumPlayers = GetLinkPlayerCount();
+ while (1)
+ {
+ for (i = 0; i < sTVShowMixingNumPlayers; i ++)
+ {
+ if (i == 0)
+ {
+ sRecordMixingPartnersWithoutShowsToShare = i;
+ }
+ sTVShowMixingCurSlot = sub_80F06D0(argslist[i][0]);
+ if (sTVShowMixingCurSlot == -1)
+ {
+ sRecordMixingPartnersWithoutShowsToShare ++;
+ if (sRecordMixingPartnersWithoutShowsToShare == sTVShowMixingNumPlayers)
+ {
+ return;
+ }
+ }
+ else
+ {
+ for (j = 0; j < sTVShowMixingNumPlayers - 1; j ++)
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(argslist[(i + j + 1) % sTVShowMixingNumPlayers][0]);
+ if (sCurTVShowSlot != -1
+ && sub_80F049C(&argslist[(i + j + 1) % sTVShowMixingNumPlayers][0], &argslist[i][0], (i + j + 1) % sTVShowMixingNumPlayers) == 1)
+ {
+ break;
+ }
+ }
+ if (j == sTVShowMixingNumPlayers - 1)
+ {
+ DeleteTVShowInArrayByIdx(argslist[i][0], sTVShowMixingCurSlot);
+ }
+ }
+ }
+ }
+}
+
+bool8 sub_80F049C(TVShow *dest[25], TVShow *src[25], u8 idx)
+{
+ u8 value;
+ u8 switchval;
+ TVShow *tv1;
+ TVShow *tv2;
+
+ tv1 = *dest;
+ tv2 = *src;
+ value = FALSE;
+ switchval = GetTVChannelByShowType(tv2[sTVShowMixingCurSlot].common.kind);
+ switch (switchval)
+ {
+ case 2:
+ value = sub_80F0580(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
+ break;
+ case 3:
+ value = sub_80F05E8(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
+ break;
+ case 4:
+ value = sub_80F0668(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
+ break;
+ }
+ if (value == TRUE)
+ {
+ DeleteTVShowInArrayByIdx(tv2, sTVShowMixingCurSlot);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx)
+{
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+
+ 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;
+ tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.active = TRUE;
+ return TRUE;
+}
+
+u8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx)
+{
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+ 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)
+ {
+ return FALSE;
+ }
+ tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo;
+ tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi;
+ tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF;
+ tv2->common.srcTrainerId2Hi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.active = TRUE;
+ return TRUE;
+}
+
+u8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx)
+{
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+ 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;
+ tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.active = TRUE;
+ tv1->massOutbreak.daysLeft = 1;
+ return TRUE;
+}
+
+s8 sub_80F06D0(TVShow *tvShows)
+{
+ u8 i;
+
+ for (i = 0; i < 24; i ++)
+ {
+ if (tvShows[i].common.active == FALSE && (u8)(tvShows[i].common.kind - 1) < 60)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+#ifdef NONMATCHING
+void sub_80F0708(void) // FIXME: register allocation shenanigans
+{
+ u16 i;
+ TVShow *show;
+
+ for (i = 0; i < 24; i ++)
+ {
+ switch (gSaveBlock1Ptr->tvShows[i].common.kind)
+ {
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.winningSpecies, i);
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ break;
+ case TVSHOW_BATTLE_UPDATE:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.species2, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.species, i);
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES_2:
+ break;
+
+ case TVSHOW_OFF_AIR:
+ break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubLetter.species, i);
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubOpinions.species, i);
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->unkShow04.var06, i);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.randomSpecies, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainer.species, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.defeatedSpecies, i);
+ break;
+
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonToday.species, i);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species2, i);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonAngler.species, i);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.caughtPoke, i);
+ break;
+
+ case TVSHOW_TODAYS_RIVAL_TRAINER:
+ break;
+ case TVSHOW_TREND_WATCHER:
+ break;
+ case TVSHOW_TREASURE_INVESTIGATORS:
+ break;
+ case TVSHOW_FIND_THAT_GAMER:
+ break;
+ case TVSHOW_BREAKING_NEWS:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.lastOpponentSpecies, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.poke1Species, i);
+ break;
+ case TVSHOW_SECRET_BASE_VISIT:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->secretBaseVisit.species, i);
+ break;
+ case TVSHOW_LOTTO_WINNER:
+ break;
+ case TVSHOW_BATTLE_SEMINAR:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.foeSpecies, i);
+ break;
+ case TVSHOW_TRAINER_FAN_CLUB:
+ break;
+ case TVSHOW_CUTIES:
+ break;
+ case TVSHOW_FRONTIER:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species1, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species2, i);
+ switch ((&gSaveBlock1Ptr->tvShows[i])->frontier.facility)
+ {
+ case 3:
+ case 4:
+ break;
+ case 1:
+ case 5 ... 13:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i);
+ break;
+ case 2:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species4, i);
+ break;
+ }
+ break;
+ case TVSHOW_NUMBER_ONE:
+ break;
+ case TVSHOW_SECRET_BASE_SECRETS:
+ break;
+ case TVSHOW_SAFARI_FAN_CLUB:
+ break;
+
+ case TVSHOW_MASS_OUTBREAK:
+ break;
+
+ default:
+ sub_80F0B00(i);
+ break;
+ }
+ }
+}
+#else
+__attribute__((naked)) void sub_80F0708(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tsub sp, 0x8\n"
+ "\tmovs r0, 0\n"
+ "\tmov r9, r0\n"
+ "_080F0716:\n"
+ "\tldr r3, =gSaveBlock1Ptr\n"
+ "\tldr r1, [r3]\n"
+ "\tmov r4, r9\n"
+ "\tlsls r2, r4, 3\n"
+ "\tadds r0, r2, r4\n"
+ "\tlsls r0, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r0, =0x000027cc\n"
+ "\tadds r1, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r7, r2, 0\n"
+ "\tcmp r0, 0x29\n"
+ "\tbls _080F0732\n"
+ "\tb _080F0AD8\n"
+ "_080F0732:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, =_080F0748\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.pool\n"
+ "\t.align 2, 0\n"
+ "_080F0748:\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_OFF_AIR\n"
+ "\t.4byte _080F0848 @ TVSHOW_FAN_CLUB_LETTER\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_RECENT_HAPPENINGS\n"
+ "\t.4byte _080F0860 @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n"
+ "\t.4byte _080F0878 @ TVSHOW_UNKN_SHOWTYPE_04\n"
+ "\t.4byte _080F0890 @ TVSHOW_NAME_RATER_SHOW\n"
+ "\t.4byte _080F08BC @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n"
+ "\t.4byte _080F08D4 @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n"
+ "\t.4byte _080F07F0 @ TVSHOW_CONTEST_LIVE_UPDATES\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_3_CHEERS_FOR_POKEBLOCKS\n"
+ "\t.4byte _080F081C @ TVSHOW_BATTLE_UPDATE\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_FAN_CLUB_SPECIAL\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_CONTEST_LIVE_UPDATES_2\n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0900 @ TVSHOW_POKEMON_TODAY_CAUGHT\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_SMART_SHOPPER\n"
+ "\t.4byte _080F0918 @ TVSHOW_POKEMON_TODAY_FAILED\n"
+ "\t.4byte _080F0944 @ TVSHOW_FISHING_ADVICE\n"
+ "\t.4byte _080F095C @ TVSHOW_WORLD_OF_MASTERS\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_TODAYS_RIVAL_TRAINER\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_TREND_WATCHER\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_TREASURE_INVESTIGATORS\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_FIND_THAT_GAMER\n"
+ "\t.4byte _080F0974 @ TVSHOW_BREAKING_NEWS\n"
+ "\t.4byte _080F09A0 @ TVSHOW_SECRET_BASE_VISIT\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_LOTTO_WINNER\n"
+ "\t.4byte _080F09C0 @ TVSHOW_BATTLE_SEMINAR\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_TRAINER_FAN_CLUB\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_CUTIES\n"
+ "\t.4byte _080F09F4 @ TVSHOW_FRONTIER\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_NUMBER_ONE\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_SECRET_BASE_SECRETS\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_SAFARI_FAN_CLUB\n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_MASS_OUTBREAK\n"
+ "_080F07F0:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x12]\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x2]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F081C:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r4, r7, r2\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x16]\n"
+ "\tlsls r5, r2, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x2]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F0848:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r4, r9\n"
+ "\tadds r1, r7, r4\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r0, =0x000027cc\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1, 0x2]\n"
+ "\tb _080F09B0\n"
+ "\t.pool\n"
+ "_080F0860:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x2]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F0878:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x6]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F0890:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x2]\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x1C]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F08BC:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x2]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F08D4:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0xA]\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x14]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F0900:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x10]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F0918:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0xC]\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0xE]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F0944:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x4]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F095C:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x8]\n"
+ "\tb _080F09D0\n"
+ "\t.pool\n"
+ "_080F0974:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r4, r7, r2\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x2]\n"
+ "\tlsls r5, r2, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0xA]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F09A0:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r4, r9\n"
+ "\tadds r1, r7, r4\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r0, =0x000027cc\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1, 0x8]\n"
+ "_080F09B0:\n"
+ "\tlsls r1, r4, 24\n"
+ "_080F09B2:\n"
+ "\tlsrs r1, 24\n"
+ "\tbl sub_80F0B24\n"
+ "\tb _080F0AE2_break\n"
+ "\t.pool\n"
+ "_080F09C0:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x6]\n"
+ "_080F09D0:\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x4]\n"
+ "_080F09E6:\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl sub_80F0B24\n"
+ "\tb _080F0AE2_break\n"
+ "\t.pool\n"
+ "_080F09F4:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r4, r7, r2\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r5, =0x000027cc\n"
+ "\tadds r0, r5\n"
+ "\tldrh r0, [r0, 0x4]\n"
+ "\tlsls r2, 24\n"
+ "\tmov r8, r2\n"
+ "\tlsrs r6, r2, 24\n"
+ "\tadds r1, r6, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r0, r4, r0\n"
+ "\tadds r0, r5\n"
+ "\tldrh r0, [r0, 0x6]\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r5\n"
+ "\tldrb r0, [r4, 0xD]\n"
+ "\tsubs r0, 0x1\n"
+ "\tmov r6, r8\n"
+ "\tcmp r0, 0xC\n"
+ "\tbhi _080F0AE2_break\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, =_080F0A48\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.pool\n"
+ "\t.align 2, 0\n"
+ "_080F0A48:\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0AA0\n"
+ "\t.4byte _080F0AE2_break\n"
+ "\t.4byte _080F0AE2_break\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "_080F0A7C:\n"
+ "\tldr r0, =gSaveBlock1Ptr\n"
+ "\tldr r1, [r0]\n"
+ "\tmov r4, r9\n"
+ "\tadds r0, r7, r4\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, =0x000027cc\n"
+ "\tadds r0, r1\n"
+ "\tldrh r0, [r0, 0x8]\n"
+ "\tlsrs r1, r6, 24\n"
+ "\tbl sub_80F0B24\n"
+ "\tb _080F0AE2_break\n"
+ "\t.pool\n"
+ "_080F0AA0:\n"
+ "\tldr r2, =gSaveBlock1Ptr\n"
+ "\tldr r0, [r2]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r5, =0x000027cc\n"
+ "\tadds r0, r5\n"
+ "\tldrh r0, [r0, 0x8]\n"
+ "\tlsrs r6, 24\n"
+ "\tadds r1, r6, 0\n"
+ "\tstr r2, [sp]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r2, [sp]\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r5\n"
+ "\tldrh r0, [r4, 0xA]\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl sub_80F0B24\n"
+ "\tb _080F0AE2_break\n"
+ "\t.pool\n"
+ "_080F0AD8:\n"
+ "\tmov r2, r9\n"
+ "\tlsls r0, r2, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tbl sub_80F0B00\n"
+ "_080F0AE2_break:\n"
+ "\tmov r0, r9\n"
+ "\tadds r0, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tmov r9, r0\n"
+ "\tcmp r0, 0x17\n"
+ "\tbhi _080F0AF2\n"
+ "\tb _080F0716\n"
+ "_080F0AF2:\n"
+ "\tadd sp, 0x8\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
+
+void sub_80F0B00(u8 showIdx)
+{
+ gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
+}
+
+void sub_80F0B24(u16 species, u8 showIdx)
+{
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0)
+ {
+ gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
+ }
+}
+
+void sub_80F0B64(void)
+{
+ u16 i;
+
+ if (FlagGet(SYS_GAME_CLEAR) != TRUE)
+ {
+ for (i = 0; i < 24; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.active = FALSE;
+ }
+ else if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.active = FALSE;
+ }
+ }
+ }
+}
+
+void sub_80F0BB8(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i ++)
+ {
+ if (GetTVChannelByShowType(gSaveBlock1Ptr->tvShows[i].common.kind) == 2)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.active = FALSE;
+ }
+ }
+}
+
+void sub_80F0C04(void)
+{
+ s8 i;
+ s8 ct;
+
+ ct = 0;
+ for (i = 5; i < 24; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ ct ++;
+ }
+ }
+ for (i = 0; i < 5 - ct; i ++)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i + 5);
+ }
+}
+
+void sub_80F0C7C(void *src, u32 size, u8 masterIdx)
+{
+ u8 i;
+ PokeNews (*rmBuffer2)[4][16];
+ PokeNews (*rmBuffer)[4][16];
+
+ rmBuffer2 = malloc(4 * 16 * sizeof(PokeNews));
+ if (rmBuffer2 != NULL)
+ {
+ for (i = 0; i < 4; i ++)
+ {
+ memcpy((*rmBuffer2)[i], src + i * size, sizeof((*rmBuffer2)[i]));
+ }
+ rmBuffer = rmBuffer2;
+ switch (masterIdx)
+ {
+ case 0:
+ sub_80F0D60(gSaveBlock1Ptr->pokeNews, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 1:
+ sub_80F0D60((*rmBuffer)[0], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 2:
+ sub_80F0D60((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[3]);
+ break;
+ case 3:
+ sub_80F0D60((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->pokeNews);
+ break;
+ }
+ sub_80F0EEC();
+ sub_80F0F24();
+ free(rmBuffer2);
+ }
+}
+
+void sub_80F0D60(PokeNews player1[16], PokeNews player2[16], PokeNews player3[16], PokeNews player4[16])
+{
+ u8 i;
+ u8 j;
+ u8 k;
+ PokeNews **argslist[4];
+
+ argslist[0] = &player1;
+ argslist[1] = &player2;
+ argslist[2] = &player3;
+ argslist[3] = &player4;
+ sTVShowNewsMixingNumPlayers = GetLinkPlayerCount();
+ for (i = 0; i < 16; i ++)
+ {
+ for (j = 0; j < sTVShowNewsMixingNumPlayers; j ++)
+ {
+ sTVShowMixingCurSlot = sub_80F0ECC(*argslist[j], i);
+ if (sTVShowMixingCurSlot != -1)
+ {
+ for (k = 0; k < sTVShowNewsMixingNumPlayers - 1; k++)
+ {
+ sCurTVShowSlot = sub_80EEE30(*argslist[(j + k + 1) % sTVShowNewsMixingNumPlayers]);
+ if (sCurTVShowSlot != -1)
+ {
+ sub_80F0E58(argslist[(j + k + 1) % sTVShowNewsMixingNumPlayers], argslist[j]);
+ }
+ }
+ }
+ }
+ }
+}
+
+void sub_80F0E58(PokeNews *dest[16], PokeNews *src[16])
+{
+ PokeNews *ptr1;
+ PokeNews *ptr2;
+
+ ptr1 = *dest;
+ ptr2 = *src;
+ ptr2 += sTVShowMixingCurSlot;
+ sub_80F0E84(ptr1, ptr2, sCurTVShowSlot);
+}
+
+bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot)
+{
+ u8 i;
+ u8 kind;
+
+ if (src->kind == POKENEWS_NONE)
+ {
+ return FALSE;
+ }
+ for (i = 0; i < 16; i ++)
+ {
+ if (dest[i].kind == src->kind)
+ {
+ return FALSE;
+ }
+ }
+ dest[slot].kind = src->kind;
+ dest[slot].state = 1;
+ dest[slot].days = src->days;
+ return TRUE;
+}
+
+s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx)
+{
+ if (pokeNews[idx].kind == POKENEWS_NONE)
+ {
+ return -1;
+ }
+ return idx;
+}
+
+void sub_80F0EEC(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind > POKENEWS_BLENDMASTER)
+ {
+ ClearPokemonNewsI(i);
+ }
+ }
+ sub_80EEEB8();
+}
+
+void sub_80F0F24(void)
+{
+ u8 i;
+
+ if (FlagGet(SYS_GAME_CLEAR) != TRUE)
+ {
+ for (i = 0; i < 16; i ++)
+ {
+ gSaveBlock1Ptr->pokeNews[i].state = 0;
+ }
+ }
+}
+
+#define tvlangfix(strptr, langptr, langfix) \
+if (IsStringJapanese(strptr)) \
+{ \
+ (langptr) = LANGUAGE_JAPANESE; \
+} \
+else \
+{ \
+ (langptr) = langfix; \
+}
+
+void sub_80F0F64(TVShow *show, u32 language)
+{
+ int i;
+ TVShow **r4;
+
+ r4 = calloc(11, sizeof(TVShow *));
+ for (i = 0; i < 24; i ++)
+ {
+ switch (show[i].common.kind)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ case TVSHOW_RECENT_HAPPENINGS:
+ r4[0] = &show[i];
+ tvlangfix(r4[0]->fanclubLetter.playerName, r4[0]->fanclubLetter.language, language);
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ r4[1] = &show[i];
+ tvlangfix(r4[1]->fanclubOpinions.playerName, r4[1]->fanclubOpinions.language, language);
+ tvlangfix(r4[1]->fanclubOpinions.nickname, r4[1]->fanclubOpinions.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ r4[6] = &show[i];
+ tvlangfix(r4[6]->pokemonToday.playerName, r4[6]->pokemonToday.language, language);
+ tvlangfix(r4[6]->pokemonToday.nickname, r4[6]->pokemonToday.language2, language);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ r4[7] = &show[i];
+ tvlangfix(r4[7]->smartshopperShow.playerName, r4[7]->smartshopperShow.language, language);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ r4[5] = &show[i];
+ tvlangfix(r4[5]->bravoTrainerTower.trainerName, r4[5]->bravoTrainerTower.language, language);
+ tvlangfix(r4[5]->bravoTrainerTower.pokemonName, r4[5]->bravoTrainerTower.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ r4[4] = &show[i];
+ tvlangfix(r4[4]->bravoTrainer.playerName, r4[4]->bravoTrainer.language, language);
+ tvlangfix(r4[4]->bravoTrainer.pokemonNickname, r4[4]->bravoTrainer.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ r4[3] = &show[i];
+ tvlangfix(r4[3]->nameRaterShow.trainerName, r4[3]->nameRaterShow.language, language);
+ tvlangfix(r4[3]->nameRaterShow.pokemonName, r4[3]->nameRaterShow.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ r4[2] = &show[i];
+ tvlangfix(r4[2]->pokemonTodayFailed.playerName, r4[2]->pokemonTodayFailed.language, language);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ r4[8] = &show[i];
+ tvlangfix(r4[8]->pokemonAngler.playerName, r4[8]->pokemonAngler.language, language);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ r4[9] = &show[i];
+ tvlangfix(r4[9]->worldOfMasters.playerName, r4[9]->worldOfMasters.language, language);
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ r4[10] = &show[i];
+ r4[10]->massOutbreak.language = language;
+ break;
+ }
+ }
+ free(r4);
+}
+
+void sub_80F1208(TVShow *shows)
+{
+ TVShow *curShow;
+
+ sub_80F14F8(shows);
+ for (curShow = shows; curShow < shows + 24; curShow ++)
+ {
+ if (curShow->bravoTrainerTower.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
+ {
+ if ((curShow->bravoTrainerTower.language == LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage != LANGUAGE_JAPANESE) || (curShow->bravoTrainerTower.language != LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage == LANGUAGE_JAPANESE))
+ {
+ memset(curShow, 0, sizeof(TVShow));
+ }
+ }
+ }
+}
+
+void sub_80F1254(TVShow *shows)
+{
+ TVShow *curShow;
+
+ for (curShow = shows; curShow < shows + 24; curShow ++)
+ {
+ if (curShow->bravoTrainerTower.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
+ {
+ if (IsStringJapanese(curShow->bravoTrainerTower.pokemonName))
+ {
+ curShow->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ curShow->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_ENGLISH;
+ }
+ }
+ }
+}
+
+u8 TV_GetStringLanguage(u8 *str)
+{
+ return IsStringJapanese(str) ? LANGUAGE_JAPANESE : LANGUAGE_ENGLISH;
+}
+
+void sub_80F12A4(TVShow *shows)
+{
+ TVShow *curShow;
+
+ for (curShow = shows; curShow < shows + 24; curShow ++)
+ {
+ switch(curShow->common.kind)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ curShow->fanclubLetter.language = TV_GetStringLanguage(curShow->fanclubLetter.playerName);
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ curShow->recentHappenings.language = TV_GetStringLanguage(curShow->recentHappenings.playerName);
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ curShow->fanclubOpinions.language = TV_GetStringLanguage(curShow->fanclubOpinions.playerName);
+ curShow->fanclubOpinions.pokemonNameLanguage = TV_GetStringLanguage(curShow->fanclubOpinions.nickname);
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ curShow->unkShow04.language = TV_GetStringLanguage(curShow->unkShow04.string_0b);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ curShow->nameRaterShow.language = TV_GetStringLanguage(curShow->nameRaterShow.trainerName);
+ curShow->nameRaterShow.pokemonNameLanguage = TV_GetStringLanguage(curShow->nameRaterShow.pokemonName);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ curShow->bravoTrainer.language = TV_GetStringLanguage(curShow->bravoTrainer.playerName);
+ curShow->bravoTrainer.pokemonNameLanguage = TV_GetStringLanguage(curShow->bravoTrainer.pokemonNickname);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ curShow->bravoTrainerTower.language = TV_GetStringLanguage(curShow->bravoTrainerTower.trainerName);
+ curShow->bravoTrainerTower.pokemonNameLanguage = TV_GetStringLanguage(curShow->bravoTrainerTower.pokemonName);
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ curShow->contestLiveUpdates.language = TV_GetStringLanguage(curShow->contestLiveUpdates.playerName);
+ curShow->contestLiveUpdates.winningTrainerLanguage = TV_GetStringLanguage(curShow->contestLiveUpdates.winningTrainerName);
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ curShow->threeCheers.language = TV_GetStringLanguage(curShow->threeCheers.playerName);
+ curShow->threeCheers.worstBlenderLanguage = TV_GetStringLanguage(curShow->threeCheers.worstBlenderName);
+ break;
+ case TVSHOW_BATTLE_UPDATE:
+ curShow->battleUpdate.language = TV_GetStringLanguage(curShow->battleUpdate.playerName);
+ curShow->battleUpdate.linkOpponentLanguage = TV_GetStringLanguage(curShow->battleUpdate.linkOpponentName);
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ curShow->fanClubSpecial.language = TV_GetStringLanguage(curShow->fanClubSpecial.playerName);
+ curShow->fanClubSpecial.idolNameLanguage = TV_GetStringLanguage(curShow->fanClubSpecial.idolName);
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES_2:
+ curShow->contestLiveUpdates2.language = TV_GetStringLanguage(curShow->contestLiveUpdates2.playerName);
+ curShow->contestLiveUpdates2.pokemonNameLanguage = TV_GetStringLanguage(curShow->contestLiveUpdates2.nickname);
+ break;
+
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ curShow->pokemonToday.language = TV_GetStringLanguage(curShow->pokemonToday.playerName);
+ curShow->pokemonToday.language2 = TV_GetStringLanguage(curShow->pokemonToday.nickname);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ curShow->smartshopperShow.language = TV_GetStringLanguage(curShow->smartshopperShow.playerName);
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ curShow->pokemonTodayFailed.language = TV_GetStringLanguage(curShow->pokemonTodayFailed.playerName);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ curShow->pokemonAngler.language = TV_GetStringLanguage(curShow->pokemonAngler.playerName);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ curShow->worldOfMasters.language = TV_GetStringLanguage(curShow->worldOfMasters.playerName);
+ break;
+ case TVSHOW_TREND_WATCHER:
+ curShow->trendWatcher.language = TV_GetStringLanguage(curShow->trendWatcher.playerName);
+ break;
+ case TVSHOW_BREAKING_NEWS:
+ curShow->breakingNews.language = TV_GetStringLanguage(curShow->breakingNews.playerName);
+ break;
+ case TVSHOW_BATTLE_SEMINAR:
+ curShow->battleSeminar.language = TV_GetStringLanguage(curShow->battleSeminar.playerName);
+ break;
+ case TVSHOW_FIND_THAT_GAMER:
+ case TVSHOW_TRAINER_FAN_CLUB:
+ curShow->trainerFanClub.language = TV_GetStringLanguage(curShow->trainerFanClub.playerName);
+ break;
+ case TVSHOW_CUTIES:
+ curShow->cuties.language = TV_GetStringLanguage(curShow->cuties.playerName);
+ curShow->cuties.pokemonNameLanguage = TV_GetStringLanguage(curShow->cuties.nickname);
+ break;
+ case TVSHOW_TODAYS_RIVAL_TRAINER:
+ case TVSHOW_SECRET_BASE_VISIT:
+ case TVSHOW_FRONTIER:
+ curShow->rivalTrainer.language = TV_GetStringLanguage(curShow->rivalTrainer.playerName);
+ break;
+ case TVSHOW_TREASURE_INVESTIGATORS:
+ case TVSHOW_LOTTO_WINNER:
+ case TVSHOW_NUMBER_ONE:
+ curShow->treasureInvestigators.language = TV_GetStringLanguage(curShow->treasureInvestigators.playerName);
+ break;
+ case TVSHOW_SECRET_BASE_SECRETS:
+ curShow->secretBaseSecrets.language = TV_GetStringLanguage(curShow->secretBaseSecrets.playerName);
+ curShow->secretBaseSecrets.baseOwnersNameLanguage = TV_GetStringLanguage(curShow->secretBaseSecrets.baseOwnersName);
+ break;
+ case TVSHOW_SAFARI_FAN_CLUB:
+ curShow->safariFanClub.language = TV_GetStringLanguage(curShow->safariFanClub.playerName);
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ break;
+ }
+ }
+}
+
+void sub_80F14F8(TVShow *shows)
+{
+ int i;
+
+ for (i = 0; i < 24; i ++)
+ {
+ switch (shows[i].common.kind)
+ {
+ case TVSHOW_WORLD_OF_MASTERS:
+ if (shows[i].worldOfMasters.location > 0x58)
+ {
+ memset(&shows[i], 0, sizeof(TVShow));
+ }
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ if (shows[i].pokemonTodayFailed.location > 0x58)
+ {
+ memset(&shows[i], 0, sizeof(TVShow));
+ }
+ break;
+ }
+ }
+}
+
+void DoTVShow(void)
+{
+ if (gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.active)
+ {
+ switch (gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.kind)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ DoTVShowPokemonFanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ DoTVShowRecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ DoTVShowPokemonFanClubOpinions();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ DoTVShowDummiedOut();
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ DoTVShowPokemonNewsMassOutbreak();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ DoTVShowBravoTrainerPokemonProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ DoTVShowBravoTrainerBattleTower();
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ DoTVShowPokemonTodaySuccessfulCapture();
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ DoTVShowTodaysSmartShopper();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ DoTVShowTheNameRaterShow();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ DoTVShowPokemonContestLiveUpdates();
+ break;
+ case TVSHOW_BATTLE_UPDATE:
+ DoTVShowPokemonBattleUpdate();
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ DoTVShow3CheersForPokeblocks();
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ DoTVShowPokemonTodayFailedCapture();
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ DoTVShowPokemonAngler();
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ DoTVShowTheWorldOfMasters();
+ break;
+ case TVSHOW_TODAYS_RIVAL_TRAINER:
+ DoTVShowTodaysRivalTrainer();
+ break;
+ case TVSHOW_TREND_WATCHER:
+ DoTVShowDewfordTrendWatcherNetwork();
+ break;
+ case TVSHOW_TREASURE_INVESTIGATORS:
+ DoTVShowHoennTreasureInvestigators();
+ break;
+ case TVSHOW_FIND_THAT_GAMER:
+ DoTVShowFindThatGamer();
+ break;
+ case TVSHOW_BREAKING_NEWS:
+ DoTVShowBreakingNewsTV();
+ break;
+ case TVSHOW_SECRET_BASE_VISIT:
+ DoTVShowSecretBaseVisit();
+ break;
+ case TVSHOW_LOTTO_WINNER:
+ DoTVShowPokemonLotteryWinnerFlashReport();
+ break;
+ case TVSHOW_BATTLE_SEMINAR:
+ DoTVShowThePokemonBattleSeminar();
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ DoTVShowTrainerFanClubSpecial();
+ break;
+ case TVSHOW_TRAINER_FAN_CLUB:
+ DoTVShowTrainerFanClub();
+ break;
+ case TVSHOW_CUTIES:
+ DoTVShowSpotTheCuties();
+ break;
+ case TVSHOW_FRONTIER:
+ DoTVShowPokemonNewsBattleFrontier();
+ break;
+ case TVSHOW_NUMBER_ONE:
+ DoTVShowWhatsNo1InHoennToday();
+ break;
+ case TVSHOW_SECRET_BASE_SECRETS:
+ DoTVShowSecretBaseSecrets();
+ break;
+ case TVSHOW_SAFARI_FAN_CLUB:
+ DoTVShowSafariFanClub();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES_2:
+ DoTVShowPokemonContestLiveUpdates2();
+ break;
+ }
+ }
+}
+
+void DoTVShowBravoTrainerPokemonProfile(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
+ CopyContestRankToStringVar(2, show->bravoTrainer.contestRank);
+ if (!StringCompare(gSpeciesNames[show->bravoTrainer.species], show->bravoTrainer.pokemonNickname))
+ sTVShowState = 8;
+ else
+ sTVShowState = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
+ TVShowConvertInternationalString(gStringVar2, show->bravoTrainer.pokemonNickname, show->bravoTrainer.pokemonNameLanguage);
+ CopyContestCategoryToStringVar(2, show->bravoTrainer.contestCategory);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ if (show->bravoTrainer.contestResult == 0) // placed first
+ sTVShowState = 3;
+ else
+ sTVShowState = 4;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]);
+ TV_PrintIntToStringVar(2, show->bravoTrainer.contestResult + 1);
+ sTVShowState = 5;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]);
+ TV_PrintIntToStringVar(2, show->bravoTrainer.contestResult + 1);
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
+ CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]);
+ if (show->bravoTrainer.move)
+ sTVShowState = 6;
+ else
+ sTVShowState = 7;
+ break;
+ case 6:
+ StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
+ StringCopy(gStringVar2, gMoveNames[show->bravoTrainer.move]);
+ CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]);
+ sTVShowState = 7;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainer.species]);
+ TVShowDone();
+ break;
+ case 8:
+ StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
+ sTVShowState = 2;
+ break;
+ }
+ ShowFieldMessage(sTVBravoTrainerTextGroup[state]);
+}
+
+void DoTVShowBravoTrainerBattleTower(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch(state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]);
+ if (show->bravoTrainerTower.numFights >= 7)
+ sTVShowState = 1;
+ else
+ sTVShowState = 2;
+ break;
+ case 1:
+ if (show->bravoTrainerTower.btLevel == 50)
+ {
+ StringCopy(gStringVar1, gText_Lv50);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gText_OpenLevel);
+ }
+ TV_PrintIntToStringVar(1, show->bravoTrainerTower.numFights);
+ if (show->bravoTrainerTower.wonTheChallenge == TRUE)
+ sTVShowState = 3;
+ else
+ sTVShowState = 4;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ TV_PrintIntToStringVar(1, show->bravoTrainerTower.numFights + 1);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 6;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 6;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 6;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ sTVShowState = 11;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ sTVShowState = 11;
+ break;
+ case 7:
+ sTVShowState = 11;
+ break;
+ case 8:
+ case 9:
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ sTVShowState = 11;
+ break;
+ case 11:
+ CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 12;
+ else
+ sTVShowState = 13;
+ break;
+ case 12:
+ case 13:
+ CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]);
+ TVShowConvertInternationalString(gStringVar2, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ TVShowConvertInternationalString(gStringVar3, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ sTVShowState = 14;
+ break;
+ case 14:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVBravoTrainerBattleTowerTextGroup[state]);
+}
+
+void DoTVShowTodaysSmartShopper(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch(state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ GetMapName(gStringVar2, show->smartshopperShow.shopLocation, 0);
+ if (show->smartshopperShow.itemAmounts[0] >= 255)
+ {
+ sTVShowState = 11;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[0])->name);
+ TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[0]);
+ sTVShowState += 1 + (Random() % 4);
+ break;
+ case 2:
+ case 4:
+ case 5:
+ if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
+ {
+ sTVShowState = 6;
+ }
+ else
+ {
+ sTVShowState = 10;
+ }
+ break;
+ case 3:
+ TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[0] + 1);
+ if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
+ {
+ sTVShowState = 6;
+ }
+ else
+ {
+ sTVShowState = 10;
+ }
+ break;
+ case 6:
+ StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[1])->name);
+ TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[1]);
+ if (show->smartshopperShow.itemIds[2] != ITEM_NONE)
+ {
+ sTVShowState = 7;
+ }
+ else if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 7:
+ StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[2])->name);
+ TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[2]);
+ if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 8:
+ if (show->smartshopperShow.itemAmounts[0] >= 255)
+ {
+ sTVShowState = 12;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 9:
+ sub_80EF40C(1, show);
+ TVShowDone();
+ break;
+ case 10:
+ if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[0])->name);
+ if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 12;
+ }
+ break;
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVTodaysSmartShopperTextGroup[state]);
+}
+
+void DoTVShowTheNameRaterShow(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]);
+ TVShowConvertInternationalString(gStringVar3, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
+ sTVShowState = TV_GetNicknameSumMod8(show) + 1;
+ break;
+ case 1:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ if (show->nameRaterShow.random == 0)
+ {
+ sTVShowState = 9;
+ }
+ else if (show->nameRaterShow.random == 1)
+ {
+ sTVShowState = 10;
+ }
+ else if (show->nameRaterShow.random == 2)
+ {
+ sTVShowState = 11;
+ }
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
+ if (show->nameRaterShow.random == 0)
+ {
+ sTVShowState = 9;
+ }
+ else if (show->nameRaterShow.random == 1)
+ {
+ sTVShowState = 10;
+ }
+ else if (show->nameRaterShow.random == 2)
+ {
+ sTVShowState = 11;
+ }
+ break;
+ case 9:
+ case 10:
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
+ TV_GetNicknameSubstring(1, 0, 0, 1, 0, show);
+ TV_GetNicknameSubstring(2, 1, 0, 1, 0, show);
+ sTVShowState = 12;
+ break;
+ case 13:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
+ TV_GetNicknameSubstring(1, 0, 2, 0, 0, show);
+ TV_GetNicknameSubstring(2, 0, 3, 1, 0, show);
+ sTVShowState = 14;
+ break;
+ case 14:
+ TV_GetNicknameSubstring(1, 0, 2, 1, 0, show);
+ TV_GetNicknameSubstring(2, 0, 3, 0, 0, show);
+ sTVShowState = 18;
+ break;
+ case 15:
+ TV_GetNicknameSubstring(0, 0, 2, 1, 0, show);
+ StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]);
+ TV_GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.species, show);
+ sTVShowState = 16;
+ break;
+ case 16:
+ TV_GetNicknameSubstring(0, 0, 2, 2, show->nameRaterShow.species, show);
+ TV_GetNicknameSubstring(2, 0, 3, 1, 0, show);
+ sTVShowState = 17;
+ break;
+ case 17:
+ TV_GetNicknameSubstring(0, 0, 2, 1, 0, show);
+ StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.randomSpecies]);
+ TV_GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.randomSpecies, show);
+ sTVShowState = 18;
+ break;
+ case 12:
+ state = 18;
+ sTVShowState = 18;
+ case 18:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVNameRaterTextGroup[state]);
+}
+
+void DoTVShowPokemonTodaySuccessfulCapture(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
+ if (show->pokemonToday.ball == ITEM_MASTER_BALL)
+ {
+ sTVShowState = 5;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ StringCopy(gStringVar2, ItemId_GetItem(show->pokemonToday.ball)->name);
+ TV_PrintIntToStringVar(2, show->pokemonToday.nBallsUsed);
+ if (show->pokemonToday.nBallsUsed < 4)
+ {
+ sTVShowState = 3;
+ }
+ else
+ {
+ sTVShowState = 4;
+ }
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
+ sTVShowState = 6;
+ break;
+ case 4:
+ sTVShowState = 6;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
+ sTVShowState += 1 + (Random() % 4);
+ break;
+ case 7:
+ case 8:
+ StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2);
+ TV_GetSomeOtherSpeciesAlreadySeenByPlayer_AndPrintName(2, show->pokemonToday.species);
+ sTVShowState = 11;
+ break;
+ case 9:
+ case 10:
+ StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2);
+ sTVShowState = 11;
+ break;
+ case 11:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonTodaySuccessfulTextGroup[state]);
+}
+
+void DoTVShowPokemonTodayFailedCapture(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonTodayFailed.species]);
+ sTVShowState = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ GetMapName(gStringVar2, show->pokemonTodayFailed.location, 0);
+ StringCopy(gStringVar3, gSpeciesNames[show->pokemonTodayFailed.species2]);
+ if (show->pokemonTodayFailed.outcome == 1)
+ {
+ sTVShowState = 3;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ TV_PrintIntToStringVar(1, show->pokemonTodayFailed.nBallsUsed);
+ if (Random() % 3 == 0)
+ {
+ sTVShowState = 5;
+ }
+ else
+ {
+ sTVShowState = 4;
+ }
+ break;
+ case 4:
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonTodayFailedTextGroup[state]);
+}
+
+void DoTVShowPokemonFanClubLetter(void)
+{
+ TVShow *show;
+ u8 state;
+ u16 rval;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubLetter.playerName, show->fanclubLetter.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->fanclubLetter.species]);
+ sTVShowState = 50;
+ break;
+ case 1:
+ rval = (Random() % 4) + 1;
+ if (rval == 1)
+ sTVShowState = 2;
+ else
+ sTVShowState = rval + 2;
+ break;
+ case 2:
+ sTVShowState = 51;
+ break;
+ case 3:
+ sTVShowState += (Random() % 3) + 1;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ TV_FanClubLetter_RandomWordToStringVar3(show);
+ sTVShowState = 7;
+ break;
+ case 7:
+ rval = (Random() % 0x1f) + 0x46;
+ TV_PrintIntToStringVar(2, rval);
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ sTVShowState = 1;
+ return;
+ case 51:
+ ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ sTVShowState = 3;
+ return;
+ }
+ ShowFieldMessage(sTVFanClubTextGroup[state]);
+}
+
+void DoTVShowRecentHappenings(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->recentHappenings.playerName, show->recentHappenings.language);
+ TV_FanClubLetter_RandomWordToStringVar3(show);
+ sTVShowState = 50;
+ break;
+ case 1:
+ sTVShowState += 1 + (Random() % 3);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, show->recentHappenings.words, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ sTVShowState = 1;
+ return;
+ }
+ ShowFieldMessage(sTVRecentHappeninssTextGroup[state]);
+}
+
+void DoTVShowPokemonFanClubOpinions(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]);
+ TVShowConvertInternationalString(gStringVar3, show->fanclubOpinions.nickname, show->fanclubOpinions.pokemonNameLanguage);
+ sTVShowState = show->fanclubOpinions.questionAsked + 1;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]);
+ CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[0]);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
+ CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[1]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVFanClubOpinionsTextGroup[state]);
+}
+
+void DoTVShowDummiedOut(void)
+{
+
+}
+
+void DoTVShowPokemonNewsMassOutbreak(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ GetMapName(gStringVar1, show->massOutbreak.locationMapNum, 0);
+ StringCopy(gStringVar2, gSpeciesNames[show->massOutbreak.species]);
+ TVShowDone();
+ StartMassOutbreak();
+ ShowFieldMessage(sTVMassOutbreakTextGroup[sTVShowState]);
+}
+
+void DoTVShowPokemonContestLiveUpdates(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ sub_818E868(gStringVar1, show->contestLiveUpdates.category);
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
+ if (show->contestLiveUpdates.round1Rank == show->contestLiveUpdates.round2Rank)
+ {
+ if (show->contestLiveUpdates.round1Rank == 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ }
+ else if (show->contestLiveUpdates.round1Rank > show->contestLiveUpdates.round2Rank)
+ {
+ sTVShowState = 2;
+ }
+ else
+ {
+ sTVShowState = 4;
+ }
+ break;
+ case 1:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.appealFlags1)
+ {
+ case 0x01:
+ sTVShowState = 8;
+ break;
+ case 0x02:
+ sTVShowState = 5;
+ break;
+ case 0x04:
+ sTVShowState = 14;
+ break;
+ case 0x08:
+ sTVShowState = 7;
+ break;
+ case 0x10:
+ sTVShowState = 6;
+ break;
+ case 0x20:
+ sTVShowState = 20;
+ break;
+ case 0x40:
+ sTVShowState = 21;
+ break;
+ case 0x80:
+ sTVShowState = 22;
+ break;
+ }
+ break;
+ case 2:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.appealFlags1)
+ {
+ case 0x01:
+ sTVShowState = 8;
+ break;
+ case 0x02:
+ sTVShowState = 5;
+ break;
+ case 0x04:
+ sTVShowState = 14;
+ break;
+ case 0x08:
+ sTVShowState = 7;
+ break;
+ case 0x10:
+ sTVShowState = 6;
+ break;
+ case 0x20:
+ sTVShowState = 20;
+ break;
+ case 0x40:
+ sTVShowState = 21;
+ break;
+ case 0x80:
+ sTVShowState = 22;
+ break;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
+ switch (show->contestLiveUpdates.appealFlags1)
+ {
+ case 0x01:
+ sTVShowState = 8;
+ break;
+ case 0x02:
+ sTVShowState = 5;
+ break;
+ case 0x04:
+ sTVShowState = 14;
+ break;
+ case 0x08:
+ sTVShowState = 7;
+ break;
+ case 0x10:
+ sTVShowState = 6;
+ break;
+ case 0x20:
+ sTVShowState = 20;
+ break;
+ case 0x40:
+ sTVShowState = 21;
+ break;
+ case 0x80:
+ sTVShowState = 22;
+ break;
+ }
+ break;
+ case 4:
+ switch (show->contestLiveUpdates.category)
+ {
+ case 0:
+ StringCopy(gStringVar1, gText_Cool);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gText_Beauty);
+ break;
+ case 2:
+ StringCopy(gStringVar1, gText_Cute);
+ break;
+ case 3:
+ StringCopy(gStringVar1, gText_Smart);
+ break;
+ case 4:
+ StringCopy(gStringVar1, gText_Tough);
+ break;
+ }
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.appealFlags1)
+ {
+ case 0x01:
+ sTVShowState = 8;
+ break;
+ case 0x02:
+ sTVShowState = 5;
+ break;
+ case 0x04:
+ sTVShowState = 14;
+ break;
+ case 0x08:
+ sTVShowState = 7;
+ break;
+ case 0x10:
+ sTVShowState = 6;
+ break;
+ case 0x20:
+ sTVShowState = 20;
+ break;
+ case 0x40:
+ sTVShowState = 21;
+ break;
+ case 0x80:
+ sTVShowState = 22;
+ break;
+ }
+ break;
+ case 5:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 6:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 7:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 8:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.category)
+ {
+ case 0:
+ sTVShowState = 9;
+ break;
+ case 1:
+ sTVShowState = 10;
+ break;
+ case 2:
+ sTVShowState = 11;
+ break;
+ case 3:
+ sTVShowState = 12;
+ break;
+ case 4:
+ sTVShowState = 13;
+ break;
+ }
+ break;
+ case 9:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 10:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 11:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 12:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 13:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 14:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.category)
+ {
+ case 0:
+ sTVShowState = 15;
+ break;
+ case 1:
+ sTVShowState = 16;
+ break;
+ case 2:
+ sTVShowState = 17;
+ break;
+ case 3:
+ sTVShowState = 18;
+ break;
+ case 4:
+ sTVShowState = 19;
+ break;
+ }
+ break;
+ case 15:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 16:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 17:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 18:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 19:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 20:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 21:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 22:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ StringCopy(gStringVar3, gMoveNames[show->contestLiveUpdates.move]);
+ sTVShowState = 23;
+ break;
+ case 23:
+ StringCopy(gStringVar1, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowConvertInternationalString(gStringVar2, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage);
+ StringCopy(gStringVar3, gSpeciesNames[show->contestLiveUpdates.winningSpecies]);
+ switch (show->contestLiveUpdates.appealFlags2)
+ {
+ case 0x01:
+ sTVShowState = 31;
+ break;
+ case 0x02:
+ sTVShowState = 30;
+ break;
+ case 0x04:
+ sTVShowState = 29;
+ break;
+ case 0x08:
+ sTVShowState = 28;
+ break;
+ case 0x10:
+ sTVShowState = 27;
+ break;
+ case 0x20:
+ sTVShowState = 26;
+ break;
+ case 0x40:
+ sTVShowState = 25;
+ break;
+ case 0x80:
+ sTVShowState = 24;
+ break;
+ }
+ break;
+ case 24:
+ StringCopy(gStringVar1, gSpeciesNames[show->contestLiveUpdates.winningSpecies]);
+ sTVShowState = 32;
+ break;
+ case 25:
+ TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.winningSpecies]);
+ sTVShowState = 32;
+ break;
+ case 28:
+ sTVShowState = 32;
+ break;
+ case 29:
+ TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage);
+ sTVShowState = 32;
+ break;
+ case 26:
+ case 27:
+ case 30:
+ case 31:
+ TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage);
+ sTVShowState = 32;
+ break;
+ case 32:
+
+ TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVContestLiveUpdatesTextGroup[state]);
+}
+
+void DoTVShowPokemonBattleUpdate(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ switch (show->battleUpdate.battleType)
+ {
+ case 0:
+ case 1:
+ sTVShowState = 1;
+ break;
+ case 2:
+ sTVShowState = 5;
+ break;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ if (show->battleUpdate.battleType == 0)
+ {
+ StringCopy(gStringVar3, gText_Single);
+ }
+ else
+ {
+ StringCopy(gStringVar3, gText_Double);
+ }
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species2]);
+ StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
+ sTVShowState = 3;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species]);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ TVShowDone();
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species2]);
+ StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
+ sTVShowState = 7;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ StringCopy(gStringVar3, gSpeciesNames[show->battleUpdate.species]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonBattleUpdateTextGroup[state]);
+}
+
+void DoTVShow3CheersForPokeblocks(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->threeCheers.playerName, show->threeCheers.language);
+ if (show->threeCheers.sheen > 20)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 1:
+ switch (show->threeCheers.flavor)
+ {
+ case 0:
+ StringCopy(gStringVar1, gText_Spicy2);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gText_Dry2);
+ break;
+ case 2:
+ StringCopy(gStringVar1, gText_Sweet2);
+ break;
+ case 3:
+ StringCopy(gStringVar1, gText_Bitter2);
+ break;
+ case 4:
+ StringCopy(gStringVar1, gText_Sour2);
+ break;
+ }
+ if (show->threeCheers.sheen > 24)
+ {
+ StringCopy(gStringVar2, gText_Excellent);
+ } else if (show->threeCheers.sheen > 22)
+ {
+ StringCopy(gStringVar2, gText_VeryGood);
+ }
+ else
+ {
+ StringCopy(gStringVar2, gText_Good);
+ }
+ TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage);
+ sTVShowState = 5;
+ break;
+ case 3:
+ switch (show->threeCheers.flavor)
+ {
+ case 0:
+ StringCopy(gStringVar1, gText_Spicy2);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gText_Dry2);
+ break;
+ case 2:
+ StringCopy(gStringVar1, gText_Sweet2);
+ break;
+ case 3:
+ StringCopy(gStringVar1, gText_Bitter2);
+ break;
+ case 4:
+ StringCopy(gStringVar1, gText_Sour2);
+ break;
+ }
+ if (show->threeCheers.sheen > 16)
+ {
+ StringCopy(gStringVar2, gText_SoSo);
+ } else if (show->threeCheers.sheen > 13)
+ {
+ StringCopy(gStringVar2, gText_Bad);
+ }
+ else
+ {
+ StringCopy(gStringVar2, gText_TheWorst);
+ }
+ TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->threeCheers.playerName, show->threeCheers.language);
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTV3CheersForPokeblocksTextGroup[state]);
+}
+
+void DoTVShowInSearchOfTrainers(void)
+{
+ u8 state;
+
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ GetMapName(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.mapnum, 0);
+ if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 1)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ if (!gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn)
+ {
+ sTVShowState = 4;
+ }
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall)
+ {
+ sTVShowState = 5;
+ }
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem)
+ {
+ sTVShowState = 6;
+ }
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon)
+ {
+ sTVShowState = 7;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]);
+ StringCopy(gStringVar2, gMoveNames[gSaveBlock1Ptr->gabbyAndTyData.lastMove]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]);
+ sTVShowState = 8;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ sTVShowState = 8;
+ break;
+ case 8:
+ CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]);
+ StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]);
+ gScriptResult = TRUE;
+ sTVShowState = 0;
+ TakeTVShowInSearchOfTrainersOffTheAir();
+ break;
+ }
+ ShowFieldMessage(sTVInSearchOfTrainersTextGroup[state]);
+}
+
+void DoTVShowPokemonAngler(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ if (show->pokemonAngler.nBites < show->pokemonAngler.nFails)
+ {
+ sTVShowState = 0;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]);
+ TV_PrintIntToStringVar(2, show->pokemonAngler.nFails);
+ TVShowDone();
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]);
+ TV_PrintIntToStringVar(2, show->pokemonAngler.nBites);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonAnslerTextGroup[state]);
+}
+
+void DoTVShowTheWorldOfMasters(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language);
+ TV_PrintIntToStringVar(1, show->worldOfMasters.steps);
+ TV_PrintIntToStringVar(2, show->worldOfMasters.numPokeCaught);
+ sTVShowState = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar1, gSpeciesNames[show->worldOfMasters.species]);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language);
+ GetMapName(gStringVar2, show->worldOfMasters.location, 0);
+ StringCopy(gStringVar3, gSpeciesNames[show->worldOfMasters.caughtPoke]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVWorldOfMastersTextGroup[state]);
+}
+
+void DoTVShowTodaysRivalTrainer(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ switch (show->rivalTrainer.location)
+ {
+ default:
+ sTVShowState = 7;
+ break;
+ case REGION_MAP_SECRET_BASE:
+ sTVShowState = 8;
+ break;
+ case REGION_MAP_NONE:
+ switch (show->rivalTrainer.mapDataId)
+ {
+ case 0x115 ... 0x117:
+ sTVShowState = 10;
+ break;
+ default:
+ sTVShowState = 9;
+ break;
+ }
+ break;
+ }
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
+ GetMapName(gStringVar3, show->rivalTrainer.location, 0);
+ if (show->rivalTrainer.badgeCount != 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
+ if (show->rivalTrainer.badgeCount != 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 9:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
+ if (show->rivalTrainer.badgeCount != 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
+ if (show->rivalTrainer.badgeCount != 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 1:
+ TV_PrintIntToStringVar(0, show->rivalTrainer.badgeCount);
+ if (FlagGet(CODE_FLAGS + 0x48))
+ {
+ if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols)
+ {
+ sTVShowState = 4;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ }
+ else
+ {
+ sTVShowState = 6;
+ }
+ break;
+ case 2:
+ if (FlagGet(CODE_FLAGS + 0x48))
+ {
+ if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols)
+ {
+ sTVShowState = 4;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ }
+ else
+ {
+ sTVShowState = 6;
+ }
+ break;
+ case 3:
+ if (show->rivalTrainer.battlePoints == 0)
+ {
+ sTVShowState = 6;
+ }
+ else
+ {
+ sTVShowState = 5;
+ }
+ break;
+ case 4:
+ TV_PrintIntToStringVar(0, show->rivalTrainer.nGoldSymbols);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.nSilverSymbols);
+ if (show->rivalTrainer.battlePoints == 0)
+ {
+ sTVShowState = 6;
+ }
+ else
+ {
+ sTVShowState = 5;
+ }
+ break;
+ case 5:
+ TV_PrintIntToStringVar(0, show->rivalTrainer.battlePoints);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVTodaysRivalTrainerTextGroup[state]);
+}
+
+void DoTVShowDewfordTrendWatcherNetwork(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ if (show->trendWatcher.gender == MALE)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 1:
+ case 2:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language);
+ sTVShowState = 3;
+ break;
+ case 3:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ if (show->trendWatcher.gender == MALE)
+ {
+ sTVShowState = 4;
+ }
+ else
+ {
+ sTVShowState = 5;
+ }
+ break;
+ case 4:
+ case 5:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language);
+ sTVShowState = 6;
+ break;
+ case 6:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVDewfordTrendWatcherNetworkTextGroup[state]);
+}
+
+void DoTVShowHoennTreasureInvestigators(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name);
+ if (show->treasureInvestigators.location == REGION_MAP_NONE)
+ {
+ switch (show->treasureInvestigators.mapDataId)
+ {
+ case 0x115 ... 0x117:
+ sTVShowState = 2;
+ break;
+ default:
+ sTVShowState = 1;
+ break;
+ }
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name);
+ TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
+ GetMapName(gStringVar3, show->treasureInvestigators.location, 0);
+ TVShowDone();
+ break;
+ case 2:
+ StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name);
+ TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVHoennTreasureInvestisatorsTextGroup[state]);
+}
+
+void DoTVShowFindThatGamer(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ }
+ if (show->findThatGamer.won == TRUE)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ }
+ TV_PrintIntToStringVar(2, show->findThatGamer.nCoins);
+ TVShowDone(); break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ }
+ TV_PrintIntToStringVar(2, show->findThatGamer.nCoins);
+ sTVShowState = 3;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ }
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVFindThatGamerTextGroup[state]);
+}
+
+void DoTVShowBreakingNewsTV(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ if (show->breakingNews.outcome == 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 5;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ GetMapName(gStringVar3, show->breakingNews.location, 0);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
+ sTVShowState = 3;
+ break;
+ case 3:
+ TV_PrintIntToStringVar(0, show->breakingNews.balls);
+ StringCopy(gStringVar2, ItemId_GetItem(show->breakingNews.caughtMonBall)->name);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ GetMapName(gStringVar2, show->breakingNews.location, 0);
+ TVShowDone();
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ GetMapName(gStringVar3, show->breakingNews.location, 0);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
+ switch (show->breakingNews.outcome)
+ {
+ case 1:
+ if (show->breakingNews.lastUsedMove == MOVE_NONE)
+ {
+ sTVShowState = 12;
+ }
+ else
+ {
+ sTVShowState = 7;
+ }
+ break;
+ case 2:
+ sTVShowState = 9;
+ break;
+ case 3:
+ sTVShowState = 10;
+ break;
+ }
+ break;
+ case 7:
+ StringCopy(gStringVar1, gMoveNames[show->breakingNews.lastUsedMove]);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.poke1Species]);
+ sTVShowState = 8;
+ break;
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
+ sTVShowState = 8;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ GetMapName(gStringVar2, show->breakingNews.location, 0);
+ sTVShowState = 11;
+ break;
+ case 9:
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ GetMapName(gStringVar3, show->breakingNews.location, 0);
+ sTVShowState = 11;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVBreakinsNewsTextGroup[state]);
+}
+
+void DoTVShowSecretBaseVisit(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
+ if (show->secretBaseVisit.nDecorations == 0)
+ {
+ sTVShowState = 2;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[0]].name);
+ if (show->secretBaseVisit.nDecorations == 1)
+ {
+ sTVShowState = 4;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[1]].name);
+ switch (show->secretBaseVisit.nDecorations)
+ {
+ case 2:
+ sTVShowState = 7;
+ break;
+ case 3:
+ sTVShowState = 6;
+ break;
+ case 4:
+ sTVShowState = 5;
+ break;
+ }
+ break;
+ case 5:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name);
+ StringCopy(gStringVar3, gDecorations[show->secretBaseVisit.decorations[3]].name);
+ sTVShowState = 8;
+ break;
+ case 6:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name);
+ sTVShowState = 8;
+ break;
+ case 2:
+ case 4:
+ case 7:
+ sTVShowState = 8;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
+ if (show->secretBaseVisit.avgLevel < 25)
+ {
+ sTVShowState = 12;
+ }
+ else if (show->secretBaseVisit.avgLevel < 50)
+ {
+ sTVShowState = 11;
+ }
+ else if (show->secretBaseVisit.avgLevel < 70)
+ {
+ sTVShowState = 10;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->secretBaseVisit.species]);
+ StringCopy(gStringVar3, gMoveNames[show->secretBaseVisit.move]);
+ sTVShowState = 13;
+ break;
+ case 13:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVSecretBaseVisitTextGroup[state]);
+}
+
+void DoTVShowPokemonLotteryWinnerFlashReport(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ TVShowConvertInternationalString(gStringVar1, show->lottoWinner.playerName, show->lottoWinner.language);
+ if (show->lottoWinner.whichPrize == 0)
+ {
+ StringCopy(gStringVar2, gText_Jackpot);
+ }
+ else if (show->lottoWinner.whichPrize == 1)
+ {
+ StringCopy(gStringVar2, gText_First);
+ }
+ else if (show->lottoWinner.whichPrize == 2)
+ {
+ StringCopy(gStringVar2, gText_Second);
+ }
+ else
+ {
+ StringCopy(gStringVar2, gText_Third);
+ }
+ StringCopy(gStringVar3, ItemId_GetItem(show->lottoWinner.item)->name);
+ TVShowDone();
+ ShowFieldMessage(sTVPokemonLotteryWinnerFlashReportTextGroup[state]);
+}
+
+void DoTVShowThePokemonBattleSeminar(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.species]);
+ StringCopy(gStringVar3, gSpeciesNames[show->battleSeminar.foeSpecies]);
+ sTVShowState = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.foeSpecies]);
+ StringCopy(gStringVar3, gMoveNames[show->battleSeminar.move]);
+ sTVShowState = 2;
+ break;
+ case 2:
+ StringCopy(gStringVar1, gSpeciesNames[show->battleSeminar.species]);
+ switch (show->battleSeminar.nOtherMoves)
+ {
+ case 1:
+ sTVShowState = 5;
+ break;
+ case 2:
+ sTVShowState = 4;
+ break;
+ case 3:
+ sTVShowState = 3;
+ break;
+ default:
+ sTVShowState = 6;
+ break;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]);
+ StringCopy(gStringVar3, gMoveNames[show->battleSeminar.otherMoves[2]]);
+ sTVShowState = 6;
+ break;
+ case 4:
+ StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]);
+ sTVShowState = 6;
+ break;
+ case 5:
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ sTVShowState = 6;
+ break;
+ case 6:
+ StringCopy(gStringVar1, gMoveNames[show->battleSeminar.betterMove]);
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.move]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVThePokemonBattleSeminarTextGroup[state]);
+}
+
+void DoTVShowTrainerFanClubSpecial(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]);
+ if (show->fanClubSpecial.score >= 90)
+ {
+ sTVShowState = 1;
+ }
+ else if (show->fanClubSpecial.score >= 70)
+ {
+ sTVShowState = 2;
+ }
+ else if (show->fanClubSpecial.score >= 30)
+ {
+ sTVShowState = 3;
+ }
+ else
+ {
+ sTVShowState = 4;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVTrainerFanClubSpecialTextGroup[state]);
+}
+
+void DoTVShowTrainerFanClub(void)
+{
+ TVShow *show;
+ u8 state;
+ u32 playerId;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language);
+ playerId = ((show->common.trainerIdHi << 8) + show->common.trainerIdLo);
+ switch (playerId % 10)
+ {
+ case 0:
+ sTVShowState = 1;
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ sTVShowState = 3;
+ break;
+ case 3:
+ sTVShowState = 4;
+ break;
+ case 4:
+ sTVShowState = 5;
+ break;
+ case 5:
+ sTVShowState = 6;
+ break;
+ case 6:
+ sTVShowState = 7;
+ break;
+ case 7:
+ sTVShowState = 8;
+ break;
+ case 8:
+ sTVShowState = 9;
+ break;
+ case 9:
+ sTVShowState = 10;
+ break;
+ }
+ break;
+ case 1:
+ sTVShowState = 11;
+ break;
+ case 2:
+ sTVShowState = 11;
+ break;
+ case 3:
+ sTVShowState = 11;
+ break;
+ case 4:
+ sTVShowState = 11;
+ break;
+ case 5:
+ sTVShowState = 11;
+ break;
+ case 6:
+ sTVShowState = 11;
+ break;
+ case 7:
+ sTVShowState = 11;
+ break;
+ case 8:
+ sTVShowState = 11;
+ break;
+ case 9:
+ sTVShowState = 11;
+ break;
+ case 10:
+ sTVShowState = 11;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language);
+ CopyEasyChatWord(gStringVar2, show->trainerFanClub.words[0]);
+ CopyEasyChatWord(gStringVar3, show->trainerFanClub.words[1]);
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVTrainerFanClubTextGroup[state]);
+}
+
+void DoTVShowSpotTheCuties(void)
+{
+ TVShow *show;
+ u8 state;
+ u32 playerId;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ if (show->cuties.nRibbons < 10)
+ {
+ sTVShowState = 1;
+ }
+ else if (show->cuties.nRibbons < 20)
+ {
+ sTVShowState = 2;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 1:
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ TV_PrintIntToStringVar(2, show->cuties.nRibbons);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ switch (show->cuties.selectedRibbon)
+ {
+ case 0:
+ sTVShowState = 5;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ sTVShowState = 6;
+ break;
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ sTVShowState = 7;
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ sTVShowState = 8;
+ break;
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ sTVShowState = 9;
+ break;
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ sTVShowState = 10;
+ break;
+ case 21:
+ sTVShowState = 11;
+ break;
+ case 22:
+ sTVShowState = 12;
+ break;
+ case 23:
+ sTVShowState = 13;
+ break;
+ case 24:
+ sTVShowState = 14;
+ break;
+ }
+ break;
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ sTVShowState = 15;
+ break;
+ case 15:
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVCutiesTextGroup[state]);
+}
+
+void DoTVShowPokemonNewsBattleFrontier(void)
+{
+ TVShow *show;
+ u8 state;
+ u32 playerId;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ switch (show->frontier.facility)
+ {
+ case 1:
+ sTVShowState = 1;
+ break;
+ case 2:
+ sTVShowState = 2;
+ break;
+ case 3:
+ sTVShowState = 3;
+ break;
+ case 4:
+ sTVShowState = 4;
+ break;
+ case 5:
+ sTVShowState = 5;
+ break;
+ case 6:
+ sTVShowState = 6;
+ break;
+ case 7:
+ sTVShowState = 7;
+ break;
+ case 8:
+ sTVShowState = 8;
+ break;
+ case 9:
+ sTVShowState = 9;
+ break;
+ case 10:
+ sTVShowState = 10;
+ break;
+ case 11:
+ sTVShowState = 11;
+ break;
+ case 12:
+ sTVShowState = 12;
+ break;
+ case 13:
+ sTVShowState = 13;
+ break;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 16;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 15;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 15;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 9:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 13:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 14:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
+ StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
+ StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]);
+ sTVShowState = 18;
+ break;
+ case 15:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
+ StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
+ sTVShowState = 18;
+ break;
+ case 16:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
+ StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
+ StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]);
+ sTVShowState = 17;
+ break;
+ case 17:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species4]);
+ sTVShowState = 18;
+ break;
+ case 18:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonNewsBattleFrontierTextGroup[state]);
+}
+
+void DoTVShowWhatsNo1InHoennToday(void)
+{
+ TVShow *show;
+ u8 state;
+ u32 playerId;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ switch (show->numberOne.actionIdx)
+ {
+ case 0:
+ sTVShowState = 1;
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ sTVShowState = 3;
+ break;
+ case 3:
+ sTVShowState = 4;
+ break;
+ case 4:
+ sTVShowState = 5;
+ break;
+ case 5:
+ sTVShowState = 6;
+ break;
+ case 6:
+ sTVShowState = 7;
+ break;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]);
+}
+
+u8 sub_80F5180(TVShow *show)
+{
+ u8 i;
+ u8 tot;
+
+ for (i = 0, tot = 0; i < 32; i ++)
+ {
+ if ((show->secretBaseSecrets.flags >> i) & 1)
+ {
+ tot ++;
+ }
+ }
+ return tot;
+}
+
+u8 sub_80F51AC(TVShow *show, u8 a1)
+{
+ u8 i;
+ u8 tot;
+
+ for (i = 0, tot = 0; i < 32; i ++)
+ {
+ if ((show->secretBaseSecrets.flags >> i) & 1)
+ {
+ if (tot == a1)
+ {
+ return sTVSecretBaseSecretsStateLookup[i];
+ }
+ tot ++;
+ }
+ }
+ return 0;
+}
+
+void DoTVShowSecretBaseSecrets(void)
+{
+ TVShow *show;
+ u8 state;
+ u8 bitCount;
+ u16 i;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ bitCount = sub_80F5180(show);
+ if (bitCount == 0)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ show->secretBaseSecrets.savedState = 1;
+ sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount;
+ sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[0]);
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ bitCount = sub_80F5180(show);
+ switch (bitCount)
+ {
+ case 1:
+ sTVShowState = 9;
+ break;
+ case 2:
+ show->secretBaseSecrets.savedState = 2;
+ if (sTVSecretBaseSecretsRandomValues[0] == 0)
+ {
+ sTVShowState = sub_80F51AC(show, 1);
+ }
+ else
+ {
+ sTVShowState = sub_80F51AC(show, 0);
+ }
+ break;
+ default:
+ for (i = 0; i < 0xFFFF; i ++)
+ {
+ sTVSecretBaseSecretsRandomValues[1] = Random() % bitCount;
+ if (sTVSecretBaseSecretsRandomValues[1] != sTVSecretBaseSecretsRandomValues[0])
+ {
+ break;
+ }
+ }
+ show->secretBaseSecrets.savedState = 2;
+ sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[1]);
+ break;
+ }
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ bitCount = sub_80F5180(show);
+ if (bitCount == 2)
+ {
+ sTVShowState = 9;
+ }
+ else
+ {
+ for (i = 0; i < 0xFFFF; i ++)
+ {
+ sTVSecretBaseSecretsRandomValues[2] = Random() % bitCount;
+ if (sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[0] && sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[1])
+ {
+ break;
+ }
+ }
+ show->secretBaseSecrets.savedState = 3;
+ sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[2]);
+ }
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ TV_PrintIntToStringVar(2, show->secretBaseSecrets.stepsInBase);
+ if (show->secretBaseSecrets.stepsInBase <= 30)
+ {
+ sTVShowState = 4;
+ }
+ else if (show->secretBaseSecrets.stepsInBase <= 100)
+ {
+ sTVShowState = 5;
+ }
+ else
+ {
+ sTVShowState = 6;
+ }
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ sTVShowState = 7;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ sTVShowState = 7;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ sTVShowState = 7;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ TVShowDone();
+ break;
+ case 8:
+ sTVShowState = 3;
+ break;
+ case 9:
+ sTVShowState = 3;
+ break;
+ case 10:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 11:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 12:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 13:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 14:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 15:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 16:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 17:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 18:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 19:
+ StringCopy(gStringVar2, ItemId_GetItem(show->secretBaseSecrets.item)->name);
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 20:
+ if (show->common.trainerIdLo & 1)
+ {
+ sTVShowState = 22;
+ }
+ else
+ {
+ sTVShowState = 21;
+ }
+ break;
+ case 21:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 22:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 23:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 24:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 25:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 26:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 27:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 28:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 29:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 30:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 31:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 32:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 33:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 34:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 35:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 36:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 37:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 38:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 39:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 40:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 41:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 42:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 43:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ }
+ ShowFieldMessage(sTVSecretBaseSecretsTextGroup[state]);
+}
+
+void DoTVShowSafariFanClub(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ if (show->safariFanClub.nMonsCaught == 0)
+ {
+ sTVShowState = 6;
+ }
+ else if (show->safariFanClub.nMonsCaught < 4)
+ {
+ sTVShowState = 5;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ TV_PrintIntToStringVar(1, show->safariFanClub.nMonsCaught);
+ if (show->safariFanClub.nPkblkUsed == 0)
+ {
+ sTVShowState = 3;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 2:
+ TV_PrintIntToStringVar(1, show->safariFanClub.nPkblkUsed);
+ sTVShowState = 4;
+ break;
+ case 3:
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ sTVShowState = 10;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ TV_PrintIntToStringVar(1, show->safariFanClub.nMonsCaught);
+ if (show->safariFanClub.nPkblkUsed == 0)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 7;
+ }
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ if (show->safariFanClub.nPkblkUsed == 0)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 7;
+ }
+ break;
+ case 7:
+ TV_PrintIntToStringVar(1, show->safariFanClub.nPkblkUsed);
+ sTVShowState = 9;
+ break;
+ case 8:
+ sTVShowState = 9;
+ break;
+ case 9:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ sTVShowState = 10;
+ break;
+ case 10:
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVSafariFanClubTextGroup[state]);
+}
+
+void DoTVShowPokemonContestLiveUpdates2(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ sub_818E868(gStringVar1, show->contestLiveUpdates2.contestCategory);
+ if (show->contestLiveUpdates2.pokeblockState == 1)
+ {
+ sTVShowState = 1;
+ }
+ else if (show->contestLiveUpdates2.pokeblockState == 0)
+ {
+ sTVShowState = 2;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 1:
+ case 2:
+ TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates2.playerName, show->contestLiveUpdates2.language);
+ case 3:
+ TVShowConvertInternationalString(gStringVar2, show->contestLiveUpdates2.nickname, show->contestLiveUpdates2.pokemonNameLanguage);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonContestLiveUpdates2TextGroup[state]);
+}
+
+void TVShowDone(void)
+{
+ gScriptResult = TRUE;
+ sTVShowState = 0;
+ gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.active = FALSE;
+}
+
+void ResetTVShowState(void)
+{
+ sTVShowState = 0;
+}
diff --git a/src/unk_text_util_2.c b/src/unk_text_util_2.c
new file mode 100644
index 000000000..d88af611f
--- /dev/null
+++ b/src/unk_text_util_2.c
@@ -0,0 +1,219 @@
+#include "global.h"
+#include "main.h"
+#include "window.h"
+#include "text.h"
+#include "sound.h"
+
+static const u8 gUnknown_08616124[] = {1, 2, 4};
+static const u16 gFont6BrailleGlyphs[] = INCBIN_U16("data/graphics/fonts/font6.fwjpnfont");
+
+static void DecompressGlyphFont6(u16);
+
+u16 Font6Func(struct TextPrinter *textPrinter)
+{
+ u16 char_;
+ struct TextPrinterSubStruct *sub;
+
+ sub = &textPrinter->sub_union.sub;
+ switch (textPrinter->state)
+ {
+ case 0:
+ if (gMain.heldKeys & (A_BUTTON | B_BUTTON) && sub->font_type_upper)
+ {
+ textPrinter->delayCounter = 0;
+ }
+ if (textPrinter->delayCounter && textPrinter->text_speed)
+ {
+ textPrinter->delayCounter --;
+ if (gTextFlags.flag_0 && gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub->font_type_upper = TRUE;
+ textPrinter->delayCounter = 0;
+ }
+ return 3;
+ }
+ if (gTextFlags.flag_2)
+ {
+ textPrinter->delayCounter = 3;
+ }
+ else
+ {
+ textPrinter->delayCounter = textPrinter->text_speed;
+ }
+ char_ = *textPrinter->subPrinter.current_text_offset ++;
+ switch (char_)
+ {
+ case EOS:
+ return 1;
+ case CHAR_NEWLINE:
+ textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
+ textPrinter->subPrinter.currentY += gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing;
+ return 2;
+ case PLACEHOLDER_BEGIN:
+ textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case EXT_CTRL_CODE_BEGIN:
+ char_ = *textPrinter->subPrinter.current_text_offset ++;
+ switch (char_)
+ {
+ case 1:
+ textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset ++;
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ return 2;
+ case 2:
+ textPrinter->subPrinter.bgColor = *textPrinter->subPrinter.current_text_offset ++;
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ return 2;
+ case 3:
+ textPrinter->subPrinter.shadowColor = *textPrinter->subPrinter.current_text_offset ++;
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ return 2;
+ case 4:
+ textPrinter->subPrinter.fontColor_h = *textPrinter->subPrinter.current_text_offset;
+ textPrinter->subPrinter.bgColor = *++ textPrinter->subPrinter.current_text_offset;
+ textPrinter->subPrinter.shadowColor = *++ textPrinter->subPrinter.current_text_offset;
+ textPrinter->subPrinter.current_text_offset ++;
+
+ GenerateFontHalfRowLookupTable(textPrinter->subPrinter.fontColor_h, textPrinter->subPrinter.bgColor, textPrinter->subPrinter.shadowColor);
+ return 2;
+ case 5:
+ textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case 6:
+ sub->font_type = *textPrinter->subPrinter.current_text_offset;
+ textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case 7:
+ return 2;
+ case 8:
+ textPrinter->delayCounter = *textPrinter->subPrinter.current_text_offset ++;
+ textPrinter->state = 6;
+ return 2;
+ case 9:
+ textPrinter->state = 1;
+ if (gTextFlags.flag_2)
+ {
+ sub->frames_visible_counter = 0;
+ }
+ return 3;
+ case 10:
+ textPrinter->state = 5;
+ return 3;
+ case 11:
+ case 16:
+ textPrinter->subPrinter.current_text_offset += 2;
+ return 2;
+ case 12:
+ char_ = *++textPrinter->subPrinter.current_text_offset;
+ break;
+ case 13:
+ textPrinter->subPrinter.currentX = textPrinter->subPrinter.x + *textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case 14:
+ textPrinter->subPrinter.currentY = textPrinter->subPrinter.y + *textPrinter->subPrinter.current_text_offset ++;
+ return 2;
+ case 15:
+ FillWindowPixelBuffer(textPrinter->subPrinter.windowId, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ return 2;
+ }
+ break;
+ case CHAR_PROMPT_CLEAR:
+ textPrinter->state = 2;
+ TextPrinterInitDownArrowCounters(textPrinter);
+ return 3;
+ case CHAR_PROMPT_SCROLL:
+ textPrinter->state = 3;
+ TextPrinterInitDownArrowCounters(textPrinter);
+ return 3;
+ case 0xF9:
+ char_ = *textPrinter->subPrinter.current_text_offset ++ | 0x100;
+ break;
+ case 0xF8:
+ textPrinter->subPrinter.current_text_offset ++;
+ return 0;
+ }
+ DecompressGlyphFont6(char_);
+ CopyGlyphToWindow(textPrinter);
+ textPrinter->subPrinter.currentX += gUnknown_03002F90[0x80] + textPrinter->subPrinter.letterSpacing;
+ return 0;
+ case 1:
+ if (TextPrinterWait(textPrinter))
+ {
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 2:
+ if (TextPrinterWaitWithDownArrow(textPrinter))
+ {
+ FillWindowPixelBuffer(textPrinter->subPrinter.windowId, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
+ textPrinter->subPrinter.currentY = textPrinter->subPrinter.y;
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 3:
+ if (TextPrinterWaitWithDownArrow(textPrinter))
+ {
+ TextPrinterClearDownArrow(textPrinter);
+ textPrinter->scrollDistance = gFonts[textPrinter->subPrinter.fontId].maxLetterHeight + textPrinter->subPrinter.lineSpacing;
+ textPrinter->subPrinter.currentX = textPrinter->subPrinter.x;
+ textPrinter->state = 4;
+ }
+ return 3;
+ case 4:
+ if (textPrinter->scrollDistance)
+ {
+ if (textPrinter->scrollDistance < gUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed])
+ {
+ ScrollWindow(textPrinter->subPrinter.windowId, 0, textPrinter->scrollDistance, textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ textPrinter->scrollDistance = 0;
+ }
+ else
+ {
+ ScrollWindow(textPrinter->subPrinter.windowId, 0, gUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed], textPrinter->subPrinter.bgColor | (textPrinter->subPrinter.bgColor << 4));
+ textPrinter->scrollDistance -= gUnknown_08616124[gSaveBlock2Ptr->optionsTextSpeed];
+ }
+ CopyWindowToVram(textPrinter->subPrinter.windowId, 2);
+ }
+ else
+ {
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 5:
+ if (!IsSEPlaying())
+ {
+ textPrinter->state = 0;
+ }
+ return 3;
+ case 6:
+ if (textPrinter->delayCounter)
+ {
+ textPrinter->delayCounter --;
+ }
+ else
+ {
+ textPrinter->state = 0;
+ }
+ return 3;
+ }
+ return 1;
+}
+
+static void DecompressGlyphFont6(u16 glyph)
+{
+ const u16 *glyphs;
+
+ glyphs = gFont6BrailleGlyphs + 0x100 * (glyph / 8) + 0x10 * (glyph % 8);
+ DecompressGlyphTile(glyphs, (u16 *)gUnknown_03002F90);
+ DecompressGlyphTile(glyphs + 0x8, (u16 *)(gUnknown_03002F90 + 0x20));
+ DecompressGlyphTile(glyphs + 0x80, (u16 *)(gUnknown_03002F90 + 0x40));
+ DecompressGlyphTile(glyphs + 0x88, (u16 *)(gUnknown_03002F90 + 0x60));
+ gUnknown_03002F90[0x80] = 0x10;
+ gUnknown_03002F90[0x81] = 0x10;
+}
+
+u8 GetGlyphWidthFont6(void)
+{
+ return 0x10;
+}
diff --git a/src/util.c b/src/util.c
index 27b7c5ee5..58088c3ee 100644
--- a/src/util.c
+++ b/src/util.c
@@ -112,7 +112,7 @@ static const u16 sCrc16Table[] =
0x7BC7, 0x6A4E, 0x58D5, 0x495C, 0x3DE3, 0x2C6A, 0x1EF1, 0x0F78,
};
-const u8 gMiscBlank_Gfx[] = INCBIN_U8("graphics/interface/blank.4bpp"); // unused in Emerald
+const u8 gMiscBlank_Gfx[] = INCBIN_U8("graphics/interface/blank.4bpp");
u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *))
{
diff --git a/src/walda_phrase.c b/src/walda_phrase.c
new file mode 100644
index 000000000..7e06d1319
--- /dev/null
+++ b/src/walda_phrase.c
@@ -0,0 +1,257 @@
+#include "global.h"
+#include "walda_phrase.h"
+#include "string_util.h"
+#include "event_data.h"
+#include "naming_screen.h"
+#include "main.h"
+#include "text.h"
+#include "new_game.h"
+
+extern void (*gFieldCallback)(void);
+
+extern const u8 gText_Peekaboo[];
+
+extern u8 *GetWaldaPhrasePtr(void);
+extern bool32 IsWaldaPhraseEmpty(void);
+extern void sub_80AF168(void);
+extern void c2_exit_to_overworld_2_switch(void);
+extern void SetWaldaPhrase(const u8 *src);
+extern void SetWaldaWallpaperPatternId(u8 patternId);
+extern void SetWaldaWallpaperIconId(u8 iconId);
+extern void SetWaldaWallpaperColors(u16 backgroundColor, u16 foregroundColor);
+extern void SetWaldaWallpaperLockedOrUnlocked(bool32 unlocked);
+
+// this file's functions
+static void CB2_HandleGivenWaldaPhrase(void);
+static u32 GetWaldaPhraseInputCase(u8 *inputPtr);
+static bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, u8 *patternId, u16 trainerId, u8 *phrase);
+static void sub_81D9D5C(u8 *array, u8 *letterTableIds, u32 arg2, u32 arg3, u32 loopCount);
+static u32 sub_81D9DAC(u8 *array, u32 arg1, u32 loopCount);
+static void sub_81D9C90(u8 *array, s32 arg1, s32 arg2);
+static void sub_81D9CDC(u8 *array, u32 loopCount, u8 arg2);
+
+// only consonants are allowed, no vowels, some lowercase letters are missing
+static const u8 sWaldaLettersTable[] =
+{
+ CHAR_B, CHAR_C, CHAR_D, CHAR_F, CHAR_G, CHAR_H, CHAR_J, CHAR_K, CHAR_L, CHAR_M, CHAR_N, CHAR_P, CHAR_Q, CHAR_R, CHAR_S, CHAR_T, CHAR_V, CHAR_W, CHAR_Z,
+ CHAR_b, CHAR_c, CHAR_d, CHAR_f, CHAR_g, CHAR_h, CHAR_j, CHAR_k, CHAR_m, CHAR_n, CHAR_p, CHAR_q, CHAR_s
+};
+
+enum
+{
+ PHRASE_GIVEN_NEW,
+ PHRASE_NO_CHANGE,
+ PHRASE_FIRST_ATTEMPT
+};
+
+u16 TryBufferWaldaPhrase(void)
+{
+ if (IsWaldaPhraseEmpty())
+ return FALSE;
+
+ StringCopy(gStringVar1, GetWaldaPhrasePtr());
+ return TRUE;
+}
+
+void DoWaldaNamingScreen(void)
+{
+ StringCopy(gStringVar2, GetWaldaPhrasePtr());
+ DoNamingScreen(NAMING_SCREEN_WALDA, gStringVar2, 0, 0, 0, CB2_HandleGivenWaldaPhrase);
+}
+
+static void CB2_HandleGivenWaldaPhrase(void)
+{
+ gSpecialVar_0x8004 = GetWaldaPhraseInputCase(gStringVar2);
+
+ switch (gSpecialVar_0x8004)
+ {
+ case PHRASE_FIRST_ATTEMPT:
+ if (IsWaldaPhraseEmpty())
+ SetWaldaPhrase(gText_Peekaboo);
+ else
+ gSpecialVar_0x8004 = PHRASE_NO_CHANGE;
+ break;
+ case PHRASE_GIVEN_NEW:
+ SetWaldaPhrase(gStringVar2);
+ break;
+ case PHRASE_NO_CHANGE:
+ break;
+ }
+
+ StringCopy(gStringVar1, GetWaldaPhrasePtr());
+ gFieldCallback = sub_80AF168;
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+}
+
+static u32 GetWaldaPhraseInputCase(u8 *inputPtr)
+{
+ if (inputPtr[0] == EOS)
+ return PHRASE_FIRST_ATTEMPT;
+ if (StringCompare(inputPtr, GetWaldaPhrasePtr()) == 0)
+ return PHRASE_NO_CHANGE;
+
+ return PHRASE_GIVEN_NEW;
+}
+
+u16 TryGetWallpaperWithWaldaPhrase(void)
+{
+ u16 backgroundClr, foregroundClr;
+ u8 patternId, iconId;
+ u16 trainerId = ReadUnalignedWord(gSaveBlock2Ptr->playerTrainerId);
+ gScriptResult = TryCalculateWallpaper(&backgroundClr, &foregroundClr, &iconId, &patternId, trainerId, GetWaldaPhrasePtr());
+
+ if (gScriptResult)
+ {
+ SetWaldaWallpaperPatternId(patternId);
+ SetWaldaWallpaperIconId(iconId);
+ SetWaldaWallpaperColors(backgroundClr, foregroundClr);
+ }
+
+ SetWaldaWallpaperLockedOrUnlocked(gScriptResult);
+ return (bool8)(gScriptResult);
+}
+
+static u8 GetLetterTableId(u8 letter)
+{
+ s32 i;
+
+ for (i = 0; i < ARRAY_COUNT(sWaldaLettersTable); i++)
+ {
+ if (sWaldaLettersTable[i] == letter)
+ return i;
+ }
+
+ return ARRAY_COUNT(sWaldaLettersTable);
+}
+
+static bool32 TryCalculateWallpaper(u16* backgroundClr, u16 *foregroundClr, u8 *iconId, u8 *patternId, u16 trainerId, u8 *phrase)
+{
+ s32 i;
+ ALIGNED(2) u8 array[12];
+ u8 charsByTableId[16];
+ u16 *ptr;
+
+ if (StringLength(phrase) != 15)
+ return FALSE;
+
+ for (i = 0; i < 15; i++)
+ {
+ charsByTableId[i] = GetLetterTableId(phrase[i]);
+ if (charsByTableId[i] == ARRAY_COUNT(sWaldaLettersTable))
+ return FALSE;
+ }
+
+ for (i = 0; i < 14; i++)
+ {
+ sub_81D9D5C(array, charsByTableId, (5 * i), 3 + (8 * i), 5);
+ }
+
+ sub_81D9D5C(array, charsByTableId, 70, 115, 2);
+
+ if (sub_81D9DAC(array, 0, 3) != sub_81D9DAC(charsByTableId, 117, 3))
+ return FALSE;
+
+ sub_81D9C90(array, 9, 21);
+ sub_81D9C90(array, 8, array[8] & 0xF);
+ sub_81D9CDC(array, 8, array[8] >> 4);
+
+ if (array[6] != (array[0] ^ array[2] ^ array[4] ^ (trainerId >> 8)))
+ return FALSE;
+
+ if (array[7] != (array[1] ^ array[3] ^ array[5] ^ (trainerId & 0xFF)))
+ return FALSE;
+
+ ptr = (u16*)(&array[0]);
+ *backgroundClr = *ptr;
+
+ ptr = (u16*)(&array[2]);
+ *foregroundClr = *ptr;
+
+ *iconId = array[4];
+ *patternId = array[5];
+
+ return TRUE;
+}
+
+static void sub_81D9C90(u8 *array, s32 arg1, s32 arg2)
+{
+ s32 i, j;
+ u8 var1, var2;
+
+ for (i = arg2 - 1; i != -1; i--)
+ {
+ var1 = (array[0] & 0x80) >> 7;
+
+ var1++; var1--; // needed to match
+
+ for (j = arg1 - 1; j >= 0; j--)
+ {
+ var2 = array[j] & 0x80;
+ array[j] <<= 1;
+ array[j] |= var1;
+ var1 = var2 >> 7;
+ }
+ }
+}
+
+static void sub_81D9CDC(u8 *array, u32 loopCount, u8 arg2)
+{
+ u32 i;
+
+ arg2 |= (arg2 << 4);
+
+ for (i = 0; i < loopCount; i++)
+ {
+ array[i] ^= arg2;
+ }
+}
+
+static bool8 sub_81D9D0C(u8 *array, u32 arg1)
+{
+ u32 arrayId = arg1 >> 3;
+ u32 bits = 0x80 >> (7 & arg1);
+
+ return ((array[arrayId] & bits) != 0);
+}
+
+static void sub_81D9D28(u8 *array, u32 arg1)
+{
+ u32 arrayId = arg1 >> 3;
+ u8 bits = 0x80 >> (7 & arg1);
+
+ array[arrayId] |= bits;
+}
+
+static void sub_81D9D40(u8 *array, u32 arg1)
+{
+ u32 arrayId = arg1 >> 3;
+ u8 bits = ~(0x80 >> (7 & arg1));
+
+ array[arrayId] &= bits;
+}
+
+static void sub_81D9D5C(u8 *array, u8 *letterTableIds, u32 arg2, u32 arg3, u32 loopCount)
+{
+ u32 i;
+
+ for (i = 0; i < loopCount; i++)
+ {
+ if (sub_81D9D0C(letterTableIds, arg3 + i))
+ sub_81D9D28(array, arg2 + i);
+ else
+ sub_81D9D40(array, arg2 + i);
+ }
+}
+
+static u32 sub_81D9DAC(u8 *array, u32 arg1, u32 loopCount)
+{
+ u32 ret, i;
+
+ for (ret = 0, i = 0; i < loopCount; i++)
+ {
+ ret <<= 1;
+ ret |= sub_81D9D0C(array, arg1 + i);
+ }
+
+ return ret;
+}
diff --git a/src/window.c b/src/window.c
index 164031bee..f4cb48ec0 100644
--- a/src/window.c
+++ b/src/window.c
@@ -190,7 +190,7 @@ u16 AddWindow(const struct WindowTemplate *template)
return win;
}
-int AddWindowWithoutTileMap(struct WindowTemplate *template)
+int AddWindowWithoutTileMap(const struct WindowTemplate *template)
{
u16 win;
u8 bgLayer;
@@ -451,7 +451,7 @@ void FillWindowPixelRect(u8 windowId, u8 fillValue, u16 x, u16 y, u16 width, u16
FillBitmapRect4Bit(&pixelRect, x, y, width, height, fillValue);
}
-void CopyToWindowPixelBuffer(u8 windowId, u8 *src, u16 size, u16 tileOffset)
+void CopyToWindowPixelBuffer(u8 windowId, const u8 *src, u16 size, u16 tileOffset)
{
if (size != 0)
CpuCopy16(src, gWindows[windowId].tileData + (0x20 * tileOffset), size);
diff --git a/sym_bss.txt b/sym_bss.txt
index aacfa59a0..db7495182 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -1,272 +1,33 @@
-gUnknown_03000000: @ 3000000
- .space 0x4
-
+ .include "src/main.o"
.include "src/malloc.o"
-
- .align 4
-gDma3Requests: @ 3000010
- .space 0xC
-
-gUnknown_0300001C: @ 300001C
- .space 0xD4
-
-gUnknown_030000F0: @ 30000F0
- .space 0xA
-
-gUnknown_030000FA: @ 30000FA
- .space 0x716
-
-gDma3ManagerLocked: @ 3000810
- .space 0x1
-
-gDma3RequestCursor: @ 3000811
- .space 0x7
-
+ .include "src/dma3_manager.o"
.include "src/gpu_regs.o"
.include "src/bg.o"
.include "src/text.o"
.include "src/sprite.o"
-
-gUnknown_03000D10: @ 3000D10
- .space 0x10
-
-gUnknown_03000D20: @ 3000D20
- .space 0x30
-
-gUnknown_03000D50: @ 3000D50
- .space 0x4
-
-gUnknown_03000D54: @ 3000D54
- .space 0x4
-
-gUnknown_03000D58: @ 3000D58
- .space 0x4
-
-gUnknown_03000D5C: @ 3000D5C
- .space 0x4
-
-gUnknown_03000D60: @ 3000D60
- .space 0x4
-
-gUnknown_03000D64: @ 3000D64
- .space 0x4
-
-gUnknown_03000D68: @ 3000D68
- .space 0x4
-
-gUnknown_03000D6C: @ 3000D6C
- .space 0x1
-
-gUnknown_03000D6D: @ 3000D6D
- .space 0x1
-
-gUnknown_03000D6E: @ 3000D6E
- .space 0x2
-
-gUnknown_03000D70: @ 3000D70
- .space 0x2
-
-gUnknown_03000D72: @ 3000D72
- .space 0x1
-
-gUnknown_03000D73: @ 3000D73
- .space 0x1
-
-gUnknown_03000D74: @ 3000D74
- .space 0x4
-
-gUnknown_03000D78: @ 3000D78
- .space 0x8
-
-gUnknown_03000D80: @ 3000D80
- .space 0x10
-
-gUnknown_03000D90: @ 3000D90
- .space 0x10
-
-gUnknown_03000DA0: @ 3000DA0
- .space 0x4
-
-gUnknown_03000DA4: @ 3000DA4
- .space 0x4
-
-gUnknown_03000DA8: @ 3000DA8
- .space 0x4
-
-gUnknown_03000DAC: @ 3000DAC
- .space 0x4
-
-gUnknown_03000DB0: @ 3000DB0
- .space 0x8
-
+ .include "src/link.o"
.include "src/rtc.o"
-
-gUnknown_03000DD0: @ 3000DD0
- .space 0x4
-
-gUnknown_03000DD4: @ 3000DD4
- .space 0x4
-
-gUnknown_03000DD8: @ 3000DD8
- .space 0x4
-
-gUnknown_03000DDC: @ 3000DDC
- .space 0x4
-
+ .include "src/main_menu.o"
+ .include "src/battle_1.o"
.include "src/egg_hatch.o"
-
-.space 0x4 @ why the gap?
-
-gUnknown_03000DE8: @ 3000DE8
- .space 0x10
-
-gUnknown_03000DF8: @ 3000DF8
- .space 0xC
-
-gUnknown_03000E04: @ 3000E04
- .space 0x2
-
-gUnknown_03000E06: @ 3000E06
- .space 0x2
-
+ .include "src/berry_blender.o"
.include "src/play_time.o"
-
-.align 2
-
-gUnknown_03000E0C: @ 3000E0C
- .space 0x4
-
-gUnknown_03000E10: @ 3000E10
- .space 0x4
-
-gUnknown_03000E14: @ 3000E14
- .space 0x4
-
-gUnknown_03000E18: @ 3000E18
- .space 0x1
-
-gUnknown_03000E19: @ 3000E19
- .space 0x7
-
-gUnknown_03000E20: @ 3000E20
- .space 0x8
-
-gUnknown_03000E28: @ 3000E28
- .space 0x2
-
-gUnknown_03000E2A: @ 3000E2A
- .space 0x2
-
-gUnknown_03000E2C: @ 3000E2C
- .space 0x4
-
-gUnknown_03000E30: @ 3000E30
- .space 0x8
-
-.include "src/script.o"
-
-.align 2
-gUnknown_03000F30: @ 3000F30
- .space 0x4
-
-gUnknown_03000F34: @ 3000F34
- .space 0x2
-
-gUnknown_03000F36: @ 3000F36
- .space 0x2
-
-gUnknown_03000F38: @ 3000F38
- .space 0x2
-
-gUnknown_03000F3A: @ 3000F3A
- .space 0x2
-
-gUnknown_03000F3C: @ 3000F3C
- .space 0x4
-
-gUnknown_03000F40: @ 3000F40
- .space 0x4
-
-gUnknown_03000F44: @ 3000F44
- .space 0x4
-
+ .include "src/rom4.o"
+ .include "src/field_camera.o"
+ .include "src/script.o"
+ .include "src/scrcmd.o"
+ .include "src/tileset_anims.o"
+ .include "src/palette.o"
.include "src/sound.o"
-
-gUnknown_03000F50: @ 3000F50
- .space 0x8
-
-gUnknown_03000F58: @ 3000F58
- .space 0x20
-
-gUnknown_03000F78: @ 3000F78
- .space 0x188
-
-gUnknown_03001100: @ 3001100
- .space 0x1
-
-gUnknown_03001101: @ 3001101
- .space 0x1
-
-gUnknown_03001102: @ 3001102
- .space 0x6
-
-gUnknown_03001108: @ 3001108
- .space 0x1C
-
-gUnknown_03001124: @ 3001124
- .space 0xC
-
-gUnknown_03001130: @ 3001130
- .space 0x4
-
-gUnknown_03001134: @ 3001134
- .space 0x4
-
-gUnknown_03001138: @ 3001138
- .space 0x4
-
-gUnknown_0300113C: @ 300113C
- .space 0x4
-
-gUnknown_03001140: @ 3001140
- .space 0x4
-
-gUnknown_03001144: @ 3001144
- .space 0x4
-
-gUnknown_03001148: @ 3001148
- .space 0x4
-
-gUnknown_0300114C: @ 300114C
- .space 0x4
-
-gUnknown_03001150: @ 3001150
- .space 0x4
-
-gUnknown_03001154: @ 3001154
- .space 0x4
-
-gUnknown_03001158: @ 3001158
- .space 0x4
-
-gUnknown_0300115C: @ 300115C
- .space 0x4
-
-gUnknown_03001160: @ 3001160
- .space 0x8
-
-gUnknown_03001168: @ 3001168
- .space 0xC
-
-gUnknown_03001174: @ 3001174
- .space 0x1
-
-gUnknown_03001175: @ 3001175
- .space 0x1
-
-gUnknown_03001176: @ 3001176
- .space 0x2
-
+ .include "src/field_screen.o"
+ .include "src/field_effect.o"
+ .include "src/pokemon_storage_system.o"
+ .include "src/fldeff_cut.o"
+ .include "src/script_menu.o"
+ .include "src/record_mixing.o"
+ .include "src/tv.o"
+
+ .space 1 @ TODO: define this u32 in mauville_old_man
gUnknown_03001178: @ 3001178
.space 0x4
diff --git a/sym_common.txt b/sym_common.txt
index 23809c1a7..85b508403 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -117,7 +117,7 @@ gUnknown_03003110: @ 3003110
gUnknown_03003120: @ 3003120
.space 0x4
-gUnknown_03003124: @ 3003124
+gReceivedRemoteLinkPlayers: @ 3003124
.space 0xC
gUnknown_03003130: @ 3003130
@@ -203,22 +203,16 @@ gUnknown_03005CDE: @ 3005CDE
.include "rtc.o"
-gUnknown_03005D00: @ 3005D00
+gPreBattleCallback1: @ 3005D00
.space 0x4
gBattleMainFunc: @ 3005D04
.space 0xC
gBattleResults: @ 3005D10
- .space 0x2A
+ .space 0x44
-gUnknown_03005D3A: @ 3005D3A
- .space 0xC
-
-gUnknown_03005D46: @ 3005D46
- .space 0xE
-
-gUnknown_03005D54: @ 3005D54
+gLeveledUpInBattle: @ 3005D54
.space 0xC
gBattleBankFunc: @ 3005D60
@@ -326,17 +320,7 @@ gUnknown_030060B4: @ 30060B4
gUnknown_030060B8: @ 30060B8
.space 0x4
-gUnknown_030060BC: @ 30060BC
- .space 0x4
-
-gUnknown_030060C0: @ 30060C0
- .space 0x10
-
-gUnknown_030060D0: @ 30060D0
- .space 0x10
-
-gUnknown_030060E0: @ 30060E0
- .space 0x50
+ .include "tv.o"
gUnknown_03006130: @ 3006130
.space 0x34
@@ -393,7 +377,7 @@ gUnknown_030061EC: @ 30061EC
.space 0x4
.include"save.o"
-
+
.space 0x8
gRamSaveSectionLocations: @ 3006220
@@ -448,7 +432,7 @@ gUnknown_03006370: @ 3006370
.include "agb_flash.o"
-gUnknown_03007868: @ 3007868
+gRfuState: @ 3007868
.space 0x8
gUnknown_03007870: @ 3007870
diff --git a/sym_ewram.txt b/sym_ewram.txt
index d8cc646db..d2779079e 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -31,11 +31,8 @@ gUnknown_020223BD: @ 20223BD
gUnknown_020223C0: @ 20223C0
.space 0x4
-gUnknown_020223C4: @ 20223C4
- .space 0x4
-
-gUnknown_020223C8: @ 20223C8
- .space 0x4FC
+gBlockRecvBuffer: @ 20223C4
+ .space 0x500
gUnknown_020228C4: @ 20228C4 gBlockSendBuffer
.space 0x100
@@ -199,68 +196,49 @@ gUnknown_02022D0A: @ 2022D0A
gUnknown_02022D0C: @ 2022D0C
.space 0x4
-gUnknown_02022D10: @ 2022D10
+gBattleBuffersTransferData: @ 2022D10
.space 0x100
gUnknown_02022E10: @ 2022E10
.space 0x4
-gUnknown_02022E14: @ 2022E14
- .space 0x2
-
-gUnknown_02022E16: @ 2022E16
- .space 0x2
-
-gUnknown_02022E18: @ 2022E18
+gBattle_BG0_X: @ 2022E14
.space 0x2
-gUnknown_02022E1A: @ 2022E1A
+gBattle_BG0_Y: @ 2022E16
.space 0x2
-gUnknown_02022E1C: @ 2022E1C
+gBattle_BG1_X: @ 2022E18
.space 0x2
-gUnknown_02022E1E: @ 2022E1E
+gBattle_BG1_Y: @ 2022E1A
.space 0x2
-gUnknown_02022E20: @ 2022E20
+gBattle_BG2_X: @ 2022E1C
.space 0x2
-gUnknown_02022E22: @ 2022E22
+gBattle_BG2_Y: @ 2022E1E
.space 0x2
-gUnknown_02022E24: @ 2022E24
+gBattle_BG3_X: @ 2022E20
.space 0x2
-gUnknown_02022E26: @ 2022E26
+gBattle_BG3_Y: @ 2022E22
.space 0x2
-gUnknown_02022E28: @ 2022E28
+gBattle_WIN0H: @ 2022E24
.space 0x2
-gUnknown_02022E2A: @ 2022E2A
+gBattle_WIN0V: @ 2022E26
.space 0x2
-gDisplayedStringBattle: @ 2022E2C
- .space 0x12C
-
-gBattleTextBuff1: @ 2022F58
+gBattle_WIN1H: @ 2022E28
.space 0x2
-gUnknown_02022F5A: @ 2022F5A
+gBattle_WIN1V: @ 2022E2A
.space 0x2
-gUnknown_02022F5C: @ 2022F5C
- .space 0xC
-
-gBattleTextBuff2: @ 2022F68
- .space 0x2
-
-gUnknown_02022F6A: @ 2022F6A
- .space 0xE
-
-gBattleTextBuff3: @ 2022F78
- .space 0x10
+ .include "src/battle_message.o"
gUnknown_02022F88: @ 2022F88
.space 0x64
@@ -268,7 +246,7 @@ gUnknown_02022F88: @ 2022F88
gBattleTypeFlags: @ 2022FEC
.space 0x4
-gUnknown_02022FF0: @ 2022FF0
+gBattleTerrain: @ 2022FF0
.space 0x4
gUnknown_02022FF4: @ 2022FF4
@@ -304,19 +282,19 @@ gNoOfAllBanks: @ 202406C
gBattlePartyID: @ 202406E
.space 0x8
-gBanksBySide: @ 2024076
+gBanksByIdentity: @ 2024076
.space 0x4
-gUnknown_0202407A: @ 202407A
+gActionsByTurnOrder: @ 202407A
.space 0x4
-gTurnOrder: @ 202407E
+gBanksByTurnOrder: @ 202407E
.space 0x4
-gUnknown_02024082: @ 2024082
+gCurrentTurnActionNumber: @ 2024082
.space 0x1
-gFightStateTracker: @ 2024083
+gCurrentActionFuncId: @ 2024083
.space 0x1
gBattleMons: @ 2024084
@@ -334,7 +312,7 @@ gUnknown_020241E9: @ 20241E9
gCurrentMove: @ 20241EA
.space 0x2
-gUnknown_020241EC: @ 20241EC
+gLastUsedMove: @ 20241EC
.space 0x2
gRandomMove: @ 20241EE
@@ -343,7 +321,7 @@ gRandomMove: @ 20241EE
gBattleMoveDamage: @ 20241F0
.space 0x4
-gUnknown_020241F4: @ 20241F4
+gHpDealt: @ 20241F4
.space 0x4
gTakenDmg: @ 20241F8
@@ -376,22 +354,22 @@ gAbsentBankFlags: @ 2024210
gCritMultiplier: @ 2024211
.space 0x1
-gUnknown_02024212: @ 2024212
+gMultiHitCounter: @ 2024212
.space 0x2
gBattlescriptCurrInstr: @ 2024214
.space 0x8
-gUnknown_0202421C: @ 202421C
+gActionForBanks: @ 202421C
.space 0x4
-gUnknown_02024220: @ 2024220
+gBattlescriptPtrsForSelection: @ 2024220
.space 0x10
gUnknown_02024230: @ 2024230
.space 0x10
-gUnknown_02024240: @ 2024240
+gUnknownMovesUsedByBanks: @ 2024240
.space 0x8
gLastUsedMovesByBanks: @ 2024248
@@ -406,7 +384,7 @@ gUnknown_02024258: @ 2024258
gUnknown_02024260: @ 2024260
.space 0x8
-gUnknown_02024268: @ 2024268
+gLockedMoves: @ 2024268
.space 0x8
gUnknown_02024270: @ 2024270
@@ -442,13 +420,13 @@ gStatuses3: @ 20242AC
gDisableStructs: @ 20242BC
.space 0x70
-gUnknown_0202432C: @ 202432C
+gPauseCounterBattle: @ 202432C
.space 0x2
-gUnknown_0202432E: @ 202432E
+gPaydayMoney: @ 202432E
.space 0x2
-gUnknown_02024330: @ 2024330
+gRandomTurnNumber: @ 2024330
.space 0x2
gBattleCommunication: @ 2024332
@@ -475,13 +453,13 @@ gWishFutureKnock: @ 20243D0
gUnknown_020243FC: @ 20243FC
.space 0x2
-gUnknown_020243FE: @ 20243FE
+gSentPokesToOpponent: @ 20243FE
.space 0x2
gDynamicBasePower: @ 2024400
.space 0x2
-gUnknown_02024402: @ 2024402
+gExpShareExp: @ 2024402
.space 0x2
gEnigmaBerries: @ 2024404
@@ -493,19 +471,19 @@ gBattleScripting: @ 2024474
gBattleStruct: @ 202449C
.space 0x4
-gUnknown_020244A0: @ 20244A0
+gLinkBattleSendBuffer: @ 20244A0
.space 0x4
-gUnknown_020244A4: @ 20244A4
+gLinkBattleRecvBuffer: @ 20244A4
.space 0x4
gBattleResources: @ 20244A8
.space 0x4
-gUnknown_020244AC: @ 20244AC
+gActionSelectionCursor: @ 20244AC
.space 0x4
-gUnknown_020244B0: @ 20244B0
+gMoveSelectionCursor: @ 20244B0
.space 0x4
gUnknown_020244B4: @ 20244B4
@@ -523,10 +501,10 @@ gUnknown_020244BC: @ 20244BC
gUnknown_020244CC: @ 20244CC
.space 0x4
-gUnknown_020244D0: @ 20244D0
+gBattleSpritesDataPtr: @ 20244D0
.space 0x4
-gBattleSpritesGfx: @ 20244D4
+gMonSpritesGfxPtr: @ 20244D4
.space 0x4
gUnknown_020244D8: @ 20244D8
@@ -702,24 +680,9 @@ gUnknown_020375BC: @ 20375BC
gUnknown_020375C0: @ 20375C0
.space 0x4
-gUnknown_020375C4: @ 20375C4
- .space 0x4
-
-gUnknown_020375C8: @ 20375C8
- .space 0x2
-
-gUnknown_020375CA: @ 20375CA
- .space 0x2
-
-gUnknown_020375CC: @ 20375CC
- .space 0x2
-
-gUnknown_020375CE: @ 20375CE
- .space 0x2
-
-gUnknown_020375D0: @ 20375D0
- .space 0x4
+ .include "src/scrcmd.o"
+ .align 2
gUnknown_020375D4: @ 20375D4
.space 0x2
@@ -747,82 +710,12 @@ gUnknown_02037621: @ 2037621
gUnknown_02037622: @ 2037622
.space 0x2
-gUnknown_02037624: @ 2037624
- .space 0xF0
-
+ .include "src/tileset_anims.o"
.include "src/palette.o"
.include "src/sound.o"
-
- .align 0x2
-
-gBattleAnimScriptPtr: @ 20383F0
- .space 0x4
-
-gBattleAnimScriptRetAddr: @ 20383F4
- .space 0x4
-
-gAnimScriptCallback: @ 20383F8
- .space 0x4
-
-gAnimFramesToWait: @ 20383FC
- .space 0x1
-
-gAnimScriptActive: @ 20383FD
- .space 0x1
+ .include "src/battle_anim.o"
-gAnimVisualTaskCount: @ 20383FE
- .space 0x1
-
-gAnimSoundTaskCount: @ 20383FF
- .space 0x1
-
-gDisableStructMoveAnim: @ 2038400
- .space 0x4
-
-gMoveDmgMoveAnim: @ 2038404
- .space 0x4
-
-gMovePowerMoveAnim: @ 2038408
- .space 0x2
-
-gAnimSpriteIndexArray: @ 203840A
- .space 0x10
-
-gHappinessMoveAnim: @ 203841A
- .space 0x2
-
-gWeatherMoveAnim: @ 203841C
- .space 0x2
-
-gBattleAnimArgs: @ 203841E
- .space 0x10
-
-gSoundAnimFramesToWait: @ 203842E
- .space 0x2
-
-gUnknown_02038430: @ 2038430
- .space 0x2
-
-gUnknown_02038432: @ 2038432
- .space 0x1
-
-gUnknown_02038433: @ 2038433
- .space 0x1
-
-gAnimMoveIndex: @ 2038434
- .space 0x2
-
-gAnimationBankAttacker: @ 2038436
- .space 0x1
-
-gAnimationBankTarget: @ 2038437
- .space 0x1
-
-gUnknown_02038438: @ 2038438
- .space 0x8
-
-gUnknown_02038440: @ 2038440
- .space 0x4
+.align 2
gUnknown_02038444: @ 2038444
.space 0x10
@@ -902,7 +795,7 @@ gUnknown_02038C00: @ 2038C00
gUnknown_02038C04: @ 2038C04
.space 0x4
-gFieldEffectSpawnParams: @ 2038C08
+gFieldEffectArguments: @ 2038C08
.space 0x20
gUnknown_02038C28: @ 2038C28
@@ -1053,16 +946,7 @@ gBagPockets: @ 2039DD8
.space 0x28
gUnknown_02039E00: @ 2039E00
- .space 0x2
-
-gUnknown_02039E02: @ 2039E02
- .space 0xB
-
-gUnknown_02039E0D: @ 2039E0D
- .space 0x11
-
-gUnknown_02039E1E: @ 2039E1E
- .space 0xE2
+ .space 0x100
gUnknown_02039F00: @ 2039F00
.space 0x8
@@ -1094,7 +978,7 @@ gUnknown_02039F2A: @ 2039F2A
gUnknown_02039F2B: @ 2039F2B
.space 0x1
-gUnknown_02039F2C: @ 2039F2C
+gScriptContestCategory: @ 2039F2C
.space 0x2
gUnknown_02039F2E: @ 2039F2E
@@ -1106,7 +990,7 @@ gUnknown_02039F30: @ 2039F30
gUnknown_02039F31: @ 2039F31
.space 0x3
-gUnknown_02039F34: @ 2039F34
+gContestResources: @ 2039F34
.space 0x4
gUnknown_02039F38: @ 2039F38
@@ -1148,12 +1032,9 @@ gUnknown_02039F90: @ 2039F90
gUnknown_02039F94: @ 2039F94
.space 0x4
-gUnknown_02039F98: @ 2039F98
- .space 0x1
-
-gUnknown_02039F99: @ 2039F99
- .space 0x3
-
+ .include "src/money.o"
+
+ .align 2
gUnknown_02039F9C: @ 2039F9C
.space 0x78
@@ -1172,26 +1053,7 @@ gUnknown_0203A01D: @ 203A01D
gUnknown_0203A020: @ 203A020
.space 0x4
-gUnknown_0203A024: @ 203A024
- .space 0x2
-
-gUnknown_0203A026: @ 203A026
- .space 0x2
-
-gUnknown_0203A028: @ 203A028
- .space 0x2
-
-gUnknown_0203A02A: @ 203A02A
- .space 0x2
-
-gUnknown_0203A02C: @ 203A02C
- .space 0x4
-
-gUnknown_0203A030: @ 203A030
- .space 0x1
-
-gUnknown_0203A031: @ 203A031
- .space 0x3
+ .include "src/tv.o"
gUnknown_0203A034: @ 203A034
.space 0x4
@@ -1243,8 +1105,7 @@ gUnknown_0203A12C: @ 203A12C
gUnknown_0203A130: @ 203A130
.space 0x4
-gUnknown_0203A134: @ 203A134
- .space 0x4
+ .include "src/mail.o"
gUnknown_0203A138: @ 203A138
.space 0x8
@@ -1258,68 +1119,10 @@ gUnknown_0203A144: @ 203A144
gUnknown_0203A148: @ 203A148
.space 0x4
-gUnknown_0203A14C: @ 203A14C
- .space 0x4
-
-gUnknown_0203A150: @ 203A150
- .space 0x1
-
-gUnknown_0203A151: @ 203A151
- .space 0x1
-
-gUnknown_0203A152: @ 203A152
- .space 0x10
-
-gUnknown_0203A162: @ 203A162
- .space 0xC
-
-gUnknown_0203A16E: @ 203A16E
- .space 0x2
-
-gUnknown_0203A170: @ 203A170
- .space 0x2
-
-gUnknown_0203A172: @ 203A172
- .space 0x1
-
-gUnknown_0203A173: @ 203A173
- .space 0x9
-
-gUnknown_0203A17C: @ 203A17C
- .space 0xC
-
-gUnknown_0203A188: @ 203A188
- .space 0x4
-
-gUnknown_0203A18C: @ 203A18C
- .space 0x4
-
-gUnknown_0203A190: @ 203A190
- .space 0x8A4
-
-gUnknown_0203AA34: @ 203AA34
- .space 0x2
-
-gUnknown_0203AA36: @ 203AA36
- .space 0x2
-
-gUnknown_0203AA38: @ 203AA38
- .space 0x1
-
-gUnknown_0203AA39: @ 203AA39
- .space 0x1
-
-gUnknown_0203AA3A: @ 203AA3A
- .space 0x2
+ .include "src/decoration.o"
+ .align 2
-gUnknown_0203AA3C: @ 203AA3C
- .space 0x8
-
-gUnknown_0203AA44: @ 203AA44
- .space 0x80
-
-gUnknown_0203AAC4: @ 203AAC4
- .space 0x4
+@ slot_machine
gUnknown_0203AAC8: @ 203AAC8
.space 0x4
@@ -1405,7 +1208,7 @@ gUnknown_0203AB30: @ 203AB30
gUnknown_0203AB34: @ 203AB34
.space 0x4
- .include "src/battle_ai.o"
+ .include "src/battle_ai_script_commands.o"
.align 2
gUnknown_0203AB40: @ 203AB40
@@ -1547,14 +1350,8 @@ gUnknown_0203BC34: @ 203BC34
gUnknown_0203BC38: @ 203BC38
.space 0x8
-gDecorationInventories: @ 203BC40
- .space 0x40
-
-sLocationHistory: @ 203BC80
- .space 0x6
-
-sRoamerLocation: @ 203BC86
- .space 0x2
+ .include "src/decoration_inventory.o"
+ .include "src/roamer.o"
gUnknown_0203BC88: @ 203BC88
.space 0x4
@@ -1641,9 +1438,7 @@ gUnknown_0203BCE8: @ 203BCE8
.space 0x4
.include "src/lottery_corner.o"
-
-gUnknown_0203BCF0: @ 203BCF0
- .space 0x4
+ .include "src/diploma.o"
gUnknown_0203BCF4: @ 203BCF4
.space 0x4
@@ -1651,16 +1446,9 @@ gUnknown_0203BCF4: @ 203BCF4
gUnknown_0203BCF8: @ 203BCF8
.space 0x4
-gUnknown_0203BCFC: @ 203BCFC
- .space 0x2
-
-gUnknown_0203BCFE: @ 203BCFE
- .space 0x10
-
-gUnknown_0203BD0E: @ 203BD0E
- .space 0x6
+ .include "src/save_failed_screen.o"
-gUnknown_0203BD14: @ 203BD14
+gBraillePuzzleCallbackFlag: @ 203BD14
.space 0x4
gUnknown_0203BD18: @ 203BD18
@@ -1678,10 +1466,10 @@ gUnknown_0203BD26: @ 203BD26
gUnknown_0203BD28: @ 203BD28
.space 0x4
-gUnknown_0203BD2C: @ 203BD2C
+gRecordedBattleRngSeed: @ 203BD2C
.space 0x4
-gUnknown_0203BD30: @ 203BD30
+gBattlePalaceMoveSelectionRngValue: @ 203BD30
.space 0x4
gUnknown_0203BD34: @ 203BD34